← back to Crazy News Channel Shadowman

cartoons/manifest.js

431 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"
    ]
  }
];