# Vesper's read of the external V2 review, 2026-09-27 00:50 to 01:20 Beirut

**Source.** `2026-09-27-external-reviewer-v2-product-ux-feedback.md` (57 KB, 102 numbered sections), sent by Thomas at 00:49 from an independent reviewer he did not name. Grade of the source: C (opinion, no data, reviewer had the live page and wireframes-v1 only, not the nine topic reports). Grade of this read: every "we already have this" claim below cites the report and section it lives in.

**Verdict in one line.** The reviewer is right about the shape and wrong about nothing that matters; most of what they ask for is already in the research (T5, T7, T8) and was lost between the research and the wireframes. The V2 change is a hierarchy change plus three new read-model objects, not a new product. It costs about two builder days on the second lane and none on the critical path.

## 1. What the reviewer asks for that we already have (and where it got lost)

| Reviewer asks | We have | Where it got lost |
|---|---|---|
| The Clock as the spine (§8, §85 P10) | T7 §4: "two-lane clock strip is the signature component", C05 ClockStrip, C06 LagBracket; MASTER P2 | T8 made it slot S6 of fourteen, below the fold on two of three profiles |
| One state word first (§7 level 1, §12) | T7 §3.1 glance rule "one state word, one hero number, one direction"; C01 StateLine | Nobody wrote the vocabulary; T8 put the lights row (S5) where the word should be |
| Since you looked above the fold, 3 to 5 items (§4.2, §66) | T8 S2 "Since you looked", P0, "up to 5 lines each with clock"; E5.8 on Explore | Present, but S2 sits under the header numbers and the lights, not above them |
| Waiting for (§43, §67) | T7 C17 WaitingForLine, in P1 core, "one per card" | Not placed on any T8 profile |
| Local freshness, not a telemetry bar (§26, §27) | T7 C03 FreshnessCaption per number, C14 GapHatch, C16 RefusalLine | T8 F3 put the coverage strip in the frame on every page and S14 as a whole panel |
| Since you entered, entry as a checkpoint (§4.3, §29 to §31) | T8 H1 position line, H2 "what changed since you got in", eight hold events in priority order, DA-23 user store with entry time | H2 lists events by severity; no snapshot of the situation at entry is stored, so "still intact" cannot be computed |
| Descriptive not predictive language (§12, §45, §78, §79) | Mandate "it does not judge; it shows"; T5 §2.1 "light count does not predict, must be printed"; brand brief bans smart-money and alpha language | Consistent already |
| Zones as "similar situations" with a distribution (§38, §39) | T6 §4 first-passage definition with random-moment baseline, medians only, n printed; T7 quantile dotplot for time-to-best; Q2 held zones until Gate 1a and a lawyer | Naming only. "Zones" reads as instruction; "similar situations" reads as record |
| Frozen rooms, gaps preserved (§73, §74) | T8 R7 frozen rooms; provenance programme items 1 to 8; deep-paper replay | Consistent already |
| Market brief as a strip (§36, §71) | Q2 decided: brief ships as a strip; T3 first eight; C15 | Consistent already |
| Caller stance flips as the field (§23) | T4 stance and flips; Q3 (a) decided | Consistent; caller names appear for members only (Q4, C5) |
| Materiality explainable (§84) | T5 §2.2 evidence-id constraint: every light shows the event that lit it | Consistent for lights; no materiality rule exists for diffs yet |

## 2. What is genuinely new and accepted

1. **A state vocabulary computed from the lights.** Six words, recomputed every tick from the light set, never a lifecycle: *Developing* (one light or none), *Money first* (a money light lit before any attention light), *Attention first* (the reverse), *Crowd arriving* (money breadth and attention both rising in the window), *Early money leaving* (attention lit while early-holder retention falls), *Safety changed* (the safety light, overrides). The first two are T5 §1.8's two measured shapes (SPRING: 876 wallets before the first Fomo buy; AGRIPPA: 19 before the call, 1,213 in the hour after). *Cooling* is the T8 E6 condition (all lights decayed) and stays a list section, not a state.
   Rule that makes this not the ladder Thomas retired at 00:28: a state has no path, no windows that archive, no order. It is a label on the current light set and it can go from any word to any word. Lights stay the store; the word is a projection. Given T5 §2.1 (83% of situations never get a second independent signal within an hour), most rows will read *Developing*, and that is the honest default, not a failure.
2. **Three read-model objects** that the pages consume instead of inferring: `SituationState` (state, one-sentence evidence, evidence ids, waiting-for, data quality), `SituationDiff` (from checkpoint to now: changed, still intact, unknown, each with before and after and the event id), `Relationship` (lead-lag between two events with duration and the display sentence; the T5 attention-to-money lag field becomes an object). These go into the read-model contract v3 that Bolo asked for at 00:24 (his ack says the v2 schema is the old Now lifecycle).
3. **Entry snapshot.** When a member taps "in", store the `SituationState` and the light set at that moment. "Still intact" is a diff against that snapshot. Half a builder day on G4 and one field group on the user store.
4. **Hierarchy per page**: state, evidence sentence, clock, since-you-looked, waiting-for, then evidence sections. Explore rows carry state, why-now, a compact clock and waiting-for, six elements, which meets T7 §3.3's phone density rule.
5. **Hide the profile label.** T8's three profiles stay as the slot-ordering rule; the words "Profile A" never render.
6. **Compact data health.** F3 becomes one indicator with a count ("data health, 2 issues") and the detail one tap away; freshness is printed where the number is (C03). S14 Unknowns stops being a panel and becomes the "data notes" drawer.
7. **My Board is delta-first**: Watching, In, Changed, Archived; a row shows the diff count and the top two changes; "no material change since HH:MM" is a valid row.
8. **Notifications on state changes and diffs only** (G7, wave 1), never on price moves or single mentions.

## 3. Where the review overreaches, and the rule I attach

1. **Its example fields assume data two chains cannot produce.** First-50 buyer retention, concentration and tracked-wallet attribution are buildable today on Robinhood Chain only (T5 §0.7, §5); the concentration clock needs the Transfer-log indexer (T5 gap 3). Rule: a state that needs a light the chain cannot show is not computed; the row says *Developing* with "holders: cannot see on this chain", per Q1's "nothing built may depend on a field our tape cannot produce".
2. **Attention at wave 0 is Telegram public preview at a five-minute cadence, X dark** (C3, Q8). A lag bracket reading "money led attention by 32m" carries five minutes of quantisation and the preview's message-id gaps. Rule: the `Relationship` object carries source and cadence; the caption prints "Telegram preview, 5 min" until X or MTProto changes it.
3. **Materiality thresholds are unmeasured.** T5's half-lives are not fitted. Wave 0 rule, provisional and printed as such: material = a light's first event, a light going off, a safety event, a stance flip, or a holder-retention step of ten points or more in the window. The threshold is in the contract as a number so it can be changed and audited.
4. **"Ranked situations" on Explore.** Keep T8's default sort (lights on, then lit in the last hour, then recency) and T5's no-score rule. State and clock make the rank legible; nothing prints as a score.
5. **The reviewer's sample copy uses caller names on the clock.** Members see names (Q4 scorecards member-only); the public Record shows numbers and method, never labels (C5).
6. **§59 to §62 (beta measurement)** are good and already covered by T9's evaluator; the substitution question ("what would you have opened instead") is added to K5's `/checkin` prompts. No new module.

## 4. Plan deltas (MASTER §4)

| Module | Change | Days |
|---|---|---|
| M2 situation store | add state projection, diff computation against checkpoints (viewed, watched, entered), relationship objects | +1.5 (I-lane, Bolo) |
| Contract v3 | `SituationState`, `SituationDiff`, `Relationship`, event grammar (money, holder, attention, safety, user), checkpoints, materiality number; supersedes the 09-10 v2 shape for companion consumers | 1 (Vesper) |
| P1, P2 order | C01 StateLine and C05 ClockStrip first; C18 LightsRow moves to the evidence drawer | 0 |
| G3 situation room | above the fold: state, sentence, clock, since-you-looked, waiting-for; evidence sections below; profile label hidden; S14 becomes a drawer | 0 (fewer slots above the fold) |
| G4 hold and board | entry snapshot; Changed / Still intact / Unknown; delta-first board | +0.5 |
| G8 zones | renamed "Similar situations"; same T6 math, same gate | 0 |
| G1 frame | F3 becomes the compact indicator | 0 |
| K5 | substitution question in check-ins | 0 |

Critical path unchanged (I-chain to wave 0 about 22 days; the +1.5 on M2 is inside I6 to I11 slack). Second lane +2 days. Wave 0 stays about 19 to 22 October.

## 5. Design direction (the question held since 23:49)

The reviewer's §46 answers the terminal-or-page question for the first render: analytical, calm, precise, dense but not crowded, dark-terminal adjacent without the cliché, modern not gamer. My reading of that for Caverio:

- **Near:** Linear (dark, calm, typographic, dense without noise, motion only on events). Bloomberg for one habit only: provenance beside every number, without the amber.
- **Refused:** GMGN and Axiom (chip strips, red and green text, quick-buy on every row, three live columns). Also refused: the magazine page; a token in its first hour is not read between two other things.
- **Consequences:** dark default with a light theme later; one sans for words, one mono for numbers and clocks; colour carries evidence quality and direction of change, never buy or sell (T7 §3.4: direction by position and glyph, since green versus rose fails colour-vision safety); motion only when an event lands.

First render: Screen B, the situation room, on the SPRING fixture (real numbers from T5 §1.8), then AGRIPPA as the second state, then Screen C hold view on the same token. Explore after those two feel right. Thomas can redirect the near and refused pair; the render is cheap to redo.

## 6. What I did not do

No wireframe was changed tonight. No contract v3 text is written yet (it is the next Vesper item, after Thomas's read of this). No user test. No visual render yet.
