Peregrine · decisions recorded

The memo's host, the con family,
the handler's name, Act I

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.

2026-09-16 · corpus 3acb581 · app bf7aaeb
Nothing was written to the corpus. One staging batch and one meeting-note update. No story document, no placeholder memo, no new question.

1 Con family — The Politician

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."

Where it lands, which is narrower than it first looks

"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.

Separation check against the family's five members

The dodge family as it stands
ConHabitTurfBlur risk against "The Politician"
The Professortrue, but not what you askedReading · purpose and functionclosest 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 Volunteeroffers support that misses the briefWriting · rhetorical synthesisclear 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 Grinderaces the wrong questionMath · multi-stepclear Math, and about flawless work aimed wrong.
The Footnoteoffers a detail as the main pointReading · main ideaclear Scale error, not a non-answer.
The Red Herringreal evidence for the wrong answerReading · evidence pairsclear 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.

One thing to rule on before it ships

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.

Drift found on the way in

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.

2 Memo host — what the retarget would touch

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 by action
ActionAgainst 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.)
What the retarget actually does

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.

What would have to exist first

  1. Port The Dossier's authored content into the corpus as a 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.
  2. Add a the-dossier row to machine_target.outputs with a file and a shape.
  3. Write project_the_dossier, register it, and add its shape branch.
  4. Add a Dossier model to PeregrineCore and decode the bundle.
  5. Build the game.
  6. Then the pin field is one optional field, exactly as the handoff describes it today.
An alternative the retarget surfaced

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.

3 Handler — name check

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.

Candidates
NameIn the safe pool?Cast clashSubstring screenVerdict
Francescayesnonecleanclear
Sofiayesnonecleanclear The pool holds Sofía separately, so the two sit next to each other in the cast.
Dominicyesnonecleanclear
Gianninot screenednonecleanclear, unscreened Sits beside Giovanni, which is in the pool.
Elenanot screenednoneinside "Helena"reject Helena is in the safe pool, so this is the exact collision class the screen exists for.
Lounot screenednoneinside aloud, loud, cloud, flourish, colours, flourreject The Lineup's entire premise is a suspect reasoning out loud. This trips the privacy check on prose that never mentions anybody.
Falcone—nonecleanclear
Falconer—nonecleanclear
Two flags the casting pool cannot catch

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.

4 Act I assignment set

Staged as three notes. The Agency directs Act I, it requires separate play days, and the burn ends that direction.

The five games Act I sends the student to
GameRole in Act IState
Prime SuspectThe Agency's assignment. Case 1 only; cases 2–10 are freelance files that open after the burn, in any order.built
The WagerInitial gamebuilt · teen-reviewed
Target PracticeInitial gamebuilt · teen-reviewed
The DossierHosts the Act I method memonot built No corpus entries, no projection, no model.
Before He's BackInitial game, still needs refinementnot built Waits on the solved case, the season record and the item schema.
The accepted cost is larger than the one recorded on 2026-09-15

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.

Where it was staged, and why not as a schema

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.

5 Meeting note updated

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.

What changed
SectionEdit
Revised headerNotes the 2026-09-16 revision: memo host, con family, Act I set.
New: Settled 2026-09-16Assumption 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 fieldNow belongs to The Dossier, and has two dependencies rather than one.
Build order 1Retargeted; points at the retarget report.
Build order 4Waits on The Dossier being built rather than on a choice.
For Sarah · handlerAll eight candidates with their screen results and the two flags.
For Sarah · memo hostQuestion struck and answered.
For Sarah · Act I gamesQuestion struck and answered, with the two-unbuilt-games cost.
For Sarah · con familyQuestion struck and answered, with the form warning.
Build detail · unlock testsAnswered from yesterday's inventory, with a pointer to it.