fix(enrichment): restart cancelled repairs and execute durable retries - #569
Merged
Conversation
This was referenced Sep 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cancelled enrichment previously offered no retry/repair path despite eligible work. Enable the distinct explicit Retry and Repair commands from Cancelled, align prepared-repair progress with worker eligibility, and execute transient repairs through durable due-time Quartz continuations. Preserve cancellation fencing and replacement-operation ownership, and show outcome-supported locality-free feedback without automatic repeated contacts.
Includes import documentation and Unreleased notes. Closes #566. No database migrations or configuration changes. Preserves #565 behavior.
Validation:
Explicit validation debt: #568 tracks the pre-existing shared-domain isolation and stopped-scheduler cleanup defects in RetryProjectionFailureReconcilesOnceAndDoesNotReplayAfterRestart. This test was explicitly excluded from the 289-test selection after encountering 207 unrelated workflows. Isolated Quartz tables do not isolate domain reconciliation; filtering only assertions is insufficient. The persistent restart/no-replay proof and full-suite success remain unestablished. No unrelated database rows were removed.
The accelerated continuation proof exercises the actual Quartz/job/worker after moving stored deadlines; it does not prove five minutes of unattended waiting or persistent-store restart. Original production inactivity remains unconfirmed. Local reproductions establish progress omission and continuation defects, not reconstruction of the production session.
Merge gate: successful GitHub Actions test on the exact current PR head. Retain #568 debt in merge notes.