You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ADR-027 W11 fix-up wedge #11. Three residual M4 polish gaps surfaced
on v1.0.666 (the load-bearing text-rendering fix) on-host smoke.
- Cancel button stuck on after end-of-turn. Mobile's _isAgentBusy
walks events tail-first and treats every agent-produced kind as
proof of in-flight turn. M4's wire order is
turn.result → text → usage (Stop hook posts turn.result first,
JSONL tail posts text+usage), so the LATEST event is `usage` and
the walker fell through to "busy = true". Added usage + rate_limit
to the skip list (both telemetry, similar shape).
- Context chip blank. The mapper's per-message usage event carried
input_tokens/cache_read/cache_create but no context_window, so
mobile couldn't compute pct (chip suppresses itself when cw=0).
Mapper now derives capacity from model name via a small lookup
(claude-opus-* / claude-sonnet-* / claude-haiku-* / claude-3-* →
200000; otherwise omit). Mobile's per-message usage handler picks
up the new field.
- Session.init chip empty. M4's on-disk JSONL has no equivalent of
M2 stream-json's `init` frame. Adapter now synthesises a
session.init from the FIRST usage frame carrying a model.
Idempotent per Adapter lifetime — subsequent usage frames don't
re-emit. Payload: engine=claude-code, model, cwd.
3 new tests: usage carries context_window for known models (sweep),
omits it for unknown, adapter synthesises one + only one session.init
that lands BEFORE the first usage so mobile picks both up in the
same build pass.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
0 commit comments