fix: guard stale heartbeat rescue and restore discovery - #168
Conversation
QA Verdict: FAILExact head: P0/P1/P2: 0/2/0 P1 — auto rescue still has fail-open pane-evidence pathsThe in-process pending-heartbeat rescue calls The delayed path also turns a failed Exact-head adversarial reproduction: Please make pane evidence mandatory for every automatic rescue caller and treat either scheduling-time or final capture failure as stale-skip/no mutation. Add regressions through the immediate caller and failed-capture path, not only the helper with an explicitly supplied hash. P1 — the “final” inbound guard is not concurrency-safe with enqueue
Exact-head deterministic interleaving: Please bind inbound enqueue and rescue finalization through a shared agent-scoped barrier/lock (or an equivalent atomic protocol) so no inbound can appear between the authoritative check and stop, and add a concurrent regression. Passing evidence
Review evidence is bound to the exact head above. No source changes, merge, or release action were performed. |
QA Verdict: PASSExact head: P0/P1/P2: 0/0/0 The two findings from the previous exact-head FAIL are resolved:
Independent adversarial evidence:
Validation:
Residual: the lock is repo-scoped rather than agent-scoped, which is conservative and may briefly serialize unrelated agent enqueue, but does not affect correctness or the issue #167 acceptance criteria. No P0/P1/P2 findings remain. Ready to merge. |
|
@sulabs2022 Could you please review/approve this exact head so the protected-branch merge gate can complete?
The author/admin account cannot self-approve and branch protection enforces one write-level approval for admins. Please leave an |
Summary
Closes #167.
HB_IDand pane-tail fingerprint through rescue timers.HB_RESCUE_STALE_SKIPdisposition and no stop/start/prime.Verification
python3 -m unittest discover -s agent-manager/scripts/tests -p 'test_*.py'Ran 326 tests in 81.312s — OKe6261af