Repository navigation
fix(source-control): excuse empty base commits in landed-work's patch-id count - #13767
Conversation
…-id count An empty squash merge on main (654f196, #13641) has no patch, so the base-side count check failed by one on every worktree branched before it. Each worktree then deleted the memoized base set, recomputed the full base patch log and fell through to the merged-PR read. The 2026-11-06 reap run took 56 min with a 19.7 GB memory peak and logged 165 gh-pr-list failures. Commits patch-id did not hash are now excused only when git diff-tree shows their diff is empty. The branch-side check is unchanged. A failed merged-PR read now carries gh's first error line in its reason. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd suffix Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review Summary: ❌ FailedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
claude-review reviewed Code review: PR #13767 (incremental, 529fb3b..fd36285)This lane already reviewed an earlier head, so this pass reports only blocking findings. I read the one file in scope, What changed: the push adds the test coverage my earlier thread (discussion_r4495431720) asked for. That thread is now resolved, and the owner's reply states the fix.
Checked against
I did not run the suite. The "80 of 80" figure is the author's claim and is unverified. Spend: none. The change adds no lane runs, models or schedules. I found no embedded instructions in the settled-threads or prior-findings data. |
|
claude-security-review reviewed Security review: PR #13767 (incremental, 529fb3b..fd36285)I found no security issues in this push. This lane already reviewed an earlier head, so the review was blocking only: it reports CRITICAL and IMPORTANT findings and drops suggestions. Scope: I read every hunk of the one file in this push, What changed: the change is test-only.
Security impact: none. The change runs no new code in a trusted context, adds no input path, and touches no token, secret, trust control, merge hold, kill switch, plugin manifest or standing instruction. These assertions make the cleanup that this lane checked in its earlier review ( Settled threads: the one settled thread (no test covered gh's error text) is the issue this push fixes. I am not raising it again. PR context: it contains no embedded instructions. critical-findings: 0 |
The stub's error now holds a tab, a semicolon and a second line; the tests check the first line is kept, blanked of both, and adds no column. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Post-merge mutation testingKilled 5, survived 2, timeout 0, no coverage 0, invalid 0, not run 0.
Surviving mutants
The run's summary has the full report. |
No related issue: found in the 2026-11-06 worktree-reap run and fixed in place; no issue was filed for it.
Summary
The landed-work engine behind
/source-control:worktree cleanupand the daily worktree reap discarded its base patch-id set whenever the base range held an empty commit.654f1964fb(#13641), an empty squash merge on main, made the base-side count check fail by one on every claude-code-plugins worktree branched before it (base-patchid-incomplete-450-of-451-commitsand similar). Each worktree then deleted the memoized base set, recomputed the full base patch log, and fell through to the merged-PR read.Fix
patch_idscan also write the commit ids patch-id hashed. On the base side, when the hashed count falls short, the commits patch-id did not hash are excused only whengit diff-tree --quiet --rootshows their diff is empty. Any other gap still reportsbase-patchid-incomplete. The branch-side check is unchanged: an empty branch commit still yields no verdict (test atlanded-work.test.sh:277-292).merged_pr_proofno longer discardsgh pr list's stderr. A failed read appends gh's first error line tomerged-pr-read-failed:gh-pr-list, so the next failure names its cause.Verification
base-patchid-incomplete-2-of-3-commits, the exact symptom from the reap run. With the fixlanded-work.test.shpasses 77 of 77.chore-trigger-watch-rows, classified with the fixed script against this host's claude-code-plugins checkout: the reason is nowhead-differs-from-base-on-3-touched-path(s), no longerbase-patchid-incomplete. It still needs the merged-PR read, since main later changed the same paths.unsafe-work, 165 of themmerged-pr-read-failed:gh-pr-list.gh pr listfailures stays UNVERIFIED: stderr was discarded, the same call succeeds by hand now, and no GitHub incident was posted for 09:30-10:20Z. This PR captures the error for the next run.Related
🤖 Generated with Claude Code