Spec Studio

The engine's structural self-binding covers its architecturally significant units

spec:protocol.structural-self-bindingUse Case / Behavior · storyready floor ready

Changed since the base graph base da4b141: rule.criterion

Base input: schema 0.11.0, 405 Specs.

Packs: pack:self-hosting-v1

Design: no design entries · no pinned declarations · 2 decisions

Findings: no errors, no warnings

specs/protocol/structural-self-binding.sdp.md

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

Intent
outcome
Structural recipes, the census and the Design Review answer architecture questions about the engine from its own anchors.
Behavior
rule.criterion line 23 · specs/protocol/structural-self-binding.sdp.md:23
The engine applies the structural-patterns model's significance criterion: exported public surface or cross-component reach whose contract or responsibility a designer or builder must understand; export status or import rank alone is insufficient.

no example exercises it

rule.membership line 24 · specs/protocol/structural-self-binding.sdp.md:24
Every architecturally significant engine unit carries component membership through a realizing anchor; a helper with no realization target of its own is covered through the nearest realization anchor that consumes it.

no example exercises it

rule.architecturalUses line 25 · specs/protocol/structural-self-binding.sdp.md:25
An architectural dependency of the engine is declared as uses, normally from one engine component to another; a unit's own uses is optional.

no example exercises it

rule.componentUses line 26 · specs/protocol/structural-self-binding.sdp.md:26
A component-level uses declaration tracks real value or type imports from another component's source files; imports made only to author anchors through the stable-id or anchor-builder modules confer no edge.

no example exercises it

rule.acceptedSet line 27 · specs/protocol/structural-self-binding.sdp.md:27
The accepted set of architecturally significant engine units is an owner-reviewed declaration among the self-hosting suite's pinned expectations, never derived from imports or exports; the suite checks every accepted unit's declared membership and rejects unrostered membership edges.

no example exercises it

rule.layerAndContext line 28 · specs/protocol/structural-self-binding.sdp.md:28
Every engine component: anchor declares its layer and its context.

no example exercises it

rule.role line 29 · specs/protocol/structural-self-binding.sdp.md:29
Every architecturally significant engine unit carries a role.

no example exercises it

rule.decisionReferences line 30 · specs/protocol/structural-self-binding.sdp.md:30
A unit reaches the decisions that shape it through the Specs it satisfies and their decidedBy relations, and may reference a decision directly when it answers to that design. A unit satisfies a Spec when it realizes at least one promise of it, and the satisfying units together realize every promise; a unit that follows a design without realizing a promise references it. Code never satisfies a decision Spec. A design that builds on existing code states that through its own dependsOn or refines to the Spec the code satisfies.

no example exercises it

0 unkeyed rules.

Verification

Verifier bindings

  • test:protocol.structural-self-binding · checks the accepted membership and helper coverage, authored uses, and pinned anchor roles, layers and contexts · anchored · test anchor binding present · test/self-hosting-graph.test.ts:88

    External run evidence from test/self-hosting-graph.test.ts

    Test anchors: test:protocol.self-hosting, test:protocol.structural-self-binding. Specs verified by those bindings: spec:model.structural-patterns, spec:protocol.self-hosting, spec:protocol.significant-units-review, spec:protocol.structural-self-binding.

    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
    traces changes to 'test/self-hosting-oracle/structural-e…' through its realizing anchorthe self-hosting corpuspassed80.98 ms
    traces changes to 'test/helpers/validator-probes.ts' through its realizing anchorthe self-hosting corpuspassed47.73 ms
    reifies the root corpus without an extraction findingthe self-hosting corpuspassed0.46 ms
    reports exactly the retained verifier gaps and no unbacked prose mentionthe self-hosting corpuspassed41.83 ms
    holds the frozen corpus totalsthe self-hosting corpuspassed1.84 ms
    permits a named second diagram view in the authored element-id contractthe self-hosting corpuspassed47.7 ms
    states the owner queue's reader lookup by Spec and question keythe self-hosting corpuspassed39.89 ms
    names vault and stamp beside every other help verb in the authored contractthe self-hosting corpuspassed35.48 ms
    rosters exactly the authored Spec, Pack, and anchor node idsthe self-hosting corpuspassed1.78 ms
    carries the authored descriptors of the carrier familythe self-hosting corpuspassed3.09 ms
    carries the authored descriptors of the protocol familythe self-hosting corpuspassed0.63 ms
    carries the authored descriptors of the extraction familythe self-hosting corpuspassed1.44 ms
    carries the authored descriptors of the validation familythe self-hosting corpuspassed3.3 ms
    carries the authored descriptors of the model familythe self-hosting corpuspassed1.61 ms
    carries the authored descriptors of the observation familythe self-hosting corpuspassed0.44 ms
    carries the authored descriptors of the consumers familythe self-hosting corpuspassed9.85 ms
    carries the authored descriptors of the decisions familythe self-hosting corpuspassed1.35 ms
    leaves no authored Spec outside the familiesthe self-hosting corpuspassed0.73 ms
    derives exactly the authored declared relationsthe self-hosting corpuspassed11.91 ms
    holds the frozen stated-readiness distributionthe self-hosting corpuspassed0.38 ms
    derives the Pack membership edges from the manifest, in manifest orderthe self-hosting corpuspassed1.51 ms
    carries the Pack aggregate nodes exactly as authoredthe self-hosting corpuspassed0.26 ms
    derives the independent zero-to-many binding edge rosterthe self-hosting corpuspassed6.62 ms
    rosters exactly the accepted component setthe self-hosting corpuspassed0.22 ms
    gives every owned impl/api CodeNode exactly one componentthe self-hosting corpuspassed18.95 ms
    derives exactly the sparse authored component uses edgesthe self-hosting corpuspassed1.6 ms
    covers every accepted architecturally significant unitthe self-hosting corpuspassed929.96 ms
    gives every accepted unit a readable responsibility labelthe self-hosting corpuspassed13.58 ms
    detects a missing accepted member independently of the sourcethe self-hosting corpuspassed7.56 ms
    detects extra unrostered membership independently of the sourcethe self-hosting corpuspassed45.81 ms
    finds every converted comment anchor at its block's first linethe self-hosting corpuspassed17.2 ms
    projects every anchor and code node at the line its declaration occupiesthe self-hosting corpuspassed97.45 ms
    rejects comment-only and string activation sites and accepts executable callsthe self-hosting corpuspassed1.2 ms
    keeps every anchor beside the site it bindsthe self-hosting corpuspassed1381.89 ms
    derives the duplicate-ids delivery facts from the bindings, never from authoringthe self-hosting corpuspassed1.28 ms
    derives sdp-import realization from its direct code and child verifier bindingsthe self-hosting corpuspassed0.32 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:protocol.structural-self-binding
The diagram as text
  • spec:protocol.structural-self-binding: The engine's structural self-binding covers its architecturally significant units · declared Spec
  • spec:protocol.role-vocabulary: The engine's architectural roles each name one pattern · declared Spec
  • spec:protocol.significant-units-review: The engine's accepted set covers its significant abstractions and only those · declared Spec
  • spec:protocol.self-hosting: The Protocol authors and validates itself · declared Spec
  • impl:protocol.role-vocabulary: asserts realization of the role vocabulary in the engine anchors' pinned roles · anchored code · test/self-hosting-graph.test.ts:143
  • impl:protocol.structural-self-binding: realizes the declared significant-unit set and its structural self-binding · anchored code · test/self-hosting-oracle/structural-edges.ts:76
  • test:protocol.structural-self-binding: checks the accepted membership and helper coverage, authored uses, and pinned anchor roles, layers and contexts · anchored test binding · binding present · test/self-hosting-graph.test.ts:88
  • spec:protocol.role-vocabulary refines spec:protocol.structural-self-binding · declared — names what each role value the engine's significant units carry means
  • spec:protocol.significant-units-review refines spec:protocol.structural-self-binding · declared — states what the independently reviewed accepted set must contain and exclude
  • spec:protocol.structural-self-binding refines spec:protocol.self-hosting · declared
  • impl:protocol.role-vocabulary satisfies spec:protocol.role-vocabulary · anchored
  • impl:protocol.structural-self-binding satisfies spec:protocol.structural-self-binding · anchored
  • impl:protocol.structural-self-binding satisfies spec:protocol.significant-units-review · anchored
  • test:protocol.structural-self-binding verifies spec:protocol.structural-self-binding · anchored
  • test:protocol.structural-self-binding verifies spec:protocol.significant-units-review · 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

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

  • Architectural significance is annotated where it is realized

    Architectural significance is annotated on the anchor of the unit that realizes it. A code anchor may carry role, the architectural pattern the unit plays; a component: anchor may additionally carry layer, one of edge, application, domain, adapter, or infrastructure, and context, its bounded context. The component: anchor is anchored architecture: it is the declared component, and there is no separate architecture file, because the anchor sits where the component is realized. It is not the original design's declared Component that could exist before code; an unrealized component lives in Specs and never as an invented CodeNode. A role is a free, corpus-owned vocabulary whose taxonomy the census renders with counts from the graph; service, decider, projection, read-model, codec, contract, barrel, and utility are the lineage set, not a closed list. layer is a closed set, and a value outside it is an envelope error; layer or context on a non-component anchor is an envelope error. All three attributes are optional, and omission is lawful.

Runtime
  • impl:protocol.structural-self-binding · realizes the declared significant-unit set and its structural self-binding · test/self-hosting-oracle/structural-edges.ts:76

    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:protocol.structural-self-binding
The diagram as text
  • spec:decisions.anchor-binding-grain: Bindings are optional, plural, and may reference a design
  • spec:decisions.architectural-annotation: Architectural significance is annotated where it is realized
  • spec:model.structural-patterns: Architecturally significant units are annotated where they are realized
  • spec:protocol.role-vocabulary: The engine's architectural roles each name one pattern
  • spec:protocol.self-hosting: The Protocol authors and validates itself
  • spec:protocol.significant-units-review: The engine's accepted set covers its significant abstractions and only those
  • spec:protocol.structural-self-binding: The engine's structural self-binding covers its architecturally significant units
  • spec:protocol.structural-self-binding decidedBy spec:decisions.anchor-binding-grain · declared
  • spec:protocol.structural-self-binding decidedBy spec:decisions.architectural-annotation · declared
  • spec:protocol.structural-self-binding dependsOn spec:model.structural-patterns · declared — this model defines the significance criterion and the owner-reviewed accepted set
  • spec:protocol.structural-self-binding refines spec:protocol.self-hosting · declared
  • spec:protocol.role-vocabulary refines spec:protocol.structural-self-binding · declared — names what each role value the engine's significant units carry means
  • spec:protocol.significant-units-review refines spec:protocol.structural-self-binding · declared — states what the independently reviewed accepted set must contain and exclude
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
decidedBy · outgoingBindings are optional, plural, and may reference a design
spec:decisions.anchor-binding-grain · resolves
declaredNoneNone
decidedBy · outgoingArchitectural significance is annotated where it is realized
spec:decisions.architectural-annotation · resolves
declaredNoneNone
dependsOn · outgoingArchitecturally significant units are annotated where they are realized
spec:model.structural-patterns · resolves
declaredthis model defines the significance criterion and the owner-reviewed accepted setNone
refines · outgoingThe Protocol authors and validates itself
spec:protocol.self-hosting · resolves
declaredNoneNone
refines · incomingThe engine's architectural roles each name one pattern
spec:protocol.role-vocabulary · resolves
declarednames what each role value the engine's significant units carry meansNone
refines · incomingThe engine's accepted set covers its significant abstractions and only those
spec:protocol.significant-units-review · resolves
declaredstates what the independently reviewed accepted set must contain and excludeNone

Bindings

Implementation binding: present

  • impl:protocol.structural-self-binding · realizes the declared significant-unit set and its structural self-binding · test/self-hosting-oracle/structural-edges.ts:76

Design reference: none

Verifier binding: present

  • test:protocol.structural-self-binding · checks the accepted membership and helper coverage, authored uses, and pinned anchor roles, layers and contexts · anchored · test/self-hosting-graph.test.ts:88 · 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.