docs(plans): brief for releasing the cohort scope after a force stop
Dewey's row 47 finding: forceStopCohort and controller close never send release, so each force stop leaves a mosaic-chat scope with an idle shim. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# Conversation cohort: release the scope after a force stop (2026-10-10)
|
||||
|
||||
Status: written by Sage, lead. It follows `docs/plans/BRIEF-TEMPLATE.md`
|
||||
and amends no section of the slice 1 brief. One row.
|
||||
|
||||
## Cohort scope release after a force stop
|
||||
|
||||
### Problem
|
||||
|
||||
Dewey found this while working on row 47 (#1533, round 1 notes, comment
|
||||
27037). In a running controller, each force stop leaves a
|
||||
`mosaic-chat-*.scope` unit with an idle node `shim.mjs` in it, until
|
||||
something else kills the unit.
|
||||
|
||||
- `shim.mjs` ignores SIGTERM by design (README, file table) and exits only
|
||||
on the `release` op.
|
||||
- `forceStopCohort` (`packages/conversation/src/cohort.mjs`, near line
|
||||
150) ends after `kill` and never sends `release`.
|
||||
- Controller close doesn't send `release` for a stopped binding either.
|
||||
|
||||
Row 47 fixed the test-side leaks. This row is the src side.
|
||||
|
||||
### Owner and reviewer
|
||||
|
||||
Owner: Dewey. Reviewers: Darkwing and Filbert.
|
||||
|
||||
### Files owned
|
||||
|
||||
- `packages/conversation/src/cohort.mjs`
|
||||
- `packages/conversation/src/controller.mjs`, only the force-stop and close
|
||||
paths
|
||||
- `packages/conversation/src/shim.mjs`, only if `release` needs a change
|
||||
- `packages/conversation/tests/` and `packages/conversation/README.md`
|
||||
|
||||
### What ships
|
||||
|
||||
- After a force stop whose outcome is `proven`, the cohort sends `release`
|
||||
to the shim. The scope unit is gone afterwards.
|
||||
- Controller close sends `release` for a binding whose engine is proven
|
||||
stopped.
|
||||
- No `release` after an `unavailable` outcome. Releasing a scope whose
|
||||
members weren't proven gone would drop the evidence. The README states
|
||||
this.
|
||||
- First check whether a normal engine exit (no force stop) also leaves the
|
||||
shim. If it does, fix that path in the same row; if it doesn't, say why
|
||||
in the packet.
|
||||
- Tests: after a proven force stop the unit is absent (`systemctl show`
|
||||
reports it inactive or not found), after close the unit is absent, and
|
||||
after an `unavailable` outcome nothing is released. A mutant that drops
|
||||
the new `release` must fail a test.
|
||||
|
||||
### Out of scope
|
||||
|
||||
The force-stop phases themselves, the claim protocol, and the pgroup
|
||||
fallback.
|
||||
|
||||
### Gate
|
||||
|
||||
Darkwing and Filbert approve on the row's issue. The conversation and
|
||||
webui node suites and every `scripts/test-*.sh` green on Sage's gate rerun.
|
||||
No `mosaic-chat-*.scope` left after the suites.
|
||||
Reference in New Issue
Block a user