From fb8141d6690c2ba3e44515945dc4d34bed27d1a1 Mon Sep 17 00:00:00 2001 From: kami Date: Sun, 26 Jul 2026 21:39:38 +0400 Subject: [PATCH] chore(profile): split build-gate commands per toolchain (#40 follow-through) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The repo hosts Kotlin at root and a Node app in frontend/, but the profile still pointed every flat alias at npm — so a Kotlin run's auto-gate would have run 'npm --prefix frontend run build'. #40 shipped [commands.] resolution in 6e844ef1; this migrates the profile to actually use it. Co-Authored-By: Claude Opus 5 --- .correx/project.toml | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/.correx/project.toml b/.correx/project.toml index f59136a9..e215eef1 100644 --- a/.correx/project.toml +++ b/.correx/project.toml @@ -14,13 +14,27 @@ test-all = "./gradlew check --rerun-tasks" test-module = "./gradlew :core::test --rerun-tasks" context-lookup = "python scripts/ctx.py " epic-status = "bash scripts/epic-status.sh" -# Build-gate aliases (BuildExpectation → commandAlias): MODULE→typecheck, PROJECT→build, TESTS→test. +# Build-gate aliases (BuildExpectation → commandAlias): MODULE→typecheck, PROJECT→build, TESTS→test, +# plus `setup` run before each gate. This repo hosts TWO toolchains — Kotlin at root, a Node app in +# frontend/ — so the flat aliases below are the jvm default and the [commands.*] sections below take +# precedence when the gate can tell what a stage wrote (#40, BuildGateToolchain.stageProducedToolchain). # 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. +# frontend` targets the Node subproject without a `cd`. +typecheck = "./gradlew compileKotlin" +build = "./gradlew assemble" +test = "./gradlew check" + +[commands.jvm] +typecheck = "./gradlew compileKotlin" +build = "./gradlew assemble" +test = "./gradlew check" + +[commands.node] +# `npm run build` = `tsc && vite build` (npm's own shell handles the &&), which fails on a dangling +# asset import — exactly the COMPLETED-lie hole the terminal build gate exists to catch. +# QA runs clear frontend/ before each run, so node_modules is absent when that gate fires; without +# `setup` it fails on missing deps instead of on the code. `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"