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.
This commit is contained in:
Lucas Berger
2026-06-11 20:35:18 -04:00
parent 4bc0445173
commit 982438dc10
398 changed files with 19050 additions and 16382 deletions
@@ -1,6 +1,6 @@
---
phase: 13-real-lint-gate-eslint
plan: "01"
plan: '01'
subsystem: dev-tooling
tags: [eslint, prettier, lint-gate, typescript-eslint, react-hooks, flat-config]
dependency_graph:
@@ -10,7 +10,7 @@ dependency_graph:
tech_stack:
added:
- eslint@9.39.4 (root devDep — pinned, ESLint 10 breaks eslint-plugin-react)
- "@eslint/js@9.39.4"
- '@eslint/js@9.39.4'
- typescript-eslint@8.61.0
- eslint-plugin-react@7.37.5
- eslint-plugin-react-hooks@7.1.1
@@ -32,13 +32,13 @@ key_files:
- apps/pwa/package.json (lint script --max-warnings 0)
- pnpm-lock.yaml
decisions:
- "ESLint pinned to 9.39.4 (non-negotiable): eslint-plugin-react@7.37.5 declares peer ^9.7 and hits TypeError at runtime on ESLint 10 (getFilename removed)"
- "react/react-in-jsx-scope explicitly disabled: flat.recommended enables it at error; codebase uses jsx:react-jsx (React 17+ transform) so React import is not required"
- "apps/api/tests/** in disableTypeChecked block: excluded from apps/api/tsconfig.json so projectService cannot type-check them"
- "eslint.config.js itself added to disableTypeChecked block as precaution (JS file, not in any TS project)"
- 'ESLint pinned to 9.39.4 (non-negotiable): eslint-plugin-react@7.37.5 declares peer ^9.7 and hits TypeError at runtime on ESLint 10 (getFilename removed)'
- 'react/react-in-jsx-scope explicitly disabled: flat.recommended enables it at error; codebase uses jsx:react-jsx (React 17+ transform) so React import is not required'
- 'apps/api/tests/** in disableTypeChecked block: excluded from apps/api/tsconfig.json so projectService cannot type-check them'
- 'eslint.config.js itself added to disableTypeChecked block as precaution (JS file, not in any TS project)'
metrics:
duration_minutes: 8
completed_date: "2026-06-11"
completed_date: '2026-06-11'
tasks_completed: 2
files_changed: 7
---
@@ -68,11 +68,13 @@ Authored `.prettierrc` (singleQuote:true, semi:true, tabWidth:2, trailingComma:a
### Task 2: SC-1 smoke proof — deliberate violations, both gates, throwaway cleanup
**Lint gate (SC-1 lint half):**
- Created `apps/api/src/_lint-gate-test.ts` with an unhandled `Promise.resolve(1)` expression
- Ran `pnpm --filter @familysync/api lint`**exit code 1**, `@typescript-eslint/no-floating-promises` reported on the deliberate file
- Deleted `apps/api/src/_lint-gate-test.ts` — never staged or committed
**Format gate (SC-1 format half):**
- Created `_format-gate-test.ts` at repo root with double quotes + irregular indentation (opposite of .prettierrc settings)
- Ran `pnpm format:check`**exit code 1**, `_format-gate-test.ts` listed in warnings
- Deleted `_format-gate-test.ts` — never staged or committed
@@ -93,10 +95,10 @@ Authored `.prettierrc` (singleQuote:true, semi:true, tabWidth:2, trailingComma:a
## SC-1 Evidence
| Gate | Deliberate Violation | Exit Code | Rule Reported |
|------|---------------------|-----------|---------------|
| `pnpm --filter @familysync/api lint` | `Promise.resolve(1)` — unhandled promise | **1 (non-zero)** | `@typescript-eslint/no-floating-promises` |
| `pnpm format:check` | double quotes + irregular indent (opposite of .prettierrc) | **1 (non-zero)** | `_format-gate-test.ts` listed as unformatted |
| Gate | Deliberate Violation | Exit Code | Rule Reported |
| ------------------------------------ | ---------------------------------------------------------- | ---------------- | -------------------------------------------- |
| `pnpm --filter @familysync/api lint` | `Promise.resolve(1)` — unhandled promise | **1 (non-zero)** | `@typescript-eslint/no-floating-promises` |
| `pnpm format:check` | double quotes + irregular indent (opposite of .prettierrc) | **1 (non-zero)** | `_format-gate-test.ts` listed as unformatted |
Both throwaway files confirmed absent and untracked (`THROWAWAYS_ABSENT_AND_UNTRACKED`).
@@ -106,40 +108,42 @@ Plan 02 consumes this inventory to scope fixes. No violations were fixed in this
### apps/api — 42 errors total
| Rule | Count | Description |
|------|-------|-------------|
| `@typescript-eslint/no-unnecessary-type-assertion` | 24 | Redundant `as` casts (mainly in outboxWorker.ts dispatcher blocks) |
| `@typescript-eslint/no-unsafe-assignment` | 3 | `any` assignment from ical.js property access |
| `@typescript-eslint/no-unsafe-argument` | 4 | `any` args from ical.js property values |
| `@typescript-eslint/no-unused-vars` | 7 | Test file variables assigned but unused |
| `@typescript-eslint/no-misused-promises` | 1 | `sse.ts:96` — async callback in void context |
| `@typescript-eslint/no-base-to-string` | 1 | Template literal with possible `[object Object]` |
| `@typescript-eslint/restrict-template-expressions` | 1 | `Record<string, unknown>` in template literal |
| `prefer-const` | 1 | `lists.ts:604``let` that is never reassigned |
| Rule | Count | Description |
| -------------------------------------------------- | ----- | ------------------------------------------------------------------ |
| `@typescript-eslint/no-unnecessary-type-assertion` | 24 | Redundant `as` casts (mainly in outboxWorker.ts dispatcher blocks) |
| `@typescript-eslint/no-unsafe-assignment` | 3 | `any` assignment from ical.js property access |
| `@typescript-eslint/no-unsafe-argument` | 4 | `any` args from ical.js property values |
| `@typescript-eslint/no-unused-vars` | 7 | Test file variables assigned but unused |
| `@typescript-eslint/no-misused-promises` | 1 | `sse.ts:96` — async callback in void context |
| `@typescript-eslint/no-base-to-string` | 1 | Template literal with possible `[object Object]` |
| `@typescript-eslint/restrict-template-expressions` | 1 | `Record<string, unknown>` in template literal |
| `prefer-const` | 1 | `lists.ts:604``let` that is never reassigned |
### apps/pwa — 77 errors total
| Rule | Count | Description |
|------|-------|-------------|
| `@typescript-eslint/require-await` | 23 | Async functions with no `await` expression |
| `@typescript-eslint/no-unnecessary-type-assertion` | 14 | Redundant `as` casts |
| `@typescript-eslint/no-floating-promises` | 11 | Unhandled promises |
| `@typescript-eslint/no-unused-vars` | 4 | Unused variables |
| `@typescript-eslint/no-unsafe-assignment` | 4 | `any` assignments |
| `@typescript-eslint/no-unsafe-member-access` | 3 | Member access on `any` |
| `@typescript-eslint/no-misused-promises` | 3 | Async callbacks in void contexts |
| `react/no-unescaped-entities` | 1 | Unescaped `'` in JSX |
| Rule | Count | Description |
| -------------------------------------------------- | ----- | ------------------------------------------ |
| `@typescript-eslint/require-await` | 23 | Async functions with no `await` expression |
| `@typescript-eslint/no-unnecessary-type-assertion` | 14 | Redundant `as` casts |
| `@typescript-eslint/no-floating-promises` | 11 | Unhandled promises |
| `@typescript-eslint/no-unused-vars` | 4 | Unused variables |
| `@typescript-eslint/no-unsafe-assignment` | 4 | `any` assignments |
| `@typescript-eslint/no-unsafe-member-access` | 3 | Member access on `any` |
| `@typescript-eslint/no-misused-promises` | 3 | Async callbacks in void contexts |
| `react/no-unescaped-entities` | 1 | Unescaped `'` in JSX |
**Total:** 119 errors across both apps (0 warnings — `--max-warnings 0` working).
## Self-Check: PASSED
Created files exist:
- `eslint.config.js` — FOUND
- `.prettierrc` — FOUND
- `.prettierignore` — FOUND
Commits exist:
- `df62d33` — FOUND (chore(13-01): install ESLint+Prettier, author flat config, wire lint/format scripts)
- `7a255ea` — FOUND (fix(13-01): disable react/react-in-jsx-scope for React 19 JSX transform)