Spec Studio

A requirement drawing separates intent from realization and verification

spec:consumers.spec-studio.diagram-kinds.requirement-traceUse Case / Behavior · storyready 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: 8 design entries · 1 pinned declaration · no decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md

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

Intent
outcome
Read a Spec's refinement, satisfying code and verifier bindings in one picture without mistaking a declared example for a running test.
Behavior
rule.exactEdges line 16 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:16
For the Spec page's selected set, draw declared refines, declared and anchored verifies, and anchored satisfies edges incident on the set, plus anchored verifies on its declared verifying examples. Draw code references and oracle models only as their own named kinds, never as realization or successful verification.

no example exercises it

rule.claimsApart line 17 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:17
Every box and edge names its claim. A declared verifying example with no resolving test says no test binding; an anchored verifier says binding present, never passed. Missing satisfies says no satisfying binding, never unimplemented by inference through a child. Examples and decision records, which code never satisfies, carry no satisfying-binding label.

no example exercises it

rule.fold line 18 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:18
Combine arrows with the same ends, direction and claim into one labelled arrow naming every relation. Fold verifying examples together with their exclusive test bindings beyond a small readable count, naming both claims and counts. Above the shared bound or readable density, fold the largest remaining group within each band by edge kind, direction and claim, ties in that lexical order and then by band order, until it fits. A fold names its relation and claim and hides its internal identity. Keep every original edge and box in the text equivalent. If the fold still cannot fit, omit the drawing and open its text.

no example exercises it

0 unkeyed rules.

Design
placement line 21 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:21
On a Spec page the requirement drawing replaces the realization drawing under its heading; its set is the Spec, the Specs that refine it, and the examples that verify any of them.
bands line 22 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:22
Place selected non-example Specs, declared verifying examples, satisfying or referencing units, and test or oracle bindings in labelled bands. An example in the selected set always sits in the examples band, including when it also refines a selected Spec. Place Specs outside the selected set in a separate labelled band. Each node has one placement and keeps every edge. Derive each absence statement from the selected examples and recorded edge kinds, never from which bands contain boxes.
exampleFoldCount line 23 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:23
Fold more than 4 selected verifying examples, excluding the subject, with their exclusive test bindings; retain the fold only when it lowers layout height. A generic examples-band fold is named verifying examples, never refining Specs.
foldTitles line 24 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:24
Name incoming and outgoing refinement folds refining Specs and refined Specs; incoming satisfies, references, anchored verifies and models folds read satisfying units, referencing units, test bindings and oracle bindings. Every fold includes its claim and hides its internal identity.
wordsBesideStyle line 25 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:25
Box subtitles say declared Spec, anchored code, anchored test binding or anchored oracle binding; edge labels carry both the exact relation and claim. Verification modes, risk levels and assertion results are not invented.
textEquivalent line 26 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:26
List every full id and title or binding label, each binding's file and line, every exact edge with its claim and reason, and examples with no test binding. This drawing replaces the realization drawing and complements the detailed verification panels.
elementIds line 27 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:27
Use diagram.<subject>.requirement.text, .requirement.arrow and .requirement.fold.<kind>.<direction>.<claim>; when the same group occurs in multiple bands, append .band.<band-index> in the stated band order.
mermaidKind line 28 · specs/consumers/spec-studio.diagram-kinds.requirement-trace.sdp.md:28
requirementDiagram for the exact refines, satisfies and verifies subset, generic requirement nodes and element nodes for code and bindings; omit risk and verifyMethod. Serialize the original exact relations separately even when the SVG combines their arrow. Put claim words in node text and per-edge comments. Use flowchart TB with exact labels when references, models or folds require relations requirement syntax cannot express; never rename them traces.

no citation recorded

Verification

Verifier bindings

  • test:protocol.studio-architecture-maturity-requirement · anchored · test anchor binding present · test/studio-panels.test.ts:35

    External run evidence from test/studio-panels.test.ts

    Test anchors: test:protocol.studio-architecture-maturity-requirement. Specs verified by those bindings: spec:consumers.spec-studio.diagram-kinds.maturity-picture, spec:consumers.spec-studio.diagram-kinds.requirement-trace, spec:consumers.spec-studio.lenses.architecture, spec:consumers.spec-studio.lenses.architecture.unit-register, spec:consumers.spec-studio.pack-page.maturity-map, spec:consumers.spec-studio.spec-page.

    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
    orders both matrix axes by layer and id, links counts to supporting unit edges and keeps zeros compactarchitecture tables and registerpassed74.8 ms
    groups unfamiliar and omitted roles in code-unit order, with source rows and separate binding listsarchitecture tables and registerpassed27.09 ms
    draws equal categorical cells, exact counts and marks with ordered complete lists and unresolved members apartmaturity picturepassed38.78 ms
    places the map inside the page's expander so a cell link opens its member listmaturity picturepassed21.01 ms
    puts a uniform map behind a closed disclosure and uses solid fill above the mark boundmaturity picturepassed321.53 ms
    selects the subject, refiners and verifying examples and keeps declared and anchored claims separaterequirement drawingpassed35.44 ms
    keeps a refining verifier in the examples band and outside Specs apartrequirement drawingpassed11.64 ms
    offers requirement syntax for the supported exact relation subsetrequirement drawingpassed10.84 ms
    counts the subject example when reporting selected verifying examplesrequirement drawingpassed8.27 ms
    folds the largest exact relation group deterministically and keeps every original binding in textnot recordedpassed6.82 ms
    keeps a sparse large uses matrix readable with one visible zero legend and hidden cell wordsnot recordedpassed17.36 ms
    contains the matrix's hidden cell words inside their scroll regionnot recordedpassed0.48 ms
    does not assert missing bindings on a boundary Spec whose bindings are outside the selected setnot recordedpassed9.21 ms
    lets full component ids wrap so every uses column fits the printed pagenot recordedpassed1.26 ms
    keeps roles out of the pinned search record while preserving them on graph unitsnot recordedpassed3.1 ms
    lists a unit whose recorded component is missing in No component and in unresolved structurenot recordedpassed4.23 ms
    uses the singular member in a one-member Pack's uniform sentencenot recordedpassed8.51 ms
    states each absent requirement band without implying that a populated drawing is missingnot recordedpassed5.53 ms
    breaks equal requirement fold groups by 'kind' in lexical ordernot recordedpassed3.79 ms
    breaks equal requirement fold groups by 'direction' in lexical ordernot recordedpassed1.83 ms
    breaks equal requirement fold groups by 'claim' in lexical ordernot recordedpassed1.31 ms
    offers only the active relation and member renderers after requirement replaces realizationnot recordedpassed0.25 ms
    applies the closed-source print rule to both requirement and maturity drawingsnot recordedpassed0.3 ms
  • test:protocol.studio-diagram-core · anchored · test anchor binding present · test/studio-diagram-core.test.ts:37

    External run evidence from test/studio-diagram-core.test.ts

    Test anchors: test:protocol.studio-copy-source, test:protocol.studio-diagram-core. Specs verified by those bindings: spec:consumers.spec-studio.diagram-kinds.edge-routing, spec:consumers.spec-studio.diagram-kinds.legibility, spec:consumers.spec-studio.diagram-kinds.mermaid-source, spec:consumers.spec-studio.diagram-kinds.requirement-trace, spec:consumers.spec-studio.diagrams, spec:consumers.spec-studio.page-elements.

    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
    wraps by code point and shortens shared segments without collisionsshared diagram corepassed8.25 ms
    wraps boxes within the width budget and writes an instruction only for final wide drawingsshared diagram corepassed6.1 ms
    routes forward, backward and same-band edges with distinct ports and no shared segmentsshared diagram corepassed14.15 ms
    fails closed when routing cannot fit, retaining complete text and no partial sourceshared diagram corepassed50.17 ms
    serializes full identities, exact claims, reasons, counts and folds as inert Mermaid datashared diagram corepassed1.98 ms
    copies the current value of the labelled textarea and selects that same area on clipboard failurenot recordedpassed55.84 ms
    keeps the full box and edge bound routable with obstacles, separate lanes and edge labelsnot recordedpassed430.81 ms
    offers deterministic Mermaid source for each existing drawing and pins the safe text syntaxnot recordedpassed5.63 ms
    folds reason-bearing trace groups without attributing a member reason to the groupnot recordedpassed8.01 ms
    uses the full band budget for a single context and routes adjacent bands inside itnot recordedpassed0.59 ms
    prints exact short relation words and reserves keys for wording that cannot fitnot recordedpassed6.46 ms
    names viewport and instruction ids for trace and secondary viewsnot recordedpassed3.43 ms
    names the architecture syntax and serializes aliases in displayed box ordernot recordedpassed0.34 ms
    routes the current Protocol architecture and recorded adopter architecture with distinct ports and segmentsnot recordedpassed74.94 ms
    extends overflow rails past earlier labels on the adopter's dense tracesnot recordedpassed4.75 ms
    keeps high-degree boxes inside their cells when contexts share a gridnot recordedpassed1.15 ms
    folds nine refining verifiers with their tests within the band budget and keeps every text rownot recordedpassed2.68 ms
    names folded declared refiners by their relation and claim without an internal subtitlenot recordedpassed2.03 ms
    keeps examples apart from refiners when dense requirement groups foldnot recordedpassed1.09 ms
    names refines folds in plain words and preserves directionnot recordedpassed1.31 ms
    names satisfies folds in plain words and preserves directionnot recordedpassed1.09 ms
    names verifies folds in plain words and preserves directionnot recordedpassed1.46 ms
    keeps a short drawing unfolded even with many boxes and incident edgesnot recordedpassed1.77 ms
    packs disjoint endpoint intervals into shared horizontal lanesnot recordedpassed0.89 ms
    uses a legend key before spending overflow width on exact wordsnot recordedpassed1.18 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.diagram-kinds.requirement-trace
The diagram as text
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification · declared Spec
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
  • impl:protocol.studio-requirement-diagram: folds requirement bindings by relation direction and claim and serializes exact relations · anchored code · src/projections/studio/diagrams/requirement.ts:12
  • impl:protocol.studio-requirement-view: selects Spec refiners, verifying examples and their recorded bindings · anchored code · src/projections/studio/pages/requirement-view.ts:8
  • test:protocol.studio-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present · test/studio-panels.test.ts:35
  • test:protocol.studio-diagram-core: test:protocol.studio-diagram-core · anchored test binding · binding present · test/studio-diagram-core.test.ts:37
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace refines spec:consumers.spec-studio.diagram-kinds · declared
  • impl:protocol.studio-requirement-diagram satisfies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
  • impl:protocol.studio-requirement-view satisfies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
  • test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.

Decisions

No decision record named.

Runtime
  • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol

    Uses

    • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol
    • 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.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • impl:protocol.studio-requirement-diagram · folds requirement bindings by relation direction and claim and serializes exact relations · src/projections/studio/diagrams/requirement.ts:12

    Component: component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-requirement-view · selects Spec refiners, verifying examples and their recorded bindings · src/projections/studio/pages/requirement-view.ts:8

    Component: component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol

    Uses

    None.

Runtime observation: not tracked.

Evidence

Runtime observation: not tracked.

Build attestations: not tracked.

Deployments: not tracked.

Bills of materials: not tracked.

Impact
Relations of spec:consumers.spec-studio.diagram-kinds.requirement-trace
The diagram as text
  • spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.diagram-kinds.requirement-trace refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.diagram-kinds.requirement-trace · declared — the Design view reads the selected set and claims the requirement drawing defines
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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
refines · outgoingThe Studio chooses diagram kinds from graph values
spec:consumers.spec-studio.diagram-kinds · resolves
declaredNoneNone
dependsOn · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredthe Design view reads the selected set and claims the requirement drawing definesNone

Bindings

Implementation binding: present

  • impl:protocol.studio-requirement-diagram · folds requirement bindings by relation direction and claim and serializes exact relations · src/projections/studio/diagrams/requirement.ts:12 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-requirement-view · selects Spec refiners, verifying examples and their recorded bindings · src/projections/studio/pages/requirement-view.ts:8 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-architecture-maturity-requirement · anchored · test/studio-panels.test.ts:35 · test anchor
  • test:protocol.studio-diagram-core · anchored · test/studio-diagram-core.test.ts:37 · 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.