Skip to content

Design/editorial overhaul #93

Design/editorial overhaul

Design/editorial overhaul #93

Workflow file for this run

name: CI
# Release gate for the core flows. Runs on every PR and on pushes to the
# main + active design branches. Blocks merges if type-check, lint, the test
# suite (incl. the design-pipeline guard in __tests__/design/pipeline.test.ts),
# or the production build break - so create-design → literature → hypotheses →
# design → chat-context can't silently regress.
on:
pull_request:
push:
branches:
- main
- design/editorial-overhaul
# Cancel superseded runs on the same ref to save CI minutes.
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
verify:
name: type-check · lint · test · build
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "npm"
- name: Install dependencies
run: npm ci
# Deterministic, env-free gates - catch the regressions that have bitten
# the design pipeline (types, wiring, dropped fields, bad merges).
- name: Type check
run: npm run type-check
- name: Lint
run: npm run lint
- name: Test
run: npm test
# Production build - catches issues tsc can't (e.g. edge-runtime bundling).
# Uses placeholder public env so module-load initializers don't fail; the
# build reads real secrets only at request time, not at build. If a future
# build step needs real values, add them as repository secrets here.
- name: Build
run: npm run build
env:
NEXT_PUBLIC_SUPABASE_URL: "https://placeholder.supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY: "placeholder-anon-key"
NEXT_PUBLIC_FIREBASE_API_KEY: "placeholder"
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: "placeholder.firebaseapp.com"
NEXT_PUBLIC_FIREBASE_PROJECT_ID: "placeholder"
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: "placeholder.appspot.com"
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: "0000000000"
NEXT_PUBLIC_FIREBASE_APP_ID: "1:0:web:0"