Spec Studio

The engine's accepted set covers its significant abstractions and only those

spec:protocol.significant-units-reviewUse Case / Behavior · featureready floor ready

New since the base graph base da4b141. See the diff.

Base input: schema 0.11.0, 405 Specs.

Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Design: 1 design entry · no pinned declarations · 2 decisions

Findings: no errors, no warnings

specs/protocol/significant-units-review.sdp.md

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

A designer needs to find the contracts, decisions and stages a change must preserve. The accepted set records those units on the code that owns them. Exporting a helper, appearing in an import ranking or giving a file an impact answer does not by itself earn an identity.

Intent
outcome
Keep the accepted set focused on the engine's significant contracts, decisions and stages, with meaningful roles and architectural uses, and exclude units anchored only for coverage.
Behavior
rule.significantAbstractions line 27 · specs/protocol/significant-units-review.sdp.md:27
Apply the structural-patterns criterion to the public contract or cross-component responsibility a unit owns. Ports, shared data shapes, pipeline stages, decision tables, catalogs, layout policies and adapters qualify when changing them requires a designer or builder to understand that responsibility; being exported alone is insufficient.

no example exercises it

rule.curatedBoundary line 28 · specs/protocol/significant-units-review.sdp.md:28
Leave forwarding barrels, empty element registrations, mechanical wrappers, formatting helpers and generated files unanchored unless they own an independent contract or architectural responsibility. A coverage target, test expectation, file count or desired impact answer never establishes significance.

no example exercises it

rule.dependencyEvidence line 29 · specs/protocol/significant-units-review.sdp.md:29
Declare a component uses for a value or type import the importing file itself makes from another component's file. An import made only to author anchors, and a pair the imports adapter reports only through a re-export the importer does not use, confer no edge. Before calling a declared edge stale, inspect input omissions and every file the comparison leaves unassigned. Import evidence proposes an edit and never authors an edge.

no example exercises it

rule.rosterOracle line 30 · specs/protocol/significant-units-review.sdp.md:30
The self-hosting suite pins the reviewed component identities, unit ownership, roles, uses and deliberate membership exceptions independently of extraction. It compares the graph with those declarations and rejects unrostered membership. It never derives its expected roster from paths, exports, imports or the graph under test.

no example exercises it

rule.acceptedChanges line 31 · specs/protocol/significant-units-review.sdp.md:31
The accepted set is the annotation review's change table as the owner accepted it: its additions, merges, drop, role changes and component uses, each realization claim it names kept.

no example exercises it

rule.decoderBoundary line 32 · specs/protocol/significant-units-review.sdp.md:32
The example-space decoder joins the reader component, leaving notation a leaf codec, only when the architecture crossings recipe and the self-binding tests show that the move adds no layer crossing; otherwise it stays in notation, its real imports are declared, and the uses cycle they form stays lawful data.

no example exercises it

Cited at

  • test/recipes.test.ts:5827
rule.roleMeaning line 33 · specs/protocol/significant-units-review.sdp.md:33
Read role meanings from the engine's role-vocabulary Model when reviewing its anchors. The vocabulary guides authors and reviewers; the Protocol never validates membership in it.

no example exercises it

0 unkeyed rules.

Design
rosterSource line 37 · specs/protocol/significant-units-review.sdp.md:37
The self-hosting oracle holds the accepted roster: each row names an accepted unit's anchor, its component and its file, and its expectations for components, membership, uses, exceptions, coarse-grain coverage and roles sit beside it. A symbol suffix is a review locator, never extracted symbol identity.
Verification · reviewed
criteria
  • Compare the independently reviewed accepted roster with the source responsibilities it names, including dependencies that an imports comparison cannot assign to components.
  • Check that every proposed merge or drop preserves the whole-Spec realization set it claims to preserve and that every architectural uses pair has supporting value or type imports beyond anchor authoring.
  • Compare the extracted graph with the independently reviewed oracle roster after anchor changes; exercise a missing accepted member and an extra unrostered membership to show that the roster comparison detects both.
mode
reviewed
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.significant-units-review
The diagram as text
  • spec:protocol.significant-units-review: The engine's accepted set covers its significant abstractions and only those · declared Spec
  • spec:protocol.structural-self-binding: The engine's structural self-binding covers its architecturally significant units · declared Spec
  • 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.significant-units-review refines spec:protocol.structural-self-binding · declared — states what the independently reviewed accepted set must contain and exclude
  • impl:protocol.structural-self-binding satisfies spec:protocol.significant-units-review · 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.significant-units-review
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.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.significant-units-review decidedBy spec:decisions.anchor-binding-grain · declared
  • spec:protocol.significant-units-review decidedBy spec:decisions.architectural-annotation · declared
  • spec:protocol.significant-units-review dependsOn spec:model.structural-patterns · declared
  • spec:protocol.significant-units-review dependsOn spec:protocol.role-vocabulary · declared
  • 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

No Spec rests on this Spec.

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
declaredNoneNone
dependsOn · outgoingThe engine's architectural roles each name one pattern
spec:protocol.role-vocabulary · resolves
declaredNoneNone
refines · outgoingThe engine's structural self-binding covers its architecturally significant units
spec:protocol.structural-self-binding · 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.