Both ds-review-bot criticals verified and fixed: - ClientActivityFeed release closures resolved the entries map at release time, not the entry they were minted for. A late release of a superseded observation decremented (and could tear down) the successor's stream, and the post-dispose model clear could land after a re-observation inside the dispose round-trip re-anchored the view — blanking the panel until the popover reopened (React StrictMode's double effect hits the same window). Releasers now capture their entry, reconcile the map only when it still holds that entry, and skip the view clear whenever a successor owns the key. Both regressions fail on the previous code. - The background observation tap mapped the process outcome as soon as the pump settled — including its failure path, where the process is usually still running: processOutcome requires a settled handle, so an early mapping froze 'exit code: 0' onto a live task and first-wins end discarded the real terminal state. The tap now awaits proc.done before mapping (the promise never rejects) and swallows mapping failures per the module's contract, in bash and its pwsh mirror. Also applied from the same review: the Remote tier's cross-session visibility is now stated in the controller README, ActivityRead.next documents its chunk-boundary nature that client concatenation relies on, mergeRows records the one-activity-per-job assumption, and the 08-24 Agent Note now reflects the shipped unified task list.
activity/ — streaming-output observation family
English | 中文
This family gives every long-running producer one non-consuming observation plane: an activity is an append-only bounded output stream plus live status, readable by any number of independent observers at absolute byte offsets while the model-facing paths (ctx.jobs cursors, tool results) stay untouched.
| Package | Role | ctx key |
|---|---|---|
activity/ |
Defines the observation registry and vocabulary | ctx.activities |
activity-local/ |
Implements the in-memory ring-buffer registry | registers on ctx.activities |
The Web transport and client consumers live in dsh-api-activity-controller and dsh-client-ui-activity; background bash/pwsh and the workflow tool are the shipped producers.
The subsystem reference — offsets, retention, listener delivery — is docs/subsystems/activity.md; design in the activity observation seam Agent Note.