ReviewOS

stacks/drone

Purge seal: diagnose native fixture exit 137 in full suite

#53
Open chris opened this 9 days ago ·
9 days ago

The original full local Buddy suite for the host-slot work failed accepted purge validates sealed totals before metadata retirement at tests/unit/public-safety-purge.test.ts:117. The child returned 137, expected 0, after 167,931.86 ms. This is a distinct scenario and observation from the 137-review access rejection in #36 and inspection timeout in #52.

The shared runPurgeQualificationFixture('purge-seal', 165000) helper has a 165-second SIGKILL timer. The parent test allows 180 seconds. Its returned result records only exit code/stdout/stderr, not signal, whether the timer fired, phase or elapsed time. Exit 137 and the duration alone do not prove which mechanism ended the child. Root cause remains unknown. The retained child output ends after migration messages; the expected PASS actual minimized seal mismatch blocks metadata retirement marker is absent.

The parent, helper, seal fixture and managed context byte-match published main 222ffb83c8a3ae934eea339d7451b37b69bbc1b7. That establishes source identity, not causality. The original suite remains running with three failures at this checkpoint. No guard, lifetime, deadline or assertion has changed and no retry has occurred.

Retained initial prefix: 403601 bytes, SHA-256 d015ef5323739393eec5b35c7f20b59306c2e70afbffa9ba679a80727a19fde7. Original sources and full continuing log are retained separately.

Acceptance:

  • Retain the original terminal suite result and distinguish this case from #36/#52.
  • Obtain bounded actual process/deadline and fixture-phase observations at the real parent/child/SQLite seam. Preserve the original signal behavior, 165/180-second guards and seal mismatch assertions.
  • Apply a correction only after evidence identifies its cause; a passing retry or wider deadline is not a fix.
  • Qualify the unchanged or corrected scenario and related native purge checks, including the Linux namespace CI case. Host fixture evidence does not establish physical erasure.

Original terminal result

The original full local Buddy run completed with exit 1: 1,502 passed, 25 skipped and three failed, 489,058 assertions, 1,530 tests across 187 files, 3,683.77 seconds. The failures are the inspection timeout (#52), 137-review 404 (#36), and purge-seal child exit 137 (#53). The host-slot/runtime cases passed. These failures remain separate observations with unproven causes.

The retained full terminal log has 427362 bytes and SHA-256 6d884c7966f217c823a20cc439b8636035c99b160b648ea6e92ced5e5e29ab7c. No original deadline, assertion or production policy was weakened, and this result is not a passing full suite.

Bounded process and phase follow-up

One diagnostic repetition of the original public parent/child seal scenario passed. It retained the 165-second child guard, 180-second case guard and all seal assertions. The actual child returned 0 with no signal; its deadline callback did not fire. The helper observed 28,177.73 ms including pipe drain. Bounded phase markers observed database bootstrap in 3,619.52 ms, accepted purge at 10,857.45 ms in fixture time, minimizing at 24,341.17 ms, correct refusal of the corrupted seal, successful valid retry, and database close. All three temporarily instrumented files were restored byte-for-byte; the probes are excluded from product publication.

The retained diagnostic log is 3,922 bytes, SHA-256 40c4cf8da57946964cca3aefc87338e126a5db86575da536f915303cf6317850. This is a non-reproduction and does not assign a signal, deadline event or phase to the original exit 137. The original cause remains unknown.

A small tests-only shared-helper change is being qualified to retain bounded deadline and observed exit/signal metadata on future failures. A deliberate five-millisecond private qualification observed an actual SIGKILL/137 with the deadline marker, while the original 165-second scenario completed with no marker or signal. Both children were actually reaped. This is observability, not a causal fix or a wider deadline. Production purge code is unchanged and this issue remains open.

Tracker correction

A negated closing phrase in an earlier PR description created an unintended automatic closing reference. The phrase has been removed. This issue is reopened because the original cause remains unresolved; no causal correction has been established. The passing follow-up and improved observations retain their documented limits.

Sign in to comment on this issue.