Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion NEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |

Expand Down
37 changes: 37 additions & 0 deletions docs/adrs/0002-strict-typescript-and-lint-toolchain.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading