Recover verified historical PR evidence without changing lifecycle gates #751

Open
toasterson wants to merge 2 commits from fix/historical-pr-resync-20260922 into main
Owner

Anima work item 01a0c8dc-18e6-7123-b055-2270d20e3b7a.

Historical done items can lack a PR Change even when their fix merged upstream, leaving dependent work permanently held. Add an explicit operator-only resync candidate that verifies the project repository, target branch, merged PR, and unambiguous upstream work-item reference. The terminal item and any existing identity are fenced; one Change and audit event are recorded atomically, with concurrent retries returning the same evidence. Existing lifecycle, review, CI, and dependency state are preserved.

Validation: PostgreSQL/Forgejo-stub regression covers concurrent recovery, replay, mismatched host, unrelated PR, wrong target branch, unmerged PR, ambiguous UUID prefix, nonterminal item, conflicting recorded identity, and MCP session/unauthorized PAT denial. The existing branch-recovery fixture now honors the real exact-head query. Both PostgreSQL integration tests passed; the early session-denial unit test and clippy with warnings denied also passed.

Anima work item `01a0c8dc-18e6-7123-b055-2270d20e3b7a`. Historical done items can lack a PR Change even when their fix merged upstream, leaving dependent work permanently held. Add an explicit operator-only resync candidate that verifies the project repository, target branch, merged PR, and unambiguous upstream work-item reference. The terminal item and any existing identity are fenced; one Change and audit event are recorded atomically, with concurrent retries returning the same evidence. Existing lifecycle, review, CI, and dependency state are preserved. Validation: PostgreSQL/Forgejo-stub regression covers concurrent recovery, replay, mismatched host, unrelated PR, wrong target branch, unmerged PR, ambiguous UUID prefix, nonterminal item, conflicting recorded identity, and MCP session/unauthorized PAT denial. The existing branch-recovery fixture now honors the real exact-head query. Both PostgreSQL integration tests passed; the early session-denial unit test and clippy with warnings denied also passed.
Recover verified historical PR evidence through operator resync
Some checks failed
CI / conflict-check (push) Has been cancelled
CI / test (push) Has been cancelled
2aa35e74dc
Run historical PR recovery regression in database CI
Some checks failed
CI / conflict-check (push) Successful in 2m56s
CI / test (push) Failing after 11m25s
26b00a10c2
Some checks failed
CI / conflict-check (push) Successful in 2m56s
CI / test (push) Failing after 11m25s
This pull request has changes conflicting with the target branch.
  • .solstice/job.sh
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/historical-pr-resync-20260922:fix/historical-pr-resync-20260922
git switch fix/historical-pr-resync-20260922

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff fix/historical-pr-resync-20260922
git switch fix/historical-pr-resync-20260922
git rebase main
git switch main
git merge --ff-only fix/historical-pr-resync-20260922
git switch fix/historical-pr-resync-20260922
git rebase main
git switch main
git merge --no-ff fix/historical-pr-resync-20260922
git switch main
git merge --squash fix/historical-pr-resync-20260922
git switch main
git merge --ff-only fix/historical-pr-resync-20260922
git switch main
git merge fix/historical-pr-resync-20260922
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
toasterson/Anima!751
No description provided.