Replace the old workspace shell #16

Closed
opened 2026-08-28 19:24:45 +00:00 by dikka · 1 comment
Owner

What to build

Integrate the completed replacement paths into one browser-primary shell: Overview, durable navigator, project History, continuous session stream, Settings, Changes, project terminal, and on-demand details. Desktop may retain a persistent navigator at sufficient width. Narrow layouts show one major destination at a time with explicit return/navigation behavior while preserving the current session, stream position, drafts, and annotation usability.

Delete the obsolete architecture rather than maintaining two products. Remove independent Message/Live/Responses stage selection, the assistant-response chooser as primary history, the completion-notification center, browser-local placement reconciliation, disconnect auto-transitions, synthetic process locations, duplicated live/review composition, permanent information dock, and old-hub browser fallbacks invalidated by the exact protocol revision.

Retain canonical Markdown and annotation behavior, attachment validation, feedback operation fencing, transient notices, project normalization, current Changes safety, and Reload resources authority/recovery. Ignore old browser keys and leave old Pilcrow catalog files and all Pi JSONL untouched; no migration path is added.

Acceptance criteria

  • The default route opens Overview and every durable destination is reachable through one coherent navigator and browser-history model.
  • Session routes present one continuous stream and do not expose old Message, Live, or Responses stage modes.
  • Narrow layouts show one usable destination at a time and preserve stream position, drafts, and annotation interaction when navigating away and back.
  • The old response chooser, notification center, browser-local placements, auto-archive logic, synthetic locations, duplicate live/review paths, and permanent information dock are removed.
  • Reload resources retains its idle/authority/operation-identity safeguards and remains a secondary action.
  • Transient operation notices, attachment bounds, canonical targeting, Changes safety, and project normalization remain intact.
  • Old browser keys are ignored, old catalog files remain untouched, and Pi session files are never migrated or rewritten.
  • Production rendered-contract tests cover Overview, navigator, History, stream, Settings, Changes, terminal, model controls, operatives, and narrow navigation.
  • Real-app desktop and narrow QA use the existing user-run development server and clean up browser-created sessions through product controls.

Blocked by

  • #7 — Browse, import, continue, and search cold sessions
  • #8 — Make placement and Later scheduling durable
  • #9 — Integrate live and technical work into the stream
  • #11 — Make feedback drafts and submitted history durable
  • #12 — Replace notification attention with Overview
  • #13 — Control model and thinking beside input
  • #14 — Present useful operative state
  • #15 — Make Changes and the terminal project-owned

Human checkpoint note: Do not request routine per-ticket approval. The implementing agent may make the internal architecture, refactoring, testing, and UI-detail decisions needed to satisfy the acceptance criteria. Pause only if implementation requires a material product or ownership change, a destructive or hard-to-reverse action, excluded security or deployment scope, credentials or spending, or a real-browser design fork with no safe default. Forgejo completion updates may be batched with the rest of the completed frontier. The user performs final hub and Pi restart steps. Agents must not start, restart, replace, or stop the user-run Pilcrow development server.

## What to build Integrate the completed replacement paths into one browser-primary shell: Overview, durable navigator, project History, continuous session stream, Settings, Changes, project terminal, and on-demand details. Desktop may retain a persistent navigator at sufficient width. Narrow layouts show one major destination at a time with explicit return/navigation behavior while preserving the current session, stream position, drafts, and annotation usability. Delete the obsolete architecture rather than maintaining two products. Remove independent Message/Live/Responses stage selection, the assistant-response chooser as primary history, the completion-notification center, browser-local placement reconciliation, disconnect auto-transitions, synthetic process locations, duplicated live/review composition, permanent information dock, and old-hub browser fallbacks invalidated by the exact protocol revision. Retain canonical Markdown and annotation behavior, attachment validation, feedback operation fencing, transient notices, project normalization, current Changes safety, and Reload resources authority/recovery. Ignore old browser keys and leave old Pilcrow catalog files and all Pi JSONL untouched; no migration path is added. ## Acceptance criteria - [ ] The default route opens Overview and every durable destination is reachable through one coherent navigator and browser-history model. - [ ] Session routes present one continuous stream and do not expose old Message, Live, or Responses stage modes. - [ ] Narrow layouts show one usable destination at a time and preserve stream position, drafts, and annotation interaction when navigating away and back. - [ ] The old response chooser, notification center, browser-local placements, auto-archive logic, synthetic locations, duplicate live/review paths, and permanent information dock are removed. - [ ] Reload resources retains its idle/authority/operation-identity safeguards and remains a secondary action. - [ ] Transient operation notices, attachment bounds, canonical targeting, Changes safety, and project normalization remain intact. - [ ] Old browser keys are ignored, old catalog files remain untouched, and Pi session files are never migrated or rewritten. - [ ] Production rendered-contract tests cover Overview, navigator, History, stream, Settings, Changes, terminal, model controls, operatives, and narrow navigation. - [ ] Real-app desktop and narrow QA use the existing user-run development server and clean up browser-created sessions through product controls. ## Blocked by - #7 — Browse, import, continue, and search cold sessions - #8 — Make placement and Later scheduling durable - #9 — Integrate live and technical work into the stream - #11 — Make feedback drafts and submitted history durable - #12 — Replace notification attention with Overview - #13 — Control model and thinking beside input - #14 — Present useful operative state - #15 — Make Changes and the terminal project-owned > **Human checkpoint note:** Do not request routine per-ticket approval. The implementing agent may make the internal architecture, refactoring, testing, and UI-detail decisions needed to satisfy the acceptance criteria. Pause only if implementation requires a material product or ownership change, a destructive or hard-to-reverse action, excluded security or deployment scope, credentials or spending, or a real-browser design fork with no safe default. Forgejo completion updates may be batched with the rest of the completed frontier. The user performs final hub and Pi restart steps. Agents must not start, restart, replace, or stop the user-run Pilcrow development server.
Author
Owner

Implemented, corrected through independent Standards/Spec review and repeated closure audits, and verified in jj revision 1a0bf28872f8feat(workspace): replace legacy shell with strict v11 routes.

What shipped:

  • One URL/browser-history model now owns default Overview plus session, Settings, Archived, project History, Changes, Terminal, and Details destinations. Desktop keeps a durable navigator; narrow layouts expose one major destination with explicit Sessions/back behavior.
  • Session routes render one continuous chronological stream. Independent Message/Live/Responses stages, stage overrides, the primary response chooser, duplicate finalized-response composition, completion-notification UI/state, browser-local placement reconciliation, disconnect auto-transitions/auto-archive, the permanent information dock, and obsolete status-panel studies were removed.
  • The selected bounded session stream stays mounted but hidden + inert behind other destinations. Its live History visit/subscriptions close while inactive; returning opens a fresh visit while preserving loaded paginated entries, visible anchor/deep scroll, older selected response, draft/attachments, and active annotation target/editor/history.
  • Hidden streams detach/fence every document-global annotation selection, keyboard, plain-paste, image-paste, and async decode path. Activation generations plus exact editor/target identity prevent stale image completion while hidden or after hide → Back.
  • Direct-review acknowledgement uses the active page's exact branch review authority, distinct from historical render-capture responseAuthority. Ordinary finalized responses acknowledge correctly; cold History and hidden/inert/aria-hidden streams cannot acknowledge; authority changes invalidate stale queued/in-flight work.
  • Browser projections are strict current contracts. Required reviewAuthority omission and obsolete hub fields reject with bounded diagnostics rather than silently degrading.
  • Synthetic process-location architecture was removed end to end: no producer location, tmux/PILCROW_LOCATION probe/timer, hub pi:N allocation/injection/catalog path, browser prop/rendering, fixture, or package entry remains.
  • Exact producer protocol is now v11. v10 registration and obsolete v11 location state are intentionally rejected; there is no migration or compatibility coercion.
  • Reload-resource operation identity/idle/authority fencing, transient notices, attachment bounds, canonical Markdown/annotation targeting, feedback recovery/fencing, durable placement/Later, model/thinking controls, operative presentation, Changes safety, project normalization, and project-owned terminal/Details remain intact.
  • Old browser keys are ignored. Old Pilcrow catalog files and Pi JSONL are untouched; no migration or rewrite path was added.

Review/audit fixes included loaded-stream preservation, route/session authority separation, required review authority, meaningful paginated/popstate tests, dead CSS/naming cleanup, hidden global-input fencing, ordinary-response provenance, distinct capture/review authority wiring, and deferred image-read generation fencing. The final auditor reproduced the last two blockers, verified their corrections, and explicitly authorized closure.

Verification:

  • Full worker-bounded suite: 74 files, 631 tests passed.
  • Focused blocker suite: 136 tests passed; final authority/race auditor tests passed.
  • Browser and hub TypeScript checks passed.
  • vp fmt, vp check, and git diff --check passed. vp check retains four unrelated pre-existing hub lint warnings.
  • vp run build:browser, vp run build:hub, and vp build passed; runtime/ and dist/ are current and contain protocol v11.
  • Two unconstrained full-suite attempts encountered different known load-sensitive timing failures (session-history-source 5s and hub-client retry timing); both focused tests pass and the complete bounded run is clean.
  • Browser QA reused only the existing user-run Vite server at 127.0.0.1:17167. Desktop verified all durable destinations, hidden/inert retained stream nodes, active target/editor/older-response retention, and exact deep scroll restoration; narrow 390×700 verified one-destination navigation, inertness, annotation retention, and Back restoration. Final Overview/Settings smoke had no page errors. Browser QA sessions were closed.
  • The development hub at 17168 was unavailable or exposed no sessions during QA, so no browser-created session required cleanup. Live hub-backed mutation/terminal checks were not possible without managing processes; exact HTTP/WebSocket/protocol/authority paths are covered by automated hub integration tests.

Required rollout order after the rebuild is complete: restart the hub, reload/restart active Pi sessions so they register as v11, then reload browser pages. Older producer/browser combinations are intentionally unsupported.

Implemented, corrected through independent Standards/Spec review and repeated closure audits, and verified in jj revision `1a0bf28872f8` — `feat(workspace): replace legacy shell with strict v11 routes`. What shipped: - One URL/browser-history model now owns default Overview plus session, Settings, Archived, project History, Changes, Terminal, and Details destinations. Desktop keeps a durable navigator; narrow layouts expose one major destination with explicit Sessions/back behavior. - Session routes render one continuous chronological stream. Independent Message/Live/Responses stages, stage overrides, the primary response chooser, duplicate finalized-response composition, completion-notification UI/state, browser-local placement reconciliation, disconnect auto-transitions/auto-archive, the permanent information dock, and obsolete status-panel studies were removed. - The selected bounded session stream stays mounted but hidden + inert behind other destinations. Its live History visit/subscriptions close while inactive; returning opens a fresh visit while preserving loaded paginated entries, visible anchor/deep scroll, older selected response, draft/attachments, and active annotation target/editor/history. - Hidden streams detach/fence every document-global annotation selection, keyboard, plain-paste, image-paste, and async decode path. Activation generations plus exact editor/target identity prevent stale image completion while hidden or after hide → Back. - Direct-review acknowledgement uses the active page's exact branch review authority, distinct from historical render-capture `responseAuthority`. Ordinary finalized responses acknowledge correctly; cold History and hidden/inert/aria-hidden streams cannot acknowledge; authority changes invalidate stale queued/in-flight work. - Browser projections are strict current contracts. Required `reviewAuthority` omission and obsolete hub fields reject with bounded diagnostics rather than silently degrading. - Synthetic process-location architecture was removed end to end: no producer `location`, tmux/`PILCROW_LOCATION` probe/timer, hub `pi:N` allocation/injection/catalog path, browser prop/rendering, fixture, or package entry remains. - Exact producer protocol is now v11. v10 registration and obsolete v11 `location` state are intentionally rejected; there is no migration or compatibility coercion. - Reload-resource operation identity/idle/authority fencing, transient notices, attachment bounds, canonical Markdown/annotation targeting, feedback recovery/fencing, durable placement/Later, model/thinking controls, operative presentation, Changes safety, project normalization, and project-owned terminal/Details remain intact. - Old browser keys are ignored. Old Pilcrow catalog files and Pi JSONL are untouched; no migration or rewrite path was added. Review/audit fixes included loaded-stream preservation, route/session authority separation, required review authority, meaningful paginated/popstate tests, dead CSS/naming cleanup, hidden global-input fencing, ordinary-response provenance, distinct capture/review authority wiring, and deferred image-read generation fencing. The final auditor reproduced the last two blockers, verified their corrections, and explicitly authorized closure. Verification: - Full worker-bounded suite: 74 files, 631 tests passed. - Focused blocker suite: 136 tests passed; final authority/race auditor tests passed. - Browser and hub TypeScript checks passed. - `vp fmt`, `vp check`, and `git diff --check` passed. `vp check` retains four unrelated pre-existing hub lint warnings. - `vp run build:browser`, `vp run build:hub`, and `vp build` passed; `runtime/` and `dist/` are current and contain protocol v11. - Two unconstrained full-suite attempts encountered different known load-sensitive timing failures (`session-history-source` 5s and hub-client retry timing); both focused tests pass and the complete bounded run is clean. - Browser QA reused only the existing user-run Vite server at `127.0.0.1:17167`. Desktop verified all durable destinations, hidden/inert retained stream nodes, active target/editor/older-response retention, and exact deep scroll restoration; narrow 390×700 verified one-destination navigation, inertness, annotation retention, and Back restoration. Final Overview/Settings smoke had no page errors. Browser QA sessions were closed. - The development hub at 17168 was unavailable or exposed no sessions during QA, so no browser-created session required cleanup. Live hub-backed mutation/terminal checks were not possible without managing processes; exact HTTP/WebSocket/protocol/authority paths are covered by automated hub integration tests. Required rollout order after the rebuild is complete: restart the hub, reload/restart active Pi sessions so they register as v11, then reload browser pages. Older producer/browser combinations are intentionally unsupported.
dikka closed this issue 2026-08-29 11:09:39 +00:00
Sign in to join this conversation.
No description provided.