outcomeA dependency drawing shows the declared footing of a Spec set
spec:consumers.spec-studio.diagram-kinds.dependencyNew 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: 6 design entries · 2 pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
Intent
- See multi-hop dependency chains and cycles within a Pack, slice or roadmap without reading them as an execution schedule.
Behavior
rule.declaredOnlyline 16 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:16- Draw the design slice answer's structure edges and rests-on boundary, preserving each declared refines, dependsOn, constrainedBy and decidedBy relation's exact direction, reason and claim. The design slice owns its rests-on exception for a refines back to a member that names it by another typed relation: such an edge carries
orders: false, is drawn dashed and says in its legend and text that it orders nothing. Membership is scope, never a dependency.no example exercises it
rule.depthline 17 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:17- Band each member by the depth its supplied answer gives, the design slice's
depthfor a Pack, slice or roadmap scope; the layout never recomputes it. A cycle's members share one band and are named as a cycle in words.no example exercises it
rule.boundaryline 18 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:18- Show immediate dependencies outside the supplied scope in a separate boundary band, without traversing their dependencies. An unresolved target is named unresolved and has no invented title or link.
no example exercises it
rule.foldline 19 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:19- The boundary band always folds into one box per relation type that names its count, keeping as its own box each outside Spec that holds a member's stated next rung or states below defined, and every folded Spec stays a row of the text equivalent; above the shared bound, whole depth bands fold in descending box count, ties by ascending depth; if the drawing still exceeds the bound, the SVG is omitted and the text equivalent opens.
no example exercises it
rule.examplesInParentline 20 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:20- An example member the design slice folds into its parent is counted on that parent's box and is never drawn as its own box; it keeps its row in the text equivalent. An example the slice does not fold is a box like any other member's.
no example exercises it
0 unkeyed rules.
Design
inputsline 23 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:23subjectand the design slice answer supply ordered members, exampleOf, exampleMembers, depth, cycles, structure edges and the rests-on boundary with its holds and relation reasons; a roadmap passes its explicitly selected ordered Spec set to that same reader. Duplicate or unknown scope ids are that reader's diagnostics, never repaired by layout.no citation recorded
bandsline 24 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:24- Label bands
Depth <n>from the deepest at the top down to depth 1, thenOutside this scopeat the bottom, so a member sits above what it rests on and boundary edges stay short. Within a band keep supplied order. Depths are structural, never phases, dates or priority. edgeWordsline 25 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:25- Show refines, dependsOn, constrainedBy and decidedBy beside their arrow or as a keyed legend where several kinds occur, and in the text equivalent with claim and optional reason. Mixed relations cannot become an unlabeled dependency arrow. Arrows with the same ends, claim and ordering may combine into one arrow naming every relation; the text equivalent retains each original relation and reason.
textEquivalentline 26 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:26- List every scoped and boundary Spec with its full id and title, then every original edge and every cycle's members; folding removes no text row.
elementIdsline 27 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:27- Use
diagram.<subject>.dependencies.text,.dependencies.arrowand.dependencies.fold.<depth>; a second scope on one page uses a distinct subject occurrence key supplied by the page. mermaidKindline 28 ·specs/consumers/spec-studio.diagram-kinds.dependency.sdp.md:28flowchart TBwith depth subgraphs and exact relation labels; export the displayed folds and name the full text equivalent beside the source.no citation recorded
Verification
Verifier bindings
- test:protocol.studio-slice-dependency · anchored · test anchor binding present ·
test/studio-slice.test.ts:369External run evidence from
test/studio-slice.test.tsTest 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
Name Suite Result Duration renders the complete answer in order, keeps held examples folded and independent examples separate slice page passed 41.17 ms keeps declared, unreadable and comparison words in their own design cells slice page passed 0.84 ms writes the slice's Pack id as text in exports instead of a relative file path slice page passed 0.62 ms names each manifest member that resolves to no Spec beside the summary slice page passed 10.28 ms uses singular summary nouns and captions that add to the section headings slice page passed 50.67 ms keeps every link inside the complete page set and gives every id one owner slice page passed 47.47 ms names empty architecture and empty sections without inventing bindings slice page passed 0.69 ms stacks the member's next rung before the labelled design and code runs on a phone slice page passed 8.77 ms preserves single-member depths and opens complete text when no height-reducing fold fits slice dependency drawing passed 1.47 ms aggregates boundary arrows before testing the bound, retaining every original relation in text slice dependency drawing passed 3.37 ms points from the Mermaid source disclosure to the full text equivalent slice dependency drawing passed 0.2 ms uses supplied depths, folds its boundary even below the bound, and retains full text and nonordering arrows slice dependency drawing passed 3.52 ms folds largest complete bands first and opens text when protected boundary boxes exceed the bound slice dependency drawing passed 1.82 ms gives repeated scopes distinct fold element ids through their drawing occurrence slice dependency drawing passed 2.52 ms keeps synthetic boundary identifiers out of the visible box identity line slice dependency drawing passed 0.76 ms gives context and layer folds distinct ids and preserves all original rows scoped architecture drawing passed 6.08 ms keeps planned and anchored identities apart, folds outside context and retains original unit edges scoped architecture drawing passed 5.56 ms names uses, planned uses and realization in the legend and labels links only when a realization is drawn scoped architecture drawing passed 5.33 ms renders question fields as linked prose and dependency titles as plain text not recorded passed 0.56 ms combines relations on one ordered pair while retaining every original text row not recorded passed 0.73 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:consumers.spec-studio.diagram-kinds.dependency: A dependency drawing shows the declared footing of a Spec set · declared Spec
- spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
- impl:protocol.studio-slice-dependencies: supplied depth bands with protected boundary boxes and lossless text · anchored code ·
src/projections/studio/diagrams/slice.ts:10 - test:protocol.studio-slice-dependency: test:protocol.studio-slice-dependency · anchored test binding · binding present ·
test/studio-slice.test.ts:369 - spec:consumers.spec-studio.diagram-kinds.dependency refines spec:consumers.spec-studio.diagram-kinds · declared
- impl:protocol.studio-slice-dependencies satisfies spec:consumers.spec-studio.diagram-kinds.dependency · anchored
- test:protocol.studio-slice-dependency verifies spec:consumers.spec-studio.diagram-kinds.dependency · 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-dependencies· supplied depth bands with protected boundary boxes and lossless text ·src/projections/studio/diagrams/slice.ts:10Component:
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
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.dependency: A dependency drawing shows the declared footing of a Spec set
- spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
- spec:consumers.spec-studio.diagram-kinds.dependency dependsOn spec:consumers.design-slice · declared
- spec:consumers.spec-studio.diagram-kinds.dependency refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.slice-page dependsOn spec:consumers.spec-studio.diagram-kinds.dependency · declared — the dependency drawing given the slice's order 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
- refines · spec:consumers.spec-studio.diagram-kinds · stated ready, floor ready
- dependsOn · spec:consumers.design-slice · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.spec-studio.slice-page
Implementing units
impl:protocol.studio-slice-page·src/projections/studio/pages/slice-page.ts:25
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | A slice reads a Pack as one design, with the architecture it touches and what each member needs nextspec:consumers.design-slice · resolves | declared | None | None |
| refines · outgoing | The Studio chooses diagram kinds from graph valuesspec:consumers.spec-studio.diagram-kinds · resolves | declared | None | None |
| dependsOn · incoming | A slice page shows a Pack's design as one wholespec:consumers.spec-studio.slice-page · resolves | declared | the dependency drawing given the slice's order is a drawing kind, which owns layout, folding and the text equivalent | None |
Bindings
Implementation binding: present
impl:protocol.studio-slice-dependencies· supplied depth bands with protected boundary boxes and lossless text ·src/projections/studio/diagrams/slice.ts:10· role projection · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
- test:protocol.studio-slice-dependency · anchored ·
test/studio-slice.test.ts:369· 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.