Spec Studio

Mechanical code structure stays inferred and apart from curated intent

spec:consumers.impact-graphUse Case / Behavior · featureready floor ready

Packs: 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
outcome
Let mechanically derived import and symbol structure inform impact and curation without ever standing in for curated intent.
Behavior
rule.inferredApart line 18 · specs/consumers/impact-graph.sdp.md:18
Mechanical import and symbol structure derives under the inferred claim 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:17

    External run evidence from test/curation-imports.test.ts

    Test 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 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z

    NameSuiteResultDuration
    compares Windows source paths in the form the compiler returns themTypeScript curation importspassed1.95 ms
    resolves aliases, JS specifiers, types, side effects, import equals and cyclic barrels within configured rootsTypeScript curation importspassed611.38 ms
    sorts paths by code unit, includes empty files, and deduplicates overlapping rootsTypeScript curation importspassed623.27 ms
    follows re-exports through files outside the roots but never follows ordinary transitive importsTypeScript curation importspassed250.5 ms
    reads literal dynamic imports and import types, and skips computed specifiersTypeScript curation importspassed706.19 ms
    excludes exact files and subtrees with segment boundaries and normalized metadataTypeScript curation importspassed490.89 ms
    resolves barrel reach through excluded intermediates without emitting themTypeScript curation importspassed239.24 ms
    accepts empty exclusions and normalizes root-relative exclusion spellingsTypeScript curation importspassed773.99 ms
    refuses invalid exclusion configuration {"extra":true}TypeScript curation importspassed2.41 ms
    refuses invalid exclusion configuration {"exclude":null}TypeScript curation importspassed1.45 ms
    refuses invalid exclusion configuration {"exclude":"code"}TypeScript curation importspassed1.36 ms
    refuses invalid exclusion configuration {"exclude":[1]}TypeScript curation importspassed1.27 ms
    refuses invalid exclusion configuration {"exclude":[""]}TypeScript curation importspassed1.24 ms
    refuses invalid exclusion configuration {"exclude":[" "]}TypeScript curation importspassed1.41 ms
    refuses invalid exclusion configuration {"exclude":["."]}TypeScript curation importspassed1.39 ms
    refuses invalid exclusion configuration {"exclude":["./"]}TypeScript curation importspassed1.27 ms
    refuses invalid exclusion configuration {"exclude":["../other"]}TypeScript curation importspassed3.83 ms
    refuses invalid exclusion configuration {"exclude":["code/../../other"]}TypeScript curation importspassed1.26 ms
    refuses invalid exclusion configuration {"exclude":["/code"]}TypeScript curation importspassed1.31 ms
    refuses invalid exclusion configuration {"exclude":["C:/code"]}TypeScript curation importspassed1.25 ms
    refuses invalid exclusion configuration {"exclude":["C:code"]}TypeScript curation importspassed2.18 ms
    refuses invalid exclusion configuration {"exclude":["code\\leaf.ts"]}TypeScript curation importspassed3.76 ms
    refuses invalid configuration {}TypeScript curation importspassed3.56 ms
    refuses invalid configuration {"adapter":"other","tsconfig":"tsconfig.json","roots":["code"]}TypeScript curation importspassed2.13 ms
    refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":[]}TypeScript curation importspassed1.27 ms
    refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":[1]}TypeScript curation importspassed1.22 ms
    refuses invalid configuration {"adapter":"typescript","tsconfig":"../tsconfig.json","roots":["code"]}TypeScript curation importspassed1.27 ms
    refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":["../"]}TypeScript curation importspassed1.16 ms
    refuses invalid configuration {"adapter":"typescript","tsconfig":"tsconfig.json","roots":["/src"]}TypeScript curation importspassed3.27 ms
    refuses the source root missing by its configured pathTypeScript curation importspassed1.56 ms
    refuses the source root code/leaf.ts by its configured pathTypeScript curation importspassed1.88 ms
    builds the imports file atomically and leaves the curated graph byte-identicalTypeScript curation importspassed942.63 ms
    writes no imports file without the flag and preserves an existing file even on build failureTypeScript curation importspassed25.59 ms
    removes requested stale imports after a configuration or extraction failureTypeScript curation importspassed181.56 ms
    refuses invalid build flag argv "build"TypeScript curation importspassed0.19 ms
    refuses invalid build flag argv "build"TypeScript curation importspassed0.09 ms
    refuses invalid build flag argv "build"TypeScript curation importspassed0.05 ms
    refuses invalid build flag argv "build"TypeScript curation importspassed0.04 ms
    refuses invalid build flag argv "validate"TypeScript curation importspassed0.04 ms
    refuses invalid build flag argv "view"TypeScript curation importspassed0.03 ms
    refuses invalid build flag argv "census"TypeScript curation importspassed0.03 ms
    refuses invalid build flag argv "mermaid"TypeScript curation importspassed0.03 ms
    refuses invalid build flag argv "gherkin"TypeScript curation importspassed0.12 ms
    completes over the repository src and lists a known build-command importTypeScript curation importspassed2250.37 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.impact-graph

Scroll horizontally to read the whole drawing.

Requirement drawing for spec:consumers.impact-graphsatisfies · anchoredsatisfies · anchoredsatisfies · anchoredsatisfies · anchoredrefines · declaredrefines · declaredrefines · declaredverifies · anchoredverifies · anchoredverifies · anchoredIntended Specsspec:consumers.impact-graphMechanical code structurestays inferred and apartfrom curated intent…consumers.impact-graphdeclared Specspec:consumers.impact-graph.curation-assistFile-level imports showwhere curation is missing…consumers.impact-graph.curation-assistdeclared Specspec:consumers.impact-graph.symbol-reachExhaustive symbol reachwaits for alanguage-neutral identity…consumers.impact-graph.symbol-reachdeclared Spec · no satisfyingbindingSatisfying or referencingunitsimpl:protocol.build-importsopt-in imports publicationin the build command…protocol.build-importsanchored codeimpl:protocol.curation-recipeasserts the curation reportover external inferredimportsimpl:protocol.curation-recipeanchored codeimpl:protocol.typescript-importsTypeScript file imports andbarrel reach for externalcuration input…protocol.typescript-importsanchored codeTest or oracle bindingstest:protocol.curation-importstest:protocol.curation-imports…protocol.curation-importsanchored test binding ·binding presenttest:protocol.curation-recipetest:protocol.curation-recipetest:protocol.curation-recipeanchored test binding ·binding presentOutside the selected setspec:consumers.projections-modelProjections fan out fromone graph without becomingtruth stores…consumers.projections-modeldeclared Spec
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:7

    Component: 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
Relations of spec:consumers.impact-graph
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

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingCarrier reification derives the one graph
spec:extraction.derive-graph · resolves
declaredNoneNone
refines · outgoingProjections fan out from one graph without becoming truth stores
spec:consumers.projections-model · resolves
declaredNoneNone
refines · incomingFile-level imports show where curation is missing
spec:consumers.impact-graph.curation-assist · resolves
declaredNoneNone
refines · incomingExhaustive symbol reach waits for a language-neutral identity
spec:consumers.impact-graph.symbol-reach · resolves
declaredNoneNone

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.