|
| 1 | +# Milestone 1 — Scaffolding and Boundaries (Retro) |
| 2 | + |
| 3 | +## Planned |
| 4 | +- Scaffold CLI and templates (packages/features) with runnable harness stub |
| 5 | +- Boundary metadata via sg:layer/scope + architecture checks |
| 6 | +- ESLint/size/literal guardrails; commitlint + PR template; CODEOWNERS |
| 7 | +- Docs: ADR template; contract source-of-truth; canonical diagrams note |
| 8 | + |
| 9 | +## Delivered |
| 10 | +- Scaffold CLI: `tooling/scripts/scaffold/index.ts` |
| 11 | +- Arch checks: `tooling/arch/check-arch.js`, `check-sizes.js`, `check-literals.js` |
| 12 | +- Scripts: `lint:arch`, `scaffold` in root package.json |
| 13 | +- Git hygiene: commitlint, Husky commit-msg, PR template, CODEOWNERS |
| 14 | +- Docs: `docs/adr/0000-template.md`, `docs/architecture/contract-source-of-truth.md` |
| 15 | + |
| 16 | +## What went well |
| 17 | +- Metadata-based boundaries enable refactors without path-coupling |
| 18 | +- Zero-dep scripts keep CI fast and portable |
| 19 | +- Templates standardize src layout across all modules |
| 20 | + |
| 21 | +## What didn’t |
| 22 | +- Function size detection is heuristic; may false-positive on complex syntax |
| 23 | +- `ts-node` dependency added for scaffold; acceptable trade-off |
| 24 | + |
| 25 | +## Risks discovered |
| 26 | +- Mis-tagged sg:layer/scope can block builds; added clear error messages |
| 27 | +- Over-restrictive rules can slow iteration; rules can be relaxed per PR via ADR |
| 28 | + |
| 29 | +## Follow-ups |
| 30 | +- Add ESLint switch-exhaustiveness or TS exhaustive switch helper |
| 31 | +- Provide sample feature creation walkthrough in docs |
| 32 | +- Add CI job to run `pnpm lint:arch` on PRs affecting `packages/**` or `apps/**` |
| 33 | + |
| 34 | +## Links |
| 35 | +- PR: (fill after merge) |
| 36 | +- CI: (fill after merge) |
| 37 | +- Diagrams: `docs/architecture/flow.md` |
| 38 | +- ADR: `docs/adr/0000-template.md` |
0 commit comments