Repository navigation
Conversation
Apply ci.yml's sparse exclusion of the vendored libghostty .a files to the release, desktop build, Windows test, relay and web preview checkouts, which never build the iOS app. Co-Authored-By: Claude Opus 5.5 <[email protected]>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Release, deploy and test workflows skip vendored iOS terminal archives they do not use. Mobile build checkouts, deployment behavior and analysis commands remain unchanged, keeping the operational impact limited to runner workspace contents. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
# Conflicts: # .github/workflows/release.yml
Conflict in release.yml: deploy_web now checks out three files on main, so it keeps main's checkout and needs no exclusion line. Co-Authored-By: Claude Opus 5.5 <[email protected]>
|
Note 🤖 Opus 5.5 replying on behalf of Victor. I merged main into this branch in bcd2981 to clear the conflict in |
|
Note 🤖 Opus 5.5 replying on behalf of Victor. I am closing this: it trims what CI jobs check out and does not fix a bug, and this repository now takes only bug fixes from outside contributors. |
Problem
The repo vendors two iOS-only
libghostty-fat.aarchives underapps/mobile/modules/t3-terminal/Vendor/, 49.5 MB on disk together. #20044 stopped the CI jobs from checking them out, but the release workflow's jobs, the desktop builds it calls, and the Windows test, relay preview and web preview workflows still fetch and write both archives on every run, though none of them builds the iOS app.Change
The exclusion line
ci.ymlalready uses,!/apps/mobile/modules/t3-terminal/Vendor/**/*.a, is added right after!/.repos/in every remaining whole-repo sparse checkout outside the mobile workflows: 13 inrelease.yml, the Windows test, relay and web preview workflows, and the hand-writtengit sparse-checkout setsteps inrelease-desktop.ymlanddesktop-macos-preview.yml. None of these jobs reads the archives: the only consumer isT3TerminalNative.podspec, which runs in the iOS build. Those two fetch with a hand-writtengit fetchand no blob filter, so in those two of the eight files the line saves the disk write but not the download.Scope
No issue: this is a focused CI maintenance change that applies an existing maintainer pattern from #20044 to the equivalent checkouts it did not cover. It changes no product behavior. Every whole-repo checkout that never builds iOS gets the line, and mobile workflows are left alone.
Verification
Fork run 43187910073, GitHub-hosted Ubuntu and Windows, three times each: both depth-1 checkout forms, main's patterns against this line, at
dd165bbb97(bcd2981108plus that workflow). Every pair: 2 fewer files, exactly 49,489,024 fewer bytes written.actions/checkoutnever downloads the two blobs: packs 10,941 to 10,978 KiB (about 10.7 MiB) smaller. Hand-written packs stay 119,517 to 119,528 KiB.Not checked:
release.yml,release-desktop.ymlor the preview and deploy workflows. They need release secrets or labels, so the first run after merge is their first end-to-end check.Change in full and every check
The exclusion line
ci.ymlalready uses,!/apps/mobile/modules/t3-terminal/Vendor/**/*.a, is added right after!/.repos/in every remaining whole-repo sparse checkout outside the mobile workflows:release.yml(preflight through announce).publish_clianddeploy_webnow check out only three files on main, so they need no linewindows-tests.yml,deploy-relay.yml,relay-preview.yml,relay-preview-cleanup.yml(2) andweb-preview.ymlgit sparse-checkout setstep inrelease-desktop.yml(the 6 desktop build jobs) and indesktop-macos-preview.ymlThe headers,
Info.plistandVERSIONstay checked out. None of these jobs reads the archives: the only consumer isT3TerminalNative.podspec, which runs in the iOS build. The releasefinalizejob commits only namedpackage.jsonfiles and the lockfile, so excluded files never reach a commit.The
actions/checkoutjobs fetch with a blob filter when sparse, so they no longer download the archives at all. The two hand-written steps fetch without a filter, so for them this skips only the 49.5 MB disk write, whichrelease-desktop.ymlalready treats as worth tuning on Windows.mobile-showcase-screenshots.ymlkeeps the archives: it is a mobile workflow and its iOS job builds the app.A local reproduction cloned base
8760d063e9with a blob filter,--depth=1and no-cone sparse patterns, with and without the new line. With it, checkout skipped both archive blobs (11,075 to 11,073 objects; both blobs absent from the object store), the working tree shrank by 49,489,024 bytes (exactly the two archives' sizes), and the headers,Info.plistandVERSIONstayed present.The same check through the hand-written
git fetchandgit sparse-checkout setform: both archives absent, the rest ofVendor/present, the same 129,790,036-byte working tree.vp run check:changedpassed on the final commit (format, typecheck, tests beside changes).actionlinton the changed workflows reports the same findings before and after (Blacksmith runner labels,concurrency.queue, and existing shellcheck notes). The change adds no new finding.git grepacross the changed workflows, the scripts they run and.github/actionsfound no reader oft3-terminal/Vendoroutside the iOS podspec.After merging main, a
--depth=1no-cone sparse checkout of the merged head with and without the line: with it, both archives are absent from the working tree, which shrinks by exactly their 49,489,024 bytes, and the other six files inVendor/stay. This local run doesn't measure transfer savings.Transfer: the 10.7 MiB is from the fork run; a local
--depth=1fetch of headbcd2981108measured 10,929 KiB. The 6.6 MB this description gave before is the two blobs' delta-compressed size in a local repository with full history, which a depth-1 CI fetch does not get. The 49,489,024 bytes are the same in the fork run and locally. Pack sizes are GitHub's packs as served to my fork. The fork proof uses depth 1; the full-history checkouts in release.yml's preflight, release and finalize jobs were not measured.Fork run 43187910073: the other pairs, attempt 1, unedited. Attempts 2 and 3 gave the same file and byte counts; pack sizes varied by up to 37 KiB. On Windows the hand-written form checks out more files in both variants (31,902 and 31,900); the difference between them is still the two archives.
Prior PRs
ci.yml. This PR applies the same line to the remaining checkouts.Generated with Claude Opus 5.5 and GPT-6.1 Sol in T3 Code Nightly