Found by the T10 real-pi smoke (120-col terminal)
The run card renders and functions (appear → live state line → finalize, timer hygiene clean), but the self-shell frame has width defects at wide terminals:
- Top border:
╭─ ⣾ fleet · general-purpose╮ — the ─ bar between the header and ╮ is missing at width 120 (liveCardLines computes bar = width − head − 3 but renders head≈25 at 80-hardcoded width; renderCall passes hardcoded 80 while the terminal is 120).
- A stray duplicate
│ task … line fragment appears (frame mismatch between renderCall's static header card and renderResult's live lines during handoff).
- A dangling
· separator renders when lastEventClass is empty (⣾ · ●assistant — the leading separator of the next segment isn't suppressed when a segment is null).
subagent bare-name fallback line visible under the card in one frame — the renderCall fallback (tool name) renders alongside the card in some window (double render of call slot + fallback).
Fix direction
- Thread real terminal width into liveCardLines (or clamp the card to a fixed comfortable width like 72 and center-left it — clamping is simpler and terminal-agnostic).
- Suppress leading separators when the previous segment is null (join segments with a filter-then-join pattern).
- Investigate the fallback+card double render (likely the fallback branch firing while args are streaming, before argsComplete).
Repro: any dispatch at ≥100 cols; visible in the T10 smoke transcript.
Found by the T10 real-pi smoke (120-col terminal)
The run card renders and functions (appear → live state line → finalize, timer hygiene clean), but the self-shell frame has width defects at wide terminals:
╭─ ⣾ fleet · general-purpose╮— the─bar between the header and╮is missing at width 120 (liveCardLines computesbar = width − head − 3but renders head≈25 at 80-hardcoded width; renderCall passes hardcoded 80 while the terminal is 120).│ task …line fragment appears (frame mismatch between renderCall's static header card and renderResult's live lines during handoff).·separator renders whenlastEventClassis empty (⣾ · ●assistant— the leading separator of the next segment isn't suppressed when a segment is null).subagentbare-name fallback line visible under the card in one frame — the renderCall fallback (tool name) renders alongside the card in some window (double render of call slot + fallback).Fix direction
Repro: any dispatch at ≥100 cols; visible in the T10 smoke transcript.