Replace notification attention with Overview #12

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

What to build

Make Overview the main truthful workspace monitor. Show each session exactly once in its highest applicable section: Needs review or attention, Working now, then Active workspace. Rows may show secondary facts such as current work plus an earlier unreviewed response.

Derive Needs review from durable finalized-response identity compared with one reviewed position per workspace session and Pilcrow instance. Do not derive attention from queue_notification tool calls. Remove the separate completion-notification inbox; the tool execution may remain inside technical details like any other visible tool.

A response is acknowledged only through direct interaction with its loaded review area, such as click, selection, wheel or touch scroll, or keyboard interaction. Navigation, hydration, background arrival, viewport intersection, and programmatic scrolling do not count. Acknowledging a newer response covers earlier responses. Later suppresses ordinary successful completion until its deadline, while failures and interruptions always surface. Parked and Archived successful completions surface without changing placement.

Acceptance criteria

  • Overview has mutually exclusive Needs review or attention, Working now, and Active workspace sections in that priority order.
  • A session appears once even when several conditions apply and its row preserves relevant secondary state.
  • Finalized response identity, not notification tool usage, creates durable Needs review state.
  • Click, selection, user scroll, and keyboard interaction can advance the reviewed position for the relevant response.
  • Navigation, data arrival, hidden pages, viewport intersection, and programmatic scroll do not acknowledge a response.
  • Acknowledging a newer response covers earlier responses and survives browser and hub restart.
  • Later suppresses ordinary completion until deadline; failures and interruptions override suppression without moving placement.
  • Parked and Archived completion surfaces for review without moving the record.
  • The completion-notification inbox and its tool-call-derived protocol/browser state are removed.
  • Table-driven attention/placement/runtime tests and rendered interaction tests pass.

Blocked by

  • #8 — Make placement and Later scheduling durable
  • #9 — Integrate live and technical work into the stream

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 Make Overview the main truthful workspace monitor. Show each session exactly once in its highest applicable section: Needs review or attention, Working now, then Active workspace. Rows may show secondary facts such as current work plus an earlier unreviewed response. Derive Needs review from durable finalized-response identity compared with one reviewed position per workspace session and Pilcrow instance. Do not derive attention from queue_notification tool calls. Remove the separate completion-notification inbox; the tool execution may remain inside technical details like any other visible tool. A response is acknowledged only through direct interaction with its loaded review area, such as click, selection, wheel or touch scroll, or keyboard interaction. Navigation, hydration, background arrival, viewport intersection, and programmatic scrolling do not count. Acknowledging a newer response covers earlier responses. Later suppresses ordinary successful completion until its deadline, while failures and interruptions always surface. Parked and Archived successful completions surface without changing placement. ## Acceptance criteria - [ ] Overview has mutually exclusive Needs review or attention, Working now, and Active workspace sections in that priority order. - [ ] A session appears once even when several conditions apply and its row preserves relevant secondary state. - [ ] Finalized response identity, not notification tool usage, creates durable Needs review state. - [ ] Click, selection, user scroll, and keyboard interaction can advance the reviewed position for the relevant response. - [ ] Navigation, data arrival, hidden pages, viewport intersection, and programmatic scroll do not acknowledge a response. - [ ] Acknowledging a newer response covers earlier responses and survives browser and hub restart. - [ ] Later suppresses ordinary completion until deadline; failures and interruptions override suppression without moving placement. - [ ] Parked and Archived completion surfaces for review without moving the record. - [ ] The completion-notification inbox and its tool-call-derived protocol/browser state are removed. - [ ] Table-driven attention/placement/runtime tests and rendered interaction tests pass. ## Blocked by - #8 — Make placement and Later scheduling durable - #9 — Integrate live and technical work into the stream > **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 in jj revision 0c15a441 (feat(workspace): replace notification attention with durable Overview review state).

What changed:

  • Overview now assigns each session exactly once by priority: Needs review or attention, Working now, then Active workspace, with remaining Later/Parked/Archived placement buckets. Rows retain relevant secondary facts such as current work, lifted placement, and suppressed Later review state without duplication.
  • Needs review derives from finalized response identity versus one durable reviewed position per workspace/state root. queue_notification no longer creates attention; it remains an ordinary chronological technical tool detail.
  • Reviewed positions persist in private revisioned reviewed-positions.json, fan out through authoritative SSE, survive hub restart, and align capacity with all 512 legal workspace sessions.
  • Direct acknowledgement provenance is attached only to named loaded finalized-response article/regions. Trusted native click, non-collapsed selection, wheel, touchmove, and review keyboard interaction count. Navigation/header/composer controls, hydration/SSE arrival, background/hidden pages, intersection, programmatic scroll/scrollIntoView, and synthetic events do not.
  • The browser queue retains and coalesces the newest direct target while a request is pending, carries 200/409 revisions forward, waits for SSE authority on same-revision conflicts, and retries retained intent after failure/reconnect. Newer interactions cannot be lost to older same-page or two-page races.
  • Review requests use opaque current-branch authority and absolute normalized branch order. The hub reopens the exact active branch, resolves order beyond the bounded producer projection, and fences workspace/owner/connection/path/ID/history authority both before and after persistence.
  • Store schema v2 records non-content session/branch/order authority. It never regresses on the same branch and has explicit tested switched/reverted-branch semantics when the prior response is absent.
  • Forget now reserves/fences the stopped registry record first, then removes feedback/review metadata with target-workspace deltas and compensation. Concurrent draft/review/Continue/register/import writes cannot enter; unrelated workspace mutations survive every rollback failure path.
  • Later suppresses ordinary successful completion until deadline, while failure/interruption always surface. Parked and Archived success surface without moving placement.
  • Removed completion notification producer/browser schema, sessionStorage inbox state, notification UI/CSS/study, bell/unseen residue, and obsolete dock parameters. Exact producer protocol moved atomically from v9 to v10; v9 and legacy notification shapes are rejected with bounded diagnostics while the hub stays healthy.
  • Review targets are accessible named/focusable regions with valid keyboard semantics.

Audit and regression coverage:

  • Fresh review found stage-wide/synthetic false acknowledgement, lost newer interactions, post-persist branch authority races, non-transactional Forget rollback, unprovable >64-response ordering, low capacity, missing secondary facts, unnamed focus targets, and notification residue. All findings were fixed before closure.
  • Added full attention×placement×runtime matrices; direct/synthetic/navigation/control/background provenance; real browser trusted-event verification; older↔newer coalescing, 409/two-page/failure/reconnect; 100 responses across three pages; branch switch/revert/restart; slow post-persist authority rollback; 512 capacity; Forget concurrency and per-store/catalog failure compensation; and exact one-row rendered fact tests.

Validation:

  • Supervisor full suite passed: 70 files / 638 tests.
  • Focused Overview suite passed: 10 files / 236 tests; core acknowledgement stress passed five consecutive runs.
  • vp check passes all 204 formatted files with 0 errors and four existing non-blocking launcher/registry warnings.
  • TypeScript no-emit checks, hub build, production browser build, and git diff --check passed.
  • Existing-server desktop/narrow fixture QA verified Overview sections/exclusivity/responsive navigation and no notification center. Real Chrome provenance QA produced zero POSTs for synthetic/programmatic events and exactly one branch-bound POST for a native response-text click.

No placement mutation, notification inbox, or v9 compatibility path remains. No server was managed. Deploying v10 requires: restart hub, reload/restart active Pi sessions, then reload browser pages.

Implemented in jj revision `0c15a441` (`feat(workspace): replace notification attention with durable Overview review state`). What changed: - Overview now assigns each session exactly once by priority: Needs review or attention, Working now, then Active workspace, with remaining Later/Parked/Archived placement buckets. Rows retain relevant secondary facts such as current work, lifted placement, and suppressed Later review state without duplication. - Needs review derives from finalized response identity versus one durable reviewed position per workspace/state root. `queue_notification` no longer creates attention; it remains an ordinary chronological technical tool detail. - Reviewed positions persist in private revisioned `reviewed-positions.json`, fan out through authoritative SSE, survive hub restart, and align capacity with all 512 legal workspace sessions. - Direct acknowledgement provenance is attached only to named loaded finalized-response article/regions. Trusted native click, non-collapsed selection, wheel, touchmove, and review keyboard interaction count. Navigation/header/composer controls, hydration/SSE arrival, background/hidden pages, intersection, programmatic scroll/scrollIntoView, and synthetic events do not. - The browser queue retains and coalesces the newest direct target while a request is pending, carries 200/409 revisions forward, waits for SSE authority on same-revision conflicts, and retries retained intent after failure/reconnect. Newer interactions cannot be lost to older same-page or two-page races. - Review requests use opaque current-branch authority and absolute normalized branch order. The hub reopens the exact active branch, resolves order beyond the bounded producer projection, and fences workspace/owner/connection/path/ID/history authority both before and after persistence. - Store schema v2 records non-content session/branch/order authority. It never regresses on the same branch and has explicit tested switched/reverted-branch semantics when the prior response is absent. - Forget now reserves/fences the stopped registry record first, then removes feedback/review metadata with target-workspace deltas and compensation. Concurrent draft/review/Continue/register/import writes cannot enter; unrelated workspace mutations survive every rollback failure path. - Later suppresses ordinary successful completion until deadline, while failure/interruption always surface. Parked and Archived success surface without moving placement. - Removed completion notification producer/browser schema, sessionStorage inbox state, notification UI/CSS/study, bell/unseen residue, and obsolete dock parameters. Exact producer protocol moved atomically from v9 to v10; v9 and legacy notification shapes are rejected with bounded diagnostics while the hub stays healthy. - Review targets are accessible named/focusable regions with valid keyboard semantics. Audit and regression coverage: - Fresh review found stage-wide/synthetic false acknowledgement, lost newer interactions, post-persist branch authority races, non-transactional Forget rollback, unprovable >64-response ordering, low capacity, missing secondary facts, unnamed focus targets, and notification residue. All findings were fixed before closure. - Added full attention×placement×runtime matrices; direct/synthetic/navigation/control/background provenance; real browser trusted-event verification; older↔newer coalescing, 409/two-page/failure/reconnect; 100 responses across three pages; branch switch/revert/restart; slow post-persist authority rollback; 512 capacity; Forget concurrency and per-store/catalog failure compensation; and exact one-row rendered fact tests. Validation: - Supervisor full suite passed: 70 files / 638 tests. - Focused Overview suite passed: 10 files / 236 tests; core acknowledgement stress passed five consecutive runs. - `vp check` passes all 204 formatted files with 0 errors and four existing non-blocking launcher/registry warnings. - TypeScript no-emit checks, hub build, production browser build, and `git diff --check` passed. - Existing-server desktop/narrow fixture QA verified Overview sections/exclusivity/responsive navigation and no notification center. Real Chrome provenance QA produced zero POSTs for synthetic/programmatic events and exactly one branch-bound POST for a native response-text click. No placement mutation, notification inbox, or v9 compatibility path remains. No server was managed. Deploying v10 requires: restart hub, reload/restart active Pi sessions, then reload browser pages.
dikka closed this issue 2026-08-29 06:30:16 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
lab/pilcrow#12
No description provided.