name: Bundle Budget Baseline # Captures the main-branch bundle report as an artifact so the # bundle-budget PR workflow can render Δ-from-main columns. Runs on # push to main; downstream PR workflow downloads `bundle-baseline-main`. # Spec: docs/improvement-plan/10-compliance-polish/bundle-budget.md on: push: branches: [main] paths: - "apps/web/**" - "packages/brand/**" - "packages/config/**" - "packages/entitlements/**" - "packages/form-widget/**" - "packages/foundation/**" - "packages/i18n/**" - "packages/plugin-runtime/**" - "packages/ui*/**" - "packages/url/**" - "packages/view-models/**" - "package.json" - "pnpm-lock.yaml" - "scripts/bundle-budgets.json" - "scripts/verify-bundle-size.mjs" - ".github/workflows/bundle-budget-baseline.yml" permissions: contents: read jobs: capture: name: Capture bundle baseline runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - name: Enable Corepack run: corepack enable - name: Prepare pnpm 10.33.0 run: corepack prepare pnpm@10.33.0 --activate - name: Configure pnpm store run: pnpm config set store-dir .pnpm-store - name: Cache pnpm store uses: actions/cache@v4 with: path: .pnpm-store key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm- - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build web run: pnpm --filter @toolctrl/web build - name: Verify aggregate bundle budgets run: pnpm run verify:bundle-size - name: Measure bundle sizes run: node scripts/verify-bundle-size.mjs --json > main-bundle-report.json - name: Upload baseline artifact uses: actions/upload-artifact@v4 with: name: bundle-baseline-main path: main-bundle-report.json retention-days: 30