Phone build spec review
Peregrine · 2 Oct 2026 · spec at docs/plans/2026-10-02-phone-build-spec.md
Contrast: amber on the new surfaces
#E8A33D on #222326#E8A33D on #2C2D31#E8A33D on #37383D#37383D, and amber against the hairline is 4.86:1. Every amber pairing clears WCAG AA for text (4.5:1) and for non-text marks (3:1). The old warm palette measured 7.77 and 7.05:1. The threshold remains Sarah's ruling.| Foreground | Background | Ratio |
|---|---|---|
#E8A33D | #222326 | 7.29:1 |
#E8A33D | #2C2D31 | 6.38:1 |
#E8A33D | #37383D | 5.42:1 |
#E8A33D | #3E3F45 | 4.86:1 |
#F2EDE3 | #222326 | 13.47:1 |
#F2EDE3 | #2C2D31 | 11.79:1 |
#F2EDE3 | #37383D | 10.02:1 |
#8E887B | #222326 | 4.46:1 |
#8E887B | #2C2D31 | 3.90:1 |
#8E887B | #37383D | 3.32:1 |
#E4574C | #222326 | 4.31:1 (non-text, 3:1 bar) |
#E4574C | #2C2D31 | 3.78:1 (non-text, 3:1 bar) |
Chrome text is the weak pairing: #8E887B falls below 4.5:1 on both card surfaces (A5). The red dot is a non-text mark, and it clears 3:1 on both surfaces it sits on.
Holes
Assigned in the sources
| # | Hole | Owner | State |
|---|---|---|---|
| H1 | The forger as plot | Sarah | Ruled: yes. Graded spot stays an SAT convention |
| H2 | The 11:31 text as canon | Sarah | Ruled: keep. Stands or falls with H1 |
| H3 | Amber pass threshold | Sarah | Ruled: 4.5:1 text, 3:1 marks. Amber passes at 4.86:1 |
| H4 | Whether The Missing Hour survives the ping stack | Sarah | Ruled: cut. Phrase stays on the Desk card |
| H5 | Coin value for a correct graded call | Sarah | Ruled: 10 coins, flat |
| H6 | Split Decision easy-tier depth | Game Feel Expert | Ruled: 30 easy / 10 hard; 40 new easy cards |
| H7 | Whether Autotype comma splices return as graded tells | Game Feel Expert | Ruled: no for v1 |
| H8 | Rule that keeps the graded predictive-bar spot off one position | Game Feel Expert | Ruled: seeded random, never the previous position |
| H9 | Each Settings row opens content or is cut: Wi-Fi · Screen Time · DAY 7 “up 41%” · Plain instructions | Experience Curator | Ruled: Wi-Fi cut · Screen Time opens evidence · “up 41%” cut · Plain instructions opens the existing setting |
Surfaced while writing the spec
No source assigns these. The owner shown for each is a proposal. Rulings received 2 Oct are marked.
| # | Item | Owner |
|---|---|---|
| A1 | Ruled, closed: existing rate card, 2.0 mi / 10 min, $10.00 fare, tip printed $2.50 (25%), total $12.50 | Sarahproposed |
| A2 | Ruled, closed: DAY 7’s catch is the tip line | Sarahproposed |
| A3 | Ruled, closed: row reads 10:28 P.M. Solved case has no 10:12 or 10:28, and its missing hour ends 11:50, against the phone’s 12:10 | Sarahproposed |
| A4 | Six chrome hexes in the stills have no palette-doc role: #3E5C78 sent bubble, #303136 keys, #5E7D6A call button, #292A2E map thumb, #D9DF70 tern initial, #17181A desk phone | Art Directorproposed |
| A5 | Resolved: chrome text lifted to #A6A196, which clears 4.5:1 on all three surfaces (worst 4.54:1) | Sarah, with H3proposed |
| A6 | Dropped: games live outside the app’s world. Amber ban stays | Art Directorproposed |
| A7 | Dropped: game icons are exempt from the loudness rule | Art Directorproposed |
Palette change
Glass.ground moved from #221D14 to #222326. Glass.surface (#2B2519, marked ASSUMED) is replaced by Glass.raised #2C2D31, with its three call sites renamed. Added secondSurface #37383D, hairline #3E3F45, chromeText #8E887B and body #F2EDE3. Desk.chrome stays #221D14.
The simulator renders the ground at #222326 and the cards at #2C2D31, sampled from the screenshot. The build passes, and the Games folder UI test passes.
Screens that change
| Screen | File | Change |
|---|---|---|
| Phone tab (app list) | Views/PhoneView.swift | Ground; both row cards |
| Six app placeholders | PhoneView.swift · PhoneAppPlaceholder | Ground; navigation bar |
| Games folder | Views/PhoneGames/GamesFolderView.swift | Ground; navigation bar; folder container |
The four game screens, the Desk, the Night Room and Settings are unchanged. The four new tokens have no call sites yet. The views still draw text in Glass.oat, and the bubbles still use oat and case ink.
Art guards
- The existing guards still hold. Coordinate Drop, Red Flag and Split Decision have zero hits. Odd One Out's 69,283 hits are all warm-dark pixels in its portraits and crew plates, the documented skin-tone exemption.
- The new surfaces are not covered. The 40-unit band around
#221D14applies only to warm pixels, and the new surfaces are neutral-cool. Every game has art within 40 of all three new surfaces, and Split Decision and Odd One Out have exact matches. The distances 19 and 25 do not carry the guarantee: a pixel 40 from#221D14can sit 21 from#222326. (A6)
Palette doc §6 art checks
Also in the spec
- All 36 stills, with states, graded flag, copy source and art. The r4 subtitle says 37. Every station's copy is TBD: the corpus has no phone-station family yet.
- The games' settled values, cited to the plans and the code.
- DAY 7, the three Browser pages with the expanded train row and the pickup dropdown, and the three-dead-link map.
- Lock-screen rules and the pass bar. The entertainment criterion needs a new-best screenshot, and personal bests are
BEST ----placeholders that nothing persists. - Token table for every palette-doc hex. Six still hexes have no role yet.