v0.18.0 — walk legibility + studio drive mode
Two approved feature waves. Harness → 0.16.0.
Walk legibility
The walk speaks human, the console carries it, and the console is always there.
- Briefs name their specs —
"specs": ["catalog", "entry-editing"]in thecmp:featureblock, the**Spec:**paragraph as fallback, filename as default. One pairing function feeds the board, coverage, the walk and the console. Closes a real defect: a brief whose promises live in two specs used to put a standing false instruction on the primary surface, inviting a second definition of already-signed behavior. - Chat is a walk surface — every reply opens with a machinery-authored header line (the statusline's own string, delivered by the per-prompt hook and pasted verbatim). It cannot drift, and unlike the statusline it persists in the transcript.
- Plain words at the boundary — stage glosses and artifact translation everywhere a human reads, including the Stop hook, which now opens
■ Prove — not done: …. Ledger ids never change. - Time is part of position — the lane's cost is read from its own flight recorder ("98s last full run"), never estimated.
- The console leads every call to action — your-turn cards point at the studio first; the In-flight card carries the full promise list with per-promise state, the measured lane cost, the signature button on the row, and arrivals as now/after buttons.
- The console is a resident —
previewnow spawns a detached console that survives MCP respawns; connecting the MCP inside a create-cmp app ensures one at session start; a crashed console is loud on four surfaces (statusline· console down, doctor'sconsole-livenessfinding, the injected prompt, and the tool result).
Studio drive mode
Third report of the same complexity problem, fixed by demotion rather than another aggregation layer.
- Drive replaces Overview as the driving surface: the live chain, the walk cards, the queue with its buttons — with the page's own digest and history folded away.
- Pages answer first — every mirror section renders its verdict, with the complete derived corpus behind one "Read the full …" disclosure. A section the queue points at greets open, and "take me there" opens the folds on the way. The spec-mirror principle is untouched; only default expansion changed.
- The live chain —
Request: <the ask>·✓ 1 → ◉ 2 → ○ 3·now: step 2 of 3, in the studio, the injected prompt, andqa/walk-status.mjs. Three labeled provenance tiers: the request is recorded mechanically from the human's own prompt; the steps are agent-declared through the newnode qa/plan.mjsand always carry their age; the lane/render markers say what is actually running and override. The chain gates nothing — the walk stays the truth — and its ephemeral files are excluded from the receipt's hashed inputs, so a prompt can never invalidate a receipt.
Release evidence
- Fleet check PASS — a scratch app stamped from this tree and its full lane run;
harnessIntegrity: PASS (@create-cmp/harness 0.16.0 — 40 files verified). - Engine suite 1148/1148; inspector suite 556/556; plugin bundle rebuilt and verified current.
- Evidence rung: L1 desktop. No device was attached for this release, so
e2eSmoke,androidChecksandtokenDriftSKIPped — v0.17.1 shipped with L2 device proof and this one does not. The changed surface is Node-side (lane libraries and console rendering) and CI's stamp +assembleDebuglane passed on the merge commit, so the risk is low, but the rung is genuinely lower and is recorded rather than glossed.
Full changelog: v0.17.1...v0.18.0