outcomeA refinement drawing follows the capability map
spec:consumers.spec-studio.diagram-kinds.capability-treePacks: 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.capability-tree.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
Intent
- Read the capability map as a hierarchy without inventing parentage from names or hiding multiple parents.
Behavior
rule.mapInputline 16 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:16- Draw the roots, refinement edges, unreached Specs and repeated reach supplied by the capability map. Root selection and reach belong to that reader, never to label prefixes, files or the drawing.
no example exercises it
rule.multipleParentsline 17 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:17- Place a Spec at its first visit in the capability map page's traversal of the epic and draw each later visit as a repeat box that links to the first occurrence and keeps its own refines arrow. A cycle is a labelled group whose internal relations stay in the text equivalent; the drawing never cuts an edge silently.
no example exercises it
rule.foldline 18 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:18- Above the shared bound, retain each root and fold the largest descendant branch below a non-root parent first, ties by root order then id, linking to its full branch list. If siblings still exceed the bound, keep their first entries in supplied order and replace the remaining siblings of one parent together with their descendant boxes with a labelled folded remainder, keeping that parent's relation explicit and counting every hidden unique Spec. Count unique Specs and rendered boxes separately where a cycle or repeated reach needs an occurrence. If no lawful fold fits, omit the SVG and open the text equivalent.
no example exercises it
0 unkeyed rules.
Design
layoutline 21 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:21- Roots lead, then depth bands of children; label each box with its title, altitude and shortened id. A refines arrow still points child to parent. Unreached Specs occupy a labelled band apart. Within a depth band, children sit together under their placement parent as one labelled sibling group, in parent order; a band never interleaves siblings of different parents.
wordsBesideStyleline 22 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:22- The legend says
Arrows: refines (declared). Later visits repeat a Spec and link to its first occurrence.A group sayscycleorfoldedin words and names its unique member count. textEquivalentline 23 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:23- List every root and reachable Spec, all declared refines edges, cycle membership and unreached ids using full identities. Grouping confers no delivery fact or readiness.
elementIdsline 24 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:24- Use
diagram.<subject>.capability.text,.capability.arrowand.capability.branch.<encoded-root-id>; encoded identities are injective and stable, not truncated labels. mermaidKindline 25 ·specs/consumers/spec-studio.diagram-kinds.capability-tree.sdp.md:25mindmapfor a strict tree, with title and full id per node. Useflowchart BTwith exact refines edges whenever there is repeated parentage, a cycle, an unreached band or a fold that mindmap cannot state losslessly. TreeView is an optional equivalent export of a strict tree with icons disabled.no citation recorded
Verification
Verifier bindings
- test:protocol.studio-capabilities · anchored · test anchor binding present ·
test/studio-capabilities.test.ts:89External run evidence from
test/studio-capabilities.test.tsTest anchors:
test:protocol.studio-capabilities. Specs verified by those bindings: spec:consumers.spec-studio.capability-map-page, spec:consumers.spec-studio.diagram-kinds.capability-tree.Run 1: external run evidence from vitest 4.1.10
Build: CI 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z
Name Suite Result Duration folds whole sibling branches for 30 features with 1 stories Studio capabilities passed 49.24 ms folds whole sibling branches for 45 features with 5 stories Studio capabilities passed 324.65 ms folds whole sibling branches for 40 features with 40 stories Studio capabilities passed 1924.22 ms keeps reached children out of the unreached drawing and complete rows Studio capabilities passed 24.85 ms shows cycle diagnostics outside closed disclosures Studio capabilities passed 16.96 ms exports every cycle member and exact edge with the Mermaid fallback reason Studio capabilities passed 3.69 ms renders code-span titles as plain drawing words and questions as linked prose Studio capabilities passed 5.35 ms initializes epic filtering from the URL, intersects every control and resets native rows Studio capabilities passed 9.11 ms reflows capability cards, caps deep indentation and opens complete text for print Studio capabilities passed 39.26 ms folds only a leaf remainder at the root, preserves first siblings and falls back for too many roots Studio capabilities passed 65.42 ms condenses a cycle into a labelled group and retains its internal relations in words Studio capabilities passed 5.58 ms shares the detailed recipe answer and publishes a lens immediately after Packs Studio capabilities passed 0.84 ms labels nested epics, scopes distinct rollups and separates examples and decisions Studio capabilities passed 0.33 ms keeps depth-first repeats, every relation and question links to real ids Studio capabilities passed 0.52 ms renders a repeat box with its own child-to-parent arrow and groups siblings Studio capabilities passed 4.31 ms uses mindmap only for a strict tree and folds large branches without losing text Studio capabilities passed 57.15 ms keeps cycles finite, labelled and complete, and handles no epics or an empty corpus Studio capabilities passed 12.08 ms records all epic memberships on index rows and preserves Pack disclosures Studio capabilities passed 0.48 ms intersects epic selection with every existing filter and treats no epic explicitly Studio capabilities passed 0.82 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:consumers.spec-studio.diagram-kinds.capability-tree: A refinement drawing follows the capability map · declared Spec
- spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · declared Spec
- 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-source: escaped Mermaid flowchart and mindmap source in placed box order · anchored code ·
src/projections/studio/diagrams/mermaid.ts:13 - test:protocol.studio-capabilities: test:protocol.studio-capabilities · anchored test binding · binding present ·
test/studio-capabilities.test.ts:89 - spec:consumers.spec-studio.diagram-kinds.capability-tree refines spec:consumers.spec-studio.diagram-kinds · declared
- impl:protocol.studio-capability-diagrams satisfies spec:consumers.spec-studio.diagram-kinds.capability-tree · anchored
- impl:protocol.studio-diagram-source satisfies spec:consumers.spec-studio.diagram-kinds.capability-tree · anchored
- test:protocol.studio-capabilities verifies spec:consumers.spec-studio.diagram-kinds.capability-tree · 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-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-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.
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.capability-map: The capability map reads every epic and its refinement descendants
- 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.capability-tree dependsOn spec:consumers.capability-map · declared
- spec:consumers.spec-studio.diagram-kinds.capability-tree 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.diagram-kinds · stated ready, floor ready
- dependsOn · spec:consumers.capability-map · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | The capability map reads every epic and its refinement descendantsspec:consumers.capability-map · resolves | declared | None | None |
| refines · outgoing | The Studio chooses diagram kinds from graph valuesspec:consumers.spec-studio.diagram-kinds · resolves | declared | None | None |
Bindings
Implementation binding: present
impl: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-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 protocol
Design reference: none
Verifier binding: present
- test:protocol.studio-capabilities · anchored ·
test/studio-capabilities.test.ts:89· 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.