[E00-S01-T05] Add root build/test scripts #372
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#372
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
Adds root scripts so build, test and typecheck run from the workspace root for [E00-S01-T05] Add root build/test scripts (#158):
package.json— newscriptsblock:build→pnpm -r run build— compiles every workspace package (topological order)test→node --test "tests/**/*.test.mjs"— runs thenode:testsuites undertests/(currentlytests/architecture-import.test.mjs, the E00-S01-T04 dependency-boundary test; zero extra dependencies)typecheck→pnpm -r run typecheck— typechecks every workspace packagetypescriptpinned as an exact root devDependency ("typescript": "6.0.3") so the commands run from a clean checkout;pnpm-lock.yamlregenerated with the pinned pnpm 11.23.0 (frozen install stays green)package.json(apps/server,packages/core,extensions/example) — each gainsbuild(tsc -p tsconfig.json) andtypecheck(tsc -p tsconfig.json --noEmit) scripts, which the rootpnpm -rcommands delegate toExplicitly out of scope per the brief: dependency-boundary rule/test (E00-S01-T04, merged), non-container developer path docs (E00-S01-T06). CI pipeline wiring of these scripts is E00-S05 (out of scope here — CI workflow file untouched).
Criterion → test table
package.jsonscripts.build=pnpm -r run build; verified:pnpm buildfrom a clean checkout runstsc -p tsconfig.jsonin all 3 packages (apps/server,packages/core,extensions/example) and emitsdist/for each (exit 0)package.jsonscripts.test=node --test "tests/**/*.test.mjs"; verified:pnpm testfrom a clean checkout runstests/architecture-import.test.mjs→ 10/10 pass (exit 0)package.jsonscripts.typecheck=pnpm -r run typecheck; verified:pnpm typecheckfrom a clean checkout runstsc -p tsconfig.json --noEmitin all 3 packages (exit 0)Test plan executed
node_modules/and alldist/outputs, thenpnpm install --frozen-lockfile(pnpm 11.23.0, same as CI) → success, lockfile unchanged by re-install ✓pnpm build→ all 3 packages compile and emit (exit 0) ✓pnpm typecheck→ all 3 packages pass--noEmit(exit 0) ✓pnpm test→tests/architecture-import.test.mjs10/10 pass (exit 0) ✓pnpm -r list --depth -1lists all 4 workspace projects (root + 3 packages);corepack enableresolves the pinned pnpm 11.23.0 ✓package.jsonfiles parse as valid JSON ✓Risks / notes
tscresolves for every package.node --testglob form (tests/**/*.test.mjs) is used instead of a bare directory argument because the directory form is not reliably supported across Node versions in the 22–24 range; the glob matches current and futuretests/**suites.Closes #158