Files
2026-06-18 22:21:38 -04:00

5.6 KiB

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).