Spec Studio

The Studio's custom elements each hold one view the build renders

spec:consumers.spec-studio.componentsContract · storyready floor ready

Packs: pack:self-hosting-v1, pack:spec-studio-v1

Design: 10 design entries · 10 pinned declarations · 3 decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.components.sdp.md

No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.

The original's harness element has no subject in the graph, which holds example spaces, bound points and oracle bindings but no harness node, so its successor takes the Spec that owns an example space. The build renders every view into the page's markup and an element adds only the interaction its view needs, as spec:decisions.studio-build-renders rules, so a trace graph draws one hop, a maturity map places members by stated rung and floor, a card always shows its rung, and the attributes the original used to choose another setting are gone.

Intent
outcome
Give the Studio a small set of custom elements that each hold one view of the graph, rendered by the build, in a Studio page or in any HTML page that holds that markup and loads the element script.
Contract
rule.selfContained line 25 · specs/consumers/spec-studio.components.sdp.md:25
Each element is self-contained and light on dependencies, and works in any HTML page that holds the markup the build wrote for it and loads the Studio's script.

no example exercises it

rule.buildRenders line 26 · specs/consumers/spec-studio.components.sdp.md:26
The build renders every element's view into its markup, from reader values and the recipe answers the page names, so the view reads without script; the element adds only interaction, and an element whose view needs none is defined with no behavior.

no example exercises it

rule.subjectAttribute line 27 · specs/consumers/spec-studio.components.sdp.md:27
An element with a graph subject takes that subject's graph id in the attribute its Design entry names; an element over gathered intents has no single graph subject.

no example exercises it

rule line 28 · specs/consumers/spec-studio.components.sdp.md:28
Every element's name starts with sdp-.
rule.diagramRenderer line 29 · specs/consumers/spec-studio.components.sdp.md:29
A diagram is laid out by the engine when the page set is built and written as inline SVG, and its element adds only pan, zoom and pinch, as spec:decisions.studio-diagram-renderer rules; one diagram draws within the bound spec:consumers.spec-studio.diagrams#design.bound names.

no example exercises it

rule.oneScript line 30 · specs/consumers/spec-studio.components.sdp.md:30
Every element ships in the one classic script the page elements ship in, and none loads anything at run time.

no example exercises it

1 unkeyed rule.

Design

The elements in the original's order, with their attributes.

specCard line 34 · specs/consumers/spec-studio.components.sdp.md:34
sdp-spec-card with spec-id and variant: one Spec as a card; full is a Pack page's member card, short one line with the title linked, the id, the rung badge and the floor in words; no behavior.

no citation recorded

traceGraph line 35 · specs/consumers/spec-studio.components.sdp.md:35
sdp-trace-graph with spec-id: the Spec's relations one hop each way, drawn in relation bands inside an sdp-diagram, then its text equivalent; no behavior of its own.

no citation recorded

maturityMap line 36 · specs/consumers/spec-studio.components.sdp.md:36
sdp-maturity-map with pack-id: the Pack's members placed by stated rung and floor reached, drawn as a static SVG grid of counts, then its count table and each populated cell's member list; no behavior.

no citation recorded

exampleSpace line 37 · specs/consumers/spec-studio.components.sdp.md:37
sdp-example-space with spec-id, naming the Spec that owns the example space: the space's slots with their types and the step that declares each, its children's bound points as a table with one row per example and one column per slot, an unbound slot written unbound, its expected-outcome oracle binding as present or none, and recipe 44's coverage; its coverage is a report, never a verifier run or a delivery fact; no behavior beyond the composing actions inside it.

no citation recorded

diagramView line 38 · specs/consumers/spec-studio.components.sdp.md:38
sdp-diagram with subject, the element spec:consumers.spec-studio.diagrams#design.diagramElement states.

no citation recorded

scenarioEditor line 39 · specs/consumers/spec-studio.components.sdp.md:39
sdp-scenario-editor with spec-id and mode: in edit mode a form holding the example's given, when and then steps, in propose mode the parent's step vocabulary as a starting point; submitting gathers an intent scoped to the example or to the parent, with the steps as its exact text; without script it shows the steps as text and says that composing needs the script.

no citation recorded

impactView line 40 · specs/consumers/spec-studio.components.sdp.md:40
sdp-impact-view with spec-id: a Spec's impact panel on its own, its trace graph, what it rests on and what rests on it; no behavior.

no citation recorded

intentPanel line 41 · specs/consumers/spec-studio.components.sdp.md:41
sdp-intent-panel with page-root and no graph-subject attribute, rendering the gathered intents across their scopes as spec:consumers.spec-studio.intent-panel states.

no citation recorded

composeAction line 42 · specs/consumers/spec-studio.components.sdp.md:42
sdp-compose with scope and action: a button labelled with what it composes that opens the compose dialog and gathers the intent in the composing panel; scope is a Spec id, entry address or Pack id, with a Pack's space-separated resolved member ids in members, members-complete set to true only when every manifest member resolves, and a Change applies to choice between member Specs and Pack membership or framing; action is one of resolve-question, promote-question, edit-example, propose-example, change-target, propose-target, propose-values and change-entry; hidden without script.

no citation recorded

validationFindings line 43 · specs/consumers/spec-studio.components.sdp.md:43
sdp-validation-findings with filter: the validation report's findings for the Spec or Pack id the filter names; no behavior.

no citation recorded

Verification

Verifier bindings

  • test:protocol.studio-intent-handoff · anchored · test anchor binding present · test/studio-s5.test.ts:407

    External run evidence from test/studio-s5.test.ts

    Test anchors: test:protocol.studio-export-contained, test:protocol.studio-intent-handoff, test:protocol.studio-intents-refresh, test:protocol.studio-memo-shared, test:protocol.studio-watch-plain. Specs verified by those bindings: spec:consumers.edit-model, spec:consumers.intent-composition, spec:consumers.intent-composition.proposal.memo, spec:consumers.intent-composition.proposal.memo.shared, spec:consumers.spec-studio.components, spec:consumers.spec-studio.export, spec:consumers.spec-studio.export.self-contained, spec:consumers.spec-studio.intent-panel, spec:consumers.spec-studio.intent-panel.refresh-keeps-intents, spec:consumers.spec-studio.publisher.watch, spec:consumers.spec-studio.publisher.watch.matches-plain-run, spec:consumers.spec-studio.responsive.

    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

    NameSuiteResultDuration
    executes the bound example against a fresh worldRefreshing a tab keeps every gathered intent (spec:consumers.spec-studio.intent-panel.refresh-keeps-intents)passed9.92 ms
    executes the bound example against a fresh worldRecipe 49 and the composing panel write one memo for one proposal (spec:consumers.intent-composition.proposal.memo.shared)passed4.43 ms
    executes the bound example against a fresh worldA Pack's export opens alone and keeps its links inside it (spec:consumers.spec-studio.export.self-contained)passed63.32 ms
    executes the bound example against a fresh worldEach watch cycle writes the page set a plain run writes (spec:consumers.spec-studio.publisher.watch.matches-plain-run)passed124.81 ms
    keeps unsupported intents apart and expands Pack members only against the stamped basenot recordedpassed2.27 ms
    returns the same schema problems as recipe 38 and renders in any corpusnot recordedpassed10.03 ms
    composes locally without changing source or requesting a network servicenot recordedpassed1.54 ms
    keeps the last local intents when storage refuses writesnot recordedpassed0.29 ms
    keeps unsaved local intents when storage remains readable but its quota refuses writesnot recordedpassed0.27 ms
    rewrites SVG and accessibility references without changing subject attributes or authored textnot recordedpassed6.38 ms
    opens disclosures for print and restores exactly their prior statenot recordedpassed1.43 ms
    leaves Mermaid source closed for print unless the reader opened itnot recordedpassed1.06 ms
    stops the actual Studio watch process with exit zero on SIGINTnot recordedpassed491.48 ms
    removes a failed watch publication, keeps watching and recovers on the next carrier editnot recordedpassed33.93 ms
    ships a phone layout and a print stylesheet for the whole canvasnot recordedpassed10.85 ms
    keeps exports graph-only when the browsing pages receive a base and run recordsnot recordedpassed27 ms
    starts no cycle for source or input-file eventsnot recordedpassed30.93 ms
    merges concurrent panels before gathering or discarding and flags rejected storage recordsnot recordedpassed0.6 ms
    refreshes the browser panel on storage and pageshow and removes those listeners on disconnectnot recordedpassed1.47 ms
    prefills compose with the authored entry text including code spans and no rendered annotationsnot recordedpassed15.53 ms
    omits blank exact text and reports whitespace requests in the compose dialognot recordedpassed2.42 ms
    uses the stamp base, labels fields, orders actions and copies and saves the named documentsnot recordedpassed5.09 ms
    copies distinct actions and recorded scopes for both Pack choices without a stampnot recordedpassed2.97 ms
    keeps Pack framing changes apart and gathers scenario editor steps verbatimnot recordedpassed2.66 ms
    matches the literal memo for the shared proposal, including the full relation and documentnot recordedpassed0.93 ms
    keeps the last watch pages when an optional base becomes unreadable, just like a plain runnot recordedpassed986.18 ms
    inlines the selected stylesheet asset in exports and publishes those same style bytesnot recordedpassed25.93 ms
    introduces studio before its watch option and gives recipe 49 a use casenot recordedpassed4.36 ms
    renders edit scenario steps outside inert templates without scriptnot recordedpassed1.08 ms
    renders propose scenario steps outside inert templates without scriptnot recordedpassed0.72 ms
    writes both memo reasons as code spans: "<details>Review the design.</details>", "`Keep` the ``literal`` reason`"not recordedpassed0.7 ms
    writes both memo reasons as code spans: "`Review` the ``design`` reason`", "<details>Keep the change.</details>"not recordedpassed0.43 ms
    fences requests so their Markdown cannot alter the memo: "Fix a typo.\n<!--"not recordedpassed0.89 ms
    fences requests so their Markdown cannot alter the memo: "Use this text.\n```\n## Forged heading\n``````\n<!--hidden-->"not recordedpassed0.7 ms
    contains phone navigation, stamp and wide tables within the viewportnot recordedpassed15.39 ms
    keeps the maturity caption readable and empty cells compact on a phonenot recordedpassed7.6 ms
    aligns maturity cell counts with the empty cell dashesnot recordedpassed4.92 ms
    keeps table headers and one-word cells intact while allowing word-boundary wrappingnot recordedpassed7.32 ms
    keeps natural desktop diagram size and fits only on phonesnot recordedpassed7.69 ms
    hides phone scroll advice and closed source in print while keeping opened source printablenot recordedpassed18.32 ms
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.components
The diagram as text
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders · declared Spec
  • spec:consumers.spec-studio.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page · declared Spec
  • spec:consumers.spec-studio.diagrams.folds-by-context: An architecture over the bound folds by context · declared Spec
  • spec:consumers.spec-studio.diagrams.folds-by-layer: One context over the bound folds by layer · declared Spec
  • spec:consumers.spec-studio.diagrams.within-bound: An architecture within the bound draws in one diagram, the same bytes twice · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • spec:consumers.spec-studio.diagram-kinds: The Studio chooses diagram kinds from graph values · 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
  • component:protocol.studio-elements: optional browser behavior and proposal handoff · anchored code · src/studio-elements/index.ts:13
  • impl:protocol.studio-architecture-diagrams: architecture grids and bounded context and layer folds · anchored code · src/projections/studio/diagrams/architecture.ts:4
  • impl:protocol.studio-compose: opens a native request dialog beside build-rendered scopes without changing their content · anchored code · src/studio-elements/compose.ts:13
  • impl:protocol.studio-copy: copies text with selection fallback and failure feedback · anchored code · src/studio-elements/copy.ts:22
  • 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-model: shared diagram boxes, edges and drawing bounds · anchored code · src/projections/studio/diagrams/model.ts:1
  • 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-expander: opens fragment ancestors and expands disclosures for print · anchored code · src/studio-elements/expander.ts:16
  • impl:protocol.studio-filter: filters build-rendered rows through their recorded attributes · anchored code · src/studio-elements/filter.ts:25
  • impl:protocol.studio-intent-panel-element: displays gathered requests and writes copy selections or local download links · anchored code · src/studio-elements/intent-panel-element.ts:14
  • 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-pack-page: renders Pack members, maturity and boundary joins · anchored code · src/projections/studio/pages/pack-page.ts:68
  • impl:protocol.studio-relation-diagrams: relation and member bands and bounded relation folds · anchored code · src/projections/studio/diagrams/bands.ts:10
  • impl:protocol.studio-scenario-editor: gathers the edited Given, When and Then as exact text scoped to its subject · anchored code · src/studio-elements/scenario-editor.ts:17
  • impl:protocol.studio-search-form: routes search forms through page-root URLs and fragments · anchored code · src/studio-elements/search.ts:18
  • impl:protocol.studio-search-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • impl:protocol.studio-spec-structure: renders requirement and trace diagrams and the recorded structural neighborhood · anchored code · src/projections/studio/pages/spec-structure.ts:44
  • impl:protocol.studio-stamp: resolves published stamps and source links in the browser · anchored code · src/studio-elements/stamp.ts:30
  • impl:protocol.studio-verification-panels: renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · anchored code · src/projections/studio/pages/spec-verification.ts:74
  • oracle:protocol.studio-diagrams: oracle:protocol.studio-diagrams · anchored oracle binding · test/studio-s1.test.ts:564
  • test:protocol.studio-copy-source: test:protocol.studio-copy-source · anchored test binding · binding present · test/studio-diagram-core.test.ts:191
  • 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-diagram-folds-context: test:protocol.studio-diagram-folds-context · anchored test binding · binding present · test/studio-s1.test.ts:675
  • test:protocol.studio-diagram-folds-layer: test:protocol.studio-diagram-folds-layer · anchored test binding · binding present · test/studio-s1.test.ts:681
  • test:protocol.studio-diagram-within-bound: test:protocol.studio-diagram-within-bound · anchored test binding · binding present · test/studio-s1.test.ts:669
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • test:protocol.studio-page-elements: test:protocol.studio-page-elements · anchored test binding · binding present · test/studio-elements.test.ts:26
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diagram-kinds refines spec:consumers.spec-studio.diagrams · declared
  • 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.diagrams · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-context verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.folds-by-layer verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound refines spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.diagrams.within-bound verifies spec:consumers.spec-studio.diagrams · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · declared
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.page-elements · anchored
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-architecture-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-compose satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-copy satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-diagram-model satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-expander satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-intent-panel-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-maturity-map satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-relation-diagrams satisfies spec:consumers.spec-studio.diagrams · anchored
  • impl:protocol.studio-scenario-editor satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-search-form satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-stamp satisfies spec:consumers.spec-studio.page-elements · anchored
  • impl:protocol.studio-verification-panels satisfies spec:consumers.spec-studio.components · anchored
  • oracle:protocol.studio-diagrams models spec:consumers.spec-studio.diagrams · anchored
  • test:protocol.studio-copy-source verifies spec:consumers.spec-studio.page-elements · anchored
  • test:protocol.studio-diagram-core verifies spec:consumers.spec-studio.diagrams · anchored
  • test:protocol.studio-diagram-folds-context verifies spec:consumers.spec-studio.diagrams.folds-by-context · anchored
  • test:protocol.studio-diagram-folds-layer verifies spec:consumers.spec-studio.diagrams.folds-by-layer · anchored
  • test:protocol.studio-diagram-within-bound verifies spec:consumers.spec-studio.diagrams.within-bound · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.components · anchored
  • test:protocol.studio-page-elements verifies spec:consumers.spec-studio.page-elements · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.

Decisions

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
  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    • component:protocol.projections · read-only output, layout and owned publication · src/projections/design-review.ts:29 · layer edge · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • 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:7

    Component: 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-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68

    Component: 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-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95

    Component: component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.ts:44

    Component: 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-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74

    Component: 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
Relations of spec:consumers.spec-studio.components
Relations of spec:consumers.spec-studio.componentsrefines · declareddependsOn · declareddependsOn · declareddecidedBy · declareddecidedBy · declareddecidedBy · declaredrefines · declaredrefines · declaredOutgoing refinesspec:consumers.spec-studioThe Spec Studio is a staticHTML workbench over the onegraph…consumers.spec-studioOutgoing dependsOnspec:consumers.spec-studio.dataThe Studio renders from thereader's values and embedsonly what its script reads…consumers.spec-studio.dataspec:consumers.spec-studio.intent-panelA composing panel on everypage gathers scoped intentfor an agent…consumers.spec-studio.intent-panelOutgoing decidedByspec:decisions.studio-build-rendersThe build renders everyStudio view, and an elementonly enhances it…decisions.studio-build-rendersspec:decisions.studio-diagram-rendererThe engine lays out everyStudio diagram as staticSVG when the page set isbuilt…decisions.studio-diagram-rendererspec:decisions.studio-web-componentsThe Studio is built fromcustom elements, not aframework…decisions.studio-web-componentsSubjectspec:consumers.spec-studio.componentsThe Studio's customelements each hold one viewthe build renders…consumers.spec-studio.componentsIncoming refinesspec:consumers.spec-studio.diagramsA diagram is laid out fromgraph values into SVG witha text equivalent…consumers.spec-studio.diagramsspec:consumers.spec-studio.page-elementsA few custom elementsfilter, search, open andcopy on a rendered page…consumers.spec-studio.page-elements
The diagram as text
  • 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.diagrams: A diagram is laid out from graph values into SVG with a text equivalent
  • spec:consumers.spec-studio.intent-panel: A composing panel on every page gathers scoped intent for an agent
  • spec:consumers.spec-studio.page-elements: A few custom elements filter, search, open and copy on a rendered page
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-build-renders · declared
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-diagram-renderer · declared
  • spec:consumers.spec-studio.components decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.components dependsOn spec:consumers.spec-studio.intent-panel · declared — the panel element renders the gathered intents that Spec designs
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · 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

Rested on by

Distance 1

Distance 2

Distance 3

Distance 4

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingThe build renders every Studio view, and an element only enhances it
spec:decisions.studio-build-renders · resolves
declaredNoneNone
decidedBy · outgoingThe engine lays out every Studio diagram as static SVG when the page set is built
spec:decisions.studio-diagram-renderer · resolves
declaredNoneNone
decidedBy · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingA composing panel on every page gathers scoped intent for an agent
spec:consumers.spec-studio.intent-panel · resolves
declaredthe panel element renders the gathered intents that Spec designsNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
refines · incomingA diagram is laid out from graph values into SVG with a text equivalent
spec:consumers.spec-studio.diagrams · resolves
declaredNoneNone
refines · incomingA few custom elements filter, search, open and copy on a rendered page
spec:consumers.spec-studio.page-elements · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • component:protocol.studio-elements · optional browser behavior and proposal handoff · src/studio-elements/index.ts:13 · role interaction · layer edge · context protocol
  • impl:protocol.studio-compose · opens a native request dialog beside build-rendered scopes without changing their content · src/studio-elements/compose.ts:13 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-diagram-element · adds view-box pan, zoom and pinch to build-rendered SVG without changing its layout · src/studio-elements/diagram.ts:23 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-filter · filters build-rendered rows through their recorded attributes · src/studio-elements/filter.ts:25 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-intent-panel-element · displays gathered requests and writes copy selections or local download links · src/studio-elements/intent-panel-element.ts:14 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • 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:7 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-pack-page · renders Pack members, maturity and boundary joins · src/projections/studio/pages/pack-page.ts:68 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-scenario-editor · gathers the edited Given, When and Then as exact text scoped to its subject · src/studio-elements/scenario-editor.ts:17 · role interaction · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-search-results · ranks and renders concept, entry and file search hits · src/studio-elements/search-results.ts:95 · role projection · component component:protocol.studio-elements · layer edge · context protocol
  • impl:protocol.studio-spec-structure · renders requirement and trace diagrams and the recorded structural neighborhood · src/projections/studio/pages/spec-structure.ts:44 · role projection · component component:protocol.projections · layer edge · context protocol
  • impl:protocol.studio-verification-panels · renders rule coverage, example cards, constraint targets, verifiers and example-space coverage · src/projections/studio/pages/spec-verification.ts:74 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-intent-handoff · anchored · test/studio-s5.test.ts:407 · 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.