PR #437 follow-ups: liveness-check residuals nf-w5hc ← Beads

closed priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/445 by tools/beads/import_github.py's reconcile pass.

Suggestions from ninefold-reviewer's review of #437 (dispatcher heartbeat + STALE-DISPATCH). Filed unclaimed and unlabelled — nothing here blocked that PR, and nothing here should be folded back into it.

1. dispatch_health returns silently when mktemp fails

tools/pr/poll.sherrf="$(mktemp)" || return 0, added by the third commit alongside the stderr split.

The function's own header comment two lines above still reads:

> ⚠ The check's OWN failure is surfaced, never swallowed. […] A liveness check that fails silently is the #352 failure mode wearing the costume of its own fix.

That property now holds on every path but this one. Reproduced against the head function, same 135m-stale heartbeat on both sides — only TMPDIR differs:

``` --- TMPDIR points at a non-directory --- mktemp rc: 1 out=[<SILENT>]

--- control, TMPDIR fine --- out=[⚠ STALE-DISPATCH: last good dispatcher tick was 135m ago (> 90m = 3 x 30m; …)] ```

Trigger needs an already-degraded box (unwritable/absent TMPDIR, full disk), which is why it was not gating. Fix is the same shape as the other three swallow fixes on that PR — report and carry on rather than return quietly:

```bash errf="$(mktemp)" || { echo "⚠ STALE-DISPATCH: liveness check could not allocate a temp file — reviewer liveness UNKNOWN."; return 0; } ```

2. Two items declined on the thread, recorded so they are not re-derived

Both were argued and the reasoning holds; noting them only so piece 3 does not rediscover them.

3. For piece 2 (poll.py), the fixture dimension that actually matters

Recorded on the thread already, repeated here because it is the durable lesson: the characterization fixture needs heartbeat state crossed with invocation mode, not either alone.

| | --check | full digest | |---|---|---| | fresh / stale / failed / unreadable / absent+dir / absent | ✓ | ✓ |

Both of this PR's later defects lived in the dimension the oracle did not vary — a failing gh (the stub always exited 0) and the full-digest call site (the harness only drove --check). poll.py must also reproduce dispatch_health's output byte-identically for the golden diff.

Dependencies

None.

Comments

No comments.

Add a comment