Skip to content

fix(M3/mobile-nav): bottom bar = strict subset of owner nav (Receipts… #2228

fix(M3/mobile-nav): bottom bar = strict subset of owner nav (Receipts…

fix(M3/mobile-nav): bottom bar = strict subset of owner nav (Receipts… #2228

Workflow file for this run

name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
# Fast gate — catches type errors in ~30s without full build
typecheck:
name: Type Check (Fast Gate)
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Type check
run: npx tsc --noEmit
# Full pipeline — only runs if typecheck passes
build-lint-test:
name: Build + Lint + Test
runs-on: ubuntu-latest
needs: typecheck
timeout-minutes: 15
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Anti-theater gate (honesty firewall - BLOCKING)
run: npm run gate:anti-theater
- name: Brand compliance scan
run: npm run brand:scan
- name: PII leak scan
shell: pwsh
run: ./scripts/scan-pii-leaks.ps1
- name: Design quality (Impeccable)
run: npm run impeccable:detect || true
continue-on-error: true
- name: Build
run: npm run build
env:
NODE_OPTIONS: "--max-old-space-size=4096"
- name: Test
run: npm run test -- --reporter=verbose
- name: Supply chain security (OSV)
if: github.event_name == 'push'
run: npx --yes osv-scanner@1 --lockfile=package-lock.json || true
- name: Secret scanning (gitleaks)
if: github.event_name == 'push'
uses: gitleaks/gitleaks-action@e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e # v3.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true