Repository navigation
ci: full-tree blob:none checkouts leave out cmux-next-ios/verify media - #34235
Conversation
Each full-tree blob:none checkout downloaded about 570 MiB of blobs, about 470 MiB of it mp4/png evidence under cmux-next-ios/verify/ that no job reads. .github/checkout-lean.json declares the patterns and the 17 jobs proven not to read that path (two keep the full tree, with their reason); tests/test_ci_checkout_lean.py keeps every listed step equal to it and fails on a new undeclared full-tree blob:none checkout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-8707001042ea634e8771
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Shipped in:
|
|
Owned by an agent session · session |
|
Review (subagent claude-opus-5-5 medium): SHIP at c574a29 Checked: all 17 inserted steps are on actions/checkout v6.0.2 with consistent indentation; Follow-ups: none blocking. Any future lean job that runs tests/test_ci_fleet_rule_lints.py, or another tree-wide git grep allowlist check, has to stay in |
|
Found 3 test failures on Blacksmith runners: Failures
|
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (codex gpt-6-astra high, next-review, since=20261103T210538Z): BLOCK at c574a29
BLOCK at c574a29
Visual verdict: no images; Leo tries the build
- [P1] [blocking] tests/test-execution.toml:2404: Registering
linux-guarddoes not schedule the test. No workflow invokestest_ci_checkout_lean.py, so the existing registry validator reports “linux-guard lane is not run by any workflow,” and the workflow-wiring guard also rejects it. Add an invocation inci-guards.ymlso existing CI passes and the new invariant is enforced.
|
Review (codex, router-review): SHIP at c574a29 Reviewer: codex gpt-6-astra high, fast tier. Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at c574a29 Visual verdict: unchanged by this diff
Follow-ups:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-8707001042ea634e8771
|
Review (subagent claude-opus-5-5 medium): SHIP at 6aa3c55 Checked the new commit: it runs tests/test_ci_checkout_lean.py in ci-guards.yml's guard step beside test_ci_warm_sources.py, matching its linux-guard registry entry, and adds .github/checkout-lean.json to CI_ONLY. Only workflows and that test read the file, so CI_ONLY is the right tier. At this head, test_ci_workflow_guards_are_wired.py, validate_test_execution_registry.py, test_cmux_next_route.py, test_cmux_next_route_replay.py and test_ci_checkout_lean.py all exit 0. I also skimmed the full 18-file diff stat. Follow-ups: none |
|
Review (codex, router-review): SHIP at 6aa3c55 Reviewer: codex gpt-6.1-sol xhigh, fast tier. SHIP at 6aa3c55 Checked all 17 checkout sites, guard/routing wiring, and sparse Git behavior. All 219 targeted tests passed; no actionable correctness findings. Follow-ups: none |
|
Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base fabc4a1 to this head): BLOCK at 6aa3c55 [P1] [blocking] tests/test_ci_checkout_lean.py:77-84 - the new guard rejects the existing full-tree |
A newer verdict blocks 6aa3c55 (a wait as new as the SHIP or newer: comment by teamleaderleo: Review (codex gpt-6.1-sol high, sweep, via the review rout).
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Since about 16:00Z on 2026-11-03, full-tree
filter: blob:nonecheckouts went from about 50 s to 3-5 min. The cause is the git cache in front of the Linux runners. Each such checkout downloads about 570 MiB of blobs at the tip, and about 470 MiB of that is mp4/png evidence undercmux-next-ios/verify/. No CI job reads that folder.Change
.github/checkout-lean.json. It holds the sparse patterns (/*,!/cmux-next-ios/verify/), the jobs proven not to read that path (lean, each with what it does read) and the jobs that keep the full tree (full, each with the reason).actions/checkoutruns before any repository file exists, so a local action isn't there yet.tests/test_ci_checkout_lean.py(linux-guard lane) keeps everyleanstep'ssparse-checkoutequal to the table, in non-cone mode.python3 tests/test_ci_checkout_lean.py --writeadds the patterns to a newly listed job.web/publicstays included.linux: it runstests/test_ci_fleet_rule_lints.py, whose allowlist names scripts undercmux-next-ios/verify/. With those files absent, itsgit grepskips them and it reports 20 stale entries. I ran it in a sparse tree and it failed.main, which has nocmux-next-ios/, so leaving the folder out would save nothing there.Proof per job
I traced each job's
run:steps, its local actions and the scripts it calls, transitively. The table'sleanentries record what each job reads.Points that matter in a sparse tree:
git ls-filesstill lists the skip-worktree paths. Everyls-filespathspec in these jobs is scoped (webviews,scripts/cmux-next,cmux-tui/bindings,*Cargo.lock,**/Package.swift), and none of them matches a file in verify.git worktree addandcheckout --forcekeep the patterns.git add -A -- .andgit restore -- .skip skip-worktree paths.repair'sgit read-treeclears the bits, but its patch diff and add are limited to paths it computed earlier.Performance
Before: the checkout step's own time from the jobs list, for the 6 newest pull_request runs at 20:25-20:40Z, all on Blacksmith 4 vCPU. After: this PR's own run (pull_request jobs use the merge ref's workflows).
action export areascheckoutautofix repairscheckoutBlacksmith minutes per day: these jobs spend about 3-4 fewer minutes each in checkout. Measured so far: about 2.5 fewer Blacksmith minutes per
autofix repairsrun. The daily total scales with PR pushes, and NOW's new checkout-time line tracks it.Observed / Not run
python3 tests/test_ci_checkout_lean.py: OK.tests/test_check_ghostty_zig_workflows.py, which fails the same way on base.test_ci_no_shallow_dev_fetch,test_swift_testing_require_not_nested,test_app_store_rules,test_ci_warm_sources,test_send_path_capsand others: they pass. The first two scan fewer files.Moving
cmux-next-ios/verify/out of the repo is left to the iOS owners.Changelog
none
Agent session: agent session
🤖 Generated with Claude Code