Peregrine · decisions recorded
Five decisions from 2026-09-16 recorded, with the two things you asked to be reported back: what retargeting the pin-field handoff would touch, and what the handler's name candidates collide with.
Staged through /cr-corpus as three notes. It closes the 2026-09-14 action item "Name the true-but-unresponsive con family. It must describe dodging a question, never forgery."
"The Politician" names the dodge family that already exists. It is not a seventh family and not a thirtieth con. The 2026-09-14 notes call it "the true-but-unresponsive con family" with the in-world name pending, and dodge is already that family — it carries the mechanical label "dodge the question" and the outfit string "the question-dodging outfit", and has never had an in-world name.
That makes it free in the schema. con_family is an enum and the name adds no option to it, so nothing in the corpus, the exporter or the Swift Family enum changes. A seventh family would have cost an enum value, a Swift case, a label and an outfit string.
| Con | Habit | Turf | Blur risk against "The Politician" |
|---|---|---|---|
| The Professor | true, but not what you asked | Reading · purpose and function | closest Its own tell is nearly the wording you gave. Expected: it is the family's purest instance, and a family name resembling its purest member is correct. |
| The Volunteer | offers support that misses the brief | Writing · rhetorical synthesis | clear The Volunteer's line is on topic and fails the job the stem asked the sentence to do. That is narrower than answering a different question. |
| The Grinder | aces the wrong question | Math · multi-step | clear Math, and about flawless work aimed wrong. |
| The Footnote | offers a detail as the main point | Reading · main idea | clear Scale error, not a non-answer. |
| The Red Herring | real evidence for the wrong answer | Reading · evidence pairs | clear About the evidence, not the claim. |
Against forgery, the family is safe by construction: nothing in it is ever false. That is what makes the death file work — every line true, and none of them saying anyone saw a body. Worth putting that sentence in the family's own gloss so a later author cannot drift a member toward fabrication.
Every con in the roster is named "The X". A family also called "The Politician" will read as a thirtieth con rather than as the outfit standing above five of them. That is the blur you warned about with The Volunteer, one level up.
The family-level register is already collective and lowercase — "the question-dodging outfit", and the desk says TONIGHT'S LINEUP · THE MATH-BOTCHING OUTFIT. Rendering it collectively puts the name where it is needed: TONIGHT'S LINEUP · THE POLITICIANS. My recommendation is to keep "The Politician" as the family's name and render it as the Politicians wherever that outfit string is used. Your call.
The con_family enum in schema-extensions.json declares five options and is missing figure, which two shipped entries use (The Squint, The Illustrator) and which the app's Swift enum has had since 2026-08-27. The corpus enum is one option behind the roster. Staged as a note; worth fixing in whichever pass opens that file.
The held handoff is F3D20BB1, "Stage the empty Act I pin field from corpus to app", confidence high, disposition held. It has four actions. Retargeting it from Prime Suspect to The Dossier does this:
| Action | Against Prime Suspect (as written) | Against The Dossier |
|---|---|---|
| 1. Check branch state, keep unrelated dirty files out of the commit | Repo hygiene | survives verbatim Nothing in it is game-specific. |
2. /cr-corpus: add one optional current-file field to the entry schema, leave it unset on every case |
Eight entries exist, ps-case001.json–ps-case008.json, family prime-suspect |
no target Zero entries carry family the-dossier. The family appears in no applies_when scope in schema-extensions.json and in no machine_target.outputs row. There is no schema to add a field to. |
| 3. Pass the field through the projection in the exporter | project_prime_suspect at export-machine.py:1151, registered at :1848, shape-checked at :1957 |
no target The exporter holds 29 projections and none is a Dossier projection. No registry key, no shape branch, no output path. This is a new projection, not a field added to one. |
| 4. Make the case model decode the field as optional, re-export, drift check, run the lint / ladder / UI tests | PrimeSuspectCase is Codable at CaseContent.swift:535; three test suites exist |
no target No Dossier model, no Dossier view, no Dossier tests. (DossierUnlockView.swift is the profile screen and is unrelated.) |
One of four actions survives. The other three have no target. The retarget does not move the handoff from one live pipeline to another — it moves it to a pipeline that does not exist. Under Prime Suspect this was one optional field added to a shipping projection. Under The Dossier the pin field is the last step of building a game, not the first.
The handoff's stated benefit, "the first piece of item schema lands without waiting on the solved case", no longer holds. Its confidence should drop from high to blocked, and the risk it already listed — "adds a field no code reads yet" — gets worse, because now nothing at all would read it.
the-dossier family. Five dossiers, twenty sources, claim graphs, twenty-five question steps and fourteen validators sit in Game-Content-and-Ideas/peregrine_language_games_claude_handoff and have never been ported. The corpus record notes the sources are original, so copyright does not block it.the-dossier row to machine_target.outputs with a file and a shape.project_the_dossier, register it, and add its shape branch.The pin field marks which entry is the current file. That is not Prime-Suspect-specific and not Dossier-specific. schema-extensions.json already carries unconditional entry-level fields alongside the family-scoped ones — label (Shelf Label) and machine_id are both unscoped.
Defined unconditionally instead of per-family, the pin field could stage today, it would be a no-op to retarget, and it would work for whichever game ends up hosting a memo. The cost is a wider blast radius: it would appear on every entry in the guide rather than on eight cases. It still waits on the season record either way. Worth a decision rather than a default.
Nothing was staged. The handoff is untouched.
Screened against casting_pool: the eight suspect casts (40 names), the 29 con aliases, the safe pool, the rejected map, and a substring sweep over the guide's own prose and all 822 entries. That last screen is the one the pool's note calls for, because CaseValidator.privacy substring-matches a cleared suspect's name against wrong_log.
| Name | In the safe pool? | Cast clash | Substring screen | Verdict |
|---|---|---|---|---|
| Francesca | yes | none | clean | clear |
| Sofia | yes | none | clean | clear The pool holds Sofía separately, so the two sit next to each other in the cast. |
| Dominic | yes | none | clean | clear |
| Gianni | not screened | none | clean | clear, unscreened Sits beside Giovanni, which is in the pool. |
| Elena | not screened | none | inside "Helena" | reject Helena is in the safe pool, so this is the exact collision class the screen exists for. |
| Lou | not screened | none | inside aloud, loud, cloud, flourish, colours, flour | reject The Lineup's entire premise is a suspect reasoning out loud. This trips the privacy check on prose that never mentions anybody. |
| Falcone | — | none | clean | clear |
| Falconer | — | none | clean | clear |
The surname is a falcon either way, and a falconer is the person who flies the bird. In an app called Peregrine, where the player is Peregrine, "Falconer" states the handler's relationship to the player in his name. That may be exactly the intent — he directs Act I and the burn ends that direction. It is also a tell, and it sits in the same class as the reason the desk could not belong to the dead man: it gives away structure before the burn. Falcone carries the same root more quietly and reads as an outfit name.
The handler is currently male in every piece of approved prose. The 2026-09-15 meeting note says "his name has not been set", the scratch note says "he is officially dead" of the nemesis and "the handler's desk… his account", and the reskin line you approved yesterday reads "Ten files on his desk." Three of the six first names are women's. Picking one means revising that line and the notes around it, which is small but should be deliberate rather than discovered later.
No name was chosen. All eight went into the meeting note with their screen results.
Staged as three notes. The Agency directs Act I, it requires separate play days, and the burn ends that direction.
| Game | Role in Act I | State |
|---|---|---|
| Prime Suspect | The Agency's assignment. Case 1 only; cases 2–10 are freelance files that open after the burn, in any order. | built |
| The Wager | Initial game | built · teen-reviewed |
| Target Practice | Initial game | built · teen-reviewed |
| The Dossier | Hosts the Act I method memo | not built No corpus entries, no projection, no model. |
| Before He's Back | Initial game, still needs refinement | not built Waits on the solved case, the season record and the item schema. |
Two of the five Act I games do not exist, so Act I cannot run end to end until both are built. The cost recorded yesterday was narrower — that the vertical slice waits on the memo. This one says the whole act does. Worth recording deliberately rather than meeting it during the Act I build.
The 2026-09-15 decision puts the five act turns in the guide-level season record beside casting_pool, and that record is designed from your solved-case prose so the schema does not limit the story. The assignment set is a games-and-structure fact, so it does not wait on the solved case. It is staged as a note rather than a schema proposal, so it becomes the season record's first content without pre-shaping its fields.
Eleven edits to docs/meetings/2026-09-15 - How should Peregrines next phase…md, all in place, struck through rather than deleted so the earlier reading stays visible.
| Section | Edit |
|---|---|
| Revised header | Notes the 2026-09-16 revision: memo host, con family, Act I set. |
| New: Settled 2026-09-16 | Assumption 12 overturned. Notes that 1 (handler's face) and 4–5 (hints and routing) remain open, and closes the 2026-09-14 "name the con family" item. |
| Pinned Act I memo | "Its host game is open" struck. The host is The Dossier, with the three-condition reason. |
| Pin field | Now belongs to The Dossier, and has two dependencies rather than one. |
| Build order 1 | Retargeted; points at the retarget report. |
| Build order 4 | Waits on The Dossier being built rather than on a choice. |
| For Sarah · handler | All eight candidates with their screen results and the two flags. |
| For Sarah · memo host | Question struck and answered. |
| For Sarah · Act I games | Question struck and answered, with the two-unbuilt-games cost. |
| For Sarah · con family | Question struck and answered, with the form warning. |
| Build detail · unlock tests | Answered from yesterday's inventory, with a pointer to it. |