Skip to content

docs(design): cross-process teardown for the embedded native-app stack (SEA-1880) - #230

Open
seal-agent wants to merge 2 commits into
mainfrom
compass-native-1880-teardown-design
Open

docs(design): cross-process teardown for the embedded native-app stack (SEA-1880)#230
seal-agent wants to merge 2 commits into
mainfrom
compass-native-1880-teardown-design

Conversation

@seal-agent

Copy link
Copy Markdown
Contributor

Frozen-contract amendment: compass-stack down, invoked as a fresh process,
is a silent no-op across the process boundary — the merged T4.2 embedded
"Quit and stop stack" action leaves the stack running, contradicting the
frozen native-app record's down-SIGTERMs-the-tree claim.

Records Option A (DL-161): up persists each supervised child's process-group
ID plus a start-time identity token to an atomic stack.pgids record beside
the lockfile; a fresh down refuses while an up holds the lock, verifies
each group's identity before signaling, SIGTERMs each exact persisted pgid in
reverse start order with bounded SIGKILL escalation, and confirms teardown per
component (server/postgres socket quiescence, runner group-ESRCH). Weighs and
rejects B (control-RPC), C (foreground-supervised up), D (cgroup/systemd-scope).

Red-teamed by a design-critic pass; critique folded (identity-token gate,
live-up refusal interlock, per-component confirmation, zombie-window and
partial-failure endstates). One Open Question parked for Matt: process-group
signaling cannot reach conmon-detached agent containers — scoped out under
assumption (a), split to SEA-1884.

Refines DL-108 (stays Active); appends one DL-161 row to the Desktop shell
ledger. Docs-only; no code change.

Refs SEA-1880

Co-authored-by: Matt Wilkinson matt@sealedsecurity.com

@linear-code

linear-code Bot commented Aug 7, 2026

Copy link
Copy Markdown

SEA-1880

seal-agent and others added 2 commits August 7, 2026 19:04
…k (SEA-1880)

Frozen-contract amendment: `compass-stack down`, invoked as a fresh process,
is a silent no-op across the process boundary — the merged T4.2 embedded
"Quit and stop stack" action leaves the stack running, contradicting the
frozen native-app record's `down`-SIGTERMs-the-tree claim.

Records Option A (DL-161): `up` persists each supervised child's process-group
ID plus a start-time identity token to an atomic `stack.pgids` record beside
the lockfile; a fresh `down` refuses while an `up` holds the lock, verifies
each group's identity before signaling, SIGTERMs each exact persisted pgid in
reverse start order with bounded SIGKILL escalation, and confirms teardown per
component (server/postgres socket quiescence, runner group-ESRCH). Weighs and
rejects B (control-RPC), C (foreground-supervised up), D (cgroup/systemd-scope).

Red-teamed by a design-critic pass; critique folded (identity-token gate,
live-`up` refusal interlock, per-component confirmation, zombie-window and
partial-failure endstates). One Open Question parked for Matt: process-group
signaling cannot reach conmon-detached agent containers — scoped out under
assumption (a), split to SEA-1884.

Refines DL-108 (stays Active); appends one DL-161 row to the Desktop shell
ledger. Docs-only; no code change.

Refs SEA-1880

Co-authored-by: Matt Wilkinson <matt@sealedsecurity.com>
@seal-agent
seal-agent force-pushed the compass-native-1880-teardown-design branch from 55ae615 to 51fc8b0 Compare August 7, 2026 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant