A running step's spine row now shows only its status phrase and elapsed #19

Merged
cmoriarty merged 4 commits from osf/run_01M2F8RXQWETMMG8Q9FC5QM7WR into main 2026-09-14 08:41:43 -04:00
Owner

Summary — remove-the-sample-text-running-sessions-5qm7wr

  • A running step's spine row now shows only its status phrase and elapsed clock (Thinking · 47s); the tool count, last tool (target), and last streamed line moved to the row's hover tooltip (ui/src/components/status.ts:436-488 — Activity gains a tooltip field; ui/src/components/Spine.tsx:484,588-606 — the row title carries live.tooltip, the per-span title is gone).
  • silencePhrase() returns state words only: silent for <duration> and engine unreachable: <endpoint>, with the — last: tool:<x> and , last seen <duration> ago detail dropped; starting — usually ~<baseline> is unchanged (ui/src/lib/format.ts:924-942).
  • Where the phrase arrives pre-composed in digest.status_phrase from the server's silence ladder, activity() strips the same trailing detail via quietStateWord() (ui/src/components/status.ts:505-510); look at the strip regexes — they assume the server's exact punctuation ( — last: tool:…, , last seen … ago).
  • When the UI's own silent flag fires while the phrase is engine unreachable: …, the state word is kept rather than degrading to silent for … (status.ts:477); the upstream refused — retry N early return is unchanged, and its tooltip is just the line, which has no detail.
  • Row height (ROW_H + LIVE_H), the two-line shape, and the BudgetChip token meter are untouched; the stale "still carries the streamed tail" comment in ui/e2e/layout-stability.spec.ts:139-141 was updated to match.
  • New browser spec ui/e2e/spine-activity.spec.ts asserts, against the fixture backend, that the line is phrase + clock only, the hover tooltip carries the full sentence including the streamed tail, the token meter still draws, row height is stable while streaming, and an engine-unreachable row never degrades to silent for … as its silence sweeps across 2 × ttft_p50_s.
  • Fixture backend ui/dev/fakeosfd.py:1504-1517 gained a second running step (stp_apply_jwt) whose digest carries a server-composed engine unreachable: 127.0.0.1:9999, last seen 1m 20s ago phrase and a silent_for_s that sweeps 0–79 s over a 10 s period so both below- and above-threshold behaviour are exercised in the spec.
  • Nothing is left undone: all tasks are ticked, no tests were skipped, no decision was deferred (the proposal gate was approved as-is); the full matrix — unit/integration pytest, tsc -b, vitest, vite build, and the Playwright suite — passed, including a manual browser check of the running row.

OpenSpec change: remove-the-sample-text-running-sessions-5qm7wr

Pre-flight token estimate: fits-flagged — p50 148,620 / p80 252,654 against a 144,000-token step allowance.

Opened by openspec-flow.

# Summary — remove-the-sample-text-running-sessions-5qm7wr - A running step's spine row now shows only its status phrase and elapsed clock (`Thinking · 47s`); the tool count, last tool (target), and last streamed line moved to the row's hover tooltip (`ui/src/components/status.ts:436-488` — `Activity` gains a `tooltip` field; `ui/src/components/Spine.tsx:484,588-606` — the row `title` carries `live.tooltip`, the per-span `title` is gone). - `silencePhrase()` returns state words only: `silent for <duration>` and `engine unreachable: <endpoint>`, with the ` — last: tool:<x>` and `, last seen <duration> ago` detail dropped; `starting — usually ~<baseline>` is unchanged (`ui/src/lib/format.ts:924-942`). - Where the phrase arrives pre-composed in `digest.status_phrase` from the server's silence ladder, `activity()` strips the same trailing detail via `quietStateWord()` (`ui/src/components/status.ts:505-510`); look at the strip regexes — they assume the server's exact punctuation (` — last: tool:…`, `, last seen … ago`). - When the UI's own `silent` flag fires while the phrase is `engine unreachable: …`, the state word is kept rather than degrading to `silent for …` (`status.ts:477`); the `upstream refused — retry N` early return is unchanged, and its tooltip is just the line, which has no detail. - Row height (`ROW_H + LIVE_H`), the two-line shape, and the `BudgetChip` token meter are untouched; the stale "still carries the streamed tail" comment in `ui/e2e/layout-stability.spec.ts:139-141` was updated to match. - New browser spec `ui/e2e/spine-activity.spec.ts` asserts, against the fixture backend, that the line is phrase + clock only, the hover tooltip carries the full sentence including the streamed tail, the token meter still draws, row height is stable while streaming, and an engine-unreachable row never degrades to `silent for …` as its silence sweeps across 2 × ttft_p50_s. - Fixture backend `ui/dev/fakeosfd.py:1504-1517` gained a second running step (`stp_apply_jwt`) whose digest carries a server-composed `engine unreachable: 127.0.0.1:9999, last seen 1m 20s ago` phrase and a `silent_for_s` that sweeps 0–79 s over a 10 s period so both below- and above-threshold behaviour are exercised in the spec. - Nothing is left undone: all tasks are ticked, no tests were skipped, no decision was deferred (the proposal gate was approved as-is); the full matrix — unit/integration pytest, `tsc -b`, vitest, vite build, and the Playwright suite — passed, including a manual browser check of the running row. OpenSpec change: `remove-the-sample-text-running-sessions-5qm7wr` Pre-flight token estimate: **fits-flagged** — p50 148,620 / p80 252,654 against a 144,000-token step allowance. _Opened by openspec-flow._
cmoriarty force-pushed osf/run_01M2F8RXQWETMMG8Q9FC5QM7WR from fd269a7639 to 9af4dd543e 2026-09-14 08:38:49 -04:00 Compare
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cmoriarty/braid!19
No description provided.