# Direction 2, Tracks, pass 6: token identity leads, price on the Clock

*W-design-pass6-now, Opus 5.5, 2026-09-27 17:52 to 18:15 Beirut. Brief: `briefs/W-design-pass6-now-identity.md`. Built on copies of the pass 5 files. Only `now.html` changed; `situation.html` is byte-identical (e). Design choices and the five example series are grade C. SPRING prices are grade A (fixture), SPRING market cap is grade B (1B supply assumed). Verification numbers are grade A, from our own script output. Re-run: `NODE_PATH=/home/botbox/node_modules node scripts/shots.cjs` (writes `scripts/verify-output.txt` and `shots/`).*

**Look first:** `shots/now-desktop.jpg`, `now-desktop-1657.jpg`, `now-desktop-hover.jpg`, `now-phone.jpg`, `now-phone-1657.jpg`.

## (a) What changed against pass 5

All three blocks are built and verified. Nothing was cut.

**A1 Identity line first.** Desktop grid is now `Token | State | What is happening | Situation · 60 min | For you` (`--cols: 184px 164px 1fr 306px 156px`). The Token cell is the first element in DOM order: symbol (20 px, 600, the only text in the row larger than the 14 px sentence), then the name on the same baseline when it differs from the symbol, then the caption `Robinhood · tracked 60 min` (age follows the moment), `Following` on SPRING, then the scale line. SPRING has no name (the fixture has none), so its slot is empty. LUMEN (`Lumen Network`) and MARLIN (`Marlin Finance`) carry example names so the slot is visible (C). The hover actions `Open Situation` and `Copy address` stay on SPRING; the address is not shown on Now. **A2 Scale line.** `MC $2.66M · +87%` at live, `MC $1.68M · +18%` at 16:57Z, `MC $1.42M` at 16:32Z, `MC not read` when a surfaced row has no read (the code path exists; no row hits it in this fixture, because every example row's first read comes before it surfaces). `MC` in muted ink, value and change in ink. **A3 State second.** The state word is still a button with its colour and `Why here`, now a 13 px pill (was 16 px bare word) in the second column, with the Developing descriptor under it. On the phone the card order is: identity line (symbol, name, then MC on the right; caption and Following on the line below), state pill with descriptor, sentence, Latest, strip with readout, For you. Six elements. **A4** Head reads `Token` then `State`; nothing else in the head changed.

**B1 Price line.** Each strip draws a 1.5 px ice (`#72C3E6`, full opacity) polyline through the reads at or before the moment, with a 1.7 px dot on each read, drawn above the bars and under every event glyph. Bars dropped to 55% fill opacity. No fill. y is min to max of the visible reads within the row, inside the band y 5 to 30 (above the baseline at 34), so it rescales as the rail moves. One read, or a flat set, sits mid-band as a dot. Nothing before the first read, nothing right of the moment. `stripX`, the baseline, every glyph and the strip height are unchanged. Note: the pass 5 strip height is already 58 px, not under 56 as the brief assumed; it did not need to grow, so I left it at 58 rather than shrink every glyph. **B2 Readout** starts with the price at `last(m)` (`price not read` when none). **B3 Legend** first line is exactly `price line, scaled within each row · Market cap assumes the supply stated in About this data`; the bars glyph in the legend is drawn at 55% to match. **B4** Price line, scale line and readout are all computed in `fill()`, so they follow playback and `?t=`, and a hovered row under the D1 freeze updates in place (verified, f).

**C1 Safety changed pill.** Now a tinted pill like the others: text `#EB7AA2` (the crimson hue lightened, on this pill only) on crimson at 12% over the row, border crimson 55%, crimson diamond dot. Text contrast **5.85** (pass 5: 4.22). The row stays quieter than the filled pill it replaces; the crimson inset rule and the strip's diamond carry the alarm. The safety diamond and every other crimson use are untouched. Side effect caught in verify: a tint under `Early money leaving` dropped its orange to 4.47, so that pill has no tint (border only), back to the pass 5 4.90. **C2** At 390, no card's identity line wraps the market cap at live, 16:57Z or 16:42Z. The name has `fitName()`: if it would overflow the identity line it is hidden on that card (never the MC). At 390 both example names fit and show.

About this data gains two lines (what the scale line is and the change basis; market cap = price times an assumed 1B supply, SPRING's supply not read), the SPRING sources line now says there are no reads before 16:32Z or between 16:57Z and 17:27Z, and the example list now names prices and market caps as made up. No numbers were added to About, so it cannot leak across moments.

## (b) Identity and scale rule

- Shown under the symbol: `MC <market cap> · <change>`. Market cap = last price read at or before m, times 1B. Formats: `$2.66M` at 1M and up, `$627K` from 100K, `$61.8K` under 100K. Price in the readout to 3 significant figures (`$0.00266`, `$0.0000618`).
- Change basis: price at `last(m)` against the row's first read on our tape inside the window (16:27Z to 17:27Z). Hover title: `Price change since first read 16:32Z` (the first read's clock). Market cap hover: `Market cap at the last read, HH:MMZ; supply assumed, see About this data`. Not "since your look": that stays with For you.
- One read: no percentage. No read: `MC not read` and readout `price not read`. No interpolation; between reads the value is the last read (SPRING holds $1.68M from 16:57Z to 17:26Z).
- Sign carries direction; figures in ink; no green or red.

## (c) Price line grammar with the pass 5 glyph table

The pass 5 table (bars, participant ring, attention ring and stem, weakening tick, safety diamond, look flag and entry diamond, hatch, clean ground) holds unchanged. One row is added at the top:

| Glyph | Meaning | Colour | From Situation lane |
|---|---|---|---|
| thin line with a dot per read, above the baseline | price, reads at or before the moment, scaled within the row | ice `#72C3E6`, 1.5 px, full opacity | Price |

Layering, bottom to top: hatch, baseline, bars (55%), price line, event glyphs, look and entry, moment line. The safety diamond sits over the price drop on MARLIN, which is the point. Missing data: before the first read the ground stays as it was (hatch where not on tape, clean otherwise); the dots make a four-read SPRING line visibly four reads, with the long 16:57Z to 17:27Z segment reading as a gap between reads rather than a smooth path.

## (d) Example values

Price reads, minute clocks in Z, USD. Supply assumed 1B for all rows. Reads every 2 to 5 minutes from each row's tape start, never before it.

- **SPRING** (grade A price, grade B market cap): 16:32 0.00142, 16:42 0.00106, 16:57 0.00168, 17:27 0.00266. Market cap $1.42M at 16:32Z to $2.66M at 17:27Z.
- **AGRIPPA** (grade C): 16:27 0.00062, 16:30 0.00063, 16:33 0.00061, 16:36 0.00064, 16:39 0.00066, 16:42 0.00065, 16:45 0.00068, 16:48 0.0007, 16:51 0.00071, 16:54 0.00074, 16:57 0.00079, 17:00 0.00091, 17:03 0.00112, 17:05 0.00134, 17:08 0.00162, 17:11 0.00195, 17:14 0.00226, 17:17 0.00251, 17:20 0.00272, 17:23 0.00301, 17:25 0.00322, 17:27 0.00338. Market cap $620K at 16:27Z to $3.38M at 17:27Z.
- **LUMEN** (grade C): 16:27 0.000912, 16:30 0.000905, 16:33 0.000894, 16:36 0.000886, 16:39 0.000871, 16:41 0.000934, 16:44 0.000902, 16:47 0.000868, 16:49 0.000851, 16:52 0.000832, 16:56 0.000804, 16:58 0.000788, 17:00 0.000842, 17:03 0.000791, 17:06 0.000752, 17:10 0.000718, 17:13 0.000694, 17:16 0.000671, 17:18 0.000652, 17:21 0.000689, 17:24 0.000648, 17:27 0.000627. Market cap $912K at 16:27Z to $627K at 17:27Z.
- **MARLIN** (grade C): 16:39 0.000241, 16:42 0.000246, 16:45 0.000239, 16:48 0.000243, 16:51 0.000237, 16:54 0.00024, 16:57 0.000234, 17:01 0.000236, 17:04 0.000231, 17:07 0.000233, 17:10 0.000228, 17:13 0.00023, 17:16 0.000226, 17:19 0.000149, 17:21 0.000131, 17:23 0.000128, 17:25 0.000124, 17:27 0.000121. Market cap $241K at 16:39Z to $121K at 17:27Z.
- **KESTREL** (grade C): 17:14 0.0000612, 17:17 0.0000618, 17:20 0.0000609, 17:23 0.0000615, 17:27 0.0000618. Market cap $61.2K at 17:14Z to $61.8K at 17:27Z.
- **OBOL** (grade C): 17:06 0.000186, 17:09 0.000183, 17:12 0.000184, 17:15 0.000181, 17:18 0.000182, 17:21 0.000239, 17:23 0.000252, 17:25 0.000236, 17:27 0.000228. Market cap $186K at 17:06Z to $228K at 17:27Z.

Shapes: AGRIPPA flat, then rising with the second-half entries (above $3M at live); LUMEN drifting down with pops at the 16:41Z, 17:00Z and 17:21Z calls; MARLIN flat, then down 34% at the 17:19Z safety change and sliding after; KESTREL small (under $100K) and nearly flat; OBOL flat, then a pop at the 17:21Z call. Names `Lumen Network`, `Marlin Finance` are examples too.

Carried over from pass 5 unchanged: every event list, bar series, surfacing time, last look, sentence, Why here and readout (pass 5 NOTES d), the deviations there (KESTREL and OBOL never opened, KESTREL's lone wallet drawn as a participant only, Latest names events that changed the row's wording), and the entry key `localStorage['caverio.spring.entry']`.

## (e) situation.html

```
24e11a15dadae2ac2ed6ceb46b9daa0e69e898e0e176cbd9a0ff78e4ccc3ab92  situation.html
24e11a15dadae2ac2ed6ceb46b9daa0e69e898e0e176cbd9a0ff78e4ccc3ab92  ../../design-pass5-2026-09-27/d2-tracks/situation.html
```
Equal. Zero edits.

## (f) Verification (18:00 Beirut; full output in `scripts/verify-output.txt`)

```
shots: now-desktop 169 KB, now-desktop-1657 119, now-desktop-hover 173, now-phone 147, now-phone-1657 92 (all under 500 KB); no overflow, Geist, no page errors
symbol first text node in every row, 1280 and 390, at live, 16:57Z, 16:42Z: true; font symbol 20 > state 13 and sentence 14; no other text as large
identityAt(17:27Z) SPRING {mc:$2.66M, chg:+87%, price:$0.00266}; 16:57Z {$1.68M, +18%, $0.00168}; 16:42Z {$1.06M, -25%, $0.00106}; 16:32Z {$1.42M, chg "", $0.00142}
  live MC: MARLIN $121K -50%, LUMEN $627K -31%, AGRIPPA $3.38M +445%, SPRING $2.66M +87%, OBOL $228K +23%, KESTREL $61.8K +1%
16:57Z rendered text (drawers open, titles, tooltips): 2.66 false, 876 false, 17:08 false, 17:19 false
priceLineX(16:57Z) at or left of stripX in every row at 1280 (stripX 900) and 390 (195), at live, 16:57Z, 16:42Z; stripX same on all rows and the rail
SPRING readout live "$0.00266 · 939 entered · 1 profiled · none seen · top 20: 0.59 · safety not read"
legend first line "price line, scaled within each row · Market cap assumes the supply stated in About this data"
head Token | State | What is happening | 16:27Z Situation · 60 min 17:27Z | For you; SPRING hover actions Open Situation, Copy address; address not in page text
playback 16:40Z -> 16:58Z with the pointer on a row: SPRING scale "MC $1.68M · +18%", readout "$0.00168", 3 dots
phone 390: no overflow at live, 16:57Z, 16:42Z; six elements on every card; MC on the symbol line on every card; names shown where they differ
situation.html sha256 equal to pass 5
pass 5 list re-run, all as before: order MARLIN > LUMEN > AGRIPPA > SPRING > OBOL > KESTREL; 16:57Z shows SPRING, LUMEN, AGRIPPA, sentence equals Situation header byte for byte;
  For you, stubbed entry, Before your look, Copy link, rail click/keys, ?t= written, D1 pill "3 new situations surfaced" and apply, reduced motion 1.3 s, landmarks only at or before the moment
```

- **Contrast** (WCAG, our computation, row ground `#161C22`; hovered SPRING row `#1C232B` in brackets): Safety changed pill text 5.85 (5.41), was 4.22; Money first and Crowd arriving pills 7.19 (6.58); Early money leaving pill 4.90 (no tint); Developing pill 7.84 (7.34); symbol, MC value and change 14.19 (13.10); `MC` label and caption 5.87 (5.61); name 8.26 (7.78). Graphics (3:1): price line 8.72 (8.05); bars at 55% 3.56 (3.43). The pill borders are decorative (the text carries the state) at 1.7.
- **Colour:** hex colours in now.html are the pass 2 palette plus `#EB7AA2` (the lightened crimson text, same hue). No green or red; percentages are in ink.
- **Grep:** no U+2014 in any file here; rendered DOM at live, 16:57Z, 16:42Z has no banned word or internal string (pass 5 list), no `playhead`, `worth a look`, `money in`, `Back to now`, no bare `changes` count. `situation.html` still carries its 2 accepted uses of "contract", unchanged.

Status: DONE
