Skip to content

perf(ci): release and deploy checkouts skip the iOS terminal archives - #28649

Open
only21mil wants to merge 1 commit into
pingdotgg:mainfrom
only21mil:fix/audit-m058
Open

only21mil wants to merge 1 commit into
pingdotgg:mainfrom
only21mil:fix/audit-m058

Conversation

@only21mil

Copy link
Copy Markdown
Contributor

Problem

The repo vendors two iOS-only libghostty-fat.a archives under apps/mobile/modules/t3-terminal/Vendor/, 49.5 MB on disk together. #20044 stopped the CI jobs from checking them out. 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.yml already uses, !/apps/mobile/modules/t3-terminal/Vendor/**/*.a, is added right after !/.repos/ in every remaining whole-repo sparse checkout outside the mobile workflows:

  • all 15 checkouts in release.yml (preflight through announce)
  • windows-tests.yml, deploy-relay.yml, relay-preview.yml, relay-preview-cleanup.yml (2) and web-preview.yml
  • the hand-written git sparse-checkout set step in release-desktop.yml (the 6 desktop build jobs) and in desktop-macos-preview.yml

The headers, Info.plist and VERSION stay checked out. None of these jobs reads the archives: the only consumer is T3TerminalNative.podspec, which runs in the iOS build. The release finalize job commits only named package.json files and the lockfile, so excluded files never reach a commit.

The actions/checkout jobs 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, which release-desktop.yml already treats as worth tuning on Windows. mobile-showcase-screenshots.yml keeps the archives: it is a mobile workflow and its iOS job builds the app.

Scope and approval

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. The scope choice to confirm: every whole-repo checkout that never builds iOS gets the line, and mobile workflows are left alone.

Verification

  • A local reproduction cloned base 8760d063e9 with a blob filter, --depth=1 and 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.plist and VERSION stayed present.
  • The same check through the hand-written git fetch and git sparse-checkout set form: both archives absent, the rest of Vendor/ present, the same 129,790,036-byte working tree.
  • vp run check:changed passed on the final commit (format, typecheck, tests beside changes).
  • actionlint on 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 grep across the changed workflows, the scripts they run and .github/actions found no reader of t3-terminal/Vendor outside the iOS podspec.

Not checked:

  • A real run of release.yml, release-desktop.yml or the preview and deploy workflows. They need release secrets or labels, so the first run after merge is their first end-to-end check.
  • GitHub's exact transfer savings. Locally the two blobs pack to about 6.6 MB, but GitHub serves its own packs.

Prior PRs

Generated with Claude Opus 5.5 and GPT-6.1 Sol in T3 Code Nightly

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 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Nov 1, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 960b261

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.

@coderabbitai

coderabbitai Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 8760d06 and 960b261.

Files selected for processing: 8
  • .github/workflows/deploy-relay.yml
  • .github/workflows/desktop-macos-preview.yml
  • .github/workflows/relay-preview-cleanup.yml
  • .github/workflows/relay-preview.yml
  • .github/workflows/release-desktop.yml
  • .github/workflows/release.yml
  • .github/workflows/web-preview.yml
  • .github/workflows/windows-tests.yml

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

Walkthrough

The workflow sparse-checkout rules now exclude .a archives under apps/mobile/modules/t3-terminal/Vendor.

Changes: Workflow checkouts

Layer / File(s) Summary
Exclude vendored archives
.github/workflows/*
Deployment, preview, release, cleanup, and test workflow checkouts exclude .a files under the terminal module’s Vendor directory.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Suggested reviewers: t3dotgg, juliusmarminge

Merge Risk: Minimal · up to 960b2

The exclusions reduce checkout size without removing files required by these workflows.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: CI release and deploy checkouts now skip iOS terminal archives.
Description check Passed The description includes complete Problem, Change, Scope and approval, and Verification sections. It explains the affected workflows, rationale, scope, validation results, limitations, and prior imple…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description includes complete Problem, Change, Scope and approval, and Verification sections. It explains the affected workflows, rationale, scope, validation results, limitations, and prior implementation.

Finishing Touches
Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

1 participant