--- id: 01-ast-manifest-source epic: conformance-hardening-v1 title: Replace regex manifest source parser with AST type: technical-story status: in-progress feature: core-eslint depends-on: [] blocks: [02-dev-seed-assertion] --- ## Goal `readManifestSource` in `_manifest-source.js` returns the same shape but uses `@typescript-eslint/parser` AST traversal instead of regex. ## In scope - Rewrite `readManifestSource` to delegate to a new `parseManifestFully` in `_manifest-ast.js` that returns `{ name, requiredCores, useCases }` - Existing 4 tests for `readManifestSource` must still pass - Add tests covering the previously-fragile cases: `name:` in JSDoc, single-quoted strings, manifest declared with `let` instead of `const` ## Out of scope - Changing the `_manifest-source.js` exports surface (filesystem helpers `manifestPathForFeature` and `featureRootForFile` stay untouched) - Changing any rule's behaviour beyond the parsing path ## Tasks - [ ] Epic + story scaffold - [ ] Extend `_manifest-ast.js` with `parseManifestFully` - [ ] Switch `readManifestSource` to delegate to `parseManifestFully` - [ ] Add edge-case tests - [ ] Verify all rules still pass; commit