Repository navigation
ci: the picker fetches kept bases' trees, not just checks their commits - #15053
Conversation
The changes job's delta_since_green.py fetches main's history with --filter=tree:0, so most kept merge bases were already present as commits without trees. fetch_bases() skipped them (have_commit), their diffs failed, and the roots cost the unknown start: after #15040, 77 of 240 picker candidates were still unknown, e.g. #15003 compared 2 of 15 bases with nothing fetched. It now checks the tree (have_tree) and fetches with --refetch, which sends the trees of commits the checkout already has. Replayed on a depth-2 checkout plus the tree:0 history: 1 of 19 bases diffable before, 19 of 19 after, in 0.8 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
All contributors have signed the CLA ✍️ ✅ |
|
Warning Review limit reachedNext included review available in 2 minutes. View limit detailsLimit details: You’ve used all 10 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (2)
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 |
|
Review note: |
|
Merge receipt for |
a64d59b tools: ui-lab renders view code in seconds; wire-app-sources.py (manaflow-ai#15049) 4e03ed2 fix(events): harden durable replay recovery (manaflow-ai#15054) ac51546 Settings: native terminal theme gallery (manaflow-ai#14996) 867e7a0 Add native Ghostty option rows to Settings > Terminal (manaflow-ai#15005) 7f97b0d ui-tests: wait for static preflight when a reused compile skips the gate (manaflow-ai#15051) c708e0c Add a chat view for the terminal's agent session (Claude Code, Codex) (manaflow-ai#14965) b762a3d ci: the picker fetches kept bases' trees, not just checks their commits (manaflow-ai#15053) 2570eed docs: refresh and trim contributor build guidance (manaflow-ai#15050) 20019d3 ci: re-run by cause: host faults to Blacksmith, code failures back to the minis (manaflow-ai#15045) 36ee3e9 Add Warn Before Closing Workspace setting (manaflow-ai#14979) 4df2317 CI: run changed UI test classes in PRs, keep UI runs off Blacksmith, probe the GUI session (manaflow-ai#14964) 9efe05e Owned-pool sweeper: page the marker listing back to the runs it adopts (manaflow-ai#15033) 6361554 fix(events): restore durable replay across restarts (manaflow-ai#15030) 0bc5145 ci: place side lanes on the light minis one per idle side runner (manaflow-ai#15047) 9d4e92b ci: the E2E rule's queue-round reason names the owned pools the run may take (manaflow-ai#15044) 9e6e216 Dogfood the app from CI with JSON tours (manaflow-ai#14928) fd3dcf6 ci: retry the picker's kept-base fetch and record how it went (manaflow-ai#15040) 3a64e0e Reload the Ghostty config when its files change, and show config errors (manaflow-ai#14859) f412b05 test: hit-test the browser portal tab strip with its own click (manaflow-ai#15031) 64d5235 test: route the reopen-last-closed shortcut through the test's own window (manaflow-ai#15036) 7037079 ci: take the gui token in the E2E test job's step, not at job start (manaflow-ai#15037) # Conflicts: # .github/workflows/ci-macos.yml # .github/workflows/ci.yml # .github/workflows/remote-daemon.yml # .github/workflows/test-e2e.yml
Why
Even after #15040, 77 of 240 distance-picker candidates from 18:16-18:45Z were
unknown. The recorded fetch reports show a pattern: bases compared = bases fetched + 1. On #15003's run, 2 of 15 compared withmissing: 0, so nothing was fetched. The bases the picker didn't fetch never diffed.Cause: the changes job's
delta_since_green.pyfetches main's history with--filter=tree:0. Most kept merge bases are recent main commits, so they are already in the checkout as commits without trees.fetch_bases()checked onlyhave_commitand skipped them,git diffthen failed (no lazy fetch), and every such root cost the unknown start.Change
have_tree()checks the commit's root tree.fetch_bases()useshave_tree()and fetches with--refetch, so the server sends the trees of commits the checkout already holds. It's still depth 1 and blobless.Check
I replayed it on a fresh depth-2 checkout of #15013's merge commit, plus the same
tree:0 --deepenhistory, against the 17:29Z janitor snapshot:Tests:
test_a_commit_without_its_tree_counts_as_missing, and the fetch test now asserts--refetch. Targeted-kruns pass locally.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Fixes the distance picker marking candidates as
unknownwhen kept merge bases are already present as commits without trees (from--filter=tree:0fetches). The picker now checks for the commit's root tree and fetches with--refetch, so the server sends the missing trees and all kept bases can be diffed.Written for commit 8a3f017. Summary will update on new commits.