CI quality gates
August 21, 2026 ยท View on GitHub
For maintainers. Using T3 Code? See docs/user.
.github/workflows/ci.yml runs these quality gates on pull requests
and pushes to main:
- Check:
vp check(format and lint; this repo setstypeCheck: falsein its lint options), thenvpr typecheckfor the workspace type check. The same job builds the desktop pipeline (vp run build:desktop) and verifies the preload bundle exists and still exports its expected symbols. - Test:
vp run testacross the workspace. - Mobile Native Static Analysis:
vp run lint:mobileon macOS, wrappingscripts/mobile-native-static-check.ts. A cheap Linux Mobile Native Changes job gates it: the macOS runner only boots when the diff touchesapps/mobileSwift/Kotlin sources, the SwiftLint/detekt/ktlint configuration, theBrewfile, the check script, the rootpackage.jsonthat defineslint:mobile, orci.yml. Otherwise the job is skipped, which GitHub reports as success for the required check. Renames are matched on both their old and new path. The gate fails open in every other case: if the changed-file list cannot be resolved, GitHub truncates it, or the gate job itself fails, the lint runs. - Release Smoke: exercises release-only workflow steps through
scripts/release-smoke.ts, so release breakage surfaces on PRs rather than at tag time.
.github/workflows/release.yml builds macOS (arm64 and x64), Linux (x64), and Windows (x64)
desktop artifacts from a single v*.*.* tag and publishes one GitHub release. It auto-enables
signing only when platform credentials are present. macOS passkey builds additionally require
APPLE_TEAM_ID and the MACOS_PROVISIONING_PROFILE secret; Windows uses Azure Trusted Signing.
Without the core signing credentials, it still releases unsigned artifacts.
See Release Checklist for the full release/signing setup checklist.