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
| Rule | Source | What it forbids on the page |
|---|---|---|
| The container owns no primary verb and claims none | §1.1, §2.1 | No shell-level action. The phone navigates; stations act. |
| A container may not score | §2.1, §2.4 | No points, no streak, no performance counter anywhere in the shell. Inventory counts (3 NEW) are allowed. |
| A station must remain playable outside the container | §5 | Draw 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.3 | Threads 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.9 | Not the app's front door. The Desk is. |
Two rules added 2026-09-24
- The player never authors a sent message. The compose field works. Every send fails, every time, with
SEND FAILEDin mono and no dialog. Peregrine's authored replies exist in threads; the player's words never leave the field. 85. - A run concludes on the Connection Board. The Phone cannot conclude it and a station only closes its own question. The player draws a line between two phone documents, the line is tagged in Peregrine's words, and the Docket logs it (Read — three threads, day 12). 80.
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.
| Surface | Hosts | Section it serves | Refills |
|---|---|---|---|
| Messages | threads between named people and Peregrine | Reading — inference, evidence, tone, cross-text where two threads disagree | Finite, authored: per client file and plot beat |
| Voicemail | audio with an auto-transcript beneath it | Writing — the transcript arrives unpunctuated; the player sets the boundaries | Extensive: new voicemails most sessions |
| Notes | Peregrine's own drafts | Writing — revision and rhetorical synthesis on her actual draft | Small: three or four across the season (assumed) |
| Photos | receipts, screenshots, a photographed table or chart | Math — data reading | Extensive: numbers change, format does not |
| Calls | the log (timestamps, durations) and the dial pad | Math — intervals, rates, timelines | Extensive: the log grows daily |
| Maps / rides | trips with distance, time and fare | Math — rate, distance, proportion | Extensive: 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.
| Where | Allowed | Not allowed |
|---|---|---|
| The list (shell) | 3 NEW, 12 TRANSCRIBED, names, durations, a "next" that just opens the next row | 9/12 correct, a streak, a score, "punctuate this" |
| The item (station) | The question, the verdict stamp, the coin, the one-line insight | Nothing 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.
- Time and date in Reddit Sans on the in-fiction clock (
DAY 6 · 9:41 P.M.). Never the real date. - Notifications, stacked, newest first. A name and a preview cut mid-sentence: Falconer — "Tonight. In person. Take the—". No app name, no icon. The preview can say could be and never is.
- One swipe to unlock. No passcode and no puzzle; a passcode would give the container a verb.
- Counts, not content: a mono line under the notifications,
3 THREADS · 2 VOICEMAILS · 1 PHOTO.
State [draft] | Top notification |
|---|---|
| Day 1 | Desk — "Credential issued. You'll get an assignment when—" |
| Day 6 | Falconer — "Tonight. In person. Take the—" |
| Burn night | No Service; top notification Desk — "Credential under review. Do not—" (assumed: the burn notice also arrives as a message) |
| Act III | Dana — "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
- Messages. Oat and ink bubbles, Gelasio body, centered mono timestamps, no bubble tails (assumed). Her replies are Docket voice and rare. The compose field is live, and a send shows
SEND FAILED, pre-burn and post-burn alike. The thread itself never changes color; a station opened from it stamps its own result. Noise comes first: landlord, dentist, the muted group chat. - Voicemail. A waveform bar and a play control; the audio is texture (assumed: no TTS for a mockup). The row expands to the transcript. After day 9 nothing arrives from the desk, and the row that would hold it is not there.
- Notes. Her unsent letters to the desk, a list, a draft she never sent. Small on purpose.
- Photos. The Halloran's ledger page, photographed at an angle and timestamped; receipts; one table or chart. No faces.
- Maps. A route line on a dark abstract map, never a real tile. The two rides: to 214 at 10:12, home at 12:55. 70.
- Calls. The log, and a dial pad with three states:
| State | Outgoing | Fiction |
|---|---|---|
| Pre-burn | Connects 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 onward | Nothing 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.
| Station | Verb | Rehoused as | New artwork? |
|---|---|---|---|
| The Statement | place | an unpunctuated voicemail transcript; the player sets the boundaries | Yes — the transcript is a new surface |
| The Frisk | locate (if it wins the call) | a long message you scan for the line that does not fit | Yes — nothing exists to draw from |
| Red String | splice | the corkboard, reached from the phone rather than replacing it | No — its board stands; draw the hand-off only |
| The Lineup / The Wager | call it / push a chip | unchanged, reached as case material rather than as a drill menu | No — 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
- Roster: order 17,
build_status: proposed, mechanicthe-container, no bank target. Tier: "Not a game. Container, per docs/spec/the-thread.md." The fiction and the tab bar call it the Phone. - Verb: none, by construction. The registry's reserved table already carries the row: "owns no verb; a container, not a station."
- Exists: the spec (revised 2026-09-24), its review page, and six mockups in progress (listed at the top). No Swift yet. No corpus family.
- Content: the plot items are now named (Falconer's day-6 voicemail, the Halloran's ledger photo, the two rides, the lock-screen states). Thread copy is still unwritten. The corpus note stands: "Not one line of thread copy was written in the room. Okafor's paragraph exists as folder prose; Dale has no texts; Priya's memo has no words."
- Draw: the threshold, the six surfaces as list and item, and the Phone tab. This is the brief's main subject.
The Statement — place · ready to draw
- Roster: order 14, proposed, bank target 10, mechanic
place-the-mark. Tier: refining. - Verb:
place, "reserved 2026-09-05 — new verb, no collision". The registry defines it as tapping a gap so a comma goes in, withnonea valid placement. That is the boundaries station the Phone doc asks for. - Exists:
docs/mockups/the-statement.html(8 frames, 7 Sep). No Swift, no spec file. - Content: 2 of 10 authored (
st-one-guard,st-couriers-desk), with the folder fact that decides the mark. - On the phone: the voicemail transcript, arriving unpunctuated; the player sets the boundaries. Falconer's day-6 message is the first to draw (
phone-voicemail.html). - Blocks: none for drawing. Two open calls touch it without changing the screen: whether the transcript is authored or derived, and whether Fault in the Record eventually absorbs this game as its untimed mode.
The Frisk — notice proposed · blocked on a decision, not a cost
- Roster: order 21, proposed, no bank target, no mechanic. Tier: unlisted — the only game with no status. Sarah, 2026-09-21: "Unclear. Still open, as is whether The Lobby is its build."
- Exists: nothing. No mockup, no code, no content.
- On the phone: a long message you scan for the line that does not fit.
- The review's verdict: "What would block a preliminary mockup: a decision, not a cost… Everything else about it is cheap: a paragraph, a beam, and a tolerance radius."
- If The Frisk loses the call, this slot is The Lobby's, which is the same gesture against a stated claim (he never left the lobby, tap the sentence that proves he did) and which has a 6-frame mockup already. Either way one reading station sits here.
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:
- §11.3: Training does not belong in the shell. The Lineup and Wager enter as case material; drawing them as a drill menu inside a phone contradicts the spec.
- §2.1: the shell may not score. The points those games award stay theirs, settled on their own screens.
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 board | The Thread — the phone | |
|---|---|---|
| Vantage | third person; you work a scene | first person; you are going through your own phone |
| Material | a fixed cast, exhibits, threads to deduce across | Peregrine's residue — messages, photos, logs |
| Question | who did it, from evidence laid out | what was I doing, reconstructed from traces |
| Good at | deduction across suspects | chronology, 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.
| # | Screen | What it shows | File |
|---|---|---|---|
| 1 | The lock screen | The threshold; four states (day 1, day 6, burn night, Act III) | phone-lock.html |
| 2 | Messages | List 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 |
| 3 | Calls | Log and dial pad, three states | phone-calls.html |
| 4 | Voicemail | Falconer's day-6 message with the unpunctuated transcript: the list, then the transcript as a station with its verdict | phone-voicemail.html |
| 5 | Maps | The two rides | phone-maps.html |
| 6 | Photos, Notes | One screen each | phone-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
| Asset | Spec |
|---|---|
| Six app icons, original | 1:1, 400×400, flat, Peregrine's palette. An empty frame for the Phone itself (per corpus). No resemblance to Apple's. |
| Contact avatars | Reuse the 57-face contact sheet; no new faces. |
| Photo contents | The 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 ground | One 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.
| Family | Files | Frame | Tokens | Fonts |
|---|---|---|---|---|
| Plot / non-game (use this) | peregrine-case-board-v5.html, peregrine-intake-v4.html, peregrine-credential-v4.html | 390×844 | PG / Desk + Glass, below | Reddit Sans · Gelasio · JetBrains Mono |
| Game-flow v4 | red-string-board.html, fault-in-the-record-v4.html, the-dossier-file-view.html | 412×812 | warm dark: --world:#1C1613 --gold:#D9B23C --cream:#F2EBE0 | Poppins · 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):
| Role | Value | Note |
|---|---|---|
| Glass ground | Night Room #221D14 | The phone is a dark object. Not black. |
| Glass surface | #2B2519 (assumed) | Rows, cards, the compose bar |
| Received bubble | Oat Paper #F6F4EF on Case Ink text | Paper: what arrives is on the world's terms, but it is still what she reads |
| Sent bubble | Case Ink #11172C on Oat text | Her ink |
| Chrome type | Reddit Sans | Names, app titles, tab labels |
| Body type | Gelasio | Message text, transcripts, notes. Italic for voice where the corpus says so |
| Meta | JetBrains Mono | Timestamps, durations, fares, SEND FAILED |
| Hot | Live Wire #E4574C | Notification 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 clusters | Apple app icons or close variants (green speech bubble, green handset) |
| List rows: round avatar, name, preview, time | SF Symbols redrawn as assets |
| Lock screen: time, date, stacked notifications | The blue-and-grey bubble pair |
| Dial pad grid; voicemail row expanding to a transcript | A drawn status bar |
| Bottom tab strip inside an app | Making 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.
| Tab | Holds | Notes |
|---|---|---|
| Desk — landing | The Case Board (hero, season ledger, Docket) + the case games: Prime Suspect client files, The Dossier, Stakeout | Every session opens here (burn night excepted). The burn hero makes the name a choice: Nothing from their desk. This one's yours. [draft] |
| Training | The Wager, Target Practice, Red String; the basement (My Misses / Endless / Fresh) as modes inside | Off the record where it says so. |
| Underworld | The Lineup, The Make, Go Undercover; the Grinder lives here | Cons and traps. |
| Phone | Messages, 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
- Is The Frisk in or out? In means The Frisk takes
notice, The Lobby keepslocate, and both ship. Out means The Lobby keepslocateand takes this slot. Blocks: the reading station inside a Messages thread, whichever station fills it. - The first thread's cast. Blocks: every line of thread copy. Plot items and lock-screen copy are drafted.
- Is the Voicemail transcript authored or derived? Changes the content schema; the screen can be drawn either way.
- 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.
- 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.
- Which games or verbs own the Photos, Calls, Maps and Notes items. The items can be drawn as generic rounds; their verbs are unregistered.
- 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
noticeappears in exactly one file (the-thread.md§9) and in no registry row. Anything drawn assuming The Frisk has a verb is drawing ahead of decision 1.- The §7.6 container amendment is in the Thread spec only. The registry still reserves
locatefor The Frisk and still flags The Lobby as claiming it. - The registry's Thread row still lists "string line to line (connect)" and "arrest" among the phone's gestures. Runs now conclude on the Connection Board, whose line-drawing verb has no registry row.
the-thread.md§5 described The Statement as "a voicemail transcript to be ordered." Corrected 2026-09-24 to the boundaries reading, which matches the registry's definition ofplace.ecosystems.jsonstill says Client Cases ship first inside the phone container, which §11 explicitly retracts: an ecosystem is a content class, a container is a presentation, and they are orthogonal.guide.json'sthe-threadrow still describes the game claiming locate, place and connect, contradicting both the spec and the roster status. Its reskin line still carries the suspects' phone fiction ("It's a phone. Suspects text."), and its subject still names the arrest as the closing; the board now concludes a run.