Files
familysync/.planning/phases/13-real-lint-gate-eslint/13-DISCUSSION-LOG.md
T
Lucas Berger 982438dc10 style(13-03): apply Prettier formatting across repo
Mechanical reformat — no logic changes. 398 files changed, 19125
insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc
(singleQuote:true, semi:true, tabWidth:2, trailingComma:all,
printWidth:100). Isolated per D-13-08 for reviewability.
2026-06-11 20:35:18 -04:00

92 lines
5.6 KiB
Markdown

# Phase 13: Real Lint Gate (ESLint) - Discussion Log
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
**Date:** 2026-06-11
**Phase:** 13-real-lint-gate-eslint
**Areas discussed:** Rule strictness, Existing-violation strategy, Prettier scope, Lint file coverage
---
## Rule Strictness — ruleset
| Option | Description | Selected |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | -------- |
| `recommended` (non-type-aware) | Syntactic only, fast, no tsconfig wiring; misses async/promise bugs | |
| `recommendedTypeChecked` | Type-aware; catches floating/misused promises + unsafe any; needs projectService, slower, more first-run violations | ✓ |
| `strict`/`strictTypeChecked` | Maximal rules; heavy churn + bikeshed risk | |
**User's choice:** `recommendedTypeChecked`
**Notes:** Motivated by async-heavy backend (outbox/push/reminder schedulers). projectService: true.
## Rule Strictness — gate threshold
| Option | Description | Selected |
| ------------------ | ------------------------------------------------------------------ | -------- |
| `--max-warnings 0` | Any warning fails CI; every rule is error-or-off | ✓ |
| Errors only | Warnings surface but don't fail; softer rollout, accumulation risk | |
| You decide | Pick based on first-run count | |
**User's choice:** `--max-warnings 0`
---
## Existing-Violation Strategy
| Option | Description | Selected |
| ------------------------------------ | ---------------------------------------------------------------------- | -------- |
| Fix all violations now | Phase green across both apps; real bugs fixed; larger phase | ✓ |
| Minimal green ruleset, ratchet later | Enable only passing rules; small phase, weaker gate, deferred work | |
| Baseline file (snapshot + ratchet) | Snapshot current violations as accepted; new-only fails; extra tooling | |
**User's choice:** Fix all violations now
**Notes:** Hard constraint added (D-13-06): fixes must address the violation, not mask it — no blanket eslint-disable, no `void` to silence floating promises; suppressions need justifying comments.
---
## Prettier Scope
| Option | Description | Selected |
| ------------------------------ | ----------------------------------------------------------------------------- | -------- |
| `eslint-config-prettier` only | Disable conflicting format rules, no Prettier itself; phase stays ESLint-only | |
| Add Prettier + format gate too | Full lint+format; scope creep beyond goal; reformats all files now | ✓ |
| Defer Prettier entirely | ESLint only, no config-prettier; future conflict risk | |
**User's choice:** Add Prettier + format gate too
**Notes:** Expands ROADMAP Phase 13 goal ("ESLint only") — flagged for planning to update ROADMAP one-liner + success criteria. Follow-up decided wiring: standalone `prettier --check` + eslint-config-prettier (rejected eslint-plugin-prettier).
### Prettier wiring (follow-up)
| Option | Description | Selected |
| ---------------------------- | ----------------------------------------------------------------------------------------- | -------- |
| Standalone + config-prettier | Separate `prettier --check` CI step + eslint-config-prettier off-switch; clean separation | ✓ |
| eslint-plugin-prettier | Prettier as an ESLint rule; one gate, slower/noisier, discouraged | |
**User's choice:** Standalone + eslint-config-prettier
---
## Lint File Coverage
| Option | Description | Selected |
| --------------------------------------- | -------------------------------------------------------------------------------- | -------- |
| All TS/TSX: src + tests + e2e + configs | Most thorough; needs projectService + config-file override; more first-run fixes | ✓ |
| src/ + tests, skip configs | Simpler, configs unchecked | |
| src/ only | Smallest scope; tests + e2e harness + configs unlinted | |
**User's choice:** All TS/TSX (src + tests + e2e + configs)
**Notes:** Config files need a non-type-checked override block (D-13-10).
---
## Claude's Discretion
- Flat-config file layout (single root vs per-app)
- Exact `.prettierrc` options (standard defaults)
- CI step ordering within `fast-checks`
## Deferred Ideas
None — Prettier was folded into scope, not deferred. Reviewed-but-not-folded: the Phase 8 Gitea-CI todo (already complete, matched on shared keywords only).