diff --git a/.agents/phases/phase-04-product-polish.md b/.agents/phases/phase-04-product-polish.md index 8e324a2..c4a2ed2 100644 --- a/.agents/phases/phase-04-product-polish.md +++ b/.agents/phases/phase-04-product-polish.md @@ -2,7 +2,7 @@ | Field | Value | | --- | --- | -| Status | Active; stages 1–9, 11–15, 17–27, 29 and 31–33 complete; stages 16 and 28 await the user's terminal test; stage 30 automatic-compaction visibility unstarted; stage 34 conversation chrome in progress; stage 10 branding planned and unstarted | +| Status | Active; stages 1–9, 11–15, 17–27, 29 and 31–34 complete; stages 16 and 28 await the user's terminal test; stage 30 automatic-compaction visibility unstarted; stage 10 branding planned and unstarted | | Parent roadmap | [Plexmaton Roadmap](../roadmap.md) | | Product contract | [UI/UX](../ui-ux.md) | | Depends on | Phase 01 interaction ownership; Phase 02 journal/accounting/budget projections; Phase 03 durable collaboration, owned child scheduling, Handoff/Stop, passive recovery and canonical Attention | @@ -392,13 +392,16 @@ Rejected: treating JSONL round trips as independent export/import acceptance. whole turn at once. Where hosted-tool spend belongs in the cost surface stays open in [ui-ux](../ui-ux.md) §open questions. -34. **Conversation chrome — in progress.** The user's turn sits on a band of lifted ground behind a - blue `›` instead of an accent-coloured bar, the composer's rule names the model rather than - repeating the agent, and the activity line moves while the agent works: - the mark's core, the label, elapsed time, effort, and how long the route has been quiet. Both - were chosen from rendered candidates beside Claude Code, Codex and Grok, and both change - presentation only; motion runs on the workspace's one clock ([motion](../specs/motion.md)). The - [stage plan](../plans/phase-04-stage-34-conversation-chrome.md) owns the order. +34. **Conversation chrome — complete.** The user's turn sits on a band behind a blue `›`, and the + composer's rule names the model and its effort (COM-4). The activity line moves on the one + [motion](../specs/motion.md) clock and reads the turn's time without the user's waits, the + effort, and the primary's quiet; idle, it gives its rows back (COM-5). Chosen from rendered + candidates in the [spike](../spikes/conversation-chrome/README.md); the user reviewed the band at + [120](../../crates/plexmaton-tui/frames/user-message-120.svg), + [88](../../crates/plexmaton-tui/frames/user-message-88.svg), + [60](../../crates/plexmaton-tui/frames/user-message-60.svg) and + [hovered](../../crates/plexmaton-tui/frames/user-message-120-hover.svg), and the activity line in + their own terminal. Other roadmap work in performance, math and extensibility receives a stage when its evidence is ready; this phase opening does not claim those capabilities have started. diff --git a/.agents/plans/phase-04-stage-10-branding.md b/.agents/plans/phase-04-stage-10-branding.md index 37fdbfb..7980a7f 100644 --- a/.agents/plans/phase-04-stage-10-branding.md +++ b/.agents/plans/phase-04-stage-10-branding.md @@ -34,8 +34,8 @@ square. It is presentation and nothing else reads it. ## Order and why Static geometry before motion, as the stage has always said. Placement before motion so the frames -that motion must not disturb exist first. The motion owner is stage 34's, so this stage waits for it -rather than growing a second clock. +that motion must not disturb exist first. The mark moves on the motion owner stage 34 landed rather +than growing a second clock. ## Deliberately not in this plan diff --git a/.agents/plans/phase-04-stage-34-conversation-chrome.md b/.agents/plans/phase-04-stage-34-conversation-chrome.md deleted file mode 100644 index d614b31..0000000 --- a/.agents/plans/phase-04-stage-34-conversation-chrome.md +++ /dev/null @@ -1,68 +0,0 @@ -# Plan — Phase 04 stage 34, conversation chrome - -| Field | Value | -| --- | --- | -| Phase | [Phase 04](../phases/phase-04-product-polish.md) stage 34 | -| Contract | [ui-ux](../ui-ux.md) §transcript grammar and its activity-line rule; EFF-4 in [reasoning-effort](../specs/reasoning-effort.md); FR-1 in [frame-loop](../specs/frame-loop.md); TR-6 in [transcript-layout](../specs/transcript-layout.md); SEL-1 and SEL-2 in [selection-and-copy](../specs/selection-and-copy.md) | -| Evidence | [Conversation chrome spike](../spikes/conversation-chrome/README.md): the rendered candidates the user chose from and the survey of three other CLIs | -| Status | Slices 1–4 of 5 implemented and locally verified | - -## Outcome - -The user's turn is told by its surface rather than by a shout, and a working agent is told by a -row that moves and says only what is known: how long the turn has run, at what effort, and how long -the route has been quiet. Both are presentation. Removing either changes no journal entry, no -request and no replay. - -## Contract - -MOT-1 to MOT-3 live in [motion](../specs/motion.md), promoted when the motion owner cited them. - -## Slices - -1. **User message band — implemented.** The user's rows sit on a band of lifted ground across the - conversation's width, the action gutter included, opened by a `›` in the user's own blue, - continuation indented under the text. The band is an eighteenth role, the palette's ground - carried a third of the way to its line, so a theme still reaches every colour. Hover keeps its - boundary rules and puts the copy action on the band. The accent bar is gone. Closed by frames at - wide, medium and narrow, a hovered frame, SEL-2 copy unchanged, TR-6 spacing unchanged, and the - user's message no longer drawing in the accent role. -2. **Composer rule names the model — implemented.** The user found `Message Plexmaton` said nothing: - the primary composer can address only the primary agent, whose name the box above already - carries. The rule now reads the model's display name and its effort, `Muse Spark 1.3 · high`, and - plain `Message` before a model is named; a collapsed composer and a worker's input keep naming - their agent, because there the name does distinguish. Closed by the renamed COM-4 test, refreshed - frames, and every PTY smoke waiting on its own model's title. -3. **Motion owner — implemented.** The effort rail's clock became the workspace's one motion owner: - one deadline, each moving thing answering only whether it is visible, the phase held at the top - of view state where every renderer reads it. The effort rail is its first user with no change in - behaviour. Closed by the effort tests passing unchanged and - `mot_1_one_deadline_serves_every_mover_and_late_wakes_coalesce`. -4. **Activity line — implemented.** The row opens with the mark, then the label, then muted - readings: elapsed across the turn, stopped while an approval or a question waits on the user, the - effort, and after five seconds with nothing from the primary's own route `quiet for`, which a - child's stream does not interrupt. Elapsed reads `11s`, `2m 11s`, `1h 2m`; a short row drops - effort, then quiet, then elapsed. The mark is the Nerd Font's circle, rounded square and square, - outline then filled, eight frames at 200 ms, which the user chose in their own terminal over the - Unicode cycles that shook. It wears blue, the server-tool colour while a hosted search runs, and - stands still in the action-required colour during approval. The readings are presentation: events - are dated as they are applied and the motion clock supplies the instant a frame is drawn for. - After the user's first look in kitty the row gained a blank row beneath it and gives up its rows - when idle with nothing waiting; a selection note never opens them, and rides the status row while - they are closed. Closed by refreshed current-work frames, the readings, turn-count, child-quiet - and footer-rows tests, the selection drags that no longer move, MOT-2 for the mark, and the - activity smokes. -5. **Documents.** Evidence tables current; SVG review of the frames attached; this plan deleted; - the phase row says done. - -## Order and why - -The band first, because it needs no clock and its frames are the baseline every later frame is -compared against. The motion owner before the activity line, so the row is born on the shared clock -and never grows one of its own. Documents last, once the frames exist to review. - -## Deliberately not in this plan - -A token count on the row, because Responses reports usage only at the end of a turn. A verb list, -because the labels are semantic states. Folding long user messages. The mark itself, which is -[stage 10](./phase-04-stage-10-branding.md) and shares MOT-1 to MOT-3. diff --git a/.agents/roadmap.md b/.agents/roadmap.md index 655e5bc..321a527 100644 --- a/.agents/roadmap.md +++ b/.agents/roadmap.md @@ -34,7 +34,7 @@ table in `AGENTS.md` allows. | 01 | One real agent in the workspace: a thin loop over one provider, and the transcript grammar against its output | Closed 2026-09-03: delivered one live OpenAI-compatible agent, five bounded native tools with explicit approval and cancellation, and the reviewed responsive transcript grammar | | 02 | Canonical session state, persistence, durable permission policy, provider transports, context projection and project instructions | Closed 2026-09-12 by scoped evidence: delivered JSONL sessions and recovery, four provider dialects, compaction, durable permissions, AGENTS.md and conversation tree/rewind; unproven recovery/readmission acceptance inherited by Phase 03, independent export/import by Phase 04; MCP optional | | 03 | Durable multi-agent mailbox and runtime ownership | Closed 2026-09-16: delivered ordered durable delegation/mail, owned child scheduling, Stop and Handoff control, passive, process-kill and in-app switch recovery, canonical Attention and the accepted responsive agent workspace | -| 04 | Product polish, performance hardening, math in production, and extensibility | Active; stages 1–9, 11–15, 17–27, 29 and 31–33 complete; stage 16 effort selection awaits user testing; stage 28 model-switch degradation in progress; stage 30 automatic-compaction visibility unstarted; stage 34 conversation chrome in progress; stage 10 branding planned and unstarted | +| 04 | Product polish, performance hardening, math in production, and extensibility | Active; stages 1–9, 11–15, 17–27, 29 and 31–34 complete; stages 16 and 28 await the user's terminal test; stage 30 automatic-compaction visibility unstarted; stage 10 branding planned and unstarted | ## Locked diff --git a/.agents/spikes/conversation-chrome/README.md b/.agents/spikes/conversation-chrome/README.md index 35afe67..a64ddb8 100644 --- a/.agents/spikes/conversation-chrome/README.md +++ b/.agents/spikes/conversation-chrome/README.md @@ -3,7 +3,7 @@ | Field | Value | | --- | --- | | Question | How the working agent, the user's turn and the mark should look, decided from rendered candidates | -| Feeds | [stage 34](../../plans/phase-04-stage-34-conversation-chrome.md) and [stage 10](../../plans/phase-04-stage-10-branding.md) plans | +| Feeds | [Phase 04](../../phases/phase-04-product-polish.md) stage 34, complete, and the [stage 10](../../plans/phase-04-stage-10-branding.md) plan | | Method | HTML mockups in the palette, opened for the user; two kitty scripts for what a browser cannot show | Every decision below was made by the user on a rendered frame, 2026-09-21 and 2026-09-22. The