Commit Graph

632 Commits

Author SHA1 Message Date
3c810decb2 docs: CLAUDE.md surfaces conformance system + manifest-first ordering 2026-05-13 07:27:26 +02:00
5cc59e79db docs(work): scaffold agent-workflow-docs-v1 epic + story 01 2026-05-13 07:27:04 +02:00
be1938404a Merge branch 'worktree-conformance-milestone-vi': conformance milestone vi — feature migrations 2026-05-13 00:11:51 +02:00
9177d1f1db docs(work): close story 06 + conformance-system-v1 epic 2026-05-13 00:11:32 +02:00
79f96a94a1 feat(core-eslint): flip feature-must-have-manifest from warn to error 2026-05-13 00:10:48 +02:00
5fa7de48d8 feat(marketing-pages): conformance manifest + self-asserting bind-production 2026-05-13 00:10:29 +02:00
7953a44203 feat(navigation): conformance manifest + self-asserting bind-production 2026-05-13 00:10:03 +02:00
dc7aafb97f feat(media): conformance manifest + self-asserting bind-production 2026-05-13 00:09:36 +02:00
9bbc068498 feat(blog): conformance manifest + self-asserting bind-production 2026-05-13 00:09:08 +02:00
81a075a9b9 docs(work): story 06 — feature migrations 2026-05-13 00:08:37 +02:00
7d38ff3bb9 plan(conformance): milestone vi — feature migrations 2026-05-13 00:06:48 +02:00
c3da533e42 Merge branch 'worktree-conformance-milestone-v': conformance milestone v — generator updates 2026-05-13 00:05:23 +02:00
5bf9a140ed docs(work): close story 05 — generator updates 2026-05-13 00:04:56 +02:00
300143e7e1 feat(generators): emit feature.manifest.ts + self-asserting bind-production 2026-05-13 00:02:35 +02:00
8da21c0405 docs(work): story 05 — generator updates 2026-05-13 00:02:05 +02:00
19611fb92c plan(conformance): milestone v — generator updates 2026-05-13 00:00:32 +02:00
a90bdef219 Merge branch 'worktree-conformance-milestone-iv': conformance milestone iv — CI drift gate 2026-05-12 23:59:13 +02:00
f374d8b874 docs(work): close story 04 — CI drift gate 2026-05-12 23:58:51 +02:00
132ebc689f ci: add conformance step after lint 2026-05-12 23:58:20 +02:00
dfd6e1c3cc feat: wire pnpm conformance script + turbo task 2026-05-12 23:58:10 +02:00
24769eb442 feat(scripts): conformance drift gate + tests 2026-05-12 23:57:52 +02:00
a0b2ecee2b docs(work): story 04 — CI drift gate 2026-05-12 23:56:34 +02:00
b5771fc4ba plan(conformance): milestone iv — CI drift gate 2026-05-12 23:55:14 +02:00
b0563e4712 Merge branch 'worktree-conformance-milestone-iii-b': conformance milestone iii.b — AST-aware ESLint rules 2026-05-12 23:53:30 +02:00
a07e62befd docs(work): close story 03.b — AST-aware ESLint rules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 23:53:13 +02:00
4d7b25fd15 feat(core-eslint): wire AST-aware conformance rules into plugin + base
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 23:52:31 +02:00
15e90820d2 feat(core-eslint): no-undeclared-audit rule
AST-aware ESLint rule that catches auditLog.record({ type: "X" }) calls
in use-case files where X is not declared in the matching
manifest.useCases[name].audits array.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 23:51:42 +02:00
3e2b096c3c feat(core-eslint): no-undeclared-event-publish rule
AST-aware ESLint rule that catches bus.publish("X") calls in use-case
files where X is not declared in the matching manifest.useCases[name].publishes array.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 23:51:06 +02:00
21a6822d55 feat(core-eslint): use-case name helper (file slug → manifest key) 2026-05-12 23:49:32 +02:00
7cfb78b99e feat(core-eslint): manifest AST parser for per-use-case attributes 2026-05-12 23:49:12 +02:00
bfb2324dd9 docs(work): story 03.b — AST-aware ESLint rules 2026-05-12 23:48:35 +02:00
fb23980d85 plan(conformance): milestone iii.b — AST-aware ESLint rules 2026-05-12 23:47:18 +02:00
70c211cbf5 Merge branch 'worktree-conformance-milestone-iii-a': conformance milestone iii.a — structural ESLint rules
Some checks failed
Sentry PII guard (R31) / pii-guard (push) Has been cancelled
CI / typecheck + lint + boundaries + test + build (push) Has been cancelled
CI / Playwright e2e (push) Has been cancelled
CI / Storybook smoke tests (push) Has been cancelled
2026-05-12 23:29:37 +02:00
654f2b2a02 docs(work): close story 03.a — structural ESLint rules 2026-05-12 23:25:30 +02:00
b9ac64b36b feat(core-eslint): register conformance plugin + structural rules in base config 2026-05-12 23:24:01 +02:00
8a2c8db955 feat(core-eslint): conformance plugin module + ./plugin export 2026-05-12 23:23:20 +02:00
3117df1c14 feat(core-eslint): required-cores-installed rule 2026-05-12 23:22:43 +02:00
d585b59590 feat(core-eslint): usecase-must-have-test-file rule 2026-05-12 23:21:38 +02:00
b7bb37023f feat(core-eslint): feature-must-have-manifest rule
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 23:20:37 +02:00
6f8e75accb feat(core-eslint): workspace helper for conformance rules 2026-05-12 23:19:11 +02:00
41ffe9f787 feat(core-eslint): manifest source helper for conformance rules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 23:18:02 +02:00
ff83769b30 docs(work): story 03.a — structural ESLint rules 2026-05-12 23:16:52 +02:00
f22f747aa9 plan(conformance): milestone iii.a — structural ESLint rules
10-task plan for standing up the conformance ESLint plugin in
@repo/core-eslint and shipping three structural rules:

- feature-must-have-manifest (warn): use-case files require a manifest
- usecase-must-have-test-file (error): TDD sibling test enforcement
- required-cores-installed (error): manifest cores ↔ workspace.yaml

Scope deliberately excludes manifest-AST analysis (no-undeclared-event-
publish, no-undeclared-audit) — those require parsing the manifest's TS
source as JS and walking the use-case AST, deferred to plan iii.b.

Uses regex-based manifest source extraction to avoid pulling in the
TypeScript compiler API at lint time. Manifest shape is constrained by
the literal `as const` form that defineFeature enforces, so the regex
path is sufficient.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 23:15:35 +02:00
64297a233b Merge branch 'worktree-conformance-milestone-ii': conformance milestone ii — assertFeatureConformance + boot wiring 2026-05-12 23:01:27 +02:00
83f135b5e1 fix(conformance): withCapture propagates inner brands + chain test + docstring fixes 2026-05-12 23:00:50 +02:00
046bd0829e docs(work): close story 02 — assertFeatureConformance + boot wiring 2026-05-12 22:54:45 +02:00
3a6115924b feat(auth): bindProductionAuth self-asserts conformance at tail
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 22:53:06 +02:00
5e32074c2e feat(core-shared/conformance): assertFeatureConformance helper
Adds boot-time check that every manifest-declared use case is bound
through withSpan (__instrumented) + withCapture (__captured), with
withAudit (__audited) enforced when audits[] is non-empty. Propagates
inner brands through withSpan so the outermost container-resolved
binding carries all brand markers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 22:49:18 +02:00
bbd9c1e856 feat(core-shared/conformance): re-export ConformanceError 2026-05-12 22:43:57 +02:00
49bd7e0782 feat(core-shared/conformance): ConformanceError class 2026-05-12 22:43:15 +02:00