outcomeMechanical code structure stays inferred and apart from curated intent
spec:consumers.impact-graphPacks: pack:design-iteration-v1, pack:self-hosting-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/impact-graph.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
File-level import structure, keyed by repository-relative path, is designed in spec:consumers.impact-graph.curation-assist; exhaustive symbol reach is designed in spec:consumers.impact-graph.symbol-reach, which holds the symbol-identity question. This parent promises the stance that inferred structure stays apart from curated intent. Symbol reach is the deferred child's promise alone.
Intent
- Let mechanically derived import and symbol structure inform impact and curation without ever standing in for curated intent.
Behavior
rule.inferredApartline 18 ·specs/consumers/impact-graph.sdp.md:18- Mechanical import and symbol structure derives under the
inferredclaim and stays apart from the sparse curated graph; no curated edge, binding or delivery fact derives from it.no example exercises it
0 unkeyed rules.
Verification
Verifier bindings
- test:protocol.curation-imports · anchored · test anchor binding present ·
test/curation-imports.test.ts:17External run evidence from
test/curation-imports.test.tsTest anchors:
test:protocol.curation-imports. Specs verified by those bindings: spec:consumers.impact-graph, spec:consumers.impact-graph.curation-assist.Run 1: external run evidence from vitest 4.1.10
Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z
Name Suite Result Duration compares Windows source paths in the form the compiler returns them TypeScript curation imports passed 2.78 ms resolves aliases, JS specifiers, types, side effects, import equals and cyclic barrels within configured roots TypeScript curation imports passed 645.46 ms sorts paths by code unit, includes empty files, and deduplicates overlapping roots TypeScript curation imports passed 656.99 ms follows re-exports through files outside the roots but never follows ordinary transitive imports TypeScript curation imports passed 283.7 ms reads literal dynamic imports and import types, and skips computed specifiers TypeScript curation imports passed 749.48 ms excludes exact files and subtrees with segment boundaries and normalized metadata TypeScript curation imports passed 519.19 ms resolves barrel reach through excluded intermediates without emitting them TypeScript curation imports passed 222.52 ms accepts empty exclusions and normalizes root-relative exclusion spellings TypeScript curation imports passed 686.42 ms refuses invalid exclusion configuration {"extra":true} TypeScript curation imports passed 2.65 ms refuses invalid exclusion configuration {"exclude":null} TypeScript curation imports passed 3.52 ms refuses invalid exclusion configuration {"exclude":"code"} TypeScript curation imports passed 2.02 ms refuses invalid exclusion configuration {"exclude":[1]} TypeScript curation imports passed 3.41 ms refuses invalid exclusion configuration {"exclude":[""]} TypeScript curation imports passed 1.39 ms refuses invalid exclusion configuration {"exclude":[" "]} TypeScript curation imports passed 3.65 ms refuses invalid exclusion configuration {"exclude":["."]} TypeScript curation imports passed 1.5 ms refuses invalid exclusion configuration {"exclude":["./"]} TypeScript curation imports passed 1.32 ms refuses invalid exclusion configuration {"exclude":["../other"]} TypeScript curation imports passed 3.46 ms refuses invalid exclusion configuration {"exclude":["code/../../other"]} TypeScript curation imports passed 1.46 ms refuses invalid exclusion configuration {"exclude":["/code"]} TypeScript curation imports passed 1.27 ms refuses invalid exclusion configuration {"exclude":["C:/code"]} TypeScript curation imports passed 1.26 ms refuses invalid exclusion configuration {"exclude":["C:code"]} TypeScript curation imports passed 1.26 ms refuses invalid exclusion configuration {"exclude":["code\\leaf.ts"]} TypeScript curation imports passed 1.17 ms refuses invalid configuration {} TypeScript curation imports passed 1.21 ms refuses invalid configuration {"adapter":"other","tsconfig":"tsconfig.json","roots":["code"]} TypeScript curation imports passed 1.16 ms refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":[]} TypeScript curation imports passed 1.26 ms refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":[1]} TypeScript curation imports passed 1.23 ms refuses invalid configuration {"adapter":"typescript","tsconfig":"../tsconfig.json","roots":["code"]} TypeScript curation imports passed 2.68 ms refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":["../"]} TypeScript curation imports passed 1.25 ms refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":["/src"]} TypeScript curation imports passed 1.12 ms refuses the source root missing by its configured path TypeScript curation imports passed 1.44 ms refuses the source root code/leaf.ts by its configured path TypeScript curation imports passed 1.76 ms builds the imports file atomically and leaves the curated graph byte-identical TypeScript curation imports passed 957.13 ms writes no imports file without the flag and preserves an existing file even on build failure TypeScript curation imports passed 37.02 ms removes requested stale imports after a configuration or extraction failure TypeScript curation imports passed 219.76 ms refuses invalid build flag argv "build" TypeScript curation imports passed 0.29 ms refuses invalid build flag argv "build" TypeScript curation imports passed 0.12 ms refuses invalid build flag argv "build" TypeScript curation imports passed 0.11 ms refuses invalid build flag argv "build" TypeScript curation imports passed 0.08 ms refuses invalid build flag argv "validate" TypeScript curation imports passed 0.07 ms refuses invalid build flag argv "view" TypeScript curation imports passed 0.07 ms refuses invalid build flag argv "census" TypeScript curation imports passed 0.07 ms refuses invalid build flag argv "mermaid" TypeScript curation imports passed 0.07 ms refuses invalid build flag argv "gherkin" TypeScript curation imports passed 0.16 ms completes over the repository src and lists a known build-command import TypeScript curation imports passed 2302.57 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
Scroll horizontally to read the whole drawing.
The diagram as text
- spec:consumers.impact-graph: Mechanical code structure stays inferred and apart from curated intent · declared Spec
- spec:consumers.impact-graph.curation-assist: File-level imports show where curation is missing · declared Spec
- spec:consumers.impact-graph.symbol-reach: Exhaustive symbol reach waits for a language-neutral identity · declared Spec · no satisfying binding
- spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
- impl:protocol.build-imports: opt-in imports publication in the build command · anchored code ·
src/cli/build-command.ts:243 - impl:protocol.curation-recipe: asserts the curation report over external inferred imports · anchored code ·
test/curation-recipes.test.ts:32 - impl:protocol.typescript-imports: TypeScript file imports and barrel reach for external curation input · anchored code ·
src/adapters/typescript-imports.ts:7 - test:protocol.curation-imports: test:protocol.curation-imports · anchored test binding · binding present ·
test/curation-imports.test.ts:17 - test:protocol.curation-recipe: test:protocol.curation-recipe · anchored test binding · binding present ·
test/curation-recipes.test.ts:44 - spec:consumers.impact-graph refines spec:consumers.projections-model · declared
- spec:consumers.impact-graph.curation-assist refines spec:consumers.impact-graph · declared
- spec:consumers.impact-graph.symbol-reach refines spec:consumers.impact-graph · declared
- impl:protocol.build-imports satisfies spec:consumers.impact-graph.curation-assist · anchored
- impl:protocol.curation-recipe satisfies spec:consumers.impact-graph.curation-assist · anchored
- impl:protocol.typescript-imports satisfies spec:consumers.impact-graph.curation-assist · anchored
- impl:protocol.typescript-imports satisfies spec:consumers.impact-graph · anchored
- test:protocol.curation-imports verifies spec:consumers.impact-graph.curation-assist · anchored
- test:protocol.curation-imports verifies spec:consumers.impact-graph · anchored
- test:protocol.curation-recipe verifies spec:consumers.impact-graph.curation-assist · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.
Decisions
No decision record named.
Runtime
component:protocol.adapters· external runtime and source adapters ·src/adapters/vitest.ts:23· layer adapter · context protocol Uses
component:protocol.runner· provider-neutral example execution ·src/runner/index.ts:99· layer application · context protocol
impl:protocol.typescript-imports· TypeScript file imports and barrel reach for external curation input ·src/adapters/typescript-imports.ts:7Component:
component:protocol.adapters· external runtime and source adapters ·src/adapters/vitest.ts:23· layer adapter · context protocol Uses
None.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
The diagram as text
- spec:consumers.impact-graph: Mechanical code structure stays inferred and apart from curated intent
- spec:consumers.impact-graph.curation-assist: File-level imports show where curation is missing
- spec:consumers.impact-graph.symbol-reach: Exhaustive symbol reach waits for a language-neutral identity
- spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
- spec:extraction.derive-graph: Carrier reification derives the one graph
- spec:consumers.impact-graph dependsOn spec:extraction.derive-graph · declared
- spec:consumers.impact-graph refines spec:consumers.projections-model · declared
- spec:consumers.impact-graph.curation-assist refines spec:consumers.impact-graph · declared
- spec:consumers.impact-graph.symbol-reach refines spec:consumers.impact-graph · declared
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:consumers.projections-model · stated ready, floor ready
- dependsOn · spec:extraction.derive-graph · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.impact-graph.curation-assist
Implementing units
impl:protocol.build-imports·src/cli/build-command.ts:243impl:protocol.curation-recipe·test/curation-recipes.test.ts:32impl:protocol.typescript-imports·src/adapters/typescript-imports.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.curation-imports, test:protocol.curation-recipe
- spec:consumers.impact-graph.symbol-reach
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:self-hosting-v1
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | Carrier reification derives the one graphspec:extraction.derive-graph · resolves | declared | None | None |
| refines · outgoing | Projections fan out from one graph without becoming truth storesspec:consumers.projections-model · resolves | declared | None | None |
| refines · incoming | File-level imports show where curation is missingspec:consumers.impact-graph.curation-assist · resolves | declared | None | None |
| refines · incoming | Exhaustive symbol reach waits for a language-neutral identityspec:consumers.impact-graph.symbol-reach · resolves | declared | None | None |
Bindings
Implementation binding: present
impl:protocol.typescript-imports· TypeScript file imports and barrel reach for external curation input ·src/adapters/typescript-imports.ts:7· role adapter · component component:protocol.adapters· layer adapter · context protocol
Design reference: none
Verifier binding: present
- test:protocol.curation-imports · anchored ·
test/curation-imports.test.ts:17· test anchor
Expected-outcome oracle: none
Runtime observation: not tracked.
Run results: not recorded in the graph.
Findings
None.
Composing (0)
Composing needs the script.