Every concern you raised, what was done about it, and exactly where to look. Then the decisions still sitting open.
I have not run the app. Everything below is verified by compile, by RavenKit's tests, and by the exporter's own --verify — not by clicking. So this is a list of what should be true, and you are the first person to check.
Best guide to test against is Stellar — it exercises nearly all of it. Use Peregrine for the new Cold Case mini game, and create a throwaway Game guide to test the empty-state path.
fixed behaviour changed · new something that didn't exist · explained no code change, working as designed
| # | What you said | What changed | Where to look |
|---|---|---|---|
| 1 | When would I choose New Seed? | fixed Both items now carry the explanatory subtitles the sidebar + menu already had. |
File menu — New Seed reads "One idea into an existing guide"; New Guide reads "Start a guide from a category template". |
| 2 | It shows up in the sidebar and that's it — we're still on Dashboard. | fixed Creating a guide now selects it and opens its document. | File → New Guide → Create. You should land inside the new guide, not on the Dashboard. |
| 3–5 | Am I supposed to click one of these? What about these? Or Ways In? … I thought a session would open a terminal, but it just made an MD file. | fixed This was the worst bug: two different buttons were both called "Start a Session." The prominent one only ever wrote a file. Now there are two clearly-named buttons, and the prominent one is the one that opens a terminal. | Any guide → the band under the Brief. Open a Claude Session… (prominent) logs the packet, copies it to your clipboard, and opens Terminal running claude. Export a Packet… writes the file. The same name now appears in the File menu and Ways In. |
| 6 | Scope is empty — so what now? Export would be empty too. | explained The (0) is the entry count, and you were right — there was nothing to export. No code change; the underlying cause was #7. |
Open a Claude Session → Export a Packet. On Stellar the scope list now shows one row per mini game. |
| 7 | Draft Here brings up … this. | fixed Draft Here lays out one section per mini game; a new Game guide has none, so it silently did nothing. It is now disabled and says why. | New Game guide → Draft Here. Should be greyed with "declare a mini game first" beside it and a tooltip explaining. Declare one and it comes alive. |
| 8–10 | Games are secondary to the questions, the titles aren't clickable, there's no way to see one set, there's no game-specific view. | new A mini-game roster above the document, and navigator group headings are now buttons. | Open Stellar. Above the entries: one card per mini game. Click a name to isolate that set. In the middle navigator, click a group heading to isolate; click again to clear. Watch for the filter icon on the active one. |
| 11 | No description of the game itself. | new It was all authored and none of it rendered. Each card now shows mechanic, build status, entries vs bank target, the reskin, and the divergence essay. | Stellar → the roster. Expand "How the build departed from the mechanic" on The Whiteboard — that essay has been sitting in guide.json unread. |
| 12 | The text under the title is a combination of notes and tags. | fixed Neither, in fact — it was every scalar field's value with the field name thrown away. Now renders as label value pairs, labels set back from values. |
Any Stellar entry. The line that read the-thread · item · … · 1 · serve should now name each one. The 1 is rotation, not number. |
| 13 | No example anywhere of how an item will be constructed. | new A "What an item needs" contract per mini game, split by entry class, showing each field with its type, whether it's required, and its prompt. | Stellar → roster → The Thread → "What an item needs". You should see three shapes — item, rule, flavor — which is the answer to why they look so different from each other. |
| 14 | Fields appearing twice. | fixed Two separate bugs. FieldDef.id is its key and the schema legitimately declares one key per mini game, so SwiftUI got duplicate identities. Separately, a boxed string_map printed its own label under the box strip. |
Stellar → The Thread → any "as drawn" entry. DISPLAYED POSITIONS and FAULTS should each appear exactly once, with no repeated label inside the box. |
| 15 | Nearly all fields are empty but the game WORKS — what's covered, what's not? | fixed The deepest one. Six fields carrying live content — including the whole 87-entry rules bank — were declared by no schema block at all, so they never rendered. And the-thread's item fields applied to its rule and voice entries too. |
Stellar → The Thread → a rule entry (a written situation). It should now show situation, call, legal, because, topic — content that was invisible before — instead of a wall of empty formation fields. Empty string_map/object_list fields now show their prompt rather than a blank box. |
| 16 | Is commit ever unsafe? Do changes render live? We need a way to push changes into the game. | new A drift indicator, plus documentation. Answers: commit touches the corpus repo only and can't break the game; changes do not render live; and the push mechanism already existed but was invisible. | Stellar → document toolbar, the arrow icon. Hollow grey = the game matches. Filled amber = the corpus is ahead. Click for Write / Dry Run / Cancel. Hover for which app it writes to. Also new: the machine-target section of README.md. |
| + | Raised mid-flight: no way to add a mini game to an existing game. | new A New Mini Game sheet that browses the mechanics catalog rather than asking you to know a title. | Ways In → New Mini Game… or the roster's "Add a Mini Game…". See below. |
| + | Found while verifying: the section strip read THE · THE · STORIES · THE · THE. |
fixed The tab label took only the first word, and five of Stellar's mini games start with "The". | Stellar → the dark strip at the top of the document. Full names now. |
A dropdown of titles was useless — nothing about "Stamp or Reject" tells you whether it suits what you have in mind. It is now a browsable read-only view of the catalog you select from.
mind · thumb pair, confidence, status, and the one-line description.Where: Stellar or Peregrine → Ways In → New Mini Game…
Ordered by how much rests on the answer. Nothing here is blocking; everything is recorded in the corpus so it stays visible if you leave it.
I wrote it as a new catalog entry (third-call, #42, confidence 74) and pointed Blow the Whistle at it. The argument: the call is three-way, and no-point — a whistle awarding nothing — has no home in Stamp or Reject's violations[]. Two supporting differences: no accumulating rulebook (eight topics, all live from the first situation, where Stamp or Reject says the rules are the design), and immediate adjudication rather than the delayed consequence it insists on.
I used the catalog's own test, from Stream Screen: a difference is a tuning if it doesn't change the content contract. This does — call becomes an enum and attribution moves to its own field.
It named beat-the-clock, which has never existed anywhere — not the catalog, not either app, not the corpus. I cleared it rather than guess, so the gap report now shows it as awaiting a mechanic (true) instead of a broken reference (which understated it).
Checked and rejected: decode-against-the-clock (one countdown over a hidden payload), beat-your-ghost (classifies one item against a type/move taxonomy, never solves), shared-clock-triage (about what to skip).
place-the-mark or a second entry is the same call you just made for Blow the Whistle.Declared on Peregrine at order 12, fault-sweep, build_status: designing, bank target 40, with a full schema block. Fault Sweep is the cheapest text mechanic in the catalog and its authoring recipe is literally "take clean prose and break it."
But Peregrine already ships Target Practice on Stream Screen, and the catalog says "Fault Sweep is this with the clock removed and the count given." That single axis is the only thing keeping Cold Case from being Target Practice in a hat.
"A miscalculation about the time of the crime changes who did it" is an ordered chain with one break whose correction moves the conclusion. That's catch-the-break, which Peregrine already builds as The Lineup.
To make the rules bank, the rally and the whiteboard render at all, I had to declare their fields — which meant writing prompts. Mine are factual and serviceable; every other prompt in that file is yours, and the difference will be obvious.
Affected: stellar/schema-extensions.json (the rules-bank block, the rally block, the whiteboard's spots/near_spots/voice_source) and peregrine/schema-extensions.json (the whole Cold Case block).
It declares checkpoint-authority, but its authored schema — verdict, faults, plausible_clean — is Stream Screen's contract, not Stamp or Reject's (violations, satisfies, consequence_text). The one field that is checkpoint-authority's is interaction, whose prompt quotes that mechanic's failure mode almost verbatim.
divergence rather than sitting silent. I changed nothing here.show-up-or-lose-it has no mechanic and no schema block — the second of the gap report's two proposals.git add -A on the whole corpus with no path scoping, and "Commit All Changes" has no confirmation at all. It can't hurt the game — wrong repo — but it will sweep up anything lying around. I flagged this and did not change it; scoping it is a design decision.instances field validated?Chasing your Wager note turned up two stale cross-references — peregrine:wager and peregrine:lineup, where the mini games are the-wager and the-lineup. Both fixed. They drifted because nothing checks instances; the gap report validates mechanic references but not these.
_build_gap_report.py. Say the word. (The eight remaining dangling ones are all annotated (unbuilt) — deliberate forward references, left alone.)MiniGameViews.swift new, README.md updated.third-call.json new; stellar, peregrine, fault-sweep, catch-the-break, confidence-wager modified..git/hooks/pre-commit added (untracked by nature; it verifies Data/ against the corpus and I tested it both ways).--verify all pass; nothing was clicked.~/Developer/Stellar.