← back to Crazy News Channel

cartoons/manifest.js

594 lines

// cartoons/manifest.js — the P24 Political Cartoon Desk archive data.
// Loaded as a plain <script src> (matching the stories-data.js pattern used by the
// main P24 page) rather than fetched as JSON, because this project's whole design
// contract is offline-capable file:// use with no server (see ../README.md) — a
// fetch() of a sibling JSON file is blocked under file:// in Chrome/Safari and
// silently mis-renders the empty state instead of erroring (TK-12133 finding #2).
//
// STANDING RULE (Steve, verbatim: "always link images cartoons to the real
// article" — codified TK-12158, 2026-09-24): every cartoon entry below MUST
// carry a non-null story_id that resolves to a real entry in
// ../stories-data.js (window.P24_EXTRA_STORIES) or ../real-news-data.js
// (window.P24_REAL_STORIES) — see cartoons/index.html's storyCategoryById()
// for exactly how story_id is resolved and used. A cartoon with story_id:
// null is a GAP TO FIX, never a valid end state. If a cartoon's topic has no
// underlying article yet, write one into stories-data.js (matching the
// window.P24_EXTRA_STORIES schema: id, category, categoryLabel, location,
// byline, image, intervalSec, offsetSec, stageIndex, article{dek,
// photoCaption, paragraphs}, stages[]) BEFORE — or in the same change as —
// adding the cartoon here. Several cartoons drawn as visual style-contest
// variants of the same underlying event (e.g. the three "Filibuster
// Marathon" strips) should share ONE story_id rather than each getting a
// duplicate story. TK-12158 backfilled 9 cartoons that had shipped with
// story_id: null (6 new story entries covering them, one shared by 3
// cartoons) — do not reintroduce that gap.
//
// HARD RULE (TK-12165, 2026-09-24): every cartoon entry below MUST also
// carry a non-empty `tags` array — inherit its linked story's tags
// (window.P24_EXTRA_STORIES / window.P24_REAL_STORIES via story_id)
// plus at most 1-2 cartoon-specific tags (e.g. "editorial cartoon",
// "classic editorial ink"). build-cartoon-batch.sh's FAIL check enforces
// this the same way it enforces story_id.
window.P24_CARTOONS = [
  {
    "id": "commission-turtles",
    "title": "Commissions All the Way Down",
    "file": "20260924-commission-turtles.html",
    "created_at": "2026-09-24T17:05:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "A blue-ribbon commission recommends forming a commission to study its own recommendation. It keeps going.",
    "thumb": null,
    "story_id": "pw-commission-turtles",
    "tags": [
      "bureaucracy",
      "city council",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "meter-that-wouldnt-yield",
    "title": "The Meter That Wouldn't Yield",
    "file": "20260924-meter-that-wouldnt-yield.html",
    "created_at": "2026-09-24T17:10:26Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Erie's most reliable parking meter is honored, seated on the council, re-elected, and sworn in as one-day mayor — and now won't leave the office.",
    "thumb": null,
    "story_id": "pw-meter-street",
    "tags": [
      "city council",
      "parking",
      "bureaucracy",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "row-by-row-only",
    "title": "Row by Row Only",
    "file": "20260924-row-by-row-only.html",
    "created_at": "2026-09-24T17:10:26Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Kansas legislates the one true method for eating corn on the cob, deputizes Corn Marshals, and bans cob holders as cheating devices.",
    "thumb": null,
    "story_id": "pw-corn-etiquette",
    "tags": [
      "state legislature",
      "bureaucracy",
      "food traditions",
      "ordinance",
      "editorial cartoon"
    ]
  },
  {
    "id": "gnome-who-wouldnt-hush",
    "title": "The Gnome Who Wouldn't Hush",
    "file": "20260924-gnome-who-wouldnt-hush.html",
    "created_at": "2026-09-24T17:10:26Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Duluth taxes loud lawn gnomes, registers them, ankle-monitors repeat offenders, and finally convenes a Gnome Parole Board.",
    "thumb": null,
    "story_id": "pw-lawn-gnome-tax",
    "tags": [
      "lawn ornaments",
      "city council",
      "ordinance",
      "bureaucracy",
      "editorial cartoon"
    ]
  },
  {
    "id": "four-minutes-ahead",
    "title": "Four Minutes Ahead of Everyone",
    "file": "20260924-four-minutes-ahead.html",
    "created_at": "2026-09-24T17:10:26Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Bozeman sets its town clock four minutes fast, declares its own time zone, and petitions to secede from Mountain Time entirely.",
    "thumb": null,
    "story_id": "pw-clock-secession",
    "tags": [
      "city council",
      "bureaucracy",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "casserole-succession",
    "title": "The Casserole Succession",
    "file": "20260924-casserole-succession.html",
    "created_at": "2026-09-24T17:10:26Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Savannah imposes term limits on its ceremonial Bean Queen, the sash won't come off, and a courthouse finally settles it by casserole, not bloodline.",
    "thumb": null,
    "story_id": "pw-bean-queen",
    "tags": [
      "pageantry",
      "city council",
      "food traditions",
      "editorial cartoon"
    ]
  },
  {
    "id": "hedge-non-aggression-pact",
    "title": "The Hedge Non-Aggression Pact",
    "file": "20260924-hedge-non-aggression-pact.html",
    "created_at": "2026-09-24T17:10:26Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Washington regulates statue-shaped hedges, fines a homeowner, gets accused of hedge espionage, and signs a topiary treaty with Idaho.",
    "thumb": null,
    "story_id": "pw-hedge-statue",
    "tags": [
      "monuments",
      "city council",
      "ordinance",
      "editorial cartoon"
    ]
  },
  {
    "id": "budget-pie-fight",
    "title": "Who Gets the Last Slice",
    "file": "20260924-budget-pie-fight.html",
    "created_at": "2026-09-24T21:40:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "An invented town's budget pie gets re-sliced smaller across three courses while five invented departments hold their forks; drag the slider and watch who ends up with crumbs.",
    "thumb": null,
    "story_id": "pw-budget-pie-slice",
    "tags": [
      "budget",
      "city council",
      "bureaucracy",
      "editorial cartoon"
    ]
  },
  {
    "id": "pork-barrel-train",
    "title": "The Pork Barrel Express",
    "file": "20260924-pork-barrel-train.html",
    "created_at": "2026-09-24T22:15:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "An invented infrastructure bill leaves committee as a single train car and picks up wildly unrelated riders — a desert lighthouse, a ferris wheel, a spoon museum — at every stop; click a car for its invented cost.",
    "thumb": null,
    "story_id": "pw-pork-barrel-express",
    "tags": [
      "state legislature",
      "infrastructure",
      "budget",
      "lobbying",
      "editorial cartoon"
    ]
  },
  {
    "id": "quorum-call-hide-seek",
    "title": "The Quorum Call",
    "file": "20260924-quorum-call-hide-seek.html",
    "created_at": "2026-09-24T23:05:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "An invented legislative chamber plays hide-and-seek to dodge a quorum call, propping paper cutouts in empty chairs while the Sergeant-at-Arms searches a suspiciously form-shaped closet; each plot twist relocates the hiding spot.",
    "thumb": null,
    "story_id": "pw-quorum-hide-seek",
    "tags": [
      "state legislature",
      "quorum tricks",
      "bureaucracy",
      "editorial cartoon"
    ]
  },
  {
    "id": "cloture-oclock",
    "title": "Cloture o'Clock",
    "file": "20260924-filibuster-vs-cloture.html",
    "created_at": "2026-09-24T23:45:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "An invented chamber's ceremonial floor clock is wound tight by one side and wound right back by the other, ticking forward and backward until it just shrugs; each plot twist changes its face.",
    "thumb": null,
    "story_id": "pw-cloture-oclock",
    "tags": [
      "state legislature",
      "filibuster",
      "quorum tricks",
      "editorial cartoon"
    ]
  },
  {
    "id": "tollpoints-diamond-status",
    "title": "The Booth That Became an Airline",
    "file": "20260924-tollpoints-diamond-status.html",
    "created_at": "2026-09-24T17:30:00Z",
    "category": "Editorial Cartoon",
    "section": "business",
    "blurb": "Ashtabula's toll bridge rewards E-ZPass loyalty with points, gift cards, a Gold Lounge, and eventually its own currency and chartered flight.",
    "thumb": null,
    "story_id": "bs-toll-loyalty",
    "tags": [
      "loyalty programs",
      "infrastructure",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "jackalope-custody-battle",
    "title": "The Jackalope Custody Battle",
    "file": "20260924-jackalope-custody-battle.html",
    "created_at": "2026-09-24T17:30:00Z",
    "category": "Editorial Cartoon",
    "section": "entertainment",
    "blurb": "Story City unveils a 14-foot jackalope statue; neighboring Radcliffe claims the legend, and a governor's accord ends with the statue on a biweekly trailer tour.",
    "thumb": null,
    "story_id": "es-jackalope-statue-town-rivalry",
    "tags": [
      "monuments",
      "tourism",
      "rivalry",
      "editorial cartoon"
    ]
  },
  {
    "id": "tuber-bank-of-chugwater",
    "title": "The Tuber Bank of Chugwater",
    "file": "20260924-tuber-bank-of-chugwater.html",
    "created_at": "2026-09-24T17:30:00Z",
    "category": "Editorial Cartoon",
    "section": "scitech",
    "blurb": "A Wyoming lab's potato-powered soil sensors outlast lithium cells, get their own custom-bred spud, and end up wired into the county's emergency power grid.",
    "thumb": null,
    "story_id": "sci-battery-potato",
    "tags": [
      "agriculture",
      "science oddity",
      "renewable energy",
      "research",
      "editorial cartoon"
    ]
  },
  {
    "id": "the-zipper-that-ended-an-inning",
    "title": "The Zipper That Ended an Inning",
    "file": "20260924-the-zipper-that-ended-an-inning.html",
    "created_at": "2026-09-24T17:30:00Z",
    "category": "Editorial Cartoon",
    "section": "sports",
    "blurb": "A minor-league mascot's zipper fails mid-dance, and the fallout escalates through a reinforced costume, an 11-point checklist, and a league-wide Mascot Integrity Officer.",
    "thumb": null,
    "story_id": "sw-mascot-costume",
    "tags": [
      "mascots",
      "local sports",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "the-corner-with-its-own-weather",
    "title": "The Corner With Its Own Weather",
    "file": "20260924-the-corner-with-its-own-weather.html",
    "created_at": "2026-09-24T17:30:00Z",
    "category": "Editorial Cartoon",
    "section": "weather",
    "blurb": "A stubborn crosswind at one Montana intersection earns a windsock, a paid Wind Spotter, a proposed windbreak, and finally its own festival.",
    "thumb": null,
    "story_id": "sw-persistent-crosswind",
    "tags": [
      "weather anomaly",
      "science oddity",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "lobbyist-revolving-door",
    "title": "The Revolving Door",
    "file": "20260924-lobbyist-revolving-door.html",
    "created_at": "2026-09-24T17:54:48Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "An invented capitol official spins out of the revolving door as a regulator and spins back in seconds later as a lobbyist, carrying a slightly bigger briefcase every revolution.",
    "thumb": null,
    "story_id": "pw-lobbyist-revolving-door",
    "tags": [
      "lobbying",
      "state legislature",
      "bureaucracy",
      "editorial cartoon"
    ]
  },
  {
    "id": "filibuster-ink",
    "title": "The Filibuster Marathon — Ink Edition",
    "file": "20260924-filibuster-ink.html",
    "created_at": "2026-09-24T19:45:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "An invented delegate drones on from a phone book the size of a cinder block. The chamber sleeps. The clock gives up and melts down the wall.",
    "thumb": "../images/filibuster-marathon-ink.jpg",
    "story_id": "pw-filibuster-holloway",
    "ai_generated": true,
    "model": "flux-kontext",
    "tags": [
      "filibuster",
      "state legislature",
      "bureaucracy",
      "editorial cartoon",
      "classic editorial ink"
    ]
  },
  {
    "id": "filibuster-qwen25",
    "title": "The Filibuster Marathon — Editorial Ink Style (AI Model Contest)",
    "file": "20260924-filibuster-qwen25-7b.html",
    "created_at": "2026-09-24T18:58:05Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "A delegate reads from a massive phone book to stall a vote. The chamber clock melts Dali-style. Congress sleeps standing up. Winner of the Model Arena 3-model editorial-ink-style showdown (Qwen3 14B vs Qwen2.5 7B, auto-judged by vision-referee).",
    "thumb": null,
    "story_id": "pw-filibuster-holloway",
    "ai_generated": true,
    "model": "qwen25-7b",
    "challenge_id": "56406f116d2a",
    "tags": [
      "filibuster",
      "state legislature",
      "bureaucracy",
      "editorial cartoon",
      "classic editorial ink"
    ]
  },
  {
    "id": "come-in-and-get-me-meter",
    "title": "Come In and Get Me",
    "file": "20260924-come-in-and-get-me-meter.html",
    "created_at": "2026-09-24T19:45:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Erie's one-day honorary mayor — a parking meter, sash on, expired flags for eyebrows — barricades itself behind an overturned desk and dares officials to take the office back. Drawn in classic editorial-ink style (the barricade device).",
    "thumb": null,
    "story_id": "pw-meter-street",
    "ai_generated": false,
    "style_reference": "editorial-ink",
    "tags": [
      "city council",
      "parking",
      "bureaucracy",
      "small town news",
      "editorial cartoon",
      "classic editorial ink"
    ]
  },
  {
    "id": "row-by-row-marshal",
    "title": "Row by Row, Citizen",
    "file": "20260924-row-by-row-marshal.html",
    "created_at": "2026-09-24T19:47:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "A towering, jackbooted Kansas 'Corn Marshal' confiscates a cob with tongs and outlaws the cob holder as a 'cheating device,' while a small citizen trembles. Drawn in classic editorial-ink style (the looming-authority device).",
    "thumb": null,
    "story_id": "pw-corn-etiquette",
    "ai_generated": false,
    "style_reference": "editorial-ink",
    "tags": [
      "state legislature",
      "bureaucracy",
      "food traditions",
      "ordinance",
      "editorial cartoon",
      "classic editorial ink"
    ]
  },
  {
    "id": "gold-tier-treadmill",
    "title": "Gold Commuter",
    "file": "20260924-gold-tier-treadmill.html",
    "created_at": "2026-09-24T19:49:00Z",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "Motorists trudge in an endless nighttime loop around a toll-booth hub — a hamster wheel of asphalt — chasing a dangling gold 'GOLD TIER' carrot as the crossing tally reads infinity. Drawn in classic editorial-ink style (the doomed-loop device).",
    "thumb": null,
    "story_id": "bs-toll-loyalty",
    "ai_generated": false,
    "style_reference": "editorial-ink",
    "tags": [
      "loyalty programs",
      "infrastructure",
      "small town news",
      "editorial cartoon",
      "classic editorial ink"
    ]
  },
  {
    "id": "senator-s-shadow-war",
    "title": "Senator's Shadow War",
    "file": "20260925-senator-s-shadow-war.html",
    "created_at": "2026-09-25T14:25:59+00:00",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "In shadowy negotiations, power is real.",
    "thumb": "media/20260925-senator-s-shadow-war.jpg",
    "story_id": "real-entertainment-3",
    "ai_generated": true,
    "style_reference": "editorial-ink",
    "tags": [
      "editorial cartoon",
      "classic editorial ink",
      "daily cartoon"
    ]
  },
  {
    "id": "shadowman-20260925-011",
    "title": "The Money Tank",
    "file": "shadowman-20260925-011.html",
    "created_at": "2026-09-25T17:47:15+00:00",
    "category": "Political Cartoon",
    "section": "uncategorized",
    "blurb": "Peace is expensive. War is more profitable.",
    "thumb": "shadow-man/shadowman-20260925T172534-011.jpg",
    "story_id": "real-uncategorized-6",
    "ai_generated": true,
    "style_reference": "shadow-man",
    "tags": [
      "uncategorized",
      "military conflict",
      "editorial cartoon",
      "shadow man"
    ]
  },
  {
    "id": "shadowman-20260925-012-r1",
    "title": "Party Arm-Wrestle",
    "file": "shadowman-20260925-012-r1.html",
    "created_at": "2026-09-25T17:48:57+00:00",
    "category": "Political Cartoon",
    "section": "politics",
    "blurb": "May the best party win.",
    "thumb": "shadow-man/shadowman-20260925T172534-012-r1.jpg",
    "story_id": "real-politics-4",
    "ai_generated": true,
    "style_reference": "shadow-man",
    "tags": [
      "politics",
      "elections",
      "congress",
      "editorial cartoon",
      "shadow man"
    ]
  },
  {
    "id": "statue-selfie-line",
    "title": "The Line for the Statue for the Line",
    "file": "20260926-statue-selfie-line.html",
    "created_at": "2026-09-26T10:19:52Z",
    "category": "Editorial Cartoon",
    "section": "entertainment",
    "blurb": "The photo line outgrows the roadside statue, so the town erects a statue of the line — which promptly grows a line of its own.",
    "thumb": null,
    "story_id": "es-roadside-statue-photo-line",
    "tags": [
      "monuments",
      "tourism",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "rainbow-permit-office",
    "title": "The Rainbow That Needed a Permit",
    "file": "20260926-rainbow-permit-office.html",
    "created_at": "2026-09-26T10:19:52Z",
    "category": "Editorial Cartoon",
    "section": "weather",
    "blurb": "A rainbow that keeps appearing over the same field every afternoon is asked to file for a standing-display permit, and a clerk arrives with a clipboard to measure its arc.",
    "thumb": null,
    "story_id": "pw-rainbow-permit",
    "tags": [
      "weather anomaly",
      "bureaucracy",
      "small town news",
      "ordinance",
      "editorial cartoon"
    ]
  },
  {
    "id": "bleacher-superstition-tower",
    "title": "The Lucky Seat",
    "file": "20260926-bleacher-superstition-tower.html",
    "created_at": "2026-09-26T10:19:52Z",
    "category": "Editorial Cartoon",
    "section": "sports",
    "blurb": "A fan's lucky-seat ritual earns one more unmovable object with every win, until the stack on the bleacher bench is taller than the fan sitting beside it.",
    "thumb": null,
    "story_id": "sw-lucky-seat-relics",
    "tags": [
      "superstition",
      "local sports",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "halftime-show-runaway",
    "title": "The Halftime Show That Kept Adding Acts",
    "file": "20260926-halftime-show-runaway.html",
    "created_at": "2026-09-26T10:19:52Z",
    "category": "Editorial Cartoon",
    "section": "sports",
    "blurb": "A small-stadium entertainment committee books \"just one more act\" between innings until the ballgame is delayed by the entertainment scheduled to fill its delays.",
    "thumb": null,
    "story_id": "sw-halftime-act-creep",
    "tags": [
      "local sports",
      "community event",
      "pageantry",
      "small town news",
      "editorial cartoon"
    ]
  },
  {
    "id": "festival-mascot-election",
    "title": "The Mascot Who Ran Unopposed",
    "file": "20260926-festival-mascot-election.html",
    "created_at": "2026-09-26T10:19:52Z",
    "category": "Editorial Cartoon",
    "section": "entertainment",
    "blurb": "A festival mascot's costume name is typed into the Grand Marshal candidate field by clerical accident, wins every vote cast because nothing else is on the ballot, and is sworn in without removing the felt head.",
    "thumb": null,
    "story_id": "es-festival-mascot-grand-marshal",
    "tags": [
      "mascots",
      "community event",
      "small town news",
      "bureaucracy",
      "pageantry",
      "editorial cartoon"
    ]
  },
  {
    "id": "server-room-thermostat-war",
    "title": "The Thermostat Standoff",
    "file": "20260926-server-room-thermostat-war.html",
    "created_at": "2026-09-26T10:19:52Z",
    "category": "Editorial Cartoon",
    "section": "scitech",
    "blurb": "An invented office's server room and break room fight a silent war over one shared thermostat, stacking sticky-note demands higher than the dial itself while never once speaking to each other.",
    "thumb": null,
    "story_id": "sci-thermostat-ai-office",
    "tags": [
      "artificial intelligence",
      "office culture",
      "automation",
      "editorial cartoon"
    ]
  }
];