Press Raven · Plan · Educational Game Design
Six live avenues, 46 items. Five of them are pleasant and unbounded; one of them is the only thing that tests whether any of this works.
Source of truth is the Markdown: .claude/plans/educational-game-design.md — CodeRaven parses its checkboxes, so tick them there, not here. This rendering is for the review pass and will drift once items get checked off.
Decided: a game is one category parallel to manual and itinerary — one guide per game, game types as an authored games[] array, entries as content items whose fields arrive per-guide via applies_when. A game type is one mechanic × one theme × one subject. Theme sits at guide level, overridden per game type only where it diverges.
Not built: the game category, any Swift, and the machine export target.
A (game category + Drive Corps) → E (Swift) → F (Peregrine)
↑
B, C, D run alongside, any order ───┘ (D feeds F, loosely)
The critical path is A. Everything in B, C, and D is genuinely useful and none of it unblocks anything — which is exactly why it will quietly absorb all available time if A doesn't go first.
The game category plus Drive Corps. Two game types is enough to exercise applies_when; eleven is the wrong first test.
categories/game/ — schema, and a brief carrying the gamification test plus Drive Corps's forbidden vocabularyguides/drive-corps/ with theme: "military" and a games[] array for recon-sweep and interceptschema-extensions blocks from each mechanic's content contract, not inventedconcept as the scoring key) and 100 questions (adding the concept tagging the source bank never had)class: flavor; decide where payloads liveapplies_when shows only the right fields per game typeCheap now, expensive later — every new entry gets shelved against unresolved axes.
Deliberately after A, so the layout contract is written against a real document rather than guessed at.
games: [GameTypeConfig]? on GuideConfig — the array survives in guide.json today, nothing reads itcase "game" in DocumentTemplates with a layout contractmachine render target, replacing A's scriptfamily becomes an enum (means promoting to a real category)The real test: eleven game types, ~40 mockups that function as the spec, and a pipeline already in place.
theme: "detective-noir" and eleven game typesbreak_idx) — the schema language can't express itclass, or stay visible as unplaced entriesbest_fit_mechanics stays curated-only — role overlap under-generates badly (Horror derives 1 against 4 curated)Not tasks — things kept visible so they aren't rediscovered later.
machine export gap.
Every downstream payoff of putting content in the corpus depends on a script nobody has written. Until then a game guide is a nicer place to author content that still has to be moved by hand.
Drive Corps at ~154 is a mild stress test. Peregrine is where it breaks.
best_fit_mechanics → mechanic id and games[].mechanic → mechanic id are plain strings. A script checks them today; nothing in Press Raven does.
until the template case lands, which makes the motivator and genre orders invisible on the page.
B, C, and D are pleasant and unbounded. A is the only avenue that tests whether the model works, and it is the one that will get postponed.