outcomeAn architecture within the bound draws in one diagram, the same bytes twice
spec:consumers.spec-studio.diagrams.within-boundPacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.diagrams.within-bound.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
an architecture of {components: 12} components spread over {contexts: 3} contexts and {layers: 4} layers, with {edges: 20} uses edges between componentsWhen
the build lays the architecture diagram out twice
Then
the two drawings are byte-identical: {identical: true}
the diagram folds by {fold: "nothing"}
the first drawing holds {drawn: 12} boxes
its text equivalent names {named: 32} boxes and edgesComposing needs the script.
Intent
- Execute the grid, the text equivalent and determinism on an architecture that fits one drawing.
assumptions- The world builds the layout's input directly: the components are named
component:probe.c01and on, assigned in turn to the first contexts in code-unit order and the first layers in the closed order, and the uses edges join distinct component pairs taken in id order until the count is reached. It lays the input out twice through the engine's layout and compares the two SVG strings.
- The world builds the layout's input directly: the components are named
Behavior
Examples
Given an architecture of {components: 12} components spread over {contexts: 3} contexts and {layers: 4} layers, with {edges: 20} uses edges between components
When the build lays the architecture diagram out twice
Then the two drawings are byte-identical: {identical: true}
Then the diagram folds by {fold: "nothing"}
Then the first drawing holds {drawn: 12} boxes
Then its text equivalent names {named: 32} boxes and edgesVerification
Verifier bindings
- test:protocol.studio-diagram-within-bound · anchored · test anchor binding present ·
test/studio-s1.test.ts:669External run evidence from
test/studio-s1.test.tsTest anchors:
test:protocol.studio-architecture-planned-apart,test:protocol.studio-coverage-literal,test:protocol.studio-coverage-number,test:protocol.studio-diagram-folds-context,test:protocol.studio-diagram-folds-layer,test:protocol.studio-diagram-within-bound,test:protocol.studio-lenses,test:protocol.studio-tests-coverage-row. Specs verified by those bindings: spec:consumers.agent-surface.example-space-coverage, spec:consumers.agent-surface.example-space-coverage.number-not-enumerable, spec:consumers.agent-surface.example-space-coverage.uncovered-literal, spec:consumers.spec-studio.data.recipe-answers, spec:consumers.spec-studio.diagrams, spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.folds-by-layer, spec:consumers.spec-studio.diagrams.within-bound, spec:consumers.spec-studio.lenses, spec:consumers.spec-studio.lenses.architecture, spec:consumers.spec-studio.lenses.architecture.planned-apart, spec:consumers.spec-studio.lenses.evidence, spec:consumers.spec-studio.lenses.packs, spec:consumers.spec-studio.lenses.tests, spec:consumers.spec-studio.lenses.tests.coverage-row.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
Name Suite Result Duration bounds and folds 12 components Studio diagrams passed 21.4 ms bounds and folds 45 components Studio diagrams passed 4.18 ms bounds and folds 50 components Studio diagrams passed 10.57 ms keeps every edge in an open text fallback Studio diagrams passed 1.76 ms orders grid contexts and layers and wraps cells within the fixed width budget Studio diagrams passed 3.65 ms draws planned-use edges dashed independently of planned box outlines Studio diagrams passed 0.48 ms checks the edge bound even when boxes fit Studio diagrams passed 0.41 ms places folded contexts and layers in their own bands below the grid Studio diagrams passed 3.19 ms places outgoing relation bands above the subject and folds ties in relation order Studio diagrams passed 9.26 ms folds trace relation groups and leaves member overflow as text Studio diagrams passed 2.95 ms keeps recipe and diagram edges in code-unit order under forced Czech collation Studio lenses passed 116.83 ms publishes all five ordered lenses and honest evidence without script Studio lenses passed 33.06 ms reads verifier binding from the delivery fact and gives absent coverage its own filter value Studio lenses passed 18.02 ms labels a primitive-only space with no examples not measurable and hides it under covered Studio lenses passed 14.75 ms classifies 'number' with points [ '1' ] and mixed=false as 'not-measurable' Studio lenses passed 26.11 ms classifies 'string' with points [ '"a"' ] and mixed=false as 'not-measurable' Studio lenses passed 22.83 ms classifies 'boolean' with points [ 'true' ] and mixed=false as 'not-measurable' Studio lenses passed 11.69 ms classifies '"a"|"b"' with points [] and mixed=false as 'uncovered' Studio lenses passed 9.5 ms classifies '"a"|"b"' with points [ '"a"' ] and mixed=false as 'uncovered' Studio lenses passed 11.11 ms classifies '"a"|"b"' with points [ '"a"', '"b"' ] and mixed=false as 'covered' Studio lenses passed 15.58 ms classifies '"a"|"b"' with points [ '"a"' ] and mixed=true as 'uncovered' Studio lenses passed 16.25 ms classifies '"a"|"b"' with points [ '"a"', '"b"' ] and mixed=true as 'covered' Studio lenses passed 20.2 ms renders member subjects, code spans, used-by counts, differences and empty components Studio lenses passed 14.17 ms describes evidence sources as not tracked Studio lenses passed 2.87 ms executes the bound example against a fresh world An architecture within the bound draws in one diagram, the same bytes twice (spec:consumers.spec-studio.diagrams.within-bound) passed 13 ms executes the bound example against a fresh world An architecture over the bound folds by context (spec:consumers.spec-studio.diagrams.folds-by-context) passed 7.68 ms executes the bound example against a fresh world One context over the bound folds by layer (spec:consumers.spec-studio.diagrams.folds-by-layer) passed 8.85 ms executes the bound example against a fresh world A component design no anchor realizes draws planned beside the built one (spec:consumers.spec-studio.lenses.architecture.planned-apart) passed 26.33 ms executes the bound example against a fresh world A Spec's row on the tests lens counts its exercised keyed rules (spec:consumers.spec-studio.lenses.tests.coverage-row) passed 13.82 ms executes the bound example against a fresh world A literal no example binds is reported uncovered, and an unbound child is named (spec:consumers.agent-surface.example-space-coverage.uncovered-literal) passed 4.85 ms executes the bound example against a fresh world A number slot is not enumerable and reports no uncovered value (spec:consumers.agent-surface.example-space-coverage.number-not-enumerable) passed 3.01 ms reuses the build's reader and validation findings during Studio recipe evaluation not recorded passed 3.94 ms documents the component and member fields recipe 17 adds not recorded passed 1.22 ms evaluates each shipped recipe once for its assigned parameters and shares Pack totals, with base false not recorded passed 14.63 ms evaluates each shipped recipe once for its assigned parameters and shares Pack totals, with base true not recorded passed 20.61 ms keeps label lines bounded and orders member depths numerically with outside units last not recorded passed 2.32 ms labels planned uses, reports unreadable designs and keeps unknown structure visible not recorded passed 8.33 ms gives unstated context and layer folds addressable text descriptions not recorded passed 1.14 ms names a single edge relation once in the legend and preserves its text equivalent not recorded passed 1.75 ms names solid and planned uses once without repeating edge labels not recorded passed 0.63 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
The diagram as text
- spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice · declared Spec
- spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
- test:protocol.studio-diagram-within-bound: test:protocol.studio-diagram-within-bound · anchored test binding · binding present ·
test/studio-s1.test.ts:669 - spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
- spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared
- test:protocol.studio-diagram-within-bound verifies spec:consumers.spec-studio.diagrams.within-bound · 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
No implementation neighborhood recorded.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
- E2: verifies · declared
The diagram as text
- spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
- spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice
- spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
- spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:consumers.spec-studio.diagrams · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A diagram is laid out from graph values into SVG with a text equivalentspec:consumers.spec-studio.diagrams · resolves | declared | None | None |
| verifies · outgoing | A diagram is laid out from graph values into SVG with a text equivalentspec:consumers.spec-studio.diagrams · resolves | declared | None | buildTime, layoutInputs, sameBytes, architectureGrid, textEquivalent |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.studio-diagram-within-bound · anchored ·
test/studio-s1.test.ts:669· 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.