outcomeThe Studio chooses diagram kinds from graph values
spec:consumers.spec-studio.diagram-kindsNew 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: 37 design entries · 1 pinned declaration · 1 decision
Findings: no errors, no warnings
specs/consumers/spec-studio.diagram-kinds.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
Dependency chains across a Pack, capability refinement, the components a design touches, and differences between stated readiness and the floor need different pictures. A diagram kind earns its place through the question it answers and the graph values that answer it. Mermaid supplies a useful catalog of visual forms, not the Studio's layout runtime or an instruction to draw every form.
Intent
- Choose useful drawings from graph values, keep their labels readable on first view, and offer source a reader can copy without changing the shipped Mermaid projection.
Behavior
rule.graphDataline 22 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:22- A drawing reads the graph through the page's reader values and recipe answers. A visual form never supplies missing intent, order, cardinality, scores, dates or runtime evidence from prose, paths or imports.
no example exercises it
rule.kindCatalogline 23 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:23- The catalog names each visual family, whether the graph holds its data, its subject, the question it answers, and a refusal or deferral's re-entry trigger. Renderer aliases share their family's row; diagnostic renderers are named apart.
no example exercises it
rule.drawnKindsline 24 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:24- The Studio adds dependency depth, capability refinement, scoped architecture and the maturity map as a grid of counts, and a component uses table beside the architecture lens's drawing; requirement traceability replaces the realization drawing on a Spec page. Equivalent Mermaid forms share one Studio drawing.
no example exercises it
Cited at
- Test line ·
test/studio-diagram-catalog.test.ts:127· test:protocol.studio-diagram-catalog
- Test line ·
rule.honestScopeline 25 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:25- A Pack, slice or roadmap passes an explicit ordered set of Spec ids to a drawing. A grouping or a diagram never authors a delivery fact, ranks work, grants permission or sets a workflow gate.
no example exercises it
0 unkeyed rules.
Design
kindCatalogline 30 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:30draw,equivalent,deferandrefusedescribe catalog choices only. They are not graph fields or delivery states. A deferred form has honest inputs but adds no needed reading beyond the selected views; a refused form lacks typed inputs.no citation recorded
legibleLabelsline 31 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:31- The figure keeps the Studio's navigation rail. Title-first labels and width-based cell wrapping reduce width; natural-size SVG with local horizontal scrolling preserves readable labels on desktop. Below the responsive breakpoint the same drawing fits the screen. The legibility child pins these measurements and behavior.
flowchartline 32 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:32- Draw for a Spec set, Pack, slice or roadmap from declared relations; dependency depth reveals chains and cycles the one-hop trace cannot show. Arrows retain their exact relation and direction, never execution order. The existing trace and members remain equivalent flowchart subjects.
mindmapline 33 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:33- Draw capability refinement from declared refines for an epic or capability map. The tree shows nesting absent from a flat list; repeated parents and cycles stay explicit rather than becoming an invented hierarchy.
treeViewline 34 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:34- Equivalent to the capability tree for a strict refinement tree. Folder icons and file paths would invent meaning; use plain labels. Repeated parents use the capability view's cross-links or its flowchart source.
blockline 35 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:35- Draw scoped architecture and the discrete maturity matrix. Components and anchored uses answer which seams a Spec set touches; stated and reached rungs answer where statements lag or overreach. Cell position is categorical, never a score.
architectureline 36 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:36- Equivalent to the scoped architecture drawing for a component or Spec set, from component, memberOf and uses plus planned-component declarations. Generic boxes keep optional context and layer; cloud, service, network and deployment icons need explicit typed declarations before they can mean anything.
usesTableline 37 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:37- Draw a component uses table, a design structure matrix, beside the architecture lens's drawing: one row per realized component as the user and one column per realized component as the used, in one order, a cell for each pair. A table stays legible at any number of uses, where routed edges between a dozen components run in parallel bundles. It is an HTML table read from anchored uses, needs no layout, bound or fold, and offers no Mermaid source because Mermaid has no matrix form.
Cited at
- Test line ·
test/studio-diagram-catalog.test.ts:117· test:protocol.studio-diagram-catalog
- Test line ·
requirementline 38 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:38- Draw a Spec's or bounded Spec set's refinement, satisfying units and declared versus anchored verifiers together. This shows the distinction between intent and binding in one picture; it supplies no risk, test method or passing result.
classline 39 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:39- Defer a role view for a component or slice: units as classes stereotyped by their recorded role, with anchored uses as dependency arrows and no fields, methods or inheritance. Role, memberOf and uses are honest inputs, but the role vocabulary is under review and the architecture page lists roles as text. Re-enter when the role vocabulary settles and a reader needs pattern relationships drawn. Refuse fields, methods, inheritance and multiplicities; Model prose is not a schema.
entityRelationshipline 40 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:40- Refuse for a Spec, component or corpus. Terms and relations are not entity attributes, keys or cardinalities. Re-enter with an explicit typed entity and cardinality contract.
sequenceline 41 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:41- Refuse for a Spec or slice. Uses and dependsOn hold no messages, participants or temporal order. Re-enter with typed ordered interactions or a separately admitted runtime input.
zenUmlline 42 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:42- Refuse for the same missing interaction data as sequence; the optional external renderer adds no graph evidence. Re-enter when ordered interactions have a lawful graph home.
stateline 43 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:43- Refuse for a Spec or roadmap. Readiness is a position, not a transition machine, and the graph holds no domain states, events or guards. Re-enter with a typed domain state contract unrelated to delivery gating.
journeyline 44 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:44- Refuse for a Spec, Pack or corpus. Intent actors do not define ordered journey tasks or satisfaction scores. Re-enter with typed journey steps and a reader who needs them.
ganttline 45 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:45- Refuse for a roadmap or corpus. No durations, start dates or schedules are held, and dependency depth is not time. Re-enter only with a separately ruled temporal input that never gates work.
pieline 46 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:46- Defer for a Pack or corpus. Counts by kind or readiness are honest, but slices repeat the census while hiding exact comparisons. Re-enter when a reader needs part-to-whole comparison that the census cannot answer.
quadrantline 47 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:47- Refuse normalized quadrant coordinates for a Pack or roadmap. Readiness rungs have no numeric distances and priority is not a score. The maturity map uses a discrete matrix instead. Re-enter with explicitly typed independent numeric measures.
gitGraphline 48 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:48- Refuse for a Spec, Pack or corpus. Git is the event log, but commits and branch ancestry are not nodes in the current graph. Re-enter with a ruled history input and a history reader.
c4line 49 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:49- Refuse C4 semantics for a component or slice. Component anchors do not state people, software systems, containers, trust boundaries or deployment. Re-enter with typed C4 meanings; generic component structure remains in the architecture drawing.
timelineline 50 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:50- Refuse for a roadmap or corpus. A dependency chain and authored Pack order are neither dated events nor time periods. Re-enter with a lawful history input.
sankeyline 51 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:51- Refuse for a component, slice or corpus. Uses counts are discrete bindings, not a conserved flow or its magnitude. Re-enter with typed flow units and weights.
xyChartline 52 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:52- Defer categorical count bars for a Pack or corpus because the census already gives the exact counts; refuse a trend without time-series input. Re-enter when a reader needs a count comparison or a separately ruled time series.
packetline 53 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:53- Refuse for a Spec or component. Contract prose contains no typed bit offsets, field widths or packet layout. Re-enter with a typed wire-format layout.
kanbanline 54 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:54- Defer a separate readiness board because the maturity map shows both stated and reached rungs; refuse workflow states or inferred work order. The roadmap page's HTML lists by need already provide the categorical board over explicit graph values. Re-enter for Mermaid kanban export when a reader needs to copy that board.
radarline 55 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:55- Refuse for a Spec, Pack or corpus. There are no comparable numeric quality scores or justified common scales; cardinalities cannot manufacture them. Re-enter with typed independent measures and their units.
treemapline 56 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:56- Defer for a Pack or corpus. Spec counts and membership are honest, but area repeats the census and a multi-parent refinement graph cannot be partitioned without duplication. Re-enter with a named size-comparison reader and an explicit partition and measure.
swimlanesline 57 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:57- Refuse process swimlanes for a slice or component. Context and layer do not define actors, tasks or control flow. The architecture grid remains an equivalent grouping only. Re-enter with typed process participants and flow.
useCaseline 58 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:58- Refuse UML use-case associations for an epic or Spec. Intent.actor is prose, not an actor identity or an include, extend or association edge. Re-enter with explicit typed actor associations; behavior altitude alone supplies none.
eventModelingline 59 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:59- Refuse for a component or slice. The graph holds no ordered commands, events, screens or event streams. Re-enter with typed event-modeling declarations.
vennline 60 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:60- Defer Pack-overlap sets for the corpus. Membership allows honest intersections, but no current task needs a bounded overlap picture. Re-enter with named Packs and an overlap question whose intersections remain legible.
ishikawaline 61 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:61- Refuse for a Spec or corpus. A dependency is not a causal explanation and the graph holds no typed cause categories. Re-enter with authored causal relations admitted by the Protocol.
wardleyline 62 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:62- Refuse for a capability map or roadmap. Refinement and dependencies hold no value-chain visibility or evolution coordinates. Re-enter with a ruled typed strategy input; never map readiness to evolution.
cynefinline 63 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:63- Refuse for a Spec or roadmap. Kind and readiness are not complexity classifications. Re-enter with explicitly authored complexity assessments in an admitted contract.
agentFlowline 64 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:64- Refuse agent-flow semantics for a component or slice. Anchored uses do not identify agents, tools, prompts or routing decisions. Re-enter with typed agent and routing declarations.
railroadline 65 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:65- Refuse railroad, EBNF, ABNF and PEG forms for a Spec or corpus. A vocabulary's step strings and parameter slots do not state a complete grammar production graph. Re-enter with typed productions and a grammar reader; never parse prose into a grammar.
diagnosticsline 66 ·specs/consumers/spec-studio.diagram-kinds.sdp.md:66- Mermaid's info and error renderers are diagnostics, not corpus diagram kinds. Keep them outside the Studio catalog of graph drawings; renderer variants such as flowchart ELK, class and state versions share their semantic family's row.
Verification
Verifier bindings
- test:protocol.studio-diagram-catalog · anchored · test anchor binding present ·
test/studio-diagram-catalog.test.ts:12External run evidence from
test/studio-diagram-catalog.test.tsTest anchors:
test:protocol.studio-diagram-catalog. Specs verified by those bindings: spec:consumers.spec-studio.diagram-kinds.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 keeps the complete drawn catalog and every other family deferred or refused the shipped diagram catalog passed 3.32 ms renders the six promised readings from explicit graph values without adding other forms the shipped diagram catalog passed 1.71 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
Scroll horizontally to read the whole drawing.
The diagram as text
- spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
- spec:consumers.spec-studio.diagram-kinds.capability-tree: A refinement drawing follows the capability map · declared Spec
- 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.edge-routing: Edges route around boxes with deterministic orthogonal paths · declared Spec
- spec:consumers.spec-studio.diagram-kinds.legibility: A diagram preserves readable labels before zoom · declared Spec
- spec:consumers.spec-studio.diagram-kinds.maturity-picture: The maturity map is drawn as a grid of counts · declared Spec
- spec:consumers.spec-studio.diagram-kinds.mermaid-source: A diagram offers Mermaid source as copyable text · declared Spec
- 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.scoped-architecture: A Spec set draws the architecture it touches · declared Spec
- spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
- impl:protocol.studio-architecture-lens: renders recipe component rows and planned designs as architecture and member diagrams · anchored code ·
src/projections/studio/pages/architecture-page.ts:50 - impl:protocol.studio-capability-diagrams: places refinement occurrences and bounded branches from the capability map · anchored code ·
src/projections/studio/diagrams/capability.ts:101 - impl:protocol.studio-diagram-element: adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · anchored code ·
src/studio-elements/diagram.ts:23 - impl:protocol.studio-diagram-layout: title-first box placement, wrapping and band sizing for desktop and phone · anchored code ·
src/projections/studio/diagrams/layout.ts:140 - impl:protocol.studio-diagram-routing: port, channel and overflow-rail edge routes around boxes and labels · anchored code ·
src/projections/studio/diagrams/routing.ts:38 - impl:protocol.studio-diagram-source: escaped Mermaid flowchart and mindmap source in placed box order · anchored code ·
src/projections/studio/diagrams/mermaid.ts:13 - impl:protocol.studio-diagrams: deterministic grid and band layouts with bounded folds and full text equivalents · anchored code ·
src/projections/studio/diagrams/svg.ts:73 - impl:protocol.studio-maturity-map: places resolved Pack members by their stated rung and floor in authored order · anchored code ·
src/projections/studio/pages/maturity-map.ts:7 - 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 - 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 - 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-architecture-maturity-requirement: test:protocol.studio-architecture-maturity-requirement · anchored test binding · binding present ·
test/studio-panels.test.ts:35 - test:protocol.studio-capabilities: test:protocol.studio-capabilities · anchored test binding · binding present ·
test/studio-capabilities.test.ts:89 - test:protocol.studio-diagram-catalog: test:protocol.studio-diagram-catalog · anchored test binding · binding present ·
test/studio-diagram-catalog.test.ts:12 - test:protocol.studio-diagram-core: test:protocol.studio-diagram-core · anchored test binding · binding present ·
test/studio-diagram-core.test.ts:37 - test:protocol.studio-slice-architecture: test:protocol.studio-slice-architecture · anchored test binding · binding present ·
test/studio-slice.test.ts:579 - 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 refines spec:consumers.spec-studio.diagrams · declared
- spec:consumers.spec-studio.diagram-kinds.capability-tree refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.dependency refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagram-kinds · declared — arrows that cover no label serve the readable drawings the diagram kinds state
- spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagrams · declared
- spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagram-kinds · declared — readable labels are part of the outcome the diagram kinds state
- spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagrams · declared
- spec:consumers.spec-studio.diagram-kinds.maturity-picture refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.mermaid-source refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.requirement-trace refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.scoped-architecture refines spec:consumers.spec-studio.diagram-kinds · declared
- impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-capability-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.capability-tree · anchored
- impl:protocol.studio-capability-diagrams satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
- impl:protocol.studio-diagram-layout satisfies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
- impl:protocol.studio-diagram-layout satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-diagram-routing satisfies spec:consumers.spec-studio.diagram-kinds.edge-routing · anchored
- impl:protocol.studio-diagram-source satisfies spec:consumers.spec-studio.diagram-kinds.mermaid-source · anchored
- impl:protocol.studio-diagram-source satisfies spec:consumers.spec-studio.diagram-kinds.capability-tree · anchored
- impl:protocol.studio-diagram-source satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.edge-routing · anchored
- impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
- impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.mermaid-source · anchored
- impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.diagram-kinds.maturity-picture · anchored
- impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-requirement-diagram satisfies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
- impl:protocol.studio-requirement-diagram satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-requirement-view satisfies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
- impl:protocol.studio-slice-architecture satisfies spec:consumers.spec-studio.diagram-kinds.scoped-architecture · anchored
- impl:protocol.studio-slice-architecture satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- impl:protocol.studio-slice-dependencies satisfies spec:consumers.spec-studio.diagram-kinds.dependency · anchored
- impl:protocol.studio-slice-dependencies satisfies spec:consumers.spec-studio.diagram-kinds · anchored
- test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.diagram-kinds.maturity-picture · anchored
- test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
- test:protocol.studio-capabilities verifies spec:consumers.spec-studio.diagram-kinds.capability-tree · anchored
- test:protocol.studio-diagram-catalog verifies spec:consumers.spec-studio.diagram-kinds · anchored
- test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.legibility · anchored
- test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.edge-routing · anchored
- test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.mermaid-source · anchored
- test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagram-kinds.requirement-trace · anchored
- test:protocol.studio-slice-architecture verifies spec:consumers.spec-studio.diagram-kinds.scoped-architecture · 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 syntax: requirementDiagram. Chosen syntax: flowchart TB because folds require exact labels unavailable in requirement syntax.
Decisions
- The engine lays out every Studio diagram as static SVG when the page set is built
The engine lays out every Studio diagram at build time with its own deterministic layered layout and writes it into the page as inline SVG followed by a text equivalent. The custom element that holds a diagram adds only pan, zoom and pinch, by changing the SVG's view box. One diagram draws at most the bound
spec:consumers.spec-studio.diagrams#design.boundnames, and above it the diagram folds, by context and then by layer, as that Spec states.
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-architecture-lens· renders recipe component rows and planned designs as architecture and member diagrams ·src/projections/studio/pages/architecture-page.ts:50Component:
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-capability-diagrams· places refinement occurrences and bounded branches from the capability map ·src/projections/studio/diagrams/capability.ts:101Component:
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-diagram-layout· title-first box placement, wrapping and band sizing for desktop and phone ·src/projections/studio/diagrams/layout.ts:140Component:
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-diagram-source· escaped Mermaid flowchart and mindmap source in placed box order ·src/projections/studio/diagrams/mermaid.ts:13Component:
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-diagrams· deterministic grid and band layouts with bounded folds and full text equivalents ·src/projections/studio/diagrams/svg.ts:73Component:
component:protocol.projections· read-only output, layout and owned publication ·src/projections/design-review.ts:29· layer edge · context protocol Uses
impl:protocol.studio-diagram-model· shared diagram boxes, edges and drawing bounds ·src/projections/studio/diagrams/model.ts:1
impl:protocol.studio-maturity-map· places resolved Pack members by their stated rung and floor in authored order ·src/projections/studio/pages/maturity-map.ts:7Component:
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-diagram· folds requirement bindings by relation direction and claim and serializes exact relations ·src/projections/studio/diagrams/requirement.ts:12Component:
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-slice-architecture· selected component grid with distinct planned identities and complete unit edges ·src/projections/studio/diagrams/slice.ts:219Component:
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-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.spec-studio.capability-map-page: The capability map page makes refinement readable by epic
- spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values
- spec:consumers.spec-studio.diagram-kinds.capability-tree: A refinement drawing follows the capability map
- spec:consumers.spec-studio.diagram-kinds.dependency: A dependency drawing shows the declared footing of a Spec set
- spec:consumers.spec-studio.diagram-kinds.edge-routing: Edges route around boxes with deterministic orthogonal paths
- spec:consumers.spec-studio.diagram-kinds.legibility: A diagram preserves readable labels before zoom
- spec:consumers.spec-studio.diagram-kinds.maturity-picture: The maturity map is drawn as a grid of counts
- spec:consumers.spec-studio.diagram-kinds.mermaid-source: A diagram offers Mermaid source as copyable text
- spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification
- spec:consumers.spec-studio.diagram-kinds.scoped-architecture: A Spec set draws the architecture it touches
- spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
- spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built
- spec:consumers.spec-studio.diagram-kinds decidedBy spec:decisions.studio-diagram-renderer · declared — every new kind is laid out by the engine at build time as the renderer decision rules
- spec:consumers.spec-studio.diagram-kinds refines spec:consumers.spec-studio.diagrams · declared
- spec:consumers.spec-studio.capability-map-page dependsOn spec:consumers.spec-studio.diagram-kinds · declared — the refinement drawing shares the Studio's diagram layout and accessible text contract
- spec:consumers.spec-studio.diagram-kinds.capability-tree refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.dependency refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.edge-routing refines spec:consumers.spec-studio.diagram-kinds · declared — arrows that cover no label serve the readable drawings the diagram kinds state
- spec:consumers.spec-studio.diagram-kinds.legibility refines spec:consumers.spec-studio.diagram-kinds · declared — readable labels are part of the outcome the diagram kinds state
- spec:consumers.spec-studio.diagram-kinds.maturity-picture refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.mermaid-source refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.requirement-trace refines spec:consumers.spec-studio.diagram-kinds · declared
- spec:consumers.spec-studio.diagram-kinds.scoped-architecture refines spec:consumers.spec-studio.diagram-kinds · 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
- decidedBy · spec:decisions.studio-diagram-renderer · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.spec-studio.capability-map-page
Implementing units
impl:protocol.studio-capabilities-page·src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.spec-studio.diagram-kinds.capability-tree
Implementing units
impl:protocol.studio-capability-diagrams·src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.spec-studio.diagram-kinds.dependency
Implementing units
impl:protocol.studio-slice-dependencies·src/projections/studio/diagrams/slice.ts:10
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-dependency
- spec:consumers.spec-studio.diagram-kinds.edge-routing
Implementing units
impl:protocol.studio-diagram-routing·src/projections/studio/diagrams/routing.ts:38impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.legibility
Implementing units
impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-layout·src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.maturity-picture
Implementing units
impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement
- spec:consumers.spec-studio.diagram-kinds.mermaid-source
Implementing units
impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.requirement-trace
Implementing units
impl:protocol.studio-requirement-diagram·src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-requirement-view·src/projections/studio/pages/requirement-view.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-diagram-core
- spec:consumers.spec-studio.diagram-kinds.scoped-architecture
Implementing units
impl:protocol.studio-slice-architecture·src/projections/studio/diagrams/slice.ts:219
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-architecture
Distance 2
- spec:consumers.spec-studio.pack-page.maturity-map
Implementing units
impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
- 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
- spec:consumers.spec-studio.spec-page
Implementing units
impl:protocol.studio-requirement-view·src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page·src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure·src/projections/studio/pages/spec-structure.ts:44
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.spec-page.cited-declaration, test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
Distance 3
- spec:consumers.spec-studio.export
Implementing units
impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-expander·src/studio-elements/expander.ts:16impl:protocol.studio-pack-export·src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.export.self-contained, test:protocol.studio-intent-handoff
- spec:consumers.spec-studio.spec-page.cited-declaration
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-cited-declaration
- spec:consumers.spec-studio.spec-page.core
Implementing units
impl:protocol.studio-spec-page·src/projections/studio/pages/spec-page.ts:201
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- spec:consumers.spec-studio.verification-panels
Implementing units
impl:protocol.studio-run-rows·src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels·src/projections/studio/pages/spec-verification.ts:74
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.verification-panels.rule-coverage, test:protocol.studio-panels
Distance 4
- spec:consumers.spec-studio.export.self-contained
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-export-contained
- spec:consumers.spec-studio.verification-panels.rule-coverage
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
- spec:consumers.studio-on-ramp
Implementing units
impl:protocol.studio-on-ramp·test/skills.test.ts:1693
Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | The engine lays out every Studio diagram as static SVG when the page set is builtspec:decisions.studio-diagram-renderer · resolves | declared | every new kind is laid out by the engine at build time as the renderer decision rules | None |
| refines · outgoing | A diagram is laid out from graph values into SVG with a text equivalentspec:consumers.spec-studio.diagrams · resolves | declared | None | None |
| dependsOn · incoming | The capability map page makes refinement readable by epicspec:consumers.spec-studio.capability-map-page · resolves | declared | the refinement drawing shares the Studio's diagram layout and accessible text contract | None |
| refines · incoming | A refinement drawing follows the capability mapspec:consumers.spec-studio.diagram-kinds.capability-tree · resolves | declared | None | None |
| refines · incoming | A dependency drawing shows the declared footing of a Spec setspec:consumers.spec-studio.diagram-kinds.dependency · resolves | declared | None | None |
| refines · incoming | Edges route around boxes with deterministic orthogonal pathsspec:consumers.spec-studio.diagram-kinds.edge-routing · resolves | declared | arrows that cover no label serve the readable drawings the diagram kinds state | None |
| refines · incoming | A diagram preserves readable labels before zoomspec:consumers.spec-studio.diagram-kinds.legibility · resolves | declared | readable labels are part of the outcome the diagram kinds state | None |
| refines · incoming | The maturity map is drawn as a grid of countsspec:consumers.spec-studio.diagram-kinds.maturity-picture · resolves | declared | None | None |
| refines · incoming | A diagram offers Mermaid source as copyable textspec:consumers.spec-studio.diagram-kinds.mermaid-source · resolves | declared | None | None |
| refines · incoming | A requirement drawing separates intent from realization and verificationspec:consumers.spec-studio.diagram-kinds.requirement-trace · resolves | declared | None | None |
| refines · incoming | A Spec set draws the architecture it touchesspec:consumers.spec-studio.diagram-kinds.scoped-architecture · resolves | declared | None | None |
Bindings
Implementation binding: present
impl:protocol.studio-architecture-lens· renders recipe component rows and planned designs as architecture and member diagrams ·src/projections/studio/pages/architecture-page.ts:50· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.studio-capability-diagrams· places refinement occurrences and bounded branches from the capability map ·src/projections/studio/diagrams/capability.ts:101· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.studio-diagram-layout· title-first box placement, wrapping and band sizing for desktop and phone ·src/projections/studio/diagrams/layout.ts:140· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.studio-diagram-source· escaped Mermaid flowchart and mindmap source in placed box order ·src/projections/studio/diagrams/mermaid.ts:13· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.studio-diagrams· deterministic grid and band layouts with bounded folds and full text equivalents ·src/projections/studio/diagrams/svg.ts:73· role projection · component component:protocol.projections· layer edge · context protocolimpl:protocol.studio-maturity-map· places resolved Pack members by their stated rung and floor in authored order ·src/projections/studio/pages/maturity-map.ts:7· role projection · component component:protocol.projections· layer edge · context protocolimpl: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 protocolimpl: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 protocolimpl: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-diagram-catalog · anchored ·
test/studio-diagram-catalog.test.ts:12· 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.