# 140 — Complete offline Story demo catalog

Date: 2026-10-13. Standa requested Story counterparts for every existing Millionaire demo and approved complete closed narratives versus clearly identified episodes for episodic series. This supersedes the earlier Matrix-only fixture limit; Matrix remains unchanged.

This chapter records the completed initial 22-title / 66-pack expansion. Standa subsequently requested the complete Harry Potter collection in both modes (D44): the current catalog is 29 titles / 87 Story packs. Latest additions, verification and limitations are in [150-harry-potter-demos.md](150-harry-potter-demos.md); the evidence below remains the historical checkpoint.

## Scope and acceptance

- Existing catalog: 22 titles (11 movies, 11 series). Exactly three fixed packs per title: 10/15/20 scenes, five equal chapter groups, full selected narrative, one canonical answer and three false alternatives.
- Movies retain the existing identity/adaptation. Breaking Bad, Chernobyl and Game of Thrones cover their complete televised narrative. The other eight series use their identified first episode, with `S01E01` visible before Start.
- Episode metadata has one owner, `resources/demo/story/scopes.json`. Story uses a scoped copy of the existing Subject; switching to Millionaire restores its original whole-series subject/content. No new picker, controller, skin layout or copied catalog.
- `demo_available` checks all three local files; missing/unknown/incomplete demos never fall back to AI. Authored packs are fixed, silent and use existing assets, loader, validator, engine and shared modal.
- Fixed fixtures are authored once and reviewed, with read-only editorial checks for uncertain episode details. Runtime remains offline: no model/plot retrieval/TTS calls or generated-content cache. No paid model call, GUI test, commit or deploy is part of this task. Temporary authoring tools do not become runtime generators; the production AI mode still has no online grounding.

## Catalog

| Existing ID | Story narrative |
|---|---|
| matrix | Original 1999 movie; existing three packs preserved |
| inception | Original 2010 movie |
| forrest-gump | Original 1994 movie |
| titanic | Original 1997 movie |
| jurassic-park | Original 1993 movie |
| lotr-fellowship | Fellowship of the Ring, 2001 movie only |
| harry-potter-1 | Philosopher's Stone, 2001 movie only |
| the-lion-king | Original animated 1994 movie |
| the-godfather | Original 1972 movie only |
| shawshank | Original 1994 movie |
| pulp-fiction | Original 1994 movie in presentation order, including later flashbacks |
| breaking-bad | Complete five-season series |
| chernobyl | Complete five-part miniseries, retaining its flashback presentation |
| game-of-thrones | Complete eight-season series |
| friends | S01E01, The One Where Monica Gets a Roommate |
| house-md | S01E01, Pilot |
| sherlock | S01E01, A Study in Pink |
| stranger-things | S01E01, Chapter One: The Vanishing of Will Byers |
| the-big-bang-theory | S01E01, Pilot |
| the-mandalorian | S01E01, Chapter 1: The Mandalorian |
| the-office-us | S01E01, Pilot |
| the-simpsons | S01E01, Simpsons Roasting on an Open Fire |

## Work and verification record

Completed locally: 63 additional packs, 66 total / 990 playable scenes. Each difficulty explicitly selects events spanning the whole narrative, never the first N events. Fixed answer ordering is prepared during authorship, not shuffled during play. The temporary one-time authoring file lives in the ignored harness `out` directory and is never imported/executed by the addon; the shipped fixtures are the authority.

Manual editorial review covered the 21 new 20-event outlines, endings, sampled 10/15 variants, answer meaning, false alternatives and narration leaks. Corrections included duplicate question wording, weak/cross-work distractors, Czech grammar, the aired Big Bang Theory boards/couch/Sheldon outcome, Stranger Things intercut order, and preserving the unresolved Inception/Titanic endings. Pulp Fiction and Chernobyl retain presentation-order flashbacks. Three complete series are intentionally compressed into highlights; eight episodic demos conclude at the selected episode endpoint rather than inventing a series finale.

The production parser accepts every pack and enforces identity/scope, 10/15/20 scenes, five equal groups, nonempty bounded text and four unique A–D options. All packs use at least three distinct correct letters. Matrix/Millionaire baseline comparison confirms all 26 original JSON files are byte-for-byte unchanged. JSON validity and automated play are structural evidence; manual editorial review is separate, not an automatic universal factual guarantee.

### Targeted checks actually run — 2026-10-13

| Command | Result |
|---|---|
| `python3 tests/test_story_demo_catalog.py` | PASS, 8 tests; all 66 packs, 198 pure terminal scenarios, all 66 real shared-modal wins/replays/mode round-trips, scope preservation and prohibited socket/AI/TTS calls |
| `python3 tests/test_story_game.py` | PASS, 16 existing Story tests |
| `python3 tests/test_millionaire_entry.py` | PASS, 9 original entry/caller tests |
| `python3 tests/test_millionaire_demo.py` | PASS, 32 original demo checks; existing unclosed-read ResourceWarnings remain unrelated |
| `python3 tests/test_millionaire_golden.py` | PASS, one existing headless golden scenario test |

Representative existing CLI/probe checks also passed:

```bash
python3 scripts/game_harness/game.py run --demo pulp-fiction --mode story --difficulty hard --mistakes 2,20 --rules --quiet --out scripts/game_harness/out/story-demo-catalog/pulp-fiction-hard
python3 scripts/game_harness/game.py run --demo house-md --mode story --difficulty medium --mistakes 1,2,15 --quiet --out scripts/game_harness/out/story-demo-catalog/house-md-medium
python3 scripts/game_harness/game.py run --demo chernobyl --mode story --difficulty easy --mistakes 2,10 --quiet --out scripts/game_harness/out/story-demo-catalog/chernobyl-easy
```

Outcomes: Pulp Fiction wins with one life after the final wrong answer; House loses at question 15 with no ending; Chernobyl wins at question 10 with one life. Each folder contains `summary.json`, `steps.json` and `report.md`. Consolidated record: `scripts/game_harness/out/story-demo-catalog/verification.json`; original-data snapshot: `baseline-sha256.json` in the same folder. Seven changed Python files compile, all 16 plan files plus feature/skill pass link/fence/whitespace checks, and the unchanged game-harness frontmatter passes stdlib shape/name/description checks (no PyYAML/runtime dependency added). No source-note geometry/font change and no GUI/browser/device, paid API or actual speech test was run for this task.

### Editorial references

These were read-only checks for uncertain authorship details, not a gameplay dependency or retrieval implementation. No source dialogue was copied into narration.

- [StarWars.com Chapter 1 guide](https://www.starwars.com/series/the-mandalorian/chapter-1-guide) and [PBS Sherlock S1E1](https://www.pbs.org/wgbh/masterpiece/shows/sherlock/episodes/s1-e1/) identify the exact adaptations/episode context.
- [House pilot plot](https://en.wikipedia.org/wiki/Pilot_(House)) was used to check the selected episode's investigation sequence; the demo describes fiction and contains no treatment instructions/doses.
- [Aired Big Bang Theory pilot transcript](https://bigbangtrans.wordpress.com/series-1-episode-1-pilot-episode/) confirms the boards precede the couch, Sheldon eventually sits elsewhere, and the later TV attempt fails. The unaired Katie/Gilda pilot is excluded.
- [Aired Stranger Things S01E01 transcript](https://www.springfieldspringfield.co.uk/view_episode_scripts.php?episode=s01e01&tv-show=stranger-things-2016) confirms the Benny/bicycle and night-search intercut order; [episode plot](https://en.wikipedia.org/wiki/Chapter_One:_The_Vanishing_of_Will_Byers) confirms the selected endpoint.
- [Friends pilot transcript](https://screenscripts.com/friends/s01e01_the_pilot/) confirms Paul’s watch belongs after the credit-card scene and before Ross’s invitation. [Office US pilot scene list](https://theofficelines.com/quotes/episodes/pilot/) and [Simpsons Christmas pilot plot](https://en.wikipedia.org/wiki/Simpsons_Roasting_on_an_Open_Fire) were checked for episode-only boundaries and closing events.
- [The Godfather plot](https://www.imdb.com/title/tt0068646/plotsummary/) was checked for Sonny/Apollonia/peace-meeting presentation order.

## Handoff / next action

Implementation and targeted offline acceptance are complete. No catalog decision or implementation step remains pending. Latest published addon/skin remain 2.1.65 / 1.3.52; this expansion and earlier AI optimization are local and unpublished. Deploy only after Standa requests it, using `python3 scripts/release.py publish`; do not bump versions, commit or upload manually. Subsequent user playtesting is separate from the headless evidence above. Preserve unrelated dirty files, accepted Matrix fixtures and original Millionaire data.
