[E00-S01-T06] Document local non-container developer path #373
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#373
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
Documents the local non-container developer path so an engineer can install, build and run EPPP without Docker for [E00-S01-T06] Document local non-container developer path (#159):
docs/development/non-container.md(new) — the developer guide:corepack enable,pnpm install --frozen-lockfile; explains why the install is frozen and that lockfile changes must be committedpnpm build(compiles all workspace packages todist/) andpnpm typecheck(tsc --noEmitacross packages)pnpm --filter @personal-blog/server start, with an honest note that at bootstrapapps/serveris a placeholder module (loads and exits 0; the Fastify 5 application shell that turns it into a serving process lands in a later story) and the generalnode <pkg>/dist/index.jspattern for any packagepnpm test(node:testsuites undertests/, currently the 10-test architecture-import suite)apps/server/package.json— adds a minimalstartscript (node dist/index.js) so the documented run step is a first-class pnpm command consistent withbuild/typecheck. No source behavior change: the entrypoint stays a bootstrap placeholder (its story is the Fastify 5 shell). No new dependencies —pnpm-lock.yamluntouched.Explicitly out of scope per the brief: root build/test scripts (E00-S01-T05) and Docker Compose baseline (E00-S02) — neither is touched; this PR only documents usage of the former and explicitly excludes the latter.
Criterion → test table
docs/development/non-container.mdadded atdocs/development/non-container.md; covers the full non-container path (install → build → run → test) with a smoke-check section; container path explicitly deferred to E00-S02node_modules/, nodist/):pnpm install --frozen-lockfile→ exit 0, "Already up to date" (lockfile untouched,git statusclean apart from the two commits) ✓;pnpm build→ 3/3 packages emitdist/, exit 0 ✓;pnpm typecheck→ 3/3 packages pass--noEmit, exit 0 ✓; run steppnpm --filter @personal-blog/server start→ loads compiled entrypoint, exit 0 ✓ (plusnode apps/server/dist/index.jsdirect, exit 0)Test plan executed
pnpm install --frozen-lockfile(pnpm 11.23.0, same as CI) from a clone with nonode_modules/dist→ success, lockfile unchanged by the change ✓pnpm build→apps/server,packages/core,extensions/exampleallDone,dist/emitted per package (exit 0) ✓pnpm typecheck→ 3/3 packages pass--noEmit(exit 0) ✓pnpm test→tests/architecture-import.test.mjs10/10 pass (exit 0) ✓pnpm --filter @personal-blog/server startandnode apps/server/dist/index.jsboth exit 0 ✓pnpm install --frozen-lockfilestill passes after thestartscript addition;pnpm -r list --depth -1lists all 4 workspace projects (exit 0);apps/server/package.jsonparses as valid JSON ✓Risks / notes
startscript is a run-path convenience for the documentation task; the server's real behavior (HTTP serving) is owned by the Fastify 5 application shell story and deliberately not implemented here — the placeholder entrypoint is unchanged.frozen-installjob (Node 24, corepack, frozen lockfile, workspace group listing) — nothing about the change affects it.Closes #159