Skip to content

fix: skip Fix Pass adoption while a linked issue is claimed - #2134

Merged
JacobStephens2 merged 4 commits into
mainfrom
issue-2095
Nov 12, 2026
Merged

JacobStephens2 merged 4 commits into
mainfrom
issue-2095

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

Fix Pass now checks linked closing issues before and after reserving a PR, preventing it from pushing a branch that a live Spec or Ticket run still owns. The cause was that PR reservation observed only the PR's own labels.

Fix Pass candidate
  require a Merge conflict or current-head CI red
  read all linked closing issues
  if any issue has an in-progress Claim
    log the PR and claimed issue; try the next candidate
  reserve the PR
  repeat eligibility and Claim checks
  deliver the PR

Closes #2095

Test seams

  • The thirdshift fix CLI against real Git origins and fake GitHub/Harness adapters: branch heads, Repair invocations, preserved Claims and named skip diagnostics before and after releasing a Claim.

Evidence

Execution evidence

  • Before: cargo test --test fix_pass pass_skips_a_claimed_issue_then_repairs_after_its_claim_ends -- --exact --nocapture exited 101:
    assertion `left == right` failed: Fix Pass pushed a branch whose issue still has a live Claim
    thirdshift: CI red; starting Repair 1 of 5
    thirdshift: pushing issue-7
    test result: FAILED. 0 passed; 1 failed
    
    After: the same command exited 0:
    test pass_skips_a_claimed_issue_then_repairs_after_its_claim_ends ... ok
    test result: ok. 1 passed; 0 failed
    
  • cargo test --test fix_pass --test fix_run: 29 passed, 4 subprocess helpers ignored. Additional cases cover a Claim appearing during reservation, all closing-reference pages, proceeding to the next candidate and unreadable observations.
  • /usr/bin/time -p scripts/affected-tests main: PASS. Site 68/68; Console browser tests 205/205; full Rust suite passed. Rust validation took 1619.20s including compilation; total selector time was 1934.61s. The selector used cargo test because nextest is unavailable. The final full run also passed all three added Claim regressions.

Visual evidence

Before/After captures were taken for the manual, homepage, How it works and Architecture at 1440×900 and 390×844. Image hosting is unavailable: the repository credential lacks the gist scope (gh gist create returned HTTP 404 with the missing-scope diagnostic). The exact local capture paths are retained in the Session's visual-evidence.json; no images were published.

Review coverage

  • Standards: 1 P3 fixture-duplication finding, addressed with a shared REPAIR_CI constant; 0 hard violations.
  • Spec: 0 findings.
  • Both axes read every changed file, including the generated manual diff. No changed files were left unread and no generated-output exclusions were used. Final reports and counts are in standards.md, spec.md and summary.json.

Unaddressed findings

Standards

None.

Spec

None.

Security

None.

Security review outcome

No unaddressed introduced findings.

Merge Danger

Door: two-way

Revert restores the previous selection rule; no data migration.

Blast Radius: Fix

Automatic Fix Pass adoption only. A Claim read failure stops adoption. This does not establish exclusion against a Run that starts after the final observation; existing captured-head safeguards still apply.

Built with codex codex-cli 0.167.2 · gpt-6.1-sol · xhigh

@JacobStephens2
JacobStephens2 merged commit d6e961c into main Nov 12, 2026
24 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-2095 branch November 12, 2026 17:57
@JacobStephens2 JacobStephens2 mentioned this pull request Nov 13, 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 Fix Pass adopts a pull request whose issue another Run still claims

1 participant