Skip to content

test(subscriber): prove atomic rollback when dispatch compensation fails - #54

Draft
echoomegaprime wants to merge 1 commit into
agent/certforge-orphan-concurrency-regression-20261111from
agent/certforge-compensation-rollback-fixtures-20261111
Draft

echoomegaprime wants to merge 1 commit into
agent/certforge-orphan-concurrency-regression-20261111from
agent/certforge-compensation-rollback-fixtures-20261111

Conversation

@echoomegaprime

Copy link
Copy Markdown
Owner

Scope

Two isolated SQLite failure-injection regressions for the combined dispatch-recovery candidate. Builds on test-only PR #53 (which itself targets combined PR #49); keeps all production and existing source unchanged. No protected runtime operation.

  • Simulate a compensator exception while reconciling an old FAILED/QUEUED/BOUND orphan, verify the transition/reservation/metering roll back together, then retry to one compensation.
  • Simulate the same exception during the final failed dispatch attempt, verify the claim and preexisting usage remain intact, then retry to terminal failure and exactly one compensation.

Isolation and reproducibility

Exact base 3dcd40bd1db8694b5843e034c0333f1d1e9b0924 (PR #53), head 6cb0c9b0dfca33357cf7f8e7c6caa6671a383b78, one new file tests/test_dispatch_compensation_atomicity.py (91 lines). GitHub compare: one commit ahead, zero behind, zero existing source changes; blob reread 2ab1b25b019239b720a936a10fef14c7b1c2d18b.

Held gates

Exact-head hosted CI and independent review required before integration. A passing test does not certify multi-process recovery, large orphan sweeps, audit redaction, production backups or signed PRODUCTION_READY attestation. Do not auto-merge or deploy.

Copy link
Copy Markdown
Owner Author

2026-11-11 03:20 UTC — isolated exact-source fault-injection execution (no release)

New draft PR #54 at 6cb0c9b0dfca33357cf7f8e7c6caa6671a383b78, based exactly on PR #53 3dcd40bd1db8694b5843e034c0333f1d1e9b0924; GitHub compare verified one new 91-line test file, 1 ahead/0 behind, no existing-source changes. GitHub exact blob 2ab1b25b019239b720a936a10fef14c7b1c2d18b read back.

Independent native isolated test: A fresh temporary workspace on FORGE copied exactly 457 git ls-files tracked files from the preexisting combined PR40+PR41 sandbox and inserted the exact new test content read from this commit. Combined subscriber.py SHA-256 c8f088b2888c171e80b3ebdc6370752f35113fde288b2cfc894178c1bfe282a1 independently verified. Test file SHA-256 b1d0be044be98588e5d49bcd9b0bf2cf63c51069597f381d9ebd708c02646ffa.

Executed python3 -m pytest -q tests/test_dispatch_compensation_atomicity.py in the disposable sandbox: 2 passed in 2.84s; exit 0; stderr empty. Tests inject compensator exceptions during orphan reconciliation and during last failed dispatch attempt, assert transactional rollback of run, reservation, dispatch, and meter, then retry to exactly one compensating entry. TemporaryDirectory performed scratch cleanup. No production DB/dispatcher/signer or GitHub base source was modified.

Hosted CI: run 42951811240 is in progress at last read; full deterministic suite running. Do not count hosted CI as passed until terminal success. This remains an isolated test-only draft, not signed production certification; independently review multi-process stress, audit redaction, large orphan sets and rollback coverage before integration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant