duckworth: row 253 C4 follow-up (duckworth-0110): session-scan kill, stalled supervisor is R3 residual

This commit is contained in:
jason.woltje committed 2026-10-21 20:29:21 -05:00
1 parent 8a3c24159d
commit 2c49dd80c1
2 files changed
+18

No files matched your search

+17
View File
@@ -78,3 +78,20 @@ The addendum must say:
Gander writes DESIGN-C4.md and the fake, but runs nothing. I review the addendum and the fake diff
statically. The broad gate starts after that, on Sage's CLEAR, and must be the whole gate again, because
product bytes change.
## Follow-up, gander-0077 (duckworth-0110)
- Q1, a grandchild that leaves the process group but stays in the session. Accepted: the supervisor
kills by session, not by group. It forks the query into a new session (`setsid` in the child, because
the command sudo starts is already a group leader on the pty path) and knows that session id. At the
bound, it scans `/proc/*/stat` for that session, SIGKILLs every pid it finds, and repeats until a scan
comes back empty or a small fixed bound runs out. Then it reaps the direct child. Only `setsid` away
stays the R3 residual. The F3 grandchild case uses `setpgid` without `setsid`. Add a mutant that kills
only the leader's group, and that case must kill it.
- Q2, a stalled supervisor. The product isn't required to clean it up. The case asserts three things:
root returns within the outer bound, the refusal carries the outer reason, and none of the stdout is
used. The fixture then kills the leftover session itself, and the test names that step as the R3
residual. A stalled supervisor is either a hostile same-uid process (the residual) or a hang in trusted,
root-validated code, which is outside the model. A root-side cross-session kill isn't part of C4. If it
is ever added, it needs its own design (a uid filter, and the kill keyed on the monitor's session id),
and it doesn't belong in this row.
+1
View File
@@ -1451,3 +1451,4 @@ are never rewritten or removed; corrections are new entries.
2026-10-21T21:31Z | Duckworth (Opus 5.5) | row 253 DESIGN r1 (duckworth-0100), Gander d8d7c34a7 (baa06203) on c3d88840c: config query, P10 unnamed, 107-byte limit, snapshot, P8 | approve, C1-C5 (component containment + no-follow walk, dataRoot charset, root-side parse, query pgroup bound, headers); N1-N4; record waits on Sage queue-write gap |
2026-10-21T22:08Z | Duckworth (Opus 5.5) | row 202 round 5 manifest (duckworth-0104), Quackerjack f70f25db7 / CANDIDATE.sha256 7b9b28101 (3658ee0e) on c3d88840c: digests, base drift, viewer carry c204bef73, README after 196 | approve, C1 brief gate (cli suite + scripts/test-*.sh + M1-M13) before landing; N1 stale MANIFEST.md; record waits on Sage comment id + gap |
2026-10-22T01:26Z | Duckworth (Opus 5.5) | row 253 C4 static ruling (duckworth-0109), gander-0076/sage-2308 | gap real on sudo pty path; repair inside design via DESIGN-C4.md addendum R1-R4; fake F1-F5 before next gate |
2026-10-22T01:29Z | Duckworth (Opus 5.5) | row 253 C4 follow-up (duckworth-0110), gander-0077 | session-scan kill accepted; stalled supervisor asserts outer bound only, cleanup is R3 residual |