Clear four merged disposition rows, and record the retire gap squash-merge creates - #1697
Conversation
All three PRs that were open in this repo — #1659, #1678, #1681 — are merged, along with #1696, whose transitional grace had expired. The residue check flagged every one of them by name, with the remedy text added in #1692 telling a session exactly what to do about it. Also records a gap the merges exposed. `gh pr merge --squash --delete-branch` removes the remote head ref, and the lifecycle tool looks a PR up by `head={owner}:<branch>` — which then matches nothing, so a worktree whose PR just merged classifies UNKNOWN_PR ("no PR found — cannot prove the work landed") and `--retire` correctly takes no action. Observed on #1681: merged, tip exact, checkout clean, ~3.8 GiB left behind. The refusal is right — UNKNOWN_PR means evidence was unavailable, and that is never a licence to remove anything. The defect is upstream of the verdict: the LOOKUP depends on a ref that delete_branch_on_merge removes at exactly the moment the branch becomes safe to retire. Same shape as #1654's shipped defect, one level down. Not fixed here. A lookup that also searched merged PRs by head SHA would close it, since the classifier already keys on `local tip === PR head OID` — but that changes how the tool gathers evidence for branch deletion, and that deserves its own change rather than riding along in a bookkeeping commit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH
|
ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing |
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…#1698 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH
* chore(vercel): stop uploading 166 MB the build never reads Answering "are all these files necessary?" — no. Measured 2026-08-31, the upload was 6,667 files / 268 MB. It is now 5,712 / 101 MB. NOT the worktree, which was the obvious suspect and is the wrong one: worktrees live at ~/worktrees/helmv3/, OUTSIDE the repo, which is exactly why AGENTS.md puts them there. Vercel uploads from the project directory and cannot see them — and .vercelignore already covers .worktrees/ and .claude/worktrees/ from two earlier rejections anyway. What it actually was, in two parts. **docs/ — 1,698 files, 145 MB, 54% of the whole upload**, and more than half of that binary: marketing mockup references, visual-audit screenshots, PDFs. Nothing in the build reads it. Verified: no reference in next.config.mjs, tailwind.config.ts, tsconfig.json or package.json (the two `docs/` hits in next.config.mjs are comments about node_modules/next/dist/docs/); no import from src/; no /docs route; no runtime readFile. Excluded from the UPLOAD only — they stay tracked in git, which is where they are read. **Five untracked tooling directories — 166 files, 21 MB.** .playwright-mcp (browser logs from a debugging run in August), .agents, routes, .ruff_cache, .momentic-mcp. Each is in .gitignore, which is precisely why each uploads: the moment .vercelignore exists Vercel consults it INSTEAD of .gitignore, so "git ignores it" stops meaning "Vercel ignores it". This is the third time that same mechanism has been fixed in this file — .deepsec/ and .worktrees/ after the 2026-08-09 rejection, audit/ and tools/ after the 2026-08-20 stall — and it will recur every time a new tool writes a new dotdir. Safe by construction for those five: all have ZERO tracked files, so CI's `Next build` already succeeds on a fresh clone that never had them. Also corrects shipping.md, which claimed the repo is over the 15,000-file cap. It was — 48,139 on 2026-08-03, 19,795 on 2026-08-09 — and has not been for some time. A count in prose outlived the condition it described, which is §1's own rule appearing in §5. Verified: docs:path-drift 0, knowledge:check 0, markdown ratchet at baseline. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH * chore(control-plane): clear #1697's expired transitional row, register #1698 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bookkeeping plus one finding. No production state, no migration.
All three PRs that were open in this repo are now merged — #1659, #1678,
#1681 — along with #1696, whose transitional grace had expired. The residue
check flagged every one by name, using the remedy text added in #1692.
The gap the merges exposed
gh pr merge --squash --delete-branchremoves the remote head ref. Thelifecycle tool looks a PR up by
head={owner}:<branch>, which then matchesnothing:
Observed on #1681 — merged, tip exact, checkout clean — and
--retirecorrectly took no action, leaving a ~3.8 GiB worktree behind.
The refusal is right.
UNKNOWN_PRmeans evidence was unavailable, andAGENTS.md is explicit that this is never a licence to remove anything. The
defect is upstream of the verdict: the lookup depends on a ref that
delete_branch_on_mergeremoves at exactly the moment the branch becomes safeto retire — the same shape as #1654's shipped defect, one level down.
Not fixed here. A lookup that also searched merged PRs by head SHA would close
it, since the classifier already keys on
local tip === PR head OID. Thatchanges how the tool gathers evidence for branch deletion, and deserves its own
change rather than riding along in a bookkeeping PR.
Workaround until then: retire the worktree before merging, or merge without
--delete-branch.🤖 Generated with Claude Code
https://claude.ai/code/session_01NbDxyygyXRUEERuGocpZZH