[E00-S01-T12] Root commands exist for build/test/typecheck #379
No Reviewers
Labels
Clear labels
agent/analyst-drafted
agent/analyst-drafted
needs/human-decision
needs/human-decision
needs/security-review
needs/security-review
tier/t0
tier/t1
tier/t2
tier/t3
kind
bug
kind
bug
kind
epic
kind
epic
kind
initiative
EPPP programme initiative
kind
story
kind
story
kind
task
EPPP engineering card/task decomposed from a story
kind
toil
kind
toil
loop
1
loop
1
loop
2
loop
2
loop
3
loop
3
risk
agent-full
risk
agent-full
risk
human-gated
risk
human-gated
risk
human-only
risk
human-only
size
l
size
l
size
m
size
m
size
s
size
s
status
blocked
status
blocked
status
done
Workflow: Done
status
in-progress
status
in-progress
status
proposed
status
proposed
status
ready
status
ready
status
review
status
review
stream
checkout
stream
checkout
stream
onboarding
stream
onboarding
stream
platform
stream
platform
trivial — implementer only, auto-merge
standard — implementer + reviewer + tester
complex — security if triggered, human merge
critical — full chain + security, human merge
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Fabrika/PersonalBlog#379
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What changed
Locks in the [E00-S01-T12] root build/test/typecheck commands (#165). The root scripts were bootstrap-committed in E00-S01-T05 (
0d1bd19); this PR adds the regression suite that makes the acceptance criteria enforceable rather than incidental:tests/root-commands.test.mjs(new) — anode:testsuite (zero dependencies, lockfile untouched) that fails if any root command is ever removed or drifts:package.jsondeclaresscripts.build(pnpm -r run build),scripts.test(node --test "tests/**/*.test.mjs"), andscripts.typecheck(pnpm -r run typecheck) exactly;pnpm run buildcompiles every workspace package,pnpm run typechecktype-checks every package, andpnpm run testruns the wholenode --testsuite — the "invoke each root command and confirm it runs" test-plan step.EPPP_ROOT_COMMANDS_SKIP_INVOKE=1to the nested run so the suite (which is itself part oftests/**/*.test.mjs) does not re-invokepnpm run testendlessly; nested runs skip the invocation probes while the outer probe still proves the command exits 0.Explicitly out of scope per the brief (not touched): apps/packages/extensions separation (E00-S01-T11), frozen lockfile clean install (E00-S01-T13), no core imports a concrete extension (E00-S01-T14). No CI workflow changes — test-suite wiring in CI is E00-S05 by design (same as T05–T11); the existing CI job (frozen install +
pnpm -r liston Node 24) stays green.Criterion → test table
tests/root-commands.test.mjs: "a root build command exists in package.json" — assertsscripts.buildis exactlypnpm -r run build. Mutation-probed: deletingscripts.buildfails this test (and the invocation probe)tests/root-commands.test.mjs: "a root test command exists in package.json" — assertsscripts.testis exactlynode --test "tests/**/*.test.mjs". Mutation-probed: changing it tonode --testfails this testtests/root-commands.test.mjs: "a root typecheck command exists in package.json" — assertsscripts.typecheckis exactlypnpm -r run typechecktests/root-commands.test.mjs: "the root build command runs successfully (pnpm run build)", "the root typecheck command runs successfully (pnpm run typecheck)", "the root test command runs successfully (pnpm run test)" — each spawns the root command via the pinned pnpm (corepack) and asserts exit 0; the test probe runs the wholenode --testsuite with a recursion guardTest plan executed
node_modules), Node 24 (v24.20.0):pnpm install --frozen-lockfilevia corepack → success,using pnpm v11.23.0, lockfile unchanged ✓pnpm -r list --depth -1(second CI step), Node 24 → lists all four workspace projects, exit 0 ✓node --test tests/root-commands.test.mjs→ 6/6 pass ✓node --test "tests/**/*.test.mjs"on Node 24 (v24.20.0) → 42/42 pass (10 architecture-import + 6 workspace-config + 5 node-engine + 3 typescript-pin + 4 strict-tsconfig + 8 workspace-layout + 6 root-commands), exit 0 ✓EPPP_ROOT_COMMANDS_SKIP_INVOKE=1 node --test tests/root-commands.test.mjs→ 3 pass, 3 skipped (invocation probes), no recursion ✓scripts.buildfails "a root build command exists in package.json" + the build invocation probe; changingscripts.testfails "a root test command exists in package.json"; restoring the scripts returns to 42/42 ✓Risks / notes
pnpmresolvable (corepack enabled /node_modulespresent), i.e. the documented developer/CI path.Refs #165