Peregrine's own phone: the container, its six surfaces as list and item, and the stations that need new artwork. Revised 2026-09-24 to the Phone decisions doc. Rendered from docs/mockups/_phone-handoff.md.

The phone — visual handoff

For whoever draws the phone. The container, its six surfaces as list and item, and the stations whose phone form differs from what they already are. Decisions that block specific screens are named where they bite.

Date: 2026-09-24, revised the same day to the Phone decisions doc · Newest source, wins on conflict: docs/2026-09-24 - Peregrine - The Phone.md · Normative: docs/spec/the-thread.md (container, revised 2026-09-24) · docs/spec/verb-registry.md (verbs) · docs/mockups/_frame-contract.md (how a mockup declares its states) · _principles.md (now with The Phone) · _assets.md

Mockups in progress (being drawn in parallel with this brief): docs/mockups/phone-lock.html · phone-messages.html · phone-calls.html · phone-voicemail.html · phone-maps.html · phone-photos-notes.html.

Scope — what actually needs drawing. the-thread.md §5 lists four stations as rehousing cleanly, and three of them need no new visuals: Red String is "the corkboard, reached from the phone rather than replacing it", and The Lineup and The Wager are "unchanged, reached as case material rather than as a drill menu." Those are routes into games whose UI already stands, so they appear here only as hand-off points. What needs drawing is the container (the lock screen and six surfaces, each a list and an item), the reading station in Messages, and The Statement as a voicemail transcript. The Connection Board, where a run concludes, already has its own screen and is reached, not redrawn. The Dossier, Fault in the Record and The Stakeout have no phone surface assigned in any spec and are out of this brief. Nothing here is invented; where a thing is undecided it says so and names the decision.

1. What the phone is

Peregrine's own phone. Not a found device, not a simulation of a phone, not a phone-themed menu. The fiction: you are Peregrine, this is your phone, and it remembers things you don't — including the hour on the couch between 10:30 and 12:10. (Phone doc §1; the-thread.md §1)

The player's stated task is never answer this question. It is what was I doing. Every ride, receipt and timestamp is a piece of her alibi she did not know she had. The Phone never poses a question; the player opens it because something is there.

The container's own line, from the corpus roster entry: "Be wrong about a person and find out." It applies only where a person is the material, which means the Reading surfaces. A voicemail transcript does not carry it, because a comma is not a judgment about anyone. The Phone never says you were wrong. A person answers differently, later, and that is the only feedback.

Five rules that bind every screen

RuleSourceWhat it forbids on the page
The container owns no primary verb and claims none§1.1, §2.1No shell-level action. The phone navigates; stations act.
A container may not score§2.1, §2.4No points, no streak, no performance counter anywhere in the shell. Inventory counts (3 NEW) are allowed.
A station must remain playable outside the container§5Draw each station so it works as its own screen too. The shell is a way in and never a dependency.
Continuity is the stake§4.3Threads stay read. People answer differently once you have been wrong about them. Someone cleared earlier surfaces later.
The container is one route among several§9, §4.9Not the app's front door. The Desk is.

Two rules added 2026-09-24

The phone must also host material with no con in it. It carries Plot and Client material and, because it is hers, ordinary life. It is not a grudge surface.

2. The six surfaces

A Reading run lives in Messages and Voicemail. A Writing run lives in Voicemail (transcripts) and Notes. A Math run lives in Photos, Calls and Maps. There is no mode picker; the player goes where the material is.

SurfaceHostsSection it servesRefills
Messagesthreads between named people and PeregrineReading — inference, evidence, tone, cross-text where two threads disagreeFinite, authored: per client file and plot beat
Voicemailaudio with an auto-transcript beneath itWriting — the transcript arrives unpunctuated; the player sets the boundariesExtensive: new voicemails most sessions
NotesPeregrine's own draftsWriting — revision and rhetorical synthesis on her actual draftSmall: three or four across the season (assumed)
Photosreceipts, screenshots, a photographed table or chartMath — data readingExtensive: numbers change, format does not
Callsthe log (timestamps, durations) and the dial padMath — intervals, rates, timelinesExtensive: the log grows daily
Maps / ridestrips with distance, time and fareMath — rate, distance, proportionExtensive: new rides most days

A seventh app, Settings, deep-links to the Desk's gear screen: one screen, two doors.

The list is the container; the item is the station

Every surface is two screens. The list (rows with a name, a duration, a time) is the shell. It asks nothing and scores nothing. Tapping a row opens the item (a transcript, a receipt, a ride), and the item is a full game round with a question, a verdict and a stamp.

WhereAllowedNot allowed
The list (shell)3 NEW, 12 TRANSCRIBED, names, durations, a "next" that just opens the next row9/12 correct, a streak, a score, "punctuate this"
The item (station)The question, the verdict stamp, the coin, the one-line insightNothing withheld; it is a full game round

Draw the item screen as a game screen first (chrome, paper, verdict), then draw the list as a phone. A list that starts to look like a scoreboard is the station leaking.

The threshold: the lock screen

No station can carry the threshold. A name and half a sentence, no app name; the Phone's icon is the empty frame.

State [draft]Top notification
Day 1Desk — "Credential issued. You'll get an assignment when—"
Day 6Falconer — "Tonight. In person. Take the—"
Burn nightNo Service; top notification Desk — "Credential under review. Do not—" (assumed: the burn notice also arrives as a message)
Act IIIDana — "the photo I sent you, look at the—"

Burn night's No Service sits inside the lock screen's content as a mono line, because a drawn status bar is on the don't-take list (§6).

Surface notes that change the drawing

StateOutgoingFiction
Pre-burnConnects to Contacts only (the Agency's plan). Everything else plays a tone.Easter eggs and never-required plot bits behind the saved contacts.
Burn night onwardNothing connects. The desk's own number: out of service.The plan was theirs.
Later (act TBD)One number connects, found on a document and dialed by hand.The first time the dial pad works on her terms. 80 on the mechanic; the document is open.

Messages keep arriving throughout, over wifi. Only calls die.

3. What the phone contains

the-thread.md §5's rehousing table in full, with what each row costs in new artwork. The shell is a way in and never a dependency, so a station reached from the phone keeps the screen it already has.

StationVerbRehoused asNew artwork?
The Statementplacean unpunctuated voicemail transcript; the player sets the boundariesYes — the transcript is a new surface
The Frisklocate (if it wins the call)a long message you scan for the line that does not fitYes — nothing exists to draw from
Red Stringsplicethe corkboard, reached from the phone rather than replacing itNo — its board stands; draw the hand-off only
The Lineup / The Wagercall it / push a chipunchanged, reached as case material rather than as a drill menuNo — both ship today; draw the entry only

The Photos, Calls, Maps and Notes items are stations by the list/item rule, and no spec yet names a game or verb for them. Draw them as game rounds (question, verdict, stamp) with the skill the surface serves.

Status columns disagree on purpose: build_status (corpus guide.json) is does it exist; the tier (corpus roster-status.json, 2026-09-21) is are we keeping it.

The Thread — the container itself

The Statement — place · ready to draw

The Frisk — notice proposed · blocked on a decision, not a cost

Red String, The Lineup, The Wager — reached, not redrawn

These three already have their screens and the spec keeps them: Red String's corkboard is "reached from the phone rather than replacing it", and the Lineup and Wager are "unchanged." Red String ships today with a 968-line view and its own board spec; the Lineup and Wager carry the deepest banks in the project, 175 and 256 items. On the new tab bar the Wager and Red String sit in Training and the Lineup sits in Underworld.

The only thing to draw is the hand-off: how a phone surface reaches the board or the case material, and how the player comes back. Two constraints on that hand-off:

The Connection Board — reached, not redrawn

Runs conclude here. A phone document pinned from the file room's Phone drawer is a document like any other; the board's draw sheet, line states and tags stand as specified in the 2026-09-19 non-game screens spec. Draw only the route from a phone item to Pin to the board.

4. What the phone has to author

§11.2 forbids the port: "the shell cannot simply re-present ps-case002. A phone prototype needs material authored for a phone — small, but not zero, and it should be costed as new material rather than as a port."

Prime Suspect — the boardThe Thread — the phone
Vantagethird person; you work a scenefirst person; you are going through your own phone
Materiala fixed cast, exhibits, threads to deduce acrossPeregrine's residue — messages, photos, logs
Questionwho did it, from evidence laid outwhat was I doing, reconstructed from traces
Good atdeduction across suspectschronology, voice, intimacy, the nosy read

A thread, per §6: participants drawn from the case's cast or her life; lines each carrying a sender and a timestamp; exactly one line marked as the one that matters (authoring metadata, never rendered); the rest authored as the context that makes the marked line readable. Noise first: write the landlord and the dentist before the con.

The person model, per §6.2: Person { name, wrongedOnce: bool }. One bit per person, one alternate line per surface for the wronged state. 75. Keep the town small enough that names recur.

Three things no existing case carries: voice per person, sustained (Okafor writes a nervous paragraph, Dale writes one word and three dots, Priya sends memos); cast memory across cases; and reciprocal aftermath, where the person you let walk texts first next morning.

The authoring risk is recorded in a tester's words: "Who's writing Okafor? Because I'll know inside three texts if it's a person or a template, and that's the whole game."

5. The screens to draw

From the Phone doc §7. Phone-first HTML, one screen at a time, dev-bar states, the same file conventions as the other mockups. Per the list/item rule: item screen as a game screen first, then the list as a phone.

#ScreenWhat it showsFile
1The lock screenThe threshold; four states (day 1, day 6, burn night, Act III)phone-lock.html
2MessagesList and one thread; pre-burn and post-burn; a SEND FAILED. The surface most likely to become someone else's product if it isn't designed on purpose.phone-messages.html
3CallsLog and dial pad, three statesphone-calls.html
4VoicemailFalconer's day-6 message with the unpunctuated transcript: the list, then the transcript as a station with its verdictphone-voicemail.html
5MapsThe two ridesphone-maps.html
6Photos, NotesOne screen eachphone-photos-notes.html

The Phone tab's own app launcher is not on the §7 list. The tab-bar work treats it as a placeholder list of the six apps plus Settings.

What the specs say to keep out of these screens: the arrest (held out until §4.4 of the plot spec changes), the March night (undesigned and handed to an ethicist who was not in the room), any A–D item before a post-arrest receipt, any performance count anywhere in a list, any prompt or hint bar, any face in Photos, and the real date anywhere.

Assets

AssetSpec
Six app icons, original1:1, 400×400, flat, Peregrine's palette. An empty frame for the Phone itself (per corpus). No resemblance to Apple's.
Contact avatarsReuse the 57-face contact sheet; no new faces.
Photo contentsThe Halloran's ledger page (paper, photographed at an angle, timestamped); two or three receipts; one table or chart. 4:3, 1200×900. No faces.
Map groundOne dark abstract street grid, 1200×1200, no real place.

6. How to build the file

Pick the template

Two incompatible mockup families exist today. The phone uses the plot family's frame and fonts, with the glass tokens below on top of the PG / Desk tokens.

FamilyFilesFrameTokensFonts
Plot / non-game (use this)peregrine-case-board-v5.html, peregrine-intake-v4.html, peregrine-credential-v4.html390×844PG / Desk + Glass, belowReddit Sans · Gelasio · JetBrains Mono
Game-flow v4red-string-board.html, fault-in-the-record-v4.html, the-dossier-file-view.html412×812warm dark: --world:#1C1613 --gold:#D9B23C --cream:#F2EBE0Poppins · Source Serif 4

The Statement's 7 September mockup sits in neither family and is re-tokenised as it becomes the voicemail transcript. Red String, the Lineup and the Wager keep their own styling, since the phone reaches them rather than absorbing them.

:root{
  /* PG / Desk tokens — from the Visual Design Foundation */
  --ink:#11172C; --ink-desk:#1A1F36; --ink-soft:#6A6558; --taupe:#B1AB9D;
  --paper:#F6F4EF; --paper-hi:#FBFAF6; --paper-lo:#EFECE4; --surface:#FDFCF8; --hair:rgba(17,23,44,.12);
  --room:#221D14; --room-line:rgba(246,244,239,.10);
  --gold:#BE9540; --lamp:#F2C85B; --level:#3F5A4C; --ox:#8C3B34; --ox-tint:#F3E1DD; --live:#E4574C;
  --sans:"Reddit Sans", -apple-system, system-ui, sans-serif;
  --serif:"Gelasio", Georgia, serif;
  --mono:"JetBrains Mono", ui-monospace, Menlo, monospace;
  --stamp:"Archivo", "Reddit Sans", sans-serif;
}

Material: paper is the Agency, glass is the world

The Agency runs on couriers, a sealed desk and cards. The Phone is the one object on the world's terms, so it gets a third material. Familiar in bones, ours in skin: iPhone conventions, Peregrine's palette and type, no Apple icons or symbols.

Glass tokens (new; a named group in PeregrineTheme, not drift):

RoleValueNote
Glass groundNight Room #221D14The phone is a dark object. Not black.
Glass surface#2B2519 (assumed)Rows, cards, the compose bar
Received bubbleOat Paper #F6F4EF on Case Ink textPaper: what arrives is on the world's terms, but it is still what she reads
Sent bubbleCase Ink #11172C on Oat textHer ink
Chrome typeReddit SansNames, app titles, tab labels
Body typeGelasioMessage text, transcripts, notes. Italic for voice where the corpus says so
MetaJetBrains MonoTimestamps, durations, fares, SEND FAILED
HotLive Wire #E4574CNotification dot only. One per surface.
:root{
  /* Glass — the Phone's material (2026-09-24) */
  --glass-ground:#221D14;   /* Night Room */
  --glass-surface:#2B2519;  /* (assumed) */
  --bubble-in:#F6F4EF;  --bubble-in-ink:#11172C;
  --bubble-out:#11172C; --bubble-out-ink:#F6F4EF;
  --glass-hot:#E4574C;      /* notification dot only */
}

Conventions: take and don't take.

Take freely (conventions)Don't take (property or mimicry)
Sent right / received left; timestamps centered between clustersApple app icons or close variants (green speech bubble, green handset)
List rows: round avatar, name, preview, timeSF Symbols redrawn as assets
Lock screen: time, date, stacked notificationsThe blue-and-grey bubble pair
Dial pad grid; voicemail row expanding to a transcriptA drawn status bar
Bottom tab strip inside an appMaking the fiction look like an actual Apple app (App Review reads it as misleading)

Native components (List, text fields, sheets) and SF Pro are Apple's frameworks and are fine in the build. SF as the fiction's chrome type is not.

The four rooms (tab bar)

Settled 2026-09-24. Replaces Play / Cases / Training / You. Draw the Phone tab selected when a mockup shows the app's own bar.

TabHoldsNotes
Desk — landingThe Case Board (hero, season ledger, Docket) + the case games: Prime Suspect client files, The Dossier, StakeoutEvery session opens here (burn night excepted). The burn hero makes the name a choice: Nothing from their desk. This one's yours. [draft]
TrainingThe Wager, Target Practice, Red String; the basement (My Misses / Endless / Fresh) as modes insideOff the record where it says so.
UnderworldThe Lineup, The Make, Go Undercover; the Grinder lives hereCons and traps.
PhoneMessages, Voicemail, Notes, Photos, Maps, Calls (+ Settings)Hers.

Credential and settings live behind the gear on the Desk. The Phone's Settings app deep-links to that screen.

Type roles

Reddit Sans carries chrome, headlines, CTAs and plain instructions, always sentence case. Gelasio carries anything spoken, claims, notes and sublines; its italic is voice. JetBrains Mono carries eyebrows, dates, sources, counters and field labels — meta only, never instruction. On the Phone, mono also carries timestamps, durations, fares and SEND FAILED.

Stamps

Two families, never mixed. Document stamps are ink (ACTIVE, UNDER REVIEW, OPERATIONAL COPY · SP-14). Verdict stamps are green or oxblood (CLEARED, HOLDS green; struck lines oxblood). Verdict stamps appear on the item only, never on a list or a thread.

One hot element per surface

From the v4 handoff spec: the fastest way to break a screen is adding a second. On the Phone the hot element is the Live Wire notification dot.

Declare the frames

Every new mockup carries the contract, which the phone's dev bar can drive. Example for the lock screen:

<script type="application/json" id="cr-frames">
{ "unit": "The Phone — lock screen",
  "states": [
    {"id":"day1",   "label":"Day 1",      "beat":"entry"},
    {"id":"day6",   "label":"Day 6",      "beat":"entry"},
    {"id":"burn",   "label":"Burn night", "beat":"entry"},
    {"id":"act3",   "label":"Act III",    "beat":"entry"}
  ] }
</script>

The beat vocabulary is fixed: entry · brief · play · commit · reveal · closed. A list screen is brief; an item is play, then reveal for its verdict. Keep a visible row of state buttons, and listen for crSetState messages rather than exposing a global function, since a linked file:// frame is cross-origin to a storyboard. /cr-frames generates this block.

Art on hand

57 avatar portraits (avatar-00…56) for thread participants, plus Falconer face and back. Props: manila evidence front and back, evidence tape, paper stains, cork, coffee ring, charred paper, envelope, fingerprints, chalk outline, green felt. Scenes: dark courtyard, dark station, the house. Stamps: case closed, case dismissed, dead to rights, duped. Check repo-root Image-Assets/ for staged art before drawing placeholders.

7. Decisions that block drawings

  1. Is The Frisk in or out? In means The Frisk takes notice, The Lobby keeps locate, and both ship. Out means The Lobby keeps locate and takes this slot. Blocks: the reading station inside a Messages thread, whichever station fills it.
  2. The first thread's cast. Blocks: every line of thread copy. Plot items and lock-screen copy are drafted.
  3. Is the Voicemail transcript authored or derived? Changes the content schema; the screen can be drawn either way.
  4. Which document carries the number that works post-burn. TBD: Act III (clerk's note) or Act IV (Wren's memo). Blocks: the third dial-pad state's copy, not its layout.
  5. Burn-night No Service against the no-drawn-status-bar rule. Resolved for the mockups: a mono line inside the lock screen's content. Needs Sarah's confirmation.
  6. Which games or verbs own the Photos, Calls, Maps and Notes items. The items can be drawn as generic rounds; their verbs are unregistered.
  7. Still assumed: bubble tails (none), glass surface #2B2519, the burn notice arriving as a message, three or four notes. Contacts list contents are unwritten.

The token-family decision from the earlier brief is settled: plot family plus glass.

8. Record corrections worth making while you are here