outcomeThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.dataPacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: 5 design entries · 5 pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.data.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The build writes each value into the page's markup, so a page reads in full as HTML. Search is the exception: a browser refuses a fetch from a page opened through file://, so the search page carries its index inside it. On the first adopter's corpus that index is too large to repeat on every page, which is why search runs on a page of its own.
Intent
- Render every Studio page from the values the reader returns for the graph the agent surface reads, so a page derives nothing of its own and carries only the data its script needs.
Contract
rule.readerValuesline 24 ·specs/consumers/spec-studio.data.sdp.md:24- The build renders the index from
specs(),packs(),findings(), each Spec's design columns and the epic memberships recipe 52 answers, a Pack page frompackContextand the Pack totals, a Spec page fromspecContext, and the search page from the search index; every page's rail renders the rail values. A page states no value the reader did not return or a named recipe did not answer, apart from counts the build takes of those values.no example exercises it
rule.embeddedDataline 25 ·specs/consumers/spec-studio.data.sdp.md:25- A page whose script reads data embeds it in one
scriptelement of typeapplication/jsonwith the idsdp-data, serialized as JSON with every<then written as the six characters\u003c, so no text can close the element. The search page embeds the search index there; every other page embeds no data, because its values are in its markup.no example exercises it
rule.noDataFilesline 26 ·specs/consumers/spec-studio.data.sdp.md:26- The page set writes no data file of its own: an agent reads the graph through
sdp q, andsdp buildwrites the serialized graph.no example exercises it
rule.noSlicesline 27 ·specs/consumers/spec-studio.data.sdp.md:27- The Studio's data holds no context bundle or other AI slice: the context bundle is composed on each invocation and never saved, and a design pass composes one with its recipe when it needs it. A slice page renders the design slice's answer into its markup, as every page renders its values, and embeds no slice data.
no example exercises it
0 unkeyed rules.
Design
packTotalsline 30 ·specs/consumers/spec-studio.data.sdp.md:30{ members: number; unresolved: number; heldBelowNextRung: number; waitingForAuthor: number; entries: number; declarations: number; openQuestions: number; blockingQuestions: number; withImplementations: number; withReferences: number; restsOn: number; restedOnBy: number; verifiedBy: number; supersededBy: number }, the totals recipe 29 returns for the Pack, each counted as that recipe counts it.no citation recorded
railValuesline 31 ·specs/consumers/spec-studio.data.sdp.md:31{ packs: { id: string; title?: string; members: { id: string; title?: string; statedReadiness?: string; ownsExampleSpace: boolean }[] }[]; findings: { errors: number; warnings: number } }, the values every page's rail renders: each Pack in id order with its members in authored order, a member owning an example space when its Spec context carries one, and the validation report's findings counted by severity.no citation recorded
searchIndexline 32 ·specs/consumers/spec-studio.data.sdp.md:32{ records: SearchRecord[] }, one record per graph node, in id order.no citation recorded
searchRecordline 33 ·specs/consumers/spec-studio.data.sdp.md:33{ id: string; nodeType: "Primitive" | "Pack" | "Anchor" | "CodeNode"; page: string | null; title?: string; label?: string; framing?: string; narrative?: string; sections?: Record<string, unknown>; file?: string; line?: number; specKind?: string; statedReadiness?: string; floorReached?: string | null; bindings: { edge: string; specId: string }[]; entries: SearchEntry[] }:title,label,framing,narrativeandsectionsexactly as the graph node holds them, the fieldsfindByConceptreads;pagethe node's page path in the page set, null for an Anchor or a CodeNode;fileandlineas recorded; the kind and the two rungs on a Spec only,floorReachednull when no rung derives;bindingsthe Specs an Anchor's or CodeNode's outgoing edges reach, with the edge type, and empty for any other node.no citation recorded
searchEntryline 34 ·specs/consumers/spec-studio.data.sdp.md:34{ section: string; entry: string | null; key: string | null; address: string | null; line: number | null; text: string }, one per value recipe 23's walk reaches in a Spec's narrative and sections, taken with no term: each string, and each value that is not a string under a key the author coins, as its JSON text; in that walk's order, with that recipe's entry path, coined key, address and line. A term matches an entry as that recipe matches it, a string by its key or text and any other value by its key only, so the entries a term matches are the rows recipe 23 returns for it.no citation recorded
Verification
Verifier bindings
- test:protocol.studio-data · anchored · test anchor binding present ·
test/studio-data.test.ts:26External run evidence from
test/studio-data.test.tsTest anchors:
test:protocol.studio-data. Specs verified by those bindings: spec:consumers.spec-studio.data, spec:consumers.spec-studio.publisher.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 counts every Pack exactly as recipe 29 Studio data over 'Protocol' passed 516.47 ms keeps one search record per node, fields unchanged and bindings decoded Studio data over 'Protocol' passed 443.96 ms matches recipe 23's exact rows for suffix Studio data over 'Protocol' passed 429.99 ms matches recipe 23's exact rows for rule Studio data over 'Protocol' passed 438.74 ms matches recipe 23's exact rows for type Studio data over 'Protocol' passed 374.75 ms matches recipe 23's exact rows for outcome Studio data over 'Protocol' passed 438.99 ms matches recipe 23's exact rows for order Studio data over 'Protocol' passed 362.31 ms matches recipe 23's exact rows for decision Studio data over 'Protocol' passed 302.81 ms matches recipe 23's exact rows for graphOnly Studio data over 'Protocol' passed 430.63 ms keeps rails in Pack-id and authored-member order, with severity and space ownership Studio data over 'Protocol' passed 356.57 ms counts every Pack exactly as recipe 29 Studio data over 'checkout' passed 3.92 ms keeps one search record per node, fields unchanged and bindings decoded Studio data over 'checkout' passed 3.37 ms matches recipe 23's exact rows for suffix Studio data over 'checkout' passed 4.05 ms matches recipe 23's exact rows for rule Studio data over 'checkout' passed 8.03 ms matches recipe 23's exact rows for type Studio data over 'checkout' passed 9.6 ms matches recipe 23's exact rows for outcome Studio data over 'checkout' passed 5.91 ms matches recipe 23's exact rows for order Studio data over 'checkout' passed 5.11 ms matches recipe 23's exact rows for decision Studio data over 'checkout' passed 2.74 ms matches recipe 23's exact rows for graphOnly Studio data over 'checkout' passed 3.89 ms keeps rails in Pack-id and authored-member order, with severity and space ownership Studio data over 'checkout' passed 3.39 ms serializes embedded JSON with no literal less-than character not recorded passed 0.34 ms encodes uppercase ids without case-insensitive page collisions not recorded passed 0.31 ms preserves coined non-string entries, question and rule addresses and their lines not recorded passed 0.83 ms keeps term addresses, keys and physical lines aligned with recipe 23 not recorded passed 4.8 ms shares only parameterless recipe answers within one Studio evaluation not recorded passed 1.52 ms
Design view
Requirement drawing
The diagram as text
- spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads · declared Spec
- spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records · declared Spec
- spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body · declared Spec
- spec:consumers.spec-studio.data.inputs.both-given: Both inputs add their pages, named, and the same inputs write the same bytes · declared Spec
- spec:consumers.spec-studio.data.inputs.graph-only: Without inputs the page set is the graph's alone · declared Spec
- spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
- impl:protocol.studio-base-input: reads named Studio base graphs and run inputs · anchored code ·
src/cli/studio-inputs.ts:9 - impl:protocol.studio-command: validates and renders the Studio with independent byte checks and diagnostic exit codes · anchored code ·
src/cli/studio-command.ts:106 - impl:protocol.studio-data: assembles reader contexts, Pack totals, rails and search records for static pages · anchored code ·
src/projections/studio/data.ts:279 - impl:protocol.studio-inputs: named base graph and run input contract · anchored code ·
src/projections/studio/inputs.ts:1 - impl:protocol.studio-recipes: evaluates shipped recipe bodies once and shares answers between Studio pages · anchored code ·
src/projections/studio/recipes.ts:34 - impl:protocol.studio-register-contracts: shared recipe answer shapes for Studio registers · anchored code ·
src/projections/studio/pages/register-answers.ts:4 - oracle:protocol.studio-inputs: oracle:protocol.studio-inputs · anchored oracle binding ·
test/studio-s4.test.ts:417 - test:protocol.studio-data: test:protocol.studio-data · anchored test binding · binding present ·
test/studio-data.test.ts:26 - test:protocol.studio-graph-only: test:protocol.studio-graph-only · anchored test binding · binding present ·
test/studio-s4.test.ts:434 - test:protocol.studio-inputs-both-given: test:protocol.studio-inputs-both-given · anchored test binding · binding present ·
test/studio-s4.test.ts:464 - test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present ·
test/studio-s1.test.ts:273 - spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
- spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.data.inputs.both-given refines spec:consumers.spec-studio.data.inputs · declared
- spec:consumers.spec-studio.data.inputs.both-given verifies spec:consumers.spec-studio.data.inputs · declared
- spec:consumers.spec-studio.data.inputs.graph-only refines spec:consumers.spec-studio.data.inputs · declared
- spec:consumers.spec-studio.data.inputs.graph-only verifies spec:consumers.spec-studio.data.inputs · declared
- spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · declared
- impl:protocol.studio-base-input satisfies spec:consumers.spec-studio.data.inputs · anchored
- impl:protocol.studio-command satisfies spec:consumers.spec-studio.data.inputs · anchored
- impl:protocol.studio-data satisfies spec:consumers.spec-studio.data · anchored
- impl:protocol.studio-inputs satisfies spec:consumers.spec-studio.data.inputs · anchored
- impl:protocol.studio-recipes satisfies spec:consumers.spec-studio.data.recipe-answers · anchored
- impl:protocol.studio-register-contracts references spec:consumers.spec-studio.data.recipe-answers · anchored
- oracle:protocol.studio-inputs models spec:consumers.spec-studio.data.inputs · anchored
- test:protocol.studio-data verifies spec:consumers.spec-studio.data · anchored
- test:protocol.studio-graph-only verifies spec:consumers.spec-studio.data.inputs.graph-only · anchored
- test:protocol.studio-inputs-both-given verifies spec:consumers.spec-studio.data.inputs.both-given · anchored
- test:protocol.studio-lenses verifies spec:consumers.spec-studio.data.recipe-answers · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, references, folds require exact labels unavailable in requirement syntax.
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-data· assembles reader contexts, Pack totals, rails and search records for static pages ·src/projections/studio/data.ts:279Component:
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.pack-design: The Pack context carries the Pack's design
- spec:consumers.reader: The reader bridges agent entry points to composable graph context
- spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
- spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders
- spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
- spec:consumers.spec-studio.data.inputs: The Studio reads two named inputs beside the graph, a base graph and run records
- spec:consumers.spec-studio.data.recipe-answers: A page takes each recipe answer from the recipe's shipped body
- spec:consumers.spec-studio.diagram-kinds.requirement-trace: A requirement drawing separates intent from realization and verification
- spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
- spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
- spec:consumers.spec-studio.index-page: The index says where the corpus stands and narrows every Spec
- spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
- spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle
- spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member
- spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
- spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
- spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs
- spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word
- spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
- spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
- spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry
- spec:extraction.determinism: Committed source derives byte-identical output
- spec:extraction.entry-locations: The graph records where each addressable entry is written
- spec:extraction.pack-member-order: A Pack node keeps its members in authored order
- spec:validation.next-rung-floor: The floor names what blocks the floor's next rung
- spec:consumers.spec-studio.data constrainedBy spec:extraction.determinism · declared
- spec:consumers.spec-studio.data dependsOn spec:consumers.pack-design · declared
- spec:consumers.spec-studio.data dependsOn spec:consumers.reader · declared
- spec:consumers.spec-studio.data dependsOn spec:extraction.entry-locations · declared
- spec:consumers.spec-studio.data dependsOn spec:extraction.pack-member-order · declared
- spec:consumers.spec-studio.data dependsOn spec:validation.next-rung-floor · declared
- spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
- spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.diagram-kinds.requirement-trace dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.diagrams dependsOn spec:consumers.spec-studio.data · declared — a diagram is laid out from the values and recipe answers its page renders
- spec:consumers.spec-studio.glossary-page dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.index-page dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.lenses dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.pack-page dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.publisher dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.registers dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.search dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.shell dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.spec-page dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.data.inputs refines spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.data.recipe-answers refines spec:consumers.spec-studio.data · 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 · stated ready, floor ready
- dependsOn · spec:consumers.pack-design · stated ready, floor ready
- dependsOn · spec:consumers.reader · stated ready, floor ready
- dependsOn · spec:extraction.entry-locations · stated ready, floor ready
- dependsOn · spec:extraction.pack-member-order · stated ready, floor ready
- dependsOn · spec:validation.next-rung-floor · stated ready, floor ready
- constrainedBy · spec:extraction.determinism · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.spec-studio.components
Implementing units
component:protocol.studio-elements·src/studio-elements/index.ts:13impl:protocol.studio-compose·src/studio-elements/compose.ts:13impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-intent-panel-element·src/studio-elements/intent-panel-element.ts:14impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68impl:protocol.studio-scenario-editor·src/studio-elements/scenario-editor.ts:17impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95impl:protocol.studio-spec-structure·src/projections/studio/pages/spec-structure.ts:44impl:protocol.studio-verification-panels·src/projections/studio/pages/spec-verification.ts:74
Referencing units
None.
Enabled verifiers: test:protocol.studio-intent-handoff
- spec:consumers.spec-studio.data.inputs
Implementing units
impl:protocol.studio-base-input·src/cli/studio-inputs.ts:9impl:protocol.studio-command·src/cli/studio-command.ts:106impl:protocol.studio-inputs·src/projections/studio/inputs.ts:1
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.data.inputs.both-given, spec:consumers.spec-studio.data.inputs.graph-only
- spec:consumers.spec-studio.data.recipe-answers
Implementing units
impl:protocol.studio-recipes·src/projections/studio/recipes.ts:34
Referencing units
impl:protocol.studio-register-contracts·src/projections/studio/pages/register-answers.ts:4
Enabled verifiers: test:protocol.studio-lenses
- 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.diagrams
Implementing units
impl:protocol.studio-architecture-diagrams·src/projections/studio/diagrams/architecture.ts:4impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-diagram-model·src/projections/studio/diagrams/model.ts:1impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-relation-diagrams·src/projections/studio/diagrams/bands.ts:10
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.diagrams.folds-by-context, spec:consumers.spec-studio.diagrams.folds-by-layer, spec:consumers.spec-studio.diagrams.within-bound, test:protocol.studio-diagram-core
- spec:consumers.spec-studio.glossary-page
Implementing units
impl:protocol.studio-glossary·src/projections/studio/pages/glossary-page.ts:7
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.glossary-page.same-word-twice
- spec:consumers.spec-studio.index-page
Implementing units
impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- spec:consumers.spec-studio.lenses
Implementing units
impl:protocol.studio-architecture-lens·src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-evidence-lens·src/projections/studio/pages/evidence-page.ts:3impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-tests-lens·src/projections/studio/pages/tests-page.ts:34
Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
- spec:consumers.spec-studio.owner-queue
Implementing units
impl:protocol.studio-owner-queue·src/projections/studio/pages/queue-page.ts:9
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.owner-queue.dependency-first
- spec:consumers.spec-studio.pack-page
Implementing units
impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68
Referencing units
None.
Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages
- spec:consumers.spec-studio.publisher
Implementing units
impl:protocol.build-pipeline-emit·src/cli/build-command.ts:251impl:protocol.studio-command·src/cli/studio-command.ts:106impl:protocol.studio-page-catalog·src/projections/studio/pages/index.ts:21impl:protocol.studio-paths·src/projections/studio/paths.ts:2impl:protocol.studio-publish·src/projections/studio/publish.ts:24
Referencing units
None.
Enabled verifiers: test:protocol.studio-data, test:protocol.studio-publisher
- spec:consumers.spec-studio.registers
Implementing units
impl:protocol.studio-registers·src/projections/studio/pages/registers-page.ts:47
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first
- spec:consumers.spec-studio.roadmap-page
Implementing units
impl:protocol.studio-roadmap-page·src/projections/studio/pages/roadmap-page.ts:168
Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
- spec:consumers.spec-studio.search
Implementing units
impl:protocol.studio-concept-match·src/reader/concept-match.ts:43impl:protocol.studio-search-page·src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95
Referencing units
None.
Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages
- spec:consumers.spec-studio.shell
Implementing units
impl:protocol.studio-code-spans·src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-html·src/projections/studio/pages/html.ts:8impl:protocol.studio-text·src/projections/studio/pages/text.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- 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
- 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
Distance 2
- spec:consumers.command-line
Implementing units
impl:protocol.adopter-help·src/cli/help.ts:167impl:protocol.agent-surface-cli·src/cli/sdp.ts:94impl:protocol.build-args·src/cli/build-args.ts:11impl:protocol.generate-command·src/cli/generate-command.ts:34
Referencing units
None.
Enabled verifiers: spec:consumers.command-line.generate-check-failure, spec:consumers.command-line.generate-writes-every-root, spec:consumers.command-line.verb-help-touches-nothing
- 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.cited-line-text
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
- spec:consumers.spec-studio.data.inputs.both-given
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-inputs-both-given
- spec:consumers.spec-studio.data.inputs.graph-only
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-graph-only
- spec:consumers.spec-studio.diagram-kinds
Implementing units
impl:protocol.studio-architecture-lens·src/projections/studio/pages/architecture-page.ts:50impl:protocol.studio-capability-diagrams·src/projections/studio/diagrams/capability.ts:101impl:protocol.studio-diagram-layout·src/projections/studio/diagrams/layout.ts:140impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7impl:protocol.studio-requirement-diagram·src/projections/studio/diagrams/requirement.ts:12impl:protocol.studio-slice-architecture·src/projections/studio/diagrams/slice.ts:219impl:protocol.studio-slice-dependencies·src/projections/studio/diagrams/slice.ts:10
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-catalog
- 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.diagrams.folds-by-context
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-folds-context
- spec:consumers.spec-studio.diagrams.folds-by-layer
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-folds-layer
- spec:consumers.spec-studio.diagrams.within-bound
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-within-bound
- spec:consumers.spec-studio.diff-page
Implementing units
impl:protocol.studio-diff·src/projections/studio/pages/diff-page.ts:91
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.diff-page.changed-entry, test:protocol.roadmap-priority
- 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.glossary-page.same-word-twice
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-glossary-same-word-twice
- spec:consumers.spec-studio.lenses.architecture
Implementing units
impl:protocol.studio-architecture-lens·src/projections/studio/pages/architecture-page.ts:50
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.lenses.architecture.planned-apart, test:protocol.studio-architecture-maturity-requirement
- spec:consumers.spec-studio.lenses.evidence
Implementing units
impl:protocol.studio-evidence-lens·src/projections/studio/pages/evidence-page.ts:3
Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
- spec:consumers.spec-studio.lenses.packs
Implementing units
impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-lenses
- spec:consumers.spec-studio.lenses.tests
Implementing units
impl:protocol.studio-tests-lens·src/projections/studio/pages/tests-page.ts:34
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.lenses.tests.coverage-row
- spec:consumers.spec-studio.navigation
Implementing units
impl: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-navigation, test:protocol.studio-roadmap-page
- spec:consumers.spec-studio.owner-queue.dependency-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-queue-dependency-first
- 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.page-elements
Implementing units
component:protocol.studio-elements·src/studio-elements/index.ts:13impl:protocol.studio-copy·src/studio-elements/copy.ts:22impl:protocol.studio-expander·src/studio-elements/expander.ts:16impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-search-form·src/studio-elements/search.ts:18impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95impl:protocol.studio-stamp·src/studio-elements/stamp.ts:30
Referencing units
None.
Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements
- spec:consumers.spec-studio.publisher.watch
Implementing units
impl:protocol.studio-watch·src/cli/studio-command.ts:122
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.publisher.watch.matches-plain-run
- spec:consumers.spec-studio.register-input
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
- spec:consumers.spec-studio.registers.blocking-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-registers-blocking-first
- spec:consumers.spec-studio.runs-page
Implementing units
impl:protocol.studio-run-rows·src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-runs-page·src/projections/studio/pages/runs-page.ts:6
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.runs-page.external-evidence
- spec:consumers.spec-studio.sharing
Implementing units
impl:protocol.stamp-command·src/cli/stamp-command.ts:8impl:protocol.studio-preview-workflow·test/studio-s4.test.ts:742impl:protocol.studio-stamp·src/studio-elements/stamp.ts:30
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.sharing.stamp-written-apart
- 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.cited-declaration
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-cited-declaration
- 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
- 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
Distance 3
- spec:consumers.command-line.generate-check-failure
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-check-failure
- spec:consumers.command-line.generate-writes-every-root
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.generate-writes-every-root
- spec:consumers.command-line.verb-help-touches-nothing
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.command-line.verb-help-touches-nothing
- spec:consumers.engine-provenance
Implementing units
impl:protocol.build-artifacts·src/cli/build-artifacts.ts:182impl:protocol.engine-provenance-cli·src/cli/sdp.ts:102
Referencing units
None.
Enabled verifiers: test:protocol.engine-provenance
- 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.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.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
- spec:consumers.spec-studio.diff-page.changed-entry
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-diff-changed-entry
- spec:consumers.spec-studio.export.self-contained
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-export-contained
- spec:consumers.spec-studio.lenses.architecture.planned-apart
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-planned-apart
- spec:consumers.spec-studio.lenses.architecture.unit-register
Implementing units
impl:protocol.studio-unit-register·src/projections/studio/pages/architecture-register.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1, pack:spec-studio-v1
- spec:consumers.spec-studio.lenses.tests.coverage-row
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-tests-coverage-row
- spec:consumers.spec-studio.publisher.watch.matches-plain-run
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-watch-plain
- spec:consumers.spec-studio.runs-page.external-evidence
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.run-external
- spec:consumers.spec-studio.sharing.stamp-written-apart
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-stamp-apart
- spec:consumers.spec-studio.verification-panels.rule-coverage
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
- spec:consumers.structural-mermaid
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| constrainedBy · outgoing | Committed source derives byte-identical outputspec:extraction.determinism · resolves | declared | None | None |
| dependsOn · outgoing | The Pack context carries the Pack's designspec:consumers.pack-design · resolves | declared | None | None |
| dependsOn · outgoing | The reader bridges agent entry points to composable graph contextspec:consumers.reader · resolves | declared | None | None |
| dependsOn · outgoing | The graph records where each addressable entry is writtenspec:extraction.entry-locations · resolves | declared | None | None |
| dependsOn · outgoing | A Pack node keeps its members in authored orderspec:extraction.pack-member-order · resolves | declared | None | None |
| dependsOn · outgoing | The floor names what blocks the floor's next rungspec:validation.next-rung-floor · resolves | declared | None | None |
| refines · outgoing | The Spec Studio is a static HTML workbench over the one graphspec:consumers.spec-studio · resolves | declared | None | None |
| dependsOn · incoming | The Studio's custom elements each hold one view the build rendersspec:consumers.spec-studio.components · resolves | declared | None | None |
| dependsOn · incoming | A requirement drawing separates intent from realization and verificationspec:consumers.spec-studio.diagram-kinds.requirement-trace · resolves | declared | None | None |
| dependsOn · incoming | A diagram is laid out from graph values into SVG with a text equivalentspec:consumers.spec-studio.diagrams · resolves | declared | a diagram is laid out from the values and recipe answers its page renders | None |
| dependsOn · incoming | The glossary page lists every term the corpus's Specs definespec:consumers.spec-studio.glossary-page · resolves | declared | None | None |
| dependsOn · incoming | The index says where the corpus stands and narrows every Specspec:consumers.spec-studio.index-page · resolves | declared | None | None |
| dependsOn · incoming | Five lenses read the graph as Packs, capabilities, architecture, tests and evidencespec:consumers.spec-studio.lenses · resolves | declared | None | None |
| dependsOn · incoming | The owner queue page orders the statements and questions only a person can settlespec:consumers.spec-studio.owner-queue · resolves | declared | None | None |
| dependsOn · incoming | A Pack page shows the Pack's design as one card per memberspec:consumers.spec-studio.pack-page · resolves | declared | None | None |
| dependsOn · incoming | sdp studio publishes the Studio as one page setspec:consumers.spec-studio.publisher · resolves | declared | None | None |
| dependsOn · incoming | The corpus's registers are pages a reviewer opens from a linkspec:consumers.spec-studio.registers · resolves | declared | None | None |
| dependsOn · incoming | The roadmap page shows the upcoming work in priority order, split by what it needsspec:consumers.spec-studio.roadmap-page · resolves | declared | None | None |
| dependsOn · incoming | Search finds a Spec, a Pack, an entry or a bound file by a wordspec:consumers.spec-studio.search · resolves | declared | None | None |
| dependsOn · incoming | The Studio's shell frames every page with navigation, a rail and a canvasspec:consumers.spec-studio.shell · resolves | declared | None | None |
| dependsOn · incoming | A Spec page shows one Spec in collapsible panels, in a fixed orderspec:consumers.spec-studio.spec-page · resolves | declared | None | None |
| dependsOn · incoming | A Spec page's core shows the whole Spec, with an anchor for every entryspec:consumers.spec-studio.spec-page.core · resolves | declared | None | None |
| refines · incoming | The Studio reads two named inputs beside the graph, a base graph and run recordsspec:consumers.spec-studio.data.inputs · resolves | declared | None | None |
| refines · incoming | A page takes each recipe answer from the recipe's shipped bodyspec:consumers.spec-studio.data.recipe-answers · resolves | declared | None | None |
Bindings
Implementation binding: present
impl:protocol.studio-data· assembles reader contexts, Pack totals, rails and search records for static pages ·src/projections/studio/data.ts:279· role contract · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
- test:protocol.studio-data · anchored ·
test/studio-data.test.ts:26· 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.