hermes: preserve results and prevent duplicate fanout #15

Manually merged
atlas-reconciler merged 0 commits from fix/hermes-result-decomposition-reliability into main 2026-08-18 21:27:58 +00:00

Outcome: hardens Hermes exact-run result replay, staged-journal recovery, automatic orphan reclamation, and automatic decomposition against crash, identity, provenance, and concurrency failures. This branch is rebased directly on current main ab346f5550, which contains merged PR #13.

Retirement recovery now covers both board/.retire.* and board/quarantine/.retire.*. New and legacy valid staged pending, prepared, committed, and conflict artifacts are bound to their reconstructed canonical names, protected by the pending guard, restored without premature execution, and retained under bounded conflict/quarantine GC. Repeated staging preserves the original canonical digest across every generation. Quarantining an already staged artifact reuses the single board quarantine directory, preventing recursive quarantine/quarantine trees. A bounded progress detector drains replacement churn and stops safely on unchanged storage failures.

Prepared-evidence recovery now opens one bounded raw recovery snapshot and carries that exact descriptor/device/inode through semantic classification, quarantine, DB finalization, and retirement. It loops atomic pathname replacements safely. A replacement cannot be reopened as the supposedly malformed source or discarded after DB completion; differing accepted results are preserved as explicit conflicts and the DB completion executes at most once.

Exact ended-run replay now permits unchanged ready, blocked, or loop-breaker triage state only when the exact run-ending event remains the latest status mutation inside the same BEGIN IMMEDIATE transaction. Comments and diagnostics do not invalidate accepted work. Specification, decomposition, unblock, reclaim, scheduling, or a newer claim makes stale replay fail closed. Successful triage replay updates the original run row in place and preserves exact task/event/hook provenance; it never synthesizes a run.

Validation at exact head 5db9f94618: focused Hermes lane/recovery suite 126 passed; full testing/tests 350 passed; explicit race/crash/disk-bound selection 38 passed; Ruff, py_compile, git diff --check, current-main ancestry/tree verification, and diff secret-pattern scan passed. Exact pinned running source/image sha256:37ebf720c783ae908a602916ffccf88d43d205a157957f5dc4b487867aee45e7 passed all 15 SQLite/decomposition regressions with byte-identical copied patch/regression hashes. Current-main merge tree and HEAD tree are both a5e172557f.

No image build, merge, deployment, reconciliation, or live workload mutation was performed.

Outcome: hardens Hermes exact-run result replay, staged-journal recovery, automatic orphan reclamation, and automatic decomposition against crash, identity, provenance, and concurrency failures. This branch is rebased directly on current main ab346f55509d584e457fe26cf90be3078f7a375c, which contains merged PR #13. Retirement recovery now covers both board/.retire.* and board/quarantine/.retire.*. New and legacy valid staged pending, prepared, committed, and conflict artifacts are bound to their reconstructed canonical names, protected by the pending guard, restored without premature execution, and retained under bounded conflict/quarantine GC. Repeated staging preserves the original canonical digest across every generation. Quarantining an already staged artifact reuses the single board quarantine directory, preventing recursive quarantine/quarantine trees. A bounded progress detector drains replacement churn and stops safely on unchanged storage failures. Prepared-evidence recovery now opens one bounded raw recovery snapshot and carries that exact descriptor/device/inode through semantic classification, quarantine, DB finalization, and retirement. It loops atomic pathname replacements safely. A replacement cannot be reopened as the supposedly malformed source or discarded after DB completion; differing accepted results are preserved as explicit conflicts and the DB completion executes at most once. Exact ended-run replay now permits unchanged ready, blocked, or loop-breaker triage state only when the exact run-ending event remains the latest status mutation inside the same BEGIN IMMEDIATE transaction. Comments and diagnostics do not invalidate accepted work. Specification, decomposition, unblock, reclaim, scheduling, or a newer claim makes stale replay fail closed. Successful triage replay updates the original run row in place and preserves exact task/event/hook provenance; it never synthesizes a run. Validation at exact head 5db9f94618571b49f6950a99e4cdeb0c07d324b5: focused Hermes lane/recovery suite 126 passed; full testing/tests 350 passed; explicit race/crash/disk-bound selection 38 passed; Ruff, py_compile, git diff --check, current-main ancestry/tree verification, and diff secret-pattern scan passed. Exact pinned running source/image sha256:37ebf720c783ae908a602916ffccf88d43d205a157957f5dc4b487867aee45e7 passed all 15 SQLite/decomposition regressions with byte-identical copied patch/regression hashes. Current-main merge tree and HEAD tree are both a5e172557f81c70dc8d621c4e02433bbd52e3efd. No image build, merge, deployment, reconciliation, or live workload mutation was performed.
hermes-automation added 1 commit 2026-08-16 22:59:45 +00:00
hermes-automation changed title from hermes: preserve results and prevent duplicate fanout to WIP: hermes: preserve results and prevent duplicate fanout 2026-08-16 23:00:16 +00:00
bstein added 1 commit 2026-08-16 23:27:47 +00:00
bstein added 1 commit 2026-08-16 23:56:44 +00:00
bstein added 1 commit 2026-08-17 00:32:13 +00:00
bstein added 1 commit 2026-08-17 01:01:53 +00:00
bstein force-pushed fix/hermes-result-decomposition-reliability from 9793b1435e to cf4def1d77 2026-08-17 01:35:32 +00:00 Compare
bstein force-pushed fix/hermes-result-decomposition-reliability from cf4def1d77 to 2caad7e769 2026-08-17 04:44:42 +00:00 Compare
bstein force-pushed fix/hermes-result-decomposition-reliability from 2caad7e769 to 5db9f94618 2026-08-17 09:13:10 +00:00 Compare
bstein force-pushed fix/hermes-result-decomposition-reliability from 5db9f94618 to 7609cd77e8 2026-08-17 09:48:03 +00:00 Compare
bstein force-pushed fix/hermes-result-decomposition-reliability from 7609cd77e8 to 1ba9f13959 2026-08-17 10:20:47 +00:00 Compare
bstein added 1 commit 2026-08-17 11:16:53 +00:00
bstein added 2 commits 2026-08-17 18:04:29 +00:00
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bstein added 1 commit 2026-08-17 18:20:48 +00:00
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bstein added 1 commit 2026-08-18 03:44:42 +00:00
Reconcile two independent test/gate reorganizations:
- Gate/semgrep/mailu: keep main's #16 dual-metric implementation.
- quality_contract.json: union #16 image-builder + #14 scm/node + #15 cli_lane.
- agent-deployment.yaml: keep #14 gitea removal + #16 image-build-token + #15 probe.
- Test splits: main's chat/coordinator/agent organization is authoritative;
  drop #15's redundant competing splits and #14's stale cli-lane duplicates;
  keep #15's cli-lane decomposition suite and port the execution-safety test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bstein changed title from WIP: hermes: preserve results and prevent duplicate fanout to hermes: preserve results and prevent duplicate fanout 2026-08-18 03:51:00 +00:00
bstein scheduled this pull request to auto merge when all checks succeed 2026-08-18 03:51:10 +00:00
atlas-reconciler manually merged commit 1c4ed3af93 into main 2026-08-18 21:27:58 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: titan/atlas-iac#15
No description provided.