fix(profile): declare a setup command so the build gate installs deps first

QA runs clear frontend/ before each run, taking node_modules with it. With
#263 making the terminal build gate actually fire, the gate would fail on
absent dependencies instead of on the code it exists to verify.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 21:36:40 +04:00
parent a7f5b9902f
commit 7cfb4e92d1
2 changed files with 12 additions and 6 deletions
+4
View File
@@ -18,6 +18,10 @@ epic-status = "bash scripts/epic-status.sh"
# The gate runner is whitespace-split / no-shell and runs at workspace_root (the repo), so `--prefix
# frontend` targets the Node subproject without a `cd`. `npm run build` = `tsc && vite build` (npm's
# own shell handles the &&), which fails on a dangling asset import — exactly the COMPLETED-lie hole.
# QA runs clear frontend/ before each run, so node_modules is absent when the terminal build gate
# fires. Without this the gate fails on missing deps instead of on the code it exists to verify.
# `install`, not `ci`: a fresh scaffold has no package-lock.json yet.
setup = "npm --prefix frontend install"
typecheck = "npm --prefix frontend run build"
build = "npm --prefix frontend run build"
test = "npm --prefix frontend test"
+8 -6
View File
@@ -103,12 +103,14 @@
**Goal 1 remaining: #267** — the acceptance live run. Fold the unverified #312/#313 trailing-mandate
check into the same run.
**Precondition, filed as #314.** #191 (dependency resolution before scaffold accept) closed on
2026-07-21: `runSetupCommand` runs the profile alias `setup` before every build gate and #40 resolves
it per toolchain. But `setup` is operator-declared in `.correx/project.toml`, and a freestyle run
scaffolding into an empty workspace has no profile — so `npm run build` runs with no `node_modules`.
Invisible until now; #263 making the terminal gate actually fire is what surfaces it. For #267,
hand-write a `project.toml` in the QA workspace; the general fix (toolchain-default `setup`) is #314.
**Precondition, handled.** #191 (dependency resolution before scaffold accept) closed on 2026-07-21:
`runSetupCommand` runs the profile alias `setup` before every build gate and #40 resolves it per
toolchain. But `setup` is operator-declared, and the repo profile didn't declare one — so with
`frontend/` cleared before each QA run, the now-firing terminal gate would run `npm run build` against
an absent `node_modules` and fail on deps instead of on the code. Added
`setup = "npm --prefix frontend install"` to `.correx/project.toml` (install, not `ci` — a fresh
scaffold has no lockfile). #267 needs nothing further. The general case — a workspace whose operator
declared no `setup` — is **#314** (toolchain-default fallback).
---