Spec Studio

A Spec set draws the architecture it touches

spec:consumers.spec-studio.diagram-kinds.scoped-architectureUse 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: 5 design entries · 1 pinned declaration · no decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md

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

Intent
outcome
Review a Pack, slice or roadmap's realized and planned seams together while seeing exactly why each component is present.
Behavior
rule.scopeInput line 19 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:19
Read the design slice's architecture answer: components with how the slice reaches each, in words, members' satisfying code, members' referencing code or what the slice rests on; designs with their declared values, realization and comparison rows, each drawn as a planned box; uses with the unit edges behind each count and its outside mark; plannedUses; outside; and unplaced. The drawing resolves no unit to a component itself and recomputes none of them; the unplaced units remain listed apart.

no example exercises it

rule.separatePlans line 20 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:20
Draw anchored components and component designs as separate identities, even when the realization comparison joins them. Planned layer, context and uses stay declared; realized structure stays anchored; a difference is labelled rather than merged away.

no example exercises it

rule.boundary line 21 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:21
Draw only the uses boundary the supplied design-slice architecture answer includes; never traverse it in layout. Its uses includes anchored pairs between touched components and pairs with one immediate outside neighbour, marked outside: true, as spec:consumers.design-slice#rule.outsideNeighbors states. Fold supplied outside neighbours into one outside scope box per context and layer while keeping their identities and original unit edges in the text equivalent; never add pairs between two outside components. Planned uses remain separate and never increase an anchored count.

no example exercises it

rule.bound line 22 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:22
Apply the shared architecture folds by context then layer to this selected graph. If no component or planned design resolves, show the empty explanation and unassigned units instead of a blank or invented architecture.

no example exercises it

0 unkeyed rules.

Design
layout line 25 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:25
Use the architecture grid's context columns and layer bands, with the legibility child's title-first boxes, cell wrapping and local scroll. Prefix planned boxes with planned; outside-scope boxes say outside scope.
edgeWords line 26 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:26
The legend distinguishes uses (anchored), plans to use (declared) and realizes (anchored) when present. A drawing containing uses and planned uses alone carries no per-edge label. When a realization correspondence is present, label the distinct relation families beside each link or through a keyed legend; realization stays apart from uses and confers no delivery fact.
textEquivalent line 27 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:27
List each component's full id, label, layer, context and the scoped Spec and binding kind that brought it in; list unassigned units, unreadable declarations, planned-to-realized comparisons and every original uses edge.
elementIds line 28 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:28
Use diagram.<subject>.architecture.text and .architecture.arrow; context and layer folds append their encoded full key before the suffix.
mermaidKind line 29 · specs/consumers/spec-studio.diagram-kinds.scoped-architecture.sdp.md:29
block with generic component boxes and uses arrows for a purely anchored grid; use flowchart TB with explicit declared and anchored labels when planned, comparison or folded edges cannot be preserved by block syntax. Architecture icons never infer deployment meaning.

no citation recorded

Verification

Verifier bindings

  • test:protocol.studio-slice-architecture · anchored · test anchor binding present · test/studio-slice.test.ts:579

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

    Test anchors: test:protocol.studio-slice-architecture, test:protocol.studio-slice-dependency, test:protocol.studio-slice-page. Specs verified by those bindings: spec:consumers.spec-studio.diagram-kinds.dependency, spec:consumers.spec-studio.diagram-kinds.scoped-architecture, spec:consumers.spec-studio.slice-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
    renders the complete answer in order, keeps held examples folded and independent examples separateslice pagepassed41.17 ms
    keeps declared, unreadable and comparison words in their own design cellsslice pagepassed0.84 ms
    writes the slice's Pack id as text in exports instead of a relative file pathslice pagepassed0.62 ms
    names each manifest member that resolves to no Spec beside the summaryslice pagepassed10.28 ms
    uses singular summary nouns and captions that add to the section headingsslice pagepassed50.67 ms
    keeps every link inside the complete page set and gives every id one ownerslice pagepassed47.47 ms
    names empty architecture and empty sections without inventing bindingsslice pagepassed0.69 ms
    stacks the member's next rung before the labelled design and code runs on a phoneslice pagepassed8.77 ms
    preserves single-member depths and opens complete text when no height-reducing fold fitsslice dependency drawingpassed1.47 ms
    aggregates boundary arrows before testing the bound, retaining every original relation in textslice dependency drawingpassed3.37 ms
    points from the Mermaid source disclosure to the full text equivalentslice dependency drawingpassed0.2 ms
    uses supplied depths, folds its boundary even below the bound, and retains full text and nonordering arrowsslice dependency drawingpassed3.52 ms
    folds largest complete bands first and opens text when protected boundary boxes exceed the boundslice dependency drawingpassed1.82 ms
    gives repeated scopes distinct fold element ids through their drawing occurrenceslice dependency drawingpassed2.52 ms
    keeps synthetic boundary identifiers out of the visible box identity lineslice dependency drawingpassed0.76 ms
    gives context and layer folds distinct ids and preserves all original rowsscoped architecture drawingpassed6.08 ms
    keeps planned and anchored identities apart, folds outside context and retains original unit edgesscoped architecture drawingpassed5.56 ms
    names uses, planned uses and realization in the legend and labels links only when a realization is drawnscoped architecture drawingpassed5.33 ms
    renders question fields as linked prose and dependency titles as plain textnot recordedpassed0.56 ms
    combines relations on one ordered pair while retaining every original text rownot recordedpassed0.73 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.diagram-kinds.scoped-architecture
The diagram as text
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture: A Spec set draws the architecture it touches · declared Spec
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
  • impl:protocol.studio-slice-architecture: selected component grid with distinct planned identities and complete unit edges · anchored code · src/projections/studio/diagrams/slice.ts:219
  • test:protocol.studio-slice-architecture: test:protocol.studio-slice-architecture · anchored test binding · binding present · test/studio-slice.test.ts:579
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture refines spec:consumers.spec-studio.diagram-kinds · declared
  • impl:protocol.studio-slice-architecture satisfies spec:consumers.spec-studio.diagram-kinds.scoped-architecture · anchored
  • test:protocol.studio-slice-architecture verifies spec:consumers.spec-studio.diagram-kinds.scoped-architecture · 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-slice-architecture · selected component grid with distinct planned identities and complete unit edges · src/projections/studio/diagrams/slice.ts:219

    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.scoped-architecture
The diagram as text
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture: A Spec set draws the architecture it touches
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:model.planned-architecture: Components are designed ahead of their code
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture dependsOn spec:consumers.design-slice · declared
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture dependsOn spec:consumers.spec-studio.lenses.architecture · declared
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture dependsOn spec:model.planned-architecture · declared
  • spec:consumers.spec-studio.diagram-kinds.scoped-architecture refines spec:consumers.spec-studio.diagram-kinds · declared
  • spec:consumers.spec-studio.slice-page dependsOn spec:consumers.spec-studio.diagram-kinds.scoped-architecture · declared — the scoped architecture drawing is a drawing kind, which owns layout, folding and the text equivalent
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.

Rests on

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingA slice reads a Pack as one design, with the architecture it touches and what each member needs next
spec:consumers.design-slice · resolves
declaredNoneNone
dependsOn · outgoingThe architecture lens draws components by context and layer, the planned beside the built
spec:consumers.spec-studio.lenses.architecture · resolves
declaredNoneNone
dependsOn · outgoingComponents are designed ahead of their code
spec:model.planned-architecture · resolves
declaredNoneNone
refines · outgoingThe Studio chooses diagram kinds from graph values
spec:consumers.spec-studio.diagram-kinds · resolves
declaredNoneNone
dependsOn · incomingA slice page shows a Pack's design as one whole
spec:consumers.spec-studio.slice-page · resolves
declaredthe scoped architecture drawing is a drawing kind, which owns layout, folding and the text equivalentNone

Bindings

Implementation binding: present

  • impl:protocol.studio-slice-architecture · selected component grid with distinct planned identities and complete unit edges · src/projections/studio/diagrams/slice.ts:219 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-slice-architecture · anchored · test/studio-slice.test.ts:579 · 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.