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