Spec Studio

Carrier reification derives the one graph

spec:extraction.derive-graphUse Case / Behavior · epicready floor ready

Changed since the base graph base da4b141: altitude; relation.refines:spec:protocol.self-hosting

Base input: schema 0.11.0, 405 Specs.

Packs: pack:self-hosting-v1

Design: 6 design entries · 4 pinned declarations · 2 decisions

Findings: no errors, no warnings

specs/extraction/derive-graph.sdp.md

No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.

The graph is the current projection of the repository at a commit. Git holds lifecycle history, so removed records disappear from the current graph. A current supersedes relation, from a decision to the one it replaces, is the only relation between a record and its predecessor, and it lasts only while both records exist.

Intent
outcome
Expose one carrier-neutral derivation seam.
Behavior
rule line 27 · specs/extraction/derive-graph.sdp.md:27
Each extraction feeds reified carriers to deriveGraph; no consumer derives a graph of its own from source.
rule line 28 · specs/extraction/derive-graph.sdp.md:28
The graph payload carries schemaVersion, flat arrays of typed nodes and edges, and the location table. Hierarchy and containment are edges, never nested nodes.
rule line 29 · specs/extraction/derive-graph.sdp.md:29
Each derived node and edge uses the claim and endpoint row in Design. Kind restrictions on authored relations remain those of the relations Spec; binding eligibility remains that of the anchors and delivery-facts Specs.
rule line 30 · specs/extraction/derive-graph.sdp.md:30
The edge list is closed at twelve types: the six declared relations refines, dependsOn, constrainedBy, decidedBy, verifies, and supersedes, and the six derived edges belongsTo, satisfies, models, memberOf, uses, and references.
rule line 31 · specs/extraction/derive-graph.sdp.md:31
A references edge is anchored, runs from a CodeNode to the Spec its code answers to, and contributes no delivery fact.
rule line 32 · specs/extraction/derive-graph.sdp.md:32
Delivery facts are computed node facts: a resolving satisfies edge contributes implemented, and an enabled direct verifier contributes has-verifier only to its target.
rule line 33 · specs/extraction/derive-graph.sdp.md:33
Mechanical file-level imports carry inferred as external input apart from the curated graph. They remain advisory and derive no uses, memberOf or satisfies edge and no delivery fact in that graph.
rule line 34 · specs/extraction/derive-graph.sdp.md:34
The key order of design, ui, and model.terms is the authored order and part of the graph contract.
rule line 35 · specs/extraction/derive-graph.sdp.md:35
A Pack node carries its manifest's members in authored order, and the belongsTo edges that re-express them keep the global edge sort.

9 unkeyed rules.

Design

One read model. Carrier reifiers translate each supported syntax into common reified input. Graph derivation joins that input with bindings and computes delivery facts before consumers read it. Adding a carrier changes the input boundary; validators and projections continue to consume the same graph. The shared delivery-fact policy belongs to the graph component so graph construction does not define a competing policy.

authoredEdges line 41 · specs/extraction/derive-graph.sdp.md:41
refines, dependsOn, constrainedBy, decidedBy and supersedes carry declared and run Primitive to Primitive.

no citation recorded

verifiesEdge line 42 · specs/extraction/derive-graph.sdp.md:42
Declared verifies runs Primitive to Primitive; anchored verifies runs from a test Anchor to a Primitive. Enabled-verifier eligibility and conferral are owned by the delivery-facts Spec.
bindingEdges line 43 · specs/extraction/derive-graph.sdp.md:43
satisfies and references carry anchored and run CodeNode to Primitive; models carries anchored and runs from an oracle Anchor to a Primitive.

no citation recorded

structureEdges line 44 · specs/extraction/derive-graph.sdp.md:44
memberOf and uses carry anchored and run CodeNode to CodeNode; structural endpoint restrictions are owned by the anchors Spec.

no citation recorded

membershipEdge line 45 · specs/extraction/derive-graph.sdp.md:45
belongsTo carries declared and runs Primitive to Pack, derived from the manifest.

no citation recorded

nodeClaims line 46 · specs/extraction/derive-graph.sdp.md:46
Primitive and Pack carry declared; Anchor and CodeNode carry anchored.
Verification

Verifier bindings

  • test:protocol.extract · extraction contracts verify graph derivation · anchored · test anchor binding present · test/extract.test.ts:1395

    External run evidence from test/extract.test.ts

    Test anchors: test:protocol.delivery-facts, test:protocol.extract. Specs verified by those bindings: spec:extraction.delivery-facts, spec:extraction.derive-graph.

    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

    NameSuiteResultDuration
    invalid-non-static-id: envelope hard error; the static sibling still extracts (L3)extraction corporapassed29.66 ms
    invalid-malformed-id: a static id failing the id grammar is an invalid-id hard errorextraction corporapassed3.7 ms
    invalid-non-static-section: that one property drops with a warning; the spec survivesextraction corporapassed3.96 ms
    invalid-hand-authored-satisfies-edge: a raw relations[] entry is an envelope errorextraction corporapassed3.81 ms
    duplicate-id: TypeScript and Markdown sites are excluded before graph derivation; the healthy sibling remainsextraction corporapassed12.46 ms
    dangling-relation: the edge is emitted, not dropped; referential integrity flags itextraction corporapassed9.03 ms
    unrecognized-statement: the stray statement warns and is ignored; the spec extractsextraction corporapassed6.46 ms
    invalid-reserved-property: a hand-authored delivery fact at the top level is an envelope hard error; the sibling survives (L3)extraction corporapassed4.95 ms
    unrecognized-property: a typoed section name drops with a warning; the spec survives without itextraction corporapassed2.84 ms
    unrecognized in-section property: warns before canonical serialization drops itextraction corporapassed2.94 ms
    model term named description: both carriers extract it as an ordinary term in its authored placeextraction corporapassed6.45 ms
    integer-like keys: refuses numeric and string integer-like names in design and keeps the Spec with its other keysextraction corporapassed2.36 ms
    integer-like keys: refuses an integer-like name in uiextraction corporapassed1.87 ms
    integer-like keys: refuses an integer-like name in model termsextraction corporapassed1.74 ms
    integer-like keys: the string keys 00 and 01 in design are lawful and keep their values and orderextraction corporapassed1.76 ms
    integer-like keys: the string keys 00 and 01 in ui are lawful and keep their values and orderextraction corporapassed1.61 ms
    integer-like keys: the string keys 00 and 01 in model terms are lawful and keep their values and orderextraction corporapassed1.72 ms
    integer-like keys: refuses the key in design whatever its value (a static value), with one error and the Spec keptextraction corporapassed1.38 ms
    integer-like keys: refuses the key in design whatever its value (a call), with one error and the Spec keptextraction corporapassed1.32 ms
    integer-like keys: refuses the key in design whatever its value (an unbound identifier), with one error and the Spec keptextraction corporapassed1.28 ms
    integer-like keys: refuses the key in design whatever its value (a template with an expression), with one error and the Spec keptextraction corporapassed1.5 ms
    integer-like keys: refuses the key in design whatever its value (an object with a non-static entry), with one error and the Spec keptextraction corporapassed1.54 ms
    integer-like keys: refuses the key in ui whatever its value (a static value), with one error and the Spec keptextraction corporapassed1.12 ms
    integer-like keys: refuses the key in ui whatever its value (a call), with one error and the Spec keptextraction corporapassed1.22 ms
    integer-like keys: refuses the key in ui whatever its value (an unbound identifier), with one error and the Spec keptextraction corporapassed1.36 ms
    integer-like keys: refuses the key in ui whatever its value (a template with an expression), with one error and the Spec keptextraction corporapassed1.26 ms
    integer-like keys: refuses the key in ui whatever its value (an object with a non-static entry), with one error and the Spec keptextraction corporapassed1.52 ms
    integer-like keys: refuses the key in model terms whatever its value (a static value), with one error and the Spec keptextraction corporapassed5.45 ms
    integer-like keys: refuses the key in model terms whatever its value (a call), with one error and the Spec keptextraction corporapassed1.93 ms
    integer-like keys: refuses the key in model terms whatever its value (an unbound identifier), with one error and the Spec keptextraction corporapassed1.12 ms
    integer-like keys: refuses the key in model terms whatever its value (a template with an expression), with one error and the Spec keptextraction corporapassed1.15 ms
    integer-like keys: refuses the key in model terms whatever its value (an object with a non-static entry), with one error and the Spec keptextraction corporapassed1.15 ms
    integer-like keys: refuses design's integer-like name on a method, one error per member and the Spec keptextraction corporapassed1.57 ms
    integer-like keys: refuses design's integer-like name on a string-named method, one error per member and the Spec keptextraction corporapassed1.18 ms
    integer-like keys: refuses design's integer-like name on a numeric-separator-named method, one error per member and the Spec keptextraction corporapassed1.13 ms
    integer-like keys: refuses design's integer-like name on a getter, one error per member and the Spec keptextraction corporapassed1.2 ms
    integer-like keys: refuses design's integer-like name on a numeric-separator-named getter, one error per member and the Spec keptextraction corporapassed1.24 ms
    integer-like keys: refuses design's integer-like name on a setter, one error per member and the Spec keptextraction corporapassed1.68 ms
    integer-like keys: refuses design's integer-like name on a numeric-separator-named setter, one error per member and the Spec keptextraction corporapassed1.63 ms
    integer-like keys: refuses design's integer-like name on a getter and a setter of one name, one error per member and the Spec keptextraction corporapassed1.37 ms
    integer-like keys: refuses ui's integer-like name on a method, one error per member and the Spec keptextraction corporapassed1.41 ms
    integer-like keys: refuses ui's integer-like name on a string-named method, one error per member and the Spec keptextraction corporapassed4.25 ms
    integer-like keys: refuses ui's integer-like name on a numeric-separator-named method, one error per member and the Spec keptextraction corporapassed1.34 ms
    integer-like keys: refuses ui's integer-like name on a getter, one error per member and the Spec keptextraction corporapassed3.72 ms
    integer-like keys: refuses ui's integer-like name on a numeric-separator-named getter, one error per member and the Spec keptextraction corporapassed1.05 ms
    integer-like keys: refuses ui's integer-like name on a setter, one error per member and the Spec keptextraction corporapassed1.12 ms
    integer-like keys: refuses ui's integer-like name on a numeric-separator-named setter, one error per member and the Spec keptextraction corporapassed1.03 ms
    integer-like keys: refuses ui's integer-like name on a getter and a setter of one name, one error per member and the Spec keptextraction corporapassed1.22 ms
    integer-like keys: refuses model terms's integer-like name on a method, one error per member and the Spec keptextraction corporapassed1.1 ms
    integer-like keys: refuses model terms's integer-like name on a string-named method, one error per member and the Spec keptextraction corporapassed1.3 ms
    integer-like keys: refuses model terms's integer-like name on a numeric-separator-named method, one error per member and the Spec keptextraction corporapassed1.4 ms
    integer-like keys: refuses model terms's integer-like name on a getter, one error per member and the Spec keptextraction corporapassed1.35 ms
    integer-like keys: refuses model terms's integer-like name on a numeric-separator-named getter, one error per member and the Spec keptextraction corporapassed1.26 ms
    integer-like keys: refuses model terms's integer-like name on a setter, one error per member and the Spec keptextraction corporapassed1.38 ms
    integer-like keys: refuses model terms's integer-like name on a numeric-separator-named setter, one error per member and the Spec keptextraction corporapassed1.46 ms
    integer-like keys: refuses model terms's integer-like name on a getter and a setter of one name, one error per member and the Spec keptextraction corporapassed1.15 ms
    integer-like keys: a numeric name in design whose key is not integer-like (1.5, value "static") drops as a non-static nameextraction corporapassed1.91 ms
    integer-like keys: a numeric name in design whose key is not integer-like (1.5, value compute()) drops as a non-static nameextraction corporapassed0.86 ms
    integer-like keys: a numeric name in design whose key is not integer-like (0.0000001, value "static") drops as a non-static nameextraction corporapassed1.22 ms
    integer-like keys: a numeric name in design whose key is not integer-like (0.0000001, value compute()) drops as a non-static nameextraction corporapassed1.16 ms
    integer-like keys: a numeric name in design whose key is not integer-like (0.000_000_1, value "static") drops as a non-static nameextraction corporapassed1.16 ms
    integer-like keys: a numeric name in design whose key is not integer-like (0.000_000_1, value compute()) drops as a non-static nameextraction corporapassed1.18 ms
    integer-like keys: a numeric name in design whose key is not integer-like (1e21, value "static") drops as a non-static nameextraction corporapassed1.13 ms
    integer-like keys: a numeric name in design whose key is not integer-like (1e21, value compute()) drops as a non-static nameextraction corporapassed1.14 ms
    integer-like keys: a numeric name in design whose key is not integer-like (1_0e21, value "static") drops as a non-static nameextraction corporapassed5.04 ms
    integer-like keys: a numeric name in design whose key is not integer-like (1_0e21, value compute()) drops as a non-static nameextraction corporapassed1.29 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (1.5, value "static") drops as a non-static nameextraction corporapassed1.19 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (1.5, value compute()) drops as a non-static nameextraction corporapassed1.15 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (0.0000001, value "static") drops as a non-static nameextraction corporapassed1.21 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (0.0000001, value compute()) drops as a non-static nameextraction corporapassed1.25 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (0.000_000_1, value "static") drops as a non-static nameextraction corporapassed1.15 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (0.000_000_1, value compute()) drops as a non-static nameextraction corporapassed1.2 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (1e21, value "static") drops as a non-static nameextraction corporapassed1.08 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (1e21, value compute()) drops as a non-static nameextraction corporapassed1.25 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (1_0e21, value "static") drops as a non-static nameextraction corporapassed1.13 ms
    integer-like keys: a numeric name in ui whose key is not integer-like (1_0e21, value compute()) drops as a non-static nameextraction corporapassed1.12 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (1.5, value "static") drops as a non-static nameextraction corporapassed1.17 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (1.5, value compute()) drops as a non-static nameextraction corporapassed1.1 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (0.0000001, value "static") drops as a non-static nameextraction corporapassed1.07 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (0.0000001, value compute()) drops as a non-static nameextraction corporapassed0.92 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (0.000_000_1, value "static") drops as a non-static nameextraction corporapassed1.17 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (0.000_000_1, value compute()) drops as a non-static nameextraction corporapassed1.19 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (1e21, value "static") drops as a non-static nameextraction corporapassed1.12 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (1e21, value compute()) drops as a non-static nameextraction corporapassed1.08 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (1_0e21, value "static") drops as a non-static nameextraction corporapassed1.1 ms
    integer-like keys: a numeric name in model terms whose key is not integer-like (1_0e21, value compute()) drops as a non-static nameextraction corporapassed1.1 ms
    integer-like keys: a numeric name in design whose key is integer-like (1e3, value "static") is refused under that keyextraction corporapassed1.3 ms
    integer-like keys: a numeric name in design whose key is integer-like (1e3, value compute()) is refused under that keyextraction corporapassed1.37 ms
    integer-like keys: a numeric name in design whose key is integer-like (0x10, value "static") is refused under that keyextraction corporapassed1.08 ms
    integer-like keys: a numeric name in design whose key is integer-like (0x10, value compute()) is refused under that keyextraction corporapassed1.07 ms
    integer-like keys: a numeric name in design whose key is integer-like (1_0, value "static") is refused under that keyextraction corporapassed1.04 ms
    integer-like keys: a numeric name in design whose key is integer-like (1_0, value compute()) is refused under that keyextraction corporapassed0.85 ms
    integer-like keys: a numeric name in design whose key is integer-like (1_000, value "static") is refused under that keyextraction corporapassed0.82 ms
    integer-like keys: a numeric name in design whose key is integer-like (1_000, value compute()) is refused under that keyextraction corporapassed0.79 ms
    integer-like keys: a numeric name in ui whose key is integer-like (1e3, value "static") is refused under that keyextraction corporapassed0.76 ms
    integer-like keys: a numeric name in ui whose key is integer-like (1e3, value compute()) is refused under that keyextraction corporapassed1.11 ms
    integer-like keys: a numeric name in ui whose key is integer-like (0x10, value "static") is refused under that keyextraction corporapassed1.22 ms
    integer-like keys: a numeric name in ui whose key is integer-like (0x10, value compute()) is refused under that keyextraction corporapassed1.08 ms
    integer-like keys: a numeric name in ui whose key is integer-like (1_0, value "static") is refused under that keyextraction corporapassed5.47 ms
    integer-like keys: a numeric name in ui whose key is integer-like (1_0, value compute()) is refused under that keyextraction corporapassed1.29 ms
    integer-like keys: a numeric name in ui whose key is integer-like (1_000, value "static") is refused under that keyextraction corporapassed1.15 ms
    integer-like keys: a numeric name in ui whose key is integer-like (1_000, value compute()) is refused under that keyextraction corporapassed1.03 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (1e3, value "static") is refused under that keyextraction corporapassed0.89 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (1e3, value compute()) is refused under that keyextraction corporapassed1.28 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (0x10, value "static") is refused under that keyextraction corporapassed1.28 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (0x10, value compute()) is refused under that keyextraction corporapassed1.22 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (1_0, value "static") is refused under that keyextraction corporapassed1.04 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (1_0, value compute()) is refused under that keyextraction corporapassed0.83 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (1_000, value "static") is refused under that keyextraction corporapassed1.35 ms
    integer-like keys: a numeric name in model terms whose key is integer-like (1_000, value compute()) is refused under that keyextraction corporapassed0.99 ms
    reserved camel delivery fact: rejects hasVerifier at the TS carrier envelope (R-6 parity)extraction corporapassed0.96 ms
    retains a nested __proto__ model term as own string contentextraction corporapassed0.94 ms
    retains an object-valued nested __proto__ term without prototype pollutionextraction corporapassed1.48 ms
    retains a Markdown __proto__ Model term through extract and serializeGraphextraction corporapassed1.8 ms
    id-shaped-string-content: a raw id-shaped string in section content is prose — kept, edge-free, finding-freeextraction corporapassed1.54 ms
    invalid-parse-error: a parse-broken file is excluded whole, loudly, on both surfaces; siblings survive (L3)extraction corporapassed3.29 ms
    invalid-missing-envelope-fields: every absent required field reports in one pass — spec, pack, and anchor carriersextraction corporapassed3.54 ms
    invalid-duplicate-property: a property authored twice in one carrier fails the envelope loudly; the last value never winsextraction corporapassed2.49 ms
    ref-in-section-content: an id builder in section content drops the owning property (MD-10)extraction corporapassed1.7 ms
    invalid-wrong-builder: an id wrapping the wrong builder is an invalid-id hard error — the builder's contract, restated staticallyextraction corporapassed1.41 ms
    opaque-envelope-entries: a shorthand or spread entry never double-reports its fields as missingextraction corporapassed1.68 ms
    duplicate-section-property: a repeated name inside section content drops with a warning; the first authored value survivesextraction corporapassed1.25 ms
    entry-address-slots: every TypeScript id slot refuses an entry address, and no # reaches the graphextraction corporapassed11.34 ms
    entry-address-slots: anchor verifies refuses an entry address, and no # reaches the graphextraction corporapassed5.48 ms
    entry-address-slots: anchor models refuses an entry address, and no # reaches the graphextraction corporapassed2.5 ms
    entry-address-slots: anchor component refuses an entry address, and no # reaches the graphextraction corporapassed2.13 ms
    entry-address-slots: anchor uses refuses an entry address, and no # reaches the graphextraction corporapassed2.47 ms
    entry-address-slots: the Pack identity refuses an entry address, and no # reaches the graphextraction corporapassed2.18 ms
    entry-address-slots: the test anchor identity refuses an entry address, and no # reaches the graphextraction corporapassed2.08 ms
    entry-address-slots: the oracle anchor identity refuses an entry address, and no # reaches the graphextraction corporapassed2.5 ms
    entry-address-slots: the API anchor identity refuses an entry address, and no # reaches the graphextraction corporapassed2.58 ms
    routes the five defused target documents through real discovery with their exact nodesMarkdown carrier discoverypassed6.88 ms
    derives semantically equivalent accepted subsets through extract and serializeGraphMarkdown carrier discoverypassed2.69 ms
    excludes a malformed Markdown carrier while retaining its healthy TypeScript siblingMarkdown carrier discoverypassed1.87 ms
    reports same-ID TypeScript and Markdown carriers at both sites without deriving eitherMarkdown carrier discoverypassed2.51 ms
    anchored-binding: the full ladder — anchored edges and delivery facts per `spec:extraction.delivery-facts`anchor extraction corporapassed4.71 ms
    unenabled-verifier: a below-ready example confers nothing; a wrong-kind verifier still warnsanchor extraction corporapassed2.41 ms
    invalid-non-static-anchor: envelope hard error; the static sibling still extracts (L3)anchor extraction corporapassed3.08 ms
    invalid-anchor-namespace: a code anchor with a test: id is an invalid-id hard erroranchor extraction corporapassed1.46 ms
    duplicate-anchor-id: both sites reported (L2); neither enters the graph; the counts record bothanchor extraction corporapassed6.57 ms
    dangling-anchor: the edge is emitted, no fact is conferred, and referential integrity flags itanchor extraction corporapassed1.68 ms
    misplaced-anchor: authoring calls outside their surface warn and are not extractedanchor extraction corporapassed1.94 ms
    non-static-anchor-label: the label drops with a warning; the binding survives wholeanchor extraction corporapassed1.53 ms
    namespace-import: carriers authored as `ns.builder(…)` extract on both surfaces — the full anchored ladderimport-surface and discovery corporapassed4.32 ms
    namespace-misplaced-authoring: the misplaced-authoring sweep sees the property-access spelling (L2)import-surface and discovery corporapassed1.55 ms
    dot-directory-skipped: discovery never descends into a dot-directory, so a stray copy raises no duplicate-id noiseimport-surface and discovery corporapassed2.16 ms
    shadowed-namespace-local: a parameter or local shadowing the import is somebody else's value — no spurious misplaced-authoringimport-surface and discovery corporapassed3.18 ms
    default-import: a binding authored through a default-import local extracts — it never silently falls out (L2)import-surface and discovery corporapassed1.2 ms
    consumer exclusions are case-sensitive root-relative prefixes applied before either surface classifiesimport-surface and discovery corporapassed6.17 ms
    rejects the invalid consumer exclusion ""import-surface and discovery corporapassed0.75 ms
    rejects the invalid consumer exclusion "."import-surface and discovery corporapassed0.24 ms
    rejects the invalid consumer exclusion "./explorations"import-surface and discovery corporapassed0.17 ms
    rejects the invalid consumer exclusion "explorations/"import-surface and discovery corporapassed0.25 ms
    rejects the invalid consumer exclusion "/explorations"import-surface and discovery corporapassed0.29 ms
    rejects the invalid consumer exclusion "C:/work/specs"import-surface and discovery corporapassed0.26 ms
    rejects the invalid consumer exclusion "../x"import-surface and discovery corporapassed0.23 ms
    rejects the invalid consumer exclusion "a/../b"import-surface and discovery corporapassed0.28 ms
    rejects the invalid consumer exclusion "a/./b"import-surface and discovery corporapassed0.29 ms
    rejects the invalid consumer exclusion "a/."import-surface and discovery corporapassed0.24 ms
    rejects the invalid consumer exclusion "a//b"import-surface and discovery corporapassed0.24 ms
    rejects the invalid consumer exclusion "a\\b"import-surface and discovery corporapassed0.26 ms
    invalid-ready-with-unresolved-dependency: the conformance error and the floor failure both fire — two families, two statementsgraph-validator corporapassed2.45 ms
    invalid-ready-with-target-below-defined: every reference resolves; the one error is the floor clausegraph-validator corporapassed2.84 ms
    invalid-hand-authored-delivery-fact-in-section: the smuggled key fails over the graph end-to-end (MD-16)graph-validator corporapassed2 ms
    invalid-duplicate-pack-member: a duplicated manifest entry is a pack-coherence errorgraph-validator corporapassed2.93 ms
    invalid-non-model-modelref: a resolving but wrong-kind modelRef is a pack-coherence errorgraph-validator corporapassed2.42 ms
    non-example-verifier: a declared verifies from a non-example kind is surfaced, never gatedgraph-validator corporapassed2.22 ms
    orphan-spec: no relations and nothing pointing at it — a warning, never a gategraph-validator corporapassed1.47 ms
    ready-without-verifier: the cleared floor plus the surfaced gap — informative onlygraph-validator corporapassed2.59 ms
    two independent extractions of the example serialize byte-identicallydeterminism self-check (rebuild twice, byte-compare — distinct from the golden oracle)passed52.33 ms
    materializes a defused .sdp.gherkin carrier and leaves ordinary .feature beside it on diskGherkin carrier suffix discoverypassed0.45 ms
    discovers and routes only .sdp.gherkin; an ordinary Cucumber Feature never enters specFiles or poisons extractionGherkin carrier suffix discoverypassed2.45 ms
    treats a root of only ordinary .feature files as an empty authored model at the extractorGherkin carrier suffix discoverypassed0.39 ms
    admits a lawful key beside prose and unkeyed questionsopen question keys in the TypeScript carrierpassed1.37 ms
    drops a key off the grammar with an error and keeps the question and the Specopen question keys in the TypeScript carrierpassed3.67 ms
    drops a key an earlier question carries, keeping the firstopen question keys in the TypeScript carrierpassed1.96 ms
    derives a graph where only the first of a repeated key remainsopen question keys in the TypeScript carrierpassed1.37 ms
    derives ready when no question blocks — the control for every case belowopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed2.9 ms
    strips a key that is null and keeps the question and its blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed2.23 ms
    strips a key that is undefined and keeps the question and its blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed4.91 ms
    strips a key that is a function and keeps the question and its blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed1.78 ms
    strips a key that is an identifier and keeps the question and its blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed1.48 ms
    strips a key that is a template with a substitution and keeps the question and its blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed1.54 ms
    drops a repeated key alone and keeps the blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed2.27 ms
    admits an omitted key beside the blocking siblingopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed2.21 ms
    keeps every other property strict: a non-static question still drops the arrayopen question keys in the TypeScript carrier > a non-static key drops alone and the blocking sibling holds readinesspassed2.27 ms
Design view

Requirement drawing

Requirement drawing for spec:extraction.derive-graph

Shown as text: this drawing exceeds the height budget of 2000 pixels after folding.

The diagram as text
  • spec:extraction.derive-graph: Carrier reification derives the one graph · declared Spec
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow · declared Spec
  • spec:extraction.claim-taxonomy: Graph claims retain their epistemic source · declared Spec
  • spec:extraction.delivery-facts: Resolving bindings confer direct delivery facts · declared Spec
  • spec:extraction.determinism: Committed source derives byte-identical output · declared Spec
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address · declared Spec
  • spec:extraction.entry-locations: The graph records where each addressable entry is written · declared Spec
  • spec:extraction.excludes: Extraction exclusions are strict consumer input · declared Spec
  • spec:extraction.open-section-order: Serialization preserves authored entry order · declared Spec
  • spec:extraction.pack-member-order: A Pack node keeps its members in authored order · declared Spec
  • spec:extraction.schema-versioning: The graph declares its schema version · declared Spec
  • spec:observation.runtime-overlay: Runtime observations can close the liveness loop · declared Spec · no satisfying binding
  • spec:extraction.build-pipeline.same-invocation: One query invocation shares its extracted graph and validation result · declared Spec
  • spec:extraction.entry-citations.code-comment-cites-declaration: A code file's comment cites a declaration without reading as a test line · declared Spec
  • spec:extraction.entry-citations.test-title-cites-declaration: A test title in an anchored file cites a pinned declaration · declared Spec
  • spec:extraction.entry-citations.unanchored-file-unread: A file that carries no anchor is not read for citations · declared Spec
  • spec:extraction.entry-citations.unresolved-citation: A citation of an entry its Spec lacks reports through the recipe, never as a Protocol finding · declared Spec
  • spec:extraction.excludes.refused-path: A Windows-drive absolute path is refused rather than normalized · declared Spec
  • spec:extraction.excludes.segment-boundary: A prefix excludes its own tree and leaves a similar sibling standing · declared Spec
  • spec:extraction.pack-member-order.manifest-order-kept: A manifest's member order survives into the graph and the reader · declared Spec
  • spec:extraction.schema-versioning.declared-version: A derived payload carries a schema version its consumer can read · declared Spec
  • spec:decisions.exclusion-contract: Consumer exclusions stay exact · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • spec:extraction.regenerability: Generated artifacts are disposable projections · declared Spec
  • component:protocol.cli: entry points, shared build and publication · anchored code · src/cli/build-command.ts:32
  • component:protocol.extract: the carrier and source pipeline · anchored code · src/extract/index.ts:192
  • component:protocol.graph: the one graph and its semantic decisions · anchored code · src/graph/schema.ts:34
  • impl:protocol.build-pipeline-emit: stages build outputs, checks determinism and invalidates projections · anchored code · src/cli/build-command.ts:251
  • impl:protocol.build-pipeline-query: runQuery reads one body, derives the graph once for the reader, raw graph and report, and prints the return or refuses on stderr · anchored code · src/cli/q-command.ts:212
  • impl:protocol.carrier-reification: reifies each canonical carrier surface into specs, packs, and findings · anchored code · src/extract/carrier.ts:54
  • impl:protocol.delivery-facts: computes delivery facts from resolving binding edges · anchored code · src/graph/delivery-facts.ts:65
  • impl:protocol.derive-graph: derives the graph from reified carriers and bindings · anchored code · src/extract/derive.ts:241
  • impl:protocol.discover-files: realizes exclusion-aware discovery (normalizeExcludes / discoverFiles) · anchored code · src/extract/discover.ts:35
  • impl:protocol.entry-address-resolution: resolves entry addresses for prose validation and citation readers · anchored code · src/graph/entry-address.ts:6
  • impl:protocol.entry-citation-reader: resolves citations and joins file anchors with direct and example-based test verification · anchored code · src/reader/entry-citations.ts:19
  • impl:protocol.entry-citation-recipe: asserts realization of Entry citations in docs/agent-surface/recipes.md · anchored code · test/recipes.test.ts:7008
  • impl:protocol.entry-citation-scan: records prose-mention tokens with addresses in anchored source files · anchored code · src/extract/entry-citations.ts:6
  • impl:protocol.entry-location-recipes: asserts realization of the entry lines the entry search and address resolution recipes return · anchored code · test/recipes.test.ts:5979
  • impl:protocol.entry-locations: builds the carrier entry location table · anchored code · src/extract/derive.ts:78
  • impl:protocol.exclusion-surface: strict root-relative exclusion input for both extraction surfaces · anchored code · src/extract/index.ts:43
  • impl:protocol.extract: extracts authored carriers and bindings into one graph · anchored code · src/extract/index.ts:208
  • impl:protocol.markdown-yaml-policy: bounded YAML scalars and relation-target forms · anchored code · src/extract/markdown-yaml-policy.ts:33
  • impl:protocol.open-section-order: preserves authored open-section and model-term order and Pack field order · anchored code · src/extract/serialize.ts:105
  • impl:protocol.pack-coherence: checks Pack membership agreement and uniqueness and model-reference kinds · anchored code · src/validate/validators.ts:1102
  • impl:protocol.pack-design: the Pack design helpers and the Pack context assembly they serve · anchored code · src/reader/reader.ts:499
  • impl:protocol.pack-design-page: renders the Pack page from the Pack design · anchored code · src/projections/design-review-pages.ts:120
  • impl:protocol.pack-member-order: keeps manifest member order on the Pack node · anchored code · src/extract/derive.ts:153
  • impl:protocol.reader: typed graph queries, entry adapters and context joins · anchored code · src/reader/reader.ts:687
  • impl:protocol.schema-version: versioned graph nodes, claims, edges and located evidence · anchored code · src/graph/schema.ts:9
  • impl:protocol.static-reification: reifies authored carriers from the AST and never evaluates them · anchored code · src/extract/reify.ts:2139
  • oracle:protocol.entry-citations: oracle:protocol.entry-citations · anchored oracle binding · test/entry-citations.test.ts:36
  • test:protocol.build-pipeline.same-invocation: the same-invocation point verifies the query extraction and validation seam · anchored test binding · binding present · test/self-hosting-extraction.test.ts:169
  • test:protocol.claim-taxonomy: schema and extraction tests verify claim categories and inheritance · anchored test binding · binding present · test/graph-schema.test.ts:34
  • test:protocol.delivery-facts: verifies the delivery-fact conferral ladder and fail-closed posture · anchored test binding · binding present · test/extract.test.ts:1402
  • test:protocol.entry-citations.code-comment-cites-declaration: test:protocol.entry-citations.code-comment-cites-declaration · anchored test binding · binding present · test/entry-citations.test.ts:196
  • test:protocol.entry-citations.test-title-cites-declaration: test:protocol.entry-citations.test-title-cites-declaration · anchored test binding · binding present · test/entry-citations.test.ts:191
  • test:protocol.entry-citations.unanchored-file-unread: test:protocol.entry-citations.unanchored-file-unread · anchored test binding · binding present · test/entry-citations.test.ts:201
  • test:protocol.entry-citations.unresolved-citation: test:protocol.entry-citations.unresolved-citation · anchored test binding · binding present · test/entry-citations.test.ts:206
  • test:protocol.entry-locations: test:protocol.entry-locations · anchored test binding · binding present · test/entry-locations.test.ts:14
  • test:protocol.excludes.refused-path: the refused-path point verifies the malformed-exclusion refusal · anchored test binding · binding present · test/self-hosting-extraction.test.ts:300
  • test:protocol.excludes.segment-boundary: the segment-boundary point verifies the exact-prefix exclusion rule · anchored test binding · binding present · test/self-hosting-extraction.test.ts:285
  • test:protocol.extract: extraction contracts verify graph derivation · anchored test binding · binding present · test/extract.test.ts:1395
  • test:protocol.extraction-determinism: clean-repo pipeline determinism verifies byte-identical output · anchored test binding · binding present · test/cli.test.ts:2348
  • test:protocol.open-section-order: verifies serialized authored entry order · anchored test binding · binding present · test/graph-schema.test.ts:27
  • test:protocol.pack-member-order: verifies manifest order in the graph, reader and Pack page · anchored test binding · binding present · test/self-hosting-pack-member-order.test.ts:108
  • test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present · test/roadmap-priority.test.ts:44
  • test:protocol.schema-versioning.declared-version: the declared-version point verifies the readable payload version · anchored test binding · binding present · test/self-hosting-extraction.test.ts:394
  • spec:decisions.exclusion-contract refines spec:extraction.excludes · declared
  • spec:extraction.build-pipeline refines spec:extraction.derive-graph · declared — the build orchestrates derivation and publication of the one graph
  • spec:extraction.build-pipeline.same-invocation refines spec:extraction.build-pipeline · declared
  • spec:extraction.build-pipeline.same-invocation verifies spec:extraction.build-pipeline · declared
  • spec:extraction.claim-taxonomy refines spec:extraction.derive-graph · declared
  • spec:extraction.delivery-facts refines spec:extraction.derive-graph · declared
  • spec:extraction.determinism refines spec:extraction.derive-graph · declared — deterministic output constrains the derivation capability
  • spec:extraction.entry-citations refines spec:extraction.derive-graph · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation refines spec:extraction.entry-citations · declared
  • spec:extraction.entry-citations.unresolved-citation verifies spec:extraction.entry-citations · declared
  • spec:extraction.entry-locations refines spec:extraction.derive-graph · declared
  • spec:extraction.excludes refines spec:extraction.derive-graph · declared
  • spec:extraction.excludes.refused-path refines spec:extraction.excludes · declared
  • spec:extraction.excludes.refused-path verifies spec:extraction.excludes · declared
  • spec:extraction.excludes.segment-boundary refines spec:extraction.excludes · declared
  • spec:extraction.excludes.segment-boundary verifies spec:extraction.excludes · declared
  • spec:extraction.executable-contracts refines spec:extraction.build-pipeline · declared
  • spec:extraction.open-section-order refines spec:extraction.derive-graph · declared
  • spec:extraction.pack-member-order refines spec:extraction.derive-graph · declared
  • spec:extraction.pack-member-order.manifest-order-kept refines spec:extraction.pack-member-order · declared
  • spec:extraction.pack-member-order.manifest-order-kept verifies spec:extraction.pack-member-order · declared
  • spec:extraction.regenerability refines spec:extraction.determinism · declared
  • spec:extraction.schema-versioning refines spec:extraction.derive-graph · declared
  • spec:extraction.schema-versioning.declared-version refines spec:extraction.schema-versioning · declared
  • spec:extraction.schema-versioning.declared-version verifies spec:extraction.schema-versioning · declared
  • spec:observation.runtime-overlay refines spec:extraction.derive-graph · declared — an observed fact would be derived beside implemented and has-verifier
  • component:protocol.cli satisfies spec:extraction.build-pipeline · anchored
  • component:protocol.extract satisfies spec:extraction.derive-graph · anchored
  • component:protocol.graph satisfies spec:extraction.claim-taxonomy · anchored
  • impl:protocol.build-pipeline-emit satisfies spec:extraction.build-pipeline · anchored
  • impl:protocol.build-pipeline-emit satisfies spec:extraction.determinism · anchored
  • impl:protocol.build-pipeline-query satisfies spec:extraction.build-pipeline · anchored
  • impl:protocol.carrier-reification satisfies spec:extraction.derive-graph · anchored
  • impl:protocol.delivery-facts satisfies spec:extraction.delivery-facts · anchored
  • impl:protocol.derive-graph satisfies spec:extraction.derive-graph · anchored
  • impl:protocol.derive-graph satisfies spec:extraction.claim-taxonomy · anchored
  • impl:protocol.discover-files satisfies spec:extraction.excludes · anchored
  • impl:protocol.entry-address-resolution satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-citation-reader satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-citation-recipe satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-citation-scan satisfies spec:extraction.entry-citations · anchored
  • impl:protocol.entry-location-recipes satisfies spec:extraction.entry-locations · anchored
  • impl:protocol.entry-locations satisfies spec:extraction.entry-locations · anchored
  • impl:protocol.exclusion-surface satisfies spec:extraction.excludes · anchored
  • impl:protocol.extract satisfies spec:extraction.derive-graph · anchored
  • impl:protocol.markdown-yaml-policy satisfies spec:extraction.pack-member-order · anchored
  • impl:protocol.open-section-order satisfies spec:extraction.open-section-order · anchored
  • impl:protocol.open-section-order satisfies spec:extraction.pack-member-order · anchored
  • impl:protocol.pack-coherence satisfies spec:extraction.pack-member-order · anchored
  • impl:protocol.pack-design references spec:extraction.entry-locations · anchored
  • impl:protocol.pack-design-page satisfies spec:extraction.pack-member-order · anchored
  • impl:protocol.pack-member-order satisfies spec:extraction.pack-member-order · anchored
  • impl:protocol.reader satisfies spec:extraction.entry-locations · anchored
  • impl:protocol.reader satisfies spec:extraction.pack-member-order · anchored
  • impl:protocol.schema-version satisfies spec:extraction.schema-versioning · anchored
  • impl:protocol.schema-version satisfies spec:extraction.claim-taxonomy · anchored
  • impl:protocol.schema-version satisfies spec:extraction.derive-graph · anchored
  • impl:protocol.static-reification satisfies spec:extraction.determinism · anchored
  • oracle:protocol.entry-citations models spec:extraction.entry-citations · anchored
  • test:protocol.build-pipeline.same-invocation verifies spec:extraction.build-pipeline.same-invocation · anchored
  • test:protocol.claim-taxonomy verifies spec:extraction.claim-taxonomy · anchored
  • test:protocol.delivery-facts verifies spec:extraction.delivery-facts · anchored
  • test:protocol.entry-citations.code-comment-cites-declaration verifies spec:extraction.entry-citations.code-comment-cites-declaration · anchored
  • test:protocol.entry-citations.test-title-cites-declaration verifies spec:extraction.entry-citations.test-title-cites-declaration · anchored
  • test:protocol.entry-citations.unanchored-file-unread verifies spec:extraction.entry-citations.unanchored-file-unread · anchored
  • test:protocol.entry-citations.unresolved-citation verifies spec:extraction.entry-citations.unresolved-citation · anchored
  • test:protocol.entry-locations verifies spec:extraction.entry-locations · anchored
  • test:protocol.excludes.refused-path verifies spec:extraction.excludes.refused-path · anchored
  • test:protocol.excludes.segment-boundary verifies spec:extraction.excludes.segment-boundary · anchored
  • test:protocol.extract verifies spec:extraction.derive-graph · anchored
  • test:protocol.extraction-determinism verifies spec:extraction.determinism · anchored
  • test:protocol.open-section-order verifies spec:extraction.open-section-order · anchored
  • test:protocol.pack-member-order verifies spec:extraction.pack-member-order.manifest-order-kept · anchored
  • test:protocol.roadmap-priority verifies spec:extraction.pack-member-order · anchored
  • test:protocol.schema-versioning.declared-version verifies spec:extraction.schema-versioning.declared-version · anchored

Decisions

  • Bindings are optional, plural, and may reference a design

    On a code anchor, satisfies is optional and plural; on a test anchor, verifies is plural and non-empty. The constant form accepts one ref(…) or a fresh array literal of them. Each resolving target confers its fact, and implemented stays a whole-Spec fact. An anchored edge references runs from a CodeNode to a Spec, from references?: readonly SpecId[] on a code anchor; it may target any Spec, decisions included, confers no delivery fact, moves no readiness floor, and the drift alarm ignores it. It says this code answers to that design without claiming to realize it: the unit follows the design without realizing any of its promises, or realizes part of a Spec whose remaining promises no unit yet realizes, so a change to the design asks the code to follow. A design that builds on existing code states that by a typed relation to the Spec the code satisfies, never by a reference from the code. A target named in both satisfies and references is an error. An identity-only code anchor, with no satisfies and no references, is lawful: it mints a CodeNode for structure and for byFile, and nothing else.

  • Validation follows one graph

    Validators consume the derived graph through one path: source, extraction, graph, then checks.

Runtime
  • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    • component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

  • impl:protocol.carrier-reification · reifies each canonical carrier surface into specs, packs, and findings · src/extract/carrier.ts:54

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.derive-graph · derives the graph from reified carriers and bindings · src/extract/derive.ts:241

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    • impl:protocol.delivery-facts · computes delivery facts from resolving binding edges · src/graph/delivery-facts.ts:65
  • impl:protocol.extract · extracts authored carriers and bindings into one graph · src/extract/index.ts:208

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    • impl:protocol.carrier-reification · reifies each canonical carrier surface into specs, packs, and findings · src/extract/carrier.ts:54
    • impl:protocol.derive-graph · derives the graph from reified carriers and bindings · src/extract/derive.ts:241
    • impl:protocol.discover-files · realizes exclusion-aware discovery (normalizeExcludes / discoverFiles) · src/extract/discover.ts:35
  • impl:protocol.schema-version · versioned graph nodes, claims, edges and located evidence · src/graph/schema.ts:9

    Component: component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · 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:extraction.derive-graph
The diagram as text
  • spec:consumers.impact-graph: Mechanical code structure stays inferred and apart from curated intent
  • spec:decisions.anchor-binding-grain: Bindings are optional, plural, and may reference a design
  • spec:decisions.one-validation-path: Validation follows one graph
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow
  • spec:extraction.claim-taxonomy: Graph claims retain their epistemic source
  • spec:extraction.delivery-facts: Resolving bindings confer direct delivery facts
  • spec:extraction.derive-graph: Carrier reification derives the one graph
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:extraction.entry-citations: The graph records where anchored source cites an entry address
  • spec:extraction.entry-locations: The graph records where each addressable entry is written
  • spec:extraction.excludes: Extraction exclusions are strict consumer input
  • spec:extraction.executable-examples: Bound examples execute their authored steps
  • spec:extraction.open-section-order: Serialization preserves authored entry order
  • spec:extraction.pack-member-order: A Pack node keeps its members in authored order
  • spec:extraction.schema-versioning: The graph declares its schema version
  • spec:model.anchors: Source anchors bind code without carrying intent
  • spec:model.relations: Specs declare typed directed relations
  • spec:observation.runtime-overlay: Runtime observations can close the liveness loop
  • spec:validation.claim-separation: Graph claims and contracts stay distinct
  • spec:extraction.derive-graph constrainedBy spec:extraction.determinism · declared
  • spec:extraction.derive-graph decidedBy spec:decisions.anchor-binding-grain · declared
  • spec:extraction.derive-graph decidedBy spec:decisions.one-validation-path · declared
  • spec:extraction.derive-graph dependsOn spec:extraction.delivery-facts · declared — computes delivery facts by the shared conferral law
  • spec:extraction.derive-graph dependsOn spec:model.anchors · declared — the anchors Spec owns binding eligibility and structural endpoint restrictions
  • spec:extraction.derive-graph dependsOn spec:model.relations · declared — the relations Spec owns the kind restrictions on authored relations
  • spec:consumers.impact-graph dependsOn spec:extraction.derive-graph · declared
  • spec:extraction.build-pipeline dependsOn spec:extraction.derive-graph · declared
  • spec:extraction.executable-examples dependsOn spec:extraction.derive-graph · declared — executable contracts read the one graph rather than another carrier path
  • spec:validation.claim-separation dependsOn spec:extraction.derive-graph · declared
  • spec:extraction.build-pipeline refines spec:extraction.derive-graph · declared — the build orchestrates derivation and publication of the one graph
  • spec:extraction.claim-taxonomy refines spec:extraction.derive-graph · declared
  • spec:extraction.delivery-facts refines spec:extraction.derive-graph · declared
  • spec:extraction.determinism refines spec:extraction.derive-graph · declared — deterministic output constrains the derivation capability
  • spec:extraction.entry-citations refines spec:extraction.derive-graph · declared
  • spec:extraction.entry-locations refines spec:extraction.derive-graph · declared
  • spec:extraction.excludes refines spec:extraction.derive-graph · declared
  • spec:extraction.open-section-order refines spec:extraction.derive-graph · declared
  • spec:extraction.pack-member-order refines spec:extraction.derive-graph · declared
  • spec:extraction.schema-versioning refines spec:extraction.derive-graph · declared
  • spec:observation.runtime-overlay refines spec:extraction.derive-graph · declared — an observed fact would be derived beside implemented and has-verifier
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

Distance 2

Distance 3

Distance 4

Distance 5

Distance 6

Distance 7

Distance 8

Distance 9

Distance 10

Distance 11

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingCommitted source derives byte-identical output
spec:extraction.determinism · resolves
declaredNoneNone
decidedBy · outgoingBindings are optional, plural, and may reference a design
spec:decisions.anchor-binding-grain · resolves
declaredNoneNone
decidedBy · outgoingValidation follows one graph
spec:decisions.one-validation-path · resolves
declaredNoneNone
dependsOn · outgoingResolving bindings confer direct delivery facts
spec:extraction.delivery-facts · resolves
declaredcomputes delivery facts by the shared conferral lawNone
dependsOn · outgoingSource anchors bind code without carrying intent
spec:model.anchors · resolves
declaredthe anchors Spec owns binding eligibility and structural endpoint restrictionsNone
dependsOn · outgoingSpecs declare typed directed relations
spec:model.relations · resolves
declaredthe relations Spec owns the kind restrictions on authored relationsNone
dependsOn · incomingMechanical code structure stays inferred and apart from curated intent
spec:consumers.impact-graph · resolves
declaredNoneNone
dependsOn · incomingThe build pipeline has one ordered flow
spec:extraction.build-pipeline · resolves
declaredNoneNone
dependsOn · incomingBound examples execute their authored steps
spec:extraction.executable-examples · resolves
declaredexecutable contracts read the one graph rather than another carrier pathNone
dependsOn · incomingGraph claims and contracts stay distinct
spec:validation.claim-separation · resolves
declaredNoneNone
refines · incomingThe build pipeline has one ordered flow
spec:extraction.build-pipeline · resolves
declaredthe build orchestrates derivation and publication of the one graphNone
refines · incomingGraph claims retain their epistemic source
spec:extraction.claim-taxonomy · resolves
declaredNoneNone
refines · incomingResolving bindings confer direct delivery facts
spec:extraction.delivery-facts · resolves
declaredNoneNone
refines · incomingCommitted source derives byte-identical output
spec:extraction.determinism · resolves
declareddeterministic output constrains the derivation capabilityNone
refines · incomingThe graph records where anchored source cites an entry address
spec:extraction.entry-citations · resolves
declaredNoneNone
refines · incomingThe graph records where each addressable entry is written
spec:extraction.entry-locations · resolves
declaredNoneNone
refines · incomingExtraction exclusions are strict consumer input
spec:extraction.excludes · resolves
declaredNoneNone
refines · incomingSerialization preserves authored entry order
spec:extraction.open-section-order · resolves
declaredNoneNone
refines · incomingA Pack node keeps its members in authored order
spec:extraction.pack-member-order · resolves
declaredNoneNone
refines · incomingThe graph declares its schema version
spec:extraction.schema-versioning · resolves
declaredNoneNone
refines · incomingRuntime observations can close the liveness loop
spec:observation.runtime-overlay · resolves
declaredan observed fact would be derived beside implemented and has-verifierNone

Bindings

Implementation binding: present

  • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · role extractor · layer application · context protocol
  • impl:protocol.carrier-reification · reifies each canonical carrier surface into specs, packs, and findings · src/extract/carrier.ts:54 · role extractor · component component:protocol.extract · layer application · context protocol
  • impl:protocol.derive-graph · derives the graph from reified carriers and bindings · src/extract/derive.ts:241 · role extractor · component component:protocol.extract · layer application · context protocol
  • impl:protocol.extract · extracts authored carriers and bindings into one graph · src/extract/index.ts:208 · role extractor · component component:protocol.extract · layer application · context protocol
  • impl:protocol.schema-version · versioned graph nodes, claims, edges and located evidence · src/graph/schema.ts:9 · role contract · component component:protocol.graph · layer domain · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.extract · extraction contracts verify graph derivation · anchored · test/extract.test.ts:1395 · 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.