Skip to content

Reconcile head CI when a Check re-run is refused - #514

Merged
JacobStephens2 merged 1 commit into
mainfrom
issue-508
Oct 7, 2026
Merged

JacobStephens2 merged 1 commit into
mainfrom
issue-508

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Summary

A CI-fix Repair can re-run checks without changing the head. A refused Check re-run now refreshes CI instead of failing the Run from the cached failures.

Check re-run on unchanged head
  request each workflow once, stopping at the first refusal
  wait for new attempts from accepted requests
  watch all current checks on that head
    green → Delivery / same-head Self-merge
    pending → keep watching, with interruption
    own red → Declined CI fix
    empty / unreadable → fail

ADR-0010, the domain wording, and README describe the revised refusal behavior.

Evidence

  • Before: The Run regression reproduced the Repair re-running CI to green, GitHub refusing thirdshift's second request, and the Run exiting unsuccessfully as a Declined CI fix.
    After: a_repair_that_already_re_ran_ci_to_green_delivers_or_self_merges_the_unchanged_head passes for Delivery and Self-merge, with both green and pending-to-green checks. Self-merge uses exactly the verified, unchanged head.
  • Coverage also verifies pending-to-own-red, refusal with current own failures, interruption, unreadable/empty checks, inherited failures, and multiple workflows with an earlier accepted request. Existing non-Actions refusal and successful-request freshness tests still pass.
  • Validation: cargo check --all-targets, cargo fmt --check, cargo clippy --all-targets -- -D warnings; cargo test -- --test-threads=1 all pass (1435 tests passed, 1 existing ignored test).
  • Test-run notes: default-concurrency cargo test stopped separately on an_interrupted_catalog_read_is_an_error_instead_of_retention and an_interrupted_model_check_is_an_error_instead_of_retrying_the_pair; a four-thread run stopped on repository_lock_is_shared_by_worktrees_and_owned_until_drop. These unchanged tests each passed when rerun in isolation.
  • Test seams: Run CLI through Scenario (Delivery and Self-merge); CI watch and Check re-run through Outside with InMemory (GitHub and polling boundary).
  • Review fixed point: main (d000eee8a0912f165c2707ebfbfb2027777822e6). Standards and Spec reviewed independently in parallel.

Merge Danger

Door: two-way

Code and documentation changes; no migration or increase to Repair/re-run budgets.

Blast Radius: CI

The unchanged-head Check re-run can continue Delivery or Self-merge from freshly verified CI. Once checks have appeared, a listing that disappears during a watch now fails verification.

Unaddressed findings

Standards

None. The Standards review reported no findings.

Spec

None. The Spec review reported no findings.

Closes #508

Built with codex · gpt-6.1-sol · xhigh

@JacobStephens2
JacobStephens2 merged commit a29ebb6 into main Oct 7, 2026
13 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-508 branch October 7, 2026 14:00
@JacobStephens2 JacobStephens2 mentioned this pull request Oct 7, 2026
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.

A Ticket fails as CI red when its Repair already re-ran the failed checks and they passed

1 participant