diff --git a/NEXT.md b/NEXT.md index 4f72ee3..907bbb8 100644 --- a/NEXT.md +++ b/NEXT.md @@ -66,7 +66,7 @@ part-time work across the team. | 0.1 | Playwright end-to-end test of the core loop using the existing `window.__dominic` hooks: `installFixture` -> reload -> `updateApp` -> `injectBrokenApp` -> Ask Agent to Fix. Gate it in CI. | The net under Phases 1-2. The hooks are a harness waiting for a runner. | Michael | | 0.2 | Remove the server env-var API-key fallback in `server/api/chat.post.ts`; return 401 without a per-request key. | ADR 0005 conformance. Five lines; the only server-side hole. | Charles | | 0.3 | Baseline Content Security Policy: `script-src 'self' esm.sh cdn.tailwindcss.com`; `connect-src` = self + provider hosts + esm.sh. | Config-only. The Tailwind Play CDN needs `'unsafe-inline'`; accepted for now (decision D1). | Zack | -| 0.4 | ESLint flat config with a slice-boundary rule, plus lint-staged running `vue-tsc` on staged files in pre-commit. | ADR 0002 as decided. Turns "boundaries by convention" into a lint. | Zack | +| 0.4 | ESLint flat config with a slice-boundary rule, plus lint-staged running `vue-tsc` on staged files in pre-commit. As built (#94): lint-staged runs `eslint --fix`; `vue-tsc` stays in CI (#82). | ADR 0002 as decided. Turns "boundaries by convention" into a lint. | Zack | | 0.5 | Truth pass: correct the README's mobile and "vetted CDN" claims; write ADR 0012 superseding ADR 0001 and 0003 to record the five-slice layout and mixed store style (decision D2). | Judges and contributors read the ADRs; drift costs trust. | Michael (README), Brandon (ADR 0012) | | 0.6 | Dead code: delete the unused `useChatStore`; make `useAppsStore` the registry's reactive face or delete the mirror. | Two sources of truth for "installed apps" is a latent bug. | Justin | diff --git a/docs/adrs/0002-strict-typescript-and-lint-toolchain.md b/docs/adrs/0002-strict-typescript-and-lint-toolchain.md index d625de1..f45be5e 100644 --- a/docs/adrs/0002-strict-typescript-and-lint-toolchain.md +++ b/docs/adrs/0002-strict-typescript-and-lint-toolchain.md @@ -125,6 +125,43 @@ deliberate type error and a lint error both fail CI. Reconciled against main on 2026-09-12; the decision text above is unchanged. +### As built (2026-10-06) + +Reconciled against main at 07a353f, after Phase 0 (NEXT.md 0.4, #94). + +**Matches the decision:** + +- ESLint runs from a flat config with typescript-eslint and + eslint-plugin-vue (`eslint.config.mjs:44`, `eslint.config.mjs:45`); + `npm run lint` and `npm run lint:fix` run it (`package.json:15`). +- A slice-boundary rule bans imports between feature slices + (`eslint.config.mjs:23`, `eslint.config.mjs:114`). +- CI runs Markdown lint, Typecheck, ESLint, Build and E2E + (`.github/workflows/ci.yml:10`, `.github/workflows/ci.yml:27`, + `.github/workflows/ci.yml:45`, `.github/workflows/ci.yml:63`, + `.github/workflows/ci.yml:85`), so a type error or a lint error fails + CI, as the Confirmation asks. Branch protection requires the first + four; ESLint is not yet a required check. +- The pre-commit hook runs `npm run lint:md` and lint-staged + (`.husky/pre-commit:1`, `.husky/pre-commit:2`); lint-staged runs + `eslint --fix` on staged code (`package.json:20`). + +**Differs from this record:** + +- ADR: type-checked typescript-eslint and `@nuxt/eslint` -> the config + extends typescript-eslint's `recommended` preset, not the type-checked + ones (`eslint.config.mjs:44`), and `@nuxt/eslint` is not installed. +- ADR: enforcement "in CI and pre-commit" -> `vue-tsc` runs in CI only + (`npm run typecheck`, `package.json:13`), not in the pre-commit hook. + Issue #82 records why: `nuxt typecheck` needs the full Nuxt context + and is too slow for a hook. +- The slice-boundary rule matches import specifiers as written, so a + relative import between slices (`../../os/...`) passes it; none exists + on main today. + +Reconciled against main on 2026-10-06; the decision text above is +unchanged. + ## Pros and Cons of the Options ### ESLint (typescript-eslint + eslint-plugin-vue) + vue-tsc