[Fix] Address review findings on the diagnostic rail and death certificate - #147
Conversation
…icate Review follow-up for #140 and #145, which merged before their bot reviews were read: - Deliberate harness terminations (reconnect, restart, teardown) are no longer certified as unexpected exits: ReconnectableHarness marks the subprocess before killing it, and certification skips marked exits, which also silences the Sentry alert that fired on every routine reconnect. - The death tail no longer depends on the startup URL wait leaving its line listeners attached: dedicated readers feed the ring for the whole subprocess lifetime. - The run-events reader returns the newest events under its limit (descending query, reversed to chronological), so a busy task cannot push the diagnostics it exists to surface out of the window. - A caller-supplied details.kind can no longer override the recorder's classification. - Hash-shaped values (git SHAs, digests) keep an 8-character prefix when redacted, preserving their evidentiary value without exposing credential-length material. - The memory reading is named and documented as what it is: the sandbox observed just after the exit, by the surviving worker process — the exit code/signal remains the authoritative OOM signal. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Roomote review — no new code issues found. The previously flagged issue is resolved by the latest commit. See task
Review notesThe latest commit resolves the outstanding finding.
One residual, low-severity observation (not blocking): the guard depends on the crashed child's exit being observed before the socket-close-driven |
A crash surfaces as a disconnect first, and the disconnect cleanup then kills the already-dead process; marking it there raced the exit certification and could suppress the certificate for exactly the crash the rail exists to record. The mark now applies only to a process that is still alive at kill time, so deliberate teardowns stay quiet and self-inflicted deaths stay certified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Fixed the 🟡 finding: the expected-exit mark is now gated on the subprocess being alive at kill time ( |
Follow-up addressing all outstanding openmote review findings on #140 and #145 (merged before the reviews were read — my miss).
terminateSubprocessmarks the subprocess (WeakSet) before killing; certification skips marked exits. All deliberate teardown paths funnel through that one method.onLinecoupling is removed.details.kindcould override the recorder's classificationkindis applied last.a1b2c3d4…[redacted]); real key formats (sk-/ghp_/JWT/assignments) remain fully redacted.memoryAfterExitwith honest docs: sandbox-wide reading after reclaim, worker RSS is the witness; exit code/signal is the authoritative OOM signal.Tests
Two new (hash-prefix redaction, kind-override guard); full run-task + harnesses suites: 425 pass; typecheck (worker+web) / eslint / prettier / knip clean.
Waiting for bot review + Dan before merge.
🤖 Generated with Claude Code