Phase 13: Real Lint Gate — type-aware ESLint + Prettier format gate #8

Merged
luckberg merged 25 commits from gsd/phase-13-real-lint-gate-eslint into main 2026-06-11 21:51:10 -04:00
2 changed files with 27 additions and 0 deletions
Showing only changes of commit 743c7d92f0 - Show all commits
@@ -120,3 +120,27 @@ Green baseline verified:
- `pnpm format:check` — exit 0
- `pnpm typecheck` — exit 0
- `pnpm --filter @familysync/pwa test` — 191/191 passing
## Correction (post-verification)
**Gap found:** An independent re-run of `pnpm format:check` after the initial plan execution exited 1, not 0. Three GSD-managed files were not Prettier-formatted:
- `.planning/phases/13-real-lint-gate-eslint/13-03-SUMMARY.md`
- `.planning/ROADMAP.md`
- `.planning/STATE.md`
**Root cause:** `.planning/` was not in `.prettierignore`. GSD rewrites these planning docs on every workflow run (after every plan execution, state updates, roadmap sync, etc.) and never applies Prettier formatting to them. Including them in Prettier scope means the format gate fails on virtually every future PR, making SC-3 ("baseline gate ends green") impossible to hold in practice.
**Fix applied:** Added `.planning/` to `.prettierignore` with an explanatory comment. This mirrors the existing rationale for `dist/` and `apps/api/src/db/migrations/` — tool-generated output that must not gate Prettier. Real source docs (README.md, docs/**) remain in Prettier scope; they were reformatted in commit 982438d and stay formatted.
No other generated paths required ignoring — `playwright-report/`, `test-results/`, and `coverage/` directories do not exist on this tree.
**Verified exit codes after fix:**
| Command | Exit Code |
|---------|-----------|
| `pnpm format:check` | 0 |
| `pnpm lint` | 0 |
| `pnpm typecheck` | 0 |
**Commit:** `fix(13-03): exclude .planning from Prettier so the format gate stays green`
+3
View File
@@ -3,3 +3,6 @@ node_modules/
pnpm-lock.yaml
apps/api/src/db/migrations/
*.html
# GSD planning artifacts — tool-generated and rewritten on every workflow run;
# never hand-formatted; must not gate Prettier (same rationale as dist/).
.planning/