Ashiedu's picture
Sync unified workbench
0490201 verified

A newer version of the Gradio SDK is available: 6.14.0

Upgrade

T-015: Build Smoke Test β€” CI Passes on Windows, VST3 DLL Produced, task build Clean

Type: Task | Phase: 0 | Autonomy: agent:review-required
Stack: stack:infra | Version: v0.1 | Iteration: iter-1 | Effort: S (half-day)

⚠️ Scope: Add a build job to the GitHub Actions CI workflow (.github/workflows/ci.yml) that runs task build on windows-latest, verifies the .exe exists and is under 30 MB, and verifies the VST3 bundle exists. This is the Day 1 exit criterion proof. If any prior task left broken code, this job surfaces it.


Prerequisites

  • T-001–T-014 all merged (or all in status:roadmap with known blockers)
  • T-007 merged β€” Taskfile.yml with task build defined
  • T-008 merged β€” CI workflow exists with check and test jobs

Acceptance Criteria

  • New build job added to .github/workflows/ci.yml after test job
  • build job runs only on push to main (not on every PR β€” too slow)
  • task build runs: cargo tauri build + cargo xtask bundle synesthesia-plugin --release
  • CI step verifies .exe exists at kansas/target/release/synesthesia.exe
  • CI step verifies .exe size is < 30 MB (fails if Chromium accidentally bundled)
  • CI step verifies target/bundled/Synesthesia.vst3/ directory exists
  • Build job result posted as a comment on the triggering commit
  • cargo check --workspace and pnpm typecheck still pass

Add to .github/workflows/ci.yml

  # ── Build job (push to main only β€” ~10 min, too slow for every PR) ─────────
  build:
    name: Full Build
    runs-on: windows-latest
    needs: [check, test]
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'

    steps:
      - uses: actions/checkout@v4

      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: clippy, rustfmt

      - uses: Swatinem/rust-cache@v2
        with:
          key: ${{ runner.os }}-build-${{ hashFiles('Cargo.lock') }}

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

      - uses: pnpm/action-setup@v4
        with:
          version: 9
          run_install: false

      - name: Install frontend deps
        run: pnpm install --frozen-lockfile

      - uses: arduino/setup-task@v2
        with:
          version: 3.x
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Install WebView2 (if missing)
        run: |
          $installer = "MicrosoftEdgeWebview2Setup.exe"
          Invoke-WebRequest "https://go.microsoft.com/fwlink/p/?LinkId=2124703" -OutFile $installer
          Start-Process $installer -ArgumentList "/silent /install" -Wait
        shell: powershell
        continue-on-error: true  # Already installed on windows-latest

      - name: Build all targets
        run: task build

      - name: Verify standalone exe
        shell: bash
        run: |
          EXE="kansas/target/release/synesthesia.exe"
          [ -f "$EXE" ] || { echo "βœ— $EXE not found"; exit 1; }
          SIZE=$(stat -c%s "$EXE")
          echo "exe size: $((SIZE / 1024 / 1024)) MB"
          [ "$SIZE" -lt 31457280 ] || { echo "βœ— exe > 30 MB β€” Chromium may have been bundled"; exit 1; }
          echo "βœ“ Standalone exe OK"

      - name: Verify VST3 bundle
        shell: bash
        run: |
          BUNDLE="target/bundled/Synesthesia.vst3"
          [ -d "$BUNDLE" ] || { echo "βœ— $BUNDLE not found"; exit 1; }
          echo "βœ“ VST3 bundle OK"

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: synesthesia-build-${{ github.sha }}
          path: |
            kansas/target/release/synesthesia.exe
            target/bundled/
          retention-days: 7

GitHub CLI

gh issue create \
  --title "T-015: Build smoke test β€” CI full build on Windows, VST3 DLL verified" \
  --label "type:task,stack:infra,agent:review-required,priority:critical,status:ready,day:1" \
  --body-file T-015.md

Parent: GENESIS | Blocks: Day 1 exit criterion | Blocked By: T-001–T-014, T-007, T-008