Present useful operative state #14

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

What to build

Add restrained operative presentation for supervision without turning Pilcrow into an operative-management product. Overview shows aggregate working and attention counts. The current turn shows compact operative rows containing display name, lifecycle state, and current activity status. Persisted TUI-visible operative messages remain ordinary chronological stream entries under the visible-custom-message policy.

Consume a versioned, provider-neutral status interface over Pi's shared extension event bus. Pilcrow must not import the subagents package or depend on its private registry. Validate every snapshot and tolerate absent, malformed, throwing, replaced, or disposed providers without corrupting session state.

Do not show task descriptions or duplicate latest reports in the live row. Do not add child-session links, browser navigation into operative sessions, messaging, cancellation, room controls, or registry inspection.

Acceptance criteria

  • Overview exposes aggregate working and attention counts without duplicate session rows.
  • A live parent turn renders compact operative name, lifecycle, and activity status in chronological context.
  • Persisted visible operative reports remain stream messages and are not duplicated into live status rows.
  • Missing or malformed status providers stay quiet and cannot clear or corrupt a previously valid exact-session projection improperly.
  • Provider replacement and disposal recover through the shared event-bus interface without importing provider implementation code.
  • No operative task/report duplication, child navigation, direct controls, rooms, or management destination is present.
  • Provider validation, extension adaptation, Overview aggregation, and rendered live-row tests pass.

Blocked by

  • #3 — Establish the next exact producer interface
  • #9 — Integrate live and technical work into the stream
  • #12 — Replace notification attention with Overview

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 Add restrained operative presentation for supervision without turning Pilcrow into an operative-management product. Overview shows aggregate working and attention counts. The current turn shows compact operative rows containing display name, lifecycle state, and current activity status. Persisted TUI-visible operative messages remain ordinary chronological stream entries under the visible-custom-message policy. Consume a versioned, provider-neutral status interface over Pi's shared extension event bus. Pilcrow must not import the subagents package or depend on its private registry. Validate every snapshot and tolerate absent, malformed, throwing, replaced, or disposed providers without corrupting session state. Do not show task descriptions or duplicate latest reports in the live row. Do not add child-session links, browser navigation into operative sessions, messaging, cancellation, room controls, or registry inspection. ## Acceptance criteria - [ ] Overview exposes aggregate working and attention counts without duplicate session rows. - [ ] A live parent turn renders compact operative name, lifecycle, and activity status in chronological context. - [ ] Persisted visible operative reports remain stream messages and are not duplicated into live status rows. - [ ] Missing or malformed status providers stay quiet and cannot clear or corrupt a previously valid exact-session projection improperly. - [ ] Provider replacement and disposal recover through the shared event-bus interface without importing provider implementation code. - [ ] No operative task/report duplication, child navigation, direct controls, rooms, or management destination is present. - [ ] Provider validation, extension adaptation, Overview aggregation, and rendered live-row tests pass. ## Blocked by - #3 — Establish the next exact producer interface - #9 — Integrate live and technical work into the stream - #12 — Replace notification attention with Overview > **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 and independently audited across two practical jj revisions:

  • Pilcrow: 18aed34a3cacfeat(operative-status): add provider-neutral operative status projections
  • Subagents provider: 9c9b4d4d7b34feat(subagents): expose bounded operative status provider over event bus

What shipped:

  • Pilcrow consumes exact-version operative-status:api:request:v1 snapshots over Pi's shared event bus without importing the subagents package or its private registry.
  • The adapter is exact-session scoped, validates every snapshot, retains the last valid state across malformed/throwing providers, accepts valid empty snapshots, recovers from provider replacement/disposal, and generation-fences captured callbacks and A → B → A revision epochs.
  • First-turn discovery retries at agent_start, so presentation does not depend on extension session_start order; connected-session polling remains the bounded replacement fallback.
  • Protocol v10 carries the projection as an additive optional field. Hub/registry boundaries reject mismatched session state without weakening matching-version validation.
  • Overview exposes exclusive parent-session working/attention aggregates. The live turn renders passive ordered operative rows with display name, lifecycle, and generic activity only. Blocked/failed rows expose accessible attention status; disconnected/stopped sessions do not present retained counts as live.
  • Persisted visible operative reports remain ordinary chronological stream messages and are not duplicated into live rows. No task/report text, child-session identity/path, model/reasoning, room state, prompts, tool details, registry handles, navigation, messaging, cancellation, or management controls cross the boundary.
  • The provider publishes deterministic, privacy-allowlisted snapshots bounded to 64 rows, 64 KiB serialized JSON, 32 subscribers, and 100 ms coalesced notifications. Normal snapshots require one aggregate budget serialization; pathological overflow uses at most seven attempts at the 64-row cap.
  • Maximum unbroken names/activities wrap safely at 320 px while preserving full accessible text.

Audit fixes covered same-provider A → B → A revision reset, stale callbacks, consumer-first/provider-second startup order, worst-case JSON escaping, disconnected dock counts, synchronous burst coalescing, and the provider budget hot path.

Verification:

  • Pilcrow full suite: 73 files, 678 tests passed.
  • Pilcrow vp exec tsc --noEmit and vp check: passed with zero errors (four pre-existing unrelated lint warnings).
  • vp run build:hub, vp run build:browser, and vp build: passed; dist/ refreshed.
  • Subagents vp run validate: typecheck passed; 12 files, 128 tests passed.
  • Targeted provider/test lint and both repositories' git diff --check: passed.
  • Independent cross-repository audit reproduced and then verified correction of every identified compatibility defect. Browser behavior is covered by rendered DOM/accessibility/responsive tests; no user-run server was started or managed.
Implemented and independently audited across two practical jj revisions: - Pilcrow: `18aed34a3cac` — `feat(operative-status): add provider-neutral operative status projections` - Subagents provider: `9c9b4d4d7b34` — `feat(subagents): expose bounded operative status provider over event bus` What shipped: - Pilcrow consumes exact-version `operative-status:api:request:v1` snapshots over Pi's shared event bus without importing the subagents package or its private registry. - The adapter is exact-session scoped, validates every snapshot, retains the last valid state across malformed/throwing providers, accepts valid empty snapshots, recovers from provider replacement/disposal, and generation-fences captured callbacks and A → B → A revision epochs. - First-turn discovery retries at `agent_start`, so presentation does not depend on extension `session_start` order; connected-session polling remains the bounded replacement fallback. - Protocol v10 carries the projection as an additive optional field. Hub/registry boundaries reject mismatched session state without weakening matching-version validation. - Overview exposes exclusive parent-session working/attention aggregates. The live turn renders passive ordered operative rows with display name, lifecycle, and generic activity only. Blocked/failed rows expose accessible attention status; disconnected/stopped sessions do not present retained counts as live. - Persisted visible operative reports remain ordinary chronological stream messages and are not duplicated into live rows. No task/report text, child-session identity/path, model/reasoning, room state, prompts, tool details, registry handles, navigation, messaging, cancellation, or management controls cross the boundary. - The provider publishes deterministic, privacy-allowlisted snapshots bounded to 64 rows, 64 KiB serialized JSON, 32 subscribers, and 100 ms coalesced notifications. Normal snapshots require one aggregate budget serialization; pathological overflow uses at most seven attempts at the 64-row cap. - Maximum unbroken names/activities wrap safely at 320 px while preserving full accessible text. Audit fixes covered same-provider A → B → A revision reset, stale callbacks, consumer-first/provider-second startup order, worst-case JSON escaping, disconnected dock counts, synchronous burst coalescing, and the provider budget hot path. Verification: - Pilcrow full suite: 73 files, 678 tests passed. - Pilcrow `vp exec tsc --noEmit` and `vp check`: passed with zero errors (four pre-existing unrelated lint warnings). - `vp run build:hub`, `vp run build:browser`, and `vp build`: passed; `dist/` refreshed. - Subagents `vp run validate`: typecheck passed; 12 files, 128 tests passed. - Targeted provider/test lint and both repositories' `git diff --check`: passed. - Independent cross-repository audit reproduced and then verified correction of every identified compatibility defect. Browser behavior is covered by rendered DOM/accessibility/responsive tests; no user-run server was started or managed.
dikka closed this issue 2026-08-29 08:17:11 +00:00
Sign in to join this conversation.
No description provided.