Files
correx/.correx/project.toml
T
kami fb8141d669 chore(profile): split build-gate commands per toolchain (#40 follow-through)
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.<toolchain>]
resolution in 6e844ef1; this migrates the profile to actually use it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 21:39:38 +04:00

42 lines
2.9 KiB
TOML

about = "CORREX — local-first, event-sourced orchestration kernel for LLM workflows. Kotlin 2.0 / JVM 21, Gradle multi-module, kotlinx.serialization, Ktor."
conventions = [
"Event log is the only source of truth; projections are disposable and rebuilt from events",
"Dependency direction: apps -> core -> infrastructure; no cross-core imports",
"No bare try-catch; use runCatching and sealed domain error types",
"Every new EventPayload must be registered in the eventModule polymorphic block (Serialization.kt)",
"Track multi-session or handoff work as native tasks: search before creating to avoid duplicates (task_search), task_context before starting, claim before working, submit_for_review when ready, complete after review. Don't open a task for a single self-contained edit you finish now. When a goal has dependency seams or independent review points, task_decompose it into a parent + DEPENDS_ON-linked children (one approval) instead of one big task; a session works one task at a time, so siblings are claimed by later runs as they unblock.",
"UI uses the Ethos design system in ./design-system. COPY design-system/ethos.tokens.css and ethos-icons.svg into the project and import them — do NOT read their contents. All colors/spacing/radii come from the token CSS vars (never hardcode). Read design-system/SKILL.md only for component/layout rules.",
]
[commands]
test-all = "./gradlew check --rerun-tasks"
test-module = "./gradlew :core:<module>:test --rerun-tasks"
context-lookup = "python scripts/ctx.py <query>"
epic-status = "bash scripts/epic-status.sh"
# 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`.
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"
test = "npm --prefix frontend test"