Spec Studio

The Spec Studio is a static HTML workbench over the one graph

spec:consumers.spec-studioUse Case / Behavior · featureready floor ready

Changed since the base graph base da4b141: rule.staticPageSet

Base input: schema 0.11.0, 405 Specs.

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

Design: no design entries · no pinned declarations · 4 decisions

Findings: no errors, no warnings

specs/consumers/spec-studio.sdp.md

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

Intent
actor
A person in the repository who designs a capability ahead of its code and iterates on it in passes, and a pull request reviewer who holds only a link; both read far more than they change.
problem
The generated Markdown Design Review offers no built-in search or filters, and navigation is through its links, so reviewers in the first adopter open carrier files alongside it.
outcome
Give a person reviewing a design one generated HTML workbench that explores the whole graph through lenses, shows each Spec and Pack in context, and turns a wanted change into scoped intent rather than an edit.
Behavior
rule line 27 · specs/consumers/spec-studio.sdp.md:27
The read-only Studio ships in the open-source package @libar-dev/software-delivery-protocol, beside the four shipped projections; hosted review, shared comments and hosted previews may later ship under @libar-ai/.
rule line 28 · specs/consumers/spec-studio.sdp.md:28
The Studio is a projection of the one graph: its page set under generated/spec-studio/ is regenerated from the graph, states no truth, and confers nothing back into the graph.
rule.staticPageSet line 29 · specs/consumers/spec-studio.sdp.md:29
The Studio is a static page set: the index page, which is the Packs lens; a search page; a page for each other lens, each register, the owner queue, the roadmap and the glossary; one page and one slice page per Pack, one page per Spec; one export file per Pack; and, when the build is given their inputs, a diff page and a runs page; with their local assets. Its build renders each page whole, so a page needs no server, and every page but the search page reads without its script, which adds filtering, search, copying, pan and zoom, and the composing panel.

no example exercises it

rule line 30 · specs/consumers/spec-studio.sdp.md:30
The Studio works offline: the same files open from the file system through file:// for local use and from any static host for sharing.
rule line 31 · specs/consumers/spec-studio.sdp.md:31
The Studio is reproducible: one graph and the same inputs render byte-identical files, and an asset whose filename embeds a hash of its content gets the same name from the same graph.
rule line 32 · specs/consumers/spec-studio.sdp.md:32
The Studio is read-rich: everything the graph holds about a Spec or a Pack is explorable in it.
rule line 33 · specs/consumers/spec-studio.sdp.md:33
The Studio is write-careful: it writes nothing to canonical source, and a change a person wants leaves it as scoped intent for an agent, as spec:consumers.edit-model states.
rule.noSecondGraph line 34 · specs/consumers/spec-studio.sdp.md:34
The Studio never builds a second graph: every join, claim, delivery fact, derived readiness, floor failure and finding it shows is a value the reader computed when the Studio was built, and the page computes none of them again.

no example exercises it

rule.recipeAnswers line 35 · specs/consumers/spec-studio.sdp.md:35
A page shows a catalog recipe's answer only when the Studio's design names that recipe, and the build composes the answer over the graph it derived; the page recomputes none of it.

no example exercises it

rule.namedInputs line 36 · specs/consumers/spec-studio.sdp.md:36
Beside the graph the Studio reads only two optional inputs, a base graph and run records; each is named on every page that shows it, never becomes graph data, a delivery fact or a verdict, and never answers in the graph's name.

no example exercises it

rule line 37 · specs/consumers/spec-studio.sdp.md:37
The Studio stands beside the shipped Design Review, census, Mermaid and Gherkin projections and re-specifies none of them, which spec:decisions.shipped-projections-frozen keeps as they are.

7 unkeyed rules.

Verification · manual
criteria
  • The Studio is accepted when a person given only a link to a build of the first adopter's corpus completes, from the page set alone, the five tasks the first adopter set over its history-view Pack (libar-platform/docs/feedback/sdp-feedback-01.md): find the history contract, locate OD-157, explain the aggregate dependency, find one declaration's type comparison down to the source line that checks it, and say whether a paused-rebuild example has native-backend evidence. Given no run records, the last task passes when the person finds that the example requires the native backend tier, reads whether a verifier is bound to it, and reports that no run result is supplied.
  • The same person names which statements the owner can make first, from the owner queue page.
  • The same person, given a build with a base graph, names what changed in the design since the base, from the diff page.
  • The same person names which components are designed and not yet built, from the architecture lens.
mode
manual
Verification

Verifier bindings

  • test:protocol.studio-publisher · anchored · test anchor binding present · test/studio-publisher.test.ts:26

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

    Test anchors: test:protocol.studio-publisher. Specs verified by those bindings: spec:consumers.spec-studio, spec:consumers.spec-studio.publisher.

    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

    NameSuiteResultDuration
    validates once and passes the build report through the reader and recipe evaluationsStudio publicationpassed63.16 ms
    publishes the layout, copies fixture assets and replaces stale pages and temporary siblingsStudio publicationpassed29.14 ms
    writes byte-identical pages twice and opens every placeholder link inside the page setStudio publicationpassed50.97 ms
    publishes validation findings and returns nonzero without withholding the pagesStudio publicationpassed17.66 ms
    shows a finding with an anchor subject or no subject only on the indexStudio publicationpassed9.35 ms
    leaves no root or temporary after an extraction failureStudio publicationpassed5.46 ms
    build invalidates the Studio and its temporary siblingStudio publicationpassed3.24 ms
    validate invalidates the Studio and its temporary siblingStudio publicationpassed2.84 ms
    view invalidates the Studio and its temporary siblingStudio publicationpassed5.54 ms
    census invalidates the Studio and its temporary siblingStudio publicationpassed4.17 ms
    mermaid invalidates the Studio and its temporary siblingStudio publicationpassed3.82 ms
    gherkin invalidates the Studio and its temporary siblingStudio publicationpassed4.73 ms
    refuses extraction when invalidation cannot remove the StudioStudio publicationpassed0.64 ms
    check-clean accepts clean pages and replaces them with identical bytesStudio publicationpassed28.74 ms
    check-clean refuses missing output and removes itStudio publicationpassed18.89 ms
    check-clean refuses drift output and removes itStudio publicationpassed40.87 ms
    check-clean refuses stale output and removes itStudio publicationpassed22.5 ms
    check-clean refuses independently divergent rendersStudio publicationpassed25.67 ms
    removes output when an asset cannot be readStudio publicationpassed8.4 ms
    refuses a renderer path that would overwrite authored sourceStudio publicationpassed6.22 ms
    dispatches studio with shared exclusions and advertises only its ruled flagsStudio publicationpassed9.67 ms
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio
The diagram as text
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • spec:consumers.spec-studio.cited-line-text: A pinned declaration shows the words of each test line that cites it · declared Spec · no satisfying binding
  • spec:consumers.spec-studio.components: The Studio's custom elements each hold one view the build renders · declared Spec
  • 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.diff-page: The diff page shows what changed in the design since a base graph · declared Spec
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document · declared Spec
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define · declared Spec
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence · declared Spec
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index · declared Spec
  • spec:consumers.spec-studio.owner-queue: The owner queue page orders the statements and questions only a person can settle · declared Spec
  • spec:consumers.spec-studio.pack-page: A Pack page shows the Pack's design as one card per member · declared Spec
  • spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set · declared Spec
  • spec:consumers.spec-studio.register-input: An outside register is a named Studio input, so a cited token links to its entry · declared Spec · no satisfying binding
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link · declared Spec
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop · declared Spec
  • spec:consumers.spec-studio.roadmap-page: The roadmap page shows the upcoming work in priority order, split by what it needs · declared Spec
  • spec:consumers.spec-studio.runs-page: The runs page shows the run records the build was given, joined to test files · declared Spec
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host · declared Spec
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas · declared Spec
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole · declared Spec
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
  • spec:decisions.studio-html-surface: The Studio renders HTML, and the HTML stays derived · declared Spec
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework · declared Spec
  • spec:consumers.spec-studio.diff-page.changed-entry: The diff page shows a changed entry's base and built values · declared Spec
  • spec:consumers.spec-studio.export.self-contained: A Pack's export opens alone and keeps its links inside it · declared Spec
  • spec:consumers.spec-studio.glossary-page.same-word-twice: A word two Specs define appears once per Spec on the glossary page · declared Spec
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on · declared Spec
  • spec:consumers.spec-studio.registers.blocking-first: The questions page lists the Specs with a blocking question first · declared Spec
  • spec:consumers.spec-studio.runs-page.external-evidence: The runs page shows a run as external evidence from a test file · declared Spec
  • spec:consumers.spec-studio.sharing.stamp-written-apart: The stamp is written beside the page set, and a later build removes it · declared Spec
  • spec:consumers.spec-studio.spec-page.cited-declaration: A pinned declaration shows the test line that cites it · declared Spec
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores · declared Spec
  • spec:consumers.spec-studio.capability-map-page: The capability map page makes refinement readable by epic · 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.diagrams: A diagram is laid out from graph values into SVG with a text equivalent · declared Spec
  • spec:consumers.spec-studio.lenses.architecture: The architecture lens draws components by context and layer, the planned beside the built · declared Spec
  • spec:consumers.spec-studio.lenses.evidence: The evidence lens names each source of runtime evidence and reads it as not tracked · declared Spec
  • spec:consumers.spec-studio.lenses.packs: The Packs lens groups every Spec by the Packs that hold it · declared Spec
  • spec:consumers.spec-studio.lenses.tests: The tests lens shows how far each Spec's verification reaches · declared Spec
  • spec:consumers.spec-studio.pack-page.maturity-map: A Pack page's maturity map places every member by its stated rung and its floor · 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.publisher.watch: sdp studio --watch rebuilds the page set on each carrier change · declared Spec
  • spec:consumers.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs · declared Spec
  • spec:consumers.spec-studio.search: Search finds a Spec, a Pack, an entry or a bound file by a word · declared Spec
  • spec:consumers.design-slice: A slice reads a Pack as one design, with the architecture it touches and what each member needs next · declared Spec
  • spec:consumers.spec-studio.spec-page.core: A Spec page's core shows the whole Spec, with an anchor for every entry · declared Spec
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence · declared Spec
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it · declared Spec
  • spec:decisions.studio-diagram-renderer: The engine lays out every Studio diagram as static SVG when the page set is built · declared Spec
  • component:protocol.studio-elements: optional browser behavior and proposal handoff · anchored code · src/studio-elements/index.ts:13
  • impl:protocol.build-pipeline-emit: stages build outputs, checks determinism and invalidates projections · anchored code · src/cli/build-command.ts:251
  • impl:protocol.stamp-command: writes the publishing stamp without extraction or rendering · anchored code · src/cli/stamp-command.ts:8
  • 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-code-spans: escapes and maps code spans across Studio text · anchored code · src/projections/studio/pages/code-spans.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-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-data: assembles reader contexts, Pack totals, rails and search records for static pages · anchored code · src/projections/studio/data.ts:279
  • 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-diff: renders declared design changes and binding changes separately · anchored code · src/projections/studio/pages/diff-page.ts:91
  • impl:protocol.studio-evidence-lens: names the four evidence sources and what would bring each into the Studio · anchored code · src/projections/studio/pages/evidence-page.ts:3
  • 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-frame: renders Studio navigation, page rails and composing controls · anchored code · src/projections/studio/pages/frame.ts:6
  • impl:protocol.studio-glossary: renders Model terms with their entry-address links · anchored code · src/projections/studio/pages/glossary-page.ts:7
  • impl:protocol.studio-html: shared Studio HTML, source and link encoding · anchored code · src/projections/studio/pages/html.ts:8
  • impl:protocol.studio-index-page: renders Pack disclosures and filterable Spec rows · anchored code · src/projections/studio/pages/index-page.ts:8
  • 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-owner-queue: renders waiting readiness statements and decider questions · anchored code · src/projections/studio/pages/queue-page.ts:9
  • impl:protocol.studio-pack-export: copies rendered canvas content into one inline-styled document with prefixed element references · anchored code · src/projections/studio/pages/export-page.ts:35
  • 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-page-catalog: selects Studio pages, optional inputs and Pack exports · anchored code · src/projections/studio/pages/index.ts:21
  • impl:protocol.studio-paths: encodes uppercase id letters for collision-free Pack and Spec page paths · anchored code · src/projections/studio/paths.ts:2
  • impl:protocol.studio-preview-workflow: asserts the reusable Studio preview workflow and Protocol CI caller · anchored code · test/studio-s4.test.ts:742
  • impl:protocol.studio-publish: copies local assets and replaces the Studio directory through its temporary sibling · anchored code · src/projections/studio/publish.ts:24
  • impl:protocol.studio-registers: renders question, decision, declaration and backlog registers · anchored code · src/projections/studio/pages/registers-page.ts:47
  • 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-roadmap-page: renders roadmap needs, holding parts and the shared Markdown memo · anchored code · src/projections/studio/pages/roadmap-page.ts:168
  • impl:protocol.studio-run-rows: renders recipe 45 file rows shared by the runs page and verification panel · anchored code · src/projections/studio/pages/run-rows.ts:69
  • impl:protocol.studio-runs-page: renders readable CTRF inputs, file results, unjoined records and diagnostics · anchored code · src/projections/studio/pages/runs-page.ts:6
  • 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-results: ranks and renders concept, entry and file search hits · anchored code · src/studio-elements/search-results.ts:95
  • impl:protocol.studio-slice-page: design slice summaries, member needs, architecture comparisons and boundary tables · anchored code · src/projections/studio/pages/slice-page.ts:25
  • impl:protocol.studio-spec-page: renders Spec intent, relations and realization bindings · anchored code · src/projections/studio/pages/spec-page.ts:201
  • 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-tests-lens: renders shared rule and example-space coverage with filters and verifier bindings · anchored code · src/projections/studio/pages/tests-page.ts:34
  • impl:protocol.studio-text: escapes prose and links graph-resolving mentions · anchored code · src/projections/studio/pages/text.ts:7
  • 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.runs-page: oracle:protocol.runs-page · anchored oracle binding · test/studio-s4.test.ts:360
  • oracle:protocol.studio-citations: oracle:protocol.studio-citations · anchored oracle binding · test/studio-s2.test.ts:130
  • oracle:protocol.studio-diff-page: oracle:protocol.studio-diff-page · anchored oracle binding · test/studio-s3.test.ts:196
  • oracle:protocol.studio-export: oracle:protocol.studio-export · anchored oracle binding · test/studio-s5.test.ts:302
  • oracle:protocol.studio-glossary-page: oracle:protocol.studio-glossary-page · anchored oracle binding · test/studio-s3.test.ts:268
  • oracle:protocol.studio-owner-queue: oracle:protocol.studio-owner-queue · anchored oracle binding · test/studio-s3.test.ts:132
  • oracle:protocol.studio-registers: oracle:protocol.studio-registers · anchored oracle binding · test/studio-s3.test.ts:79
  • oracle:protocol.studio-sharing: oracle:protocol.studio-sharing · anchored oracle binding · test/studio-s4.test.ts:538
  • test:protocol.roadmap-priority: checks Pack priority extraction, comparison and Studio change notes · anchored test binding · binding present · test/roadmap-priority.test.ts:44
  • test:protocol.run-external: test:protocol.run-external · anchored test binding · binding present · test/studio-s4.test.ts:378
  • 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-cited-declaration: test:protocol.studio-cited-declaration · anchored test binding · binding present · test/studio-s2.test.ts:139
  • test:protocol.studio-data: test:protocol.studio-data · anchored test binding · binding present · test/studio-data.test.ts:26
  • test:protocol.studio-diff-changed-entry: test:protocol.studio-diff-changed-entry · anchored test binding · binding present · test/studio-s3.test.ts:210
  • test:protocol.studio-export-contained: test:protocol.studio-export-contained · anchored test binding · binding present · test/studio-s5.test.ts:312
  • test:protocol.studio-glossary-same-word-twice: test:protocol.studio-glossary-same-word-twice · anchored test binding · binding present · test/studio-s3.test.ts:278
  • test:protocol.studio-intent-handoff: test:protocol.studio-intent-handoff · anchored test binding · binding present · test/studio-s5.test.ts:407
  • test:protocol.studio-lenses: test:protocol.studio-lenses · anchored test binding · binding present · test/studio-s1.test.ts:273
  • test:protocol.studio-navigation: test:protocol.studio-navigation · anchored test binding · binding present · test/studio-s3.test.ts:317
  • test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present · test/studio-pages.test.ts:18
  • test:protocol.studio-panels: test:protocol.studio-panels · anchored test binding · binding present · test/studio-s2.test.ts:256
  • test:protocol.studio-publisher: test:protocol.studio-publisher · anchored test binding · binding present · test/studio-publisher.test.ts:26
  • test:protocol.studio-queue-dependency-first: test:protocol.studio-queue-dependency-first · anchored test binding · binding present · test/studio-s3.test.ts:142
  • test:protocol.studio-registers-blocking-first: test:protocol.studio-registers-blocking-first · anchored test binding · binding present · test/studio-s3.test.ts:89
  • test:protocol.studio-roadmap-page: test:protocol.studio-roadmap-page · anchored test binding · binding present · test/studio-roadmap.test.ts:24
  • test:protocol.studio-slice-page: test:protocol.studio-slice-page · anchored test binding · binding present · test/studio-slice.test.ts:132
  • test:protocol.studio-stamp-apart: test:protocol.studio-stamp-apart · anchored test binding · binding present · test/studio-s4.test.ts:555
  • spec:consumers.spec-studio refines spec:consumers.projections-model · declared
  • spec:consumers.spec-studio.capability-map-page refines spec:consumers.spec-studio.lenses · declared — the Capabilities page is a lens that reads refinement
  • spec:consumers.spec-studio.cited-line-text refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • 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.recipe-answers refines spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.diagrams refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.diff-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diff-page.changed-entry refines spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.diff-page.changed-entry verifies spec:consumers.spec-studio.diff-page · declared
  • spec:consumers.spec-studio.export refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export.self-contained refines spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.export.self-contained verifies spec:consumers.spec-studio.export · declared
  • spec:consumers.spec-studio.glossary-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice refines spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.glossary-page.same-word-twice verifies spec:consumers.spec-studio.glossary-page · declared
  • spec:consumers.spec-studio.lenses refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.lenses.architecture refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.evidence refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.packs refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.lenses.tests refines spec:consumers.spec-studio.lenses · declared
  • spec:consumers.spec-studio.navigation refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first refines spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.owner-queue.dependency-first verifies spec:consumers.spec-studio.owner-queue · declared
  • spec:consumers.spec-studio.pack-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.pack-page.maturity-map refines spec:consumers.spec-studio.pack-page · declared
  • spec:consumers.spec-studio.page-elements refines spec:consumers.spec-studio.components · declared
  • spec:consumers.spec-studio.publisher refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.publisher.watch refines spec:consumers.spec-studio.publisher · declared
  • spec:consumers.spec-studio.register-input refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers.blocking-first refines spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.registers.blocking-first verifies spec:consumers.spec-studio.registers · declared
  • spec:consumers.spec-studio.responsive refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.roadmap-page refines spec:consumers.roadmap · declared — the page is the roadmap's reading for a person
  • spec:consumers.spec-studio.roadmap-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page.external-evidence refines spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.runs-page.external-evidence verifies spec:consumers.spec-studio.runs-page · declared
  • spec:consumers.spec-studio.search refines spec:consumers.spec-studio.shell · declared
  • spec:consumers.spec-studio.sharing refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart refines spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.sharing.stamp-written-apart verifies spec:consumers.spec-studio.sharing · declared
  • spec:consumers.spec-studio.shell refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.slice-page refines spec:consumers.design-slice · declared — the page is the design slice's reading for a person
  • spec:consumers.spec-studio.slice-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.cited-declaration verifies spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
  • spec:consumers.spec-studio.verification-panels refines spec:consumers.spec-studio.spec-page · declared
  • spec:decisions.studio-build-renders refines spec:decisions.studio-web-components · declared — narrows where a view's values come from; the build writes them into the markup, so a host carries that markup and supplies no graph data
  • spec:decisions.studio-diagram-renderer refines spec:decisions.studio-web-components · declared — narrows how an element that shows a diagram renders it; the element only enhances an SVG the build drew
  • spec:decisions.studio-html-surface refines spec:consumers.spec-studio · declared
  • spec:decisions.studio-web-components refines spec:consumers.spec-studio · declared
  • component:protocol.studio-elements satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.build-pipeline-emit satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.stamp-command satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-architecture-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-code-spans satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-command satisfies spec:consumers.spec-studio · anchored
  • impl:protocol.studio-compose satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-data satisfies spec:consumers.spec-studio.data · anchored
  • impl:protocol.studio-data satisfies spec:consumers.spec-studio · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.responsive · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-diagram-element satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-diff satisfies spec:consumers.spec-studio.diff-page · anchored
  • impl:protocol.studio-evidence-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-expander satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-filter satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.responsive · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-frame satisfies spec:consumers.spec-studio.navigation · anchored
  • impl:protocol.studio-glossary satisfies spec:consumers.spec-studio.glossary-page · anchored
  • impl:protocol.studio-html satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-index-page satisfies spec:consumers.spec-studio.navigation · 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-owner-queue satisfies spec:consumers.spec-studio.owner-queue · anchored
  • impl:protocol.studio-pack-export satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.pack-page · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.export · anchored
  • impl:protocol.studio-pack-page satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-page-catalog satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-paths satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-preview-workflow satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-publish satisfies spec:consumers.spec-studio.publisher · anchored
  • impl:protocol.studio-registers satisfies spec:consumers.spec-studio.registers · anchored
  • impl:protocol.studio-requirement-view satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-roadmap-page satisfies spec:consumers.spec-studio.roadmap-page · anchored
  • impl:protocol.studio-run-rows satisfies spec:consumers.spec-studio.runs-page · anchored
  • impl:protocol.studio-runs-page satisfies spec:consumers.spec-studio.runs-page · anchored
  • impl:protocol.studio-scenario-editor satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-search-results satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-slice-page satisfies spec:consumers.spec-studio.slice-page · anchored
  • impl:protocol.studio-spec-page satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.spec-page · anchored
  • impl:protocol.studio-spec-structure satisfies spec:consumers.spec-studio.components · anchored
  • impl:protocol.studio-stamp satisfies spec:consumers.spec-studio.sharing · anchored
  • impl:protocol.studio-tests-lens satisfies spec:consumers.spec-studio.lenses · anchored
  • impl:protocol.studio-text satisfies spec:consumers.spec-studio.shell · anchored
  • impl:protocol.studio-verification-panels satisfies spec:consumers.spec-studio.components · anchored
  • oracle:protocol.runs-page models spec:consumers.spec-studio.runs-page · anchored
  • oracle:protocol.studio-citations models spec:consumers.spec-studio.spec-page · anchored
  • oracle:protocol.studio-diff-page models spec:consumers.spec-studio.diff-page · anchored
  • oracle:protocol.studio-export models spec:consumers.spec-studio.export · anchored
  • oracle:protocol.studio-glossary-page models spec:consumers.spec-studio.glossary-page · anchored
  • oracle:protocol.studio-owner-queue models spec:consumers.spec-studio.owner-queue · anchored
  • oracle:protocol.studio-registers models spec:consumers.spec-studio.registers · anchored
  • oracle:protocol.studio-sharing models spec:consumers.spec-studio.sharing · anchored
  • test:protocol.roadmap-priority verifies spec:consumers.spec-studio.diff-page · anchored
  • test:protocol.roadmap-priority verifies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.run-external verifies spec:consumers.spec-studio.runs-page.external-evidence · anchored
  • test:protocol.studio-architecture-maturity-requirement verifies spec:consumers.spec-studio.spec-page · anchored
  • test:protocol.studio-cited-declaration verifies spec:consumers.spec-studio.spec-page.cited-declaration · anchored
  • test:protocol.studio-data verifies spec:consumers.spec-studio.data · anchored
  • test:protocol.studio-data verifies spec:consumers.spec-studio.publisher · anchored
  • test:protocol.studio-diff-changed-entry verifies spec:consumers.spec-studio.diff-page.changed-entry · anchored
  • test:protocol.studio-export-contained verifies spec:consumers.spec-studio.export.self-contained · anchored
  • test:protocol.studio-glossary-same-word-twice verifies spec:consumers.spec-studio.glossary-page.same-word-twice · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.responsive · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.export · anchored
  • test:protocol.studio-intent-handoff verifies spec:consumers.spec-studio.components · anchored
  • test:protocol.studio-lenses verifies spec:consumers.spec-studio.lenses · anchored
  • test:protocol.studio-navigation verifies spec:consumers.spec-studio.navigation · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.shell · anchored
  • test:protocol.studio-pages verifies spec:consumers.spec-studio.pack-page · anchored
  • test:protocol.studio-panels verifies spec:consumers.spec-studio.spec-page · anchored
  • test:protocol.studio-publisher verifies spec:consumers.spec-studio.publisher · anchored
  • test:protocol.studio-publisher verifies spec:consumers.spec-studio · anchored
  • test:protocol.studio-queue-dependency-first verifies spec:consumers.spec-studio.owner-queue.dependency-first · anchored
  • test:protocol.studio-registers-blocking-first verifies spec:consumers.spec-studio.registers.blocking-first · anchored
  • test:protocol.studio-roadmap-page verifies spec:consumers.spec-studio.roadmap-page · anchored
  • test:protocol.studio-roadmap-page verifies spec:consumers.spec-studio.navigation · anchored
  • test:protocol.studio-slice-page verifies spec:consumers.spec-studio.slice-page · anchored
  • test:protocol.studio-stamp-apart verifies spec:consumers.spec-studio.sharing.stamp-written-apart · 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

  • The shipped projections stay frozen

    Re-specifying the shipped Design Review, census, Mermaid, or Gherkin projection is refused. These four projections are the ruled read surfaces over the one graph. A later decision Spec that supersedes this one replaces the ruling whole; a decision Spec that refines this one narrows it for one projection or one rendering and leaves the rest frozen. Either passes the ADR three-part test.

  • The build renders every Studio view, and an element only enhances it

    The build renders every Studio view into the page's markup from reader values and the recipe answers its page names, and a custom element adds only the interaction its view needs; a host page that embeds a view carries the markup the build wrote and loads the element script, and supplies no graph data.

  • The Studio renders HTML, and the HTML stays derived

    The Studio renders generated HTML as its surface. The HTML is derived and never committed: git diffs stay over the canonical Spec source, and the Studio's files are regenerated from the graph.

  • The Studio is built from custom elements, not a framework

    The Studio is built from Web Components, custom elements written without React, Vue, Svelte or another framework.

Runtime
  • component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    • component:protocol.adapters · external runtime and source adapters · src/adapters/vitest.ts:23 · layer adapter · context protocol
    • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol
    • 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.import · canonical conversion with a fidelity boundary · src/import/import.ts:45 · layer application · context protocol
    • component:protocol.model · the authored contracts and stable ids · src/model/anchors.ts:100 · layer domain · context protocol
    • 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
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • 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-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106

    Component: component:protocol.cli · entry points, shared build and publication · src/cli/build-command.ts:32 · layer edge · context protocol

    Uses

    None.

  • impl:protocol.studio-data · assembles reader contexts, Pack totals, rails and search records for static pages · src/projections/studio/data.ts:279

    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-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6

    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
The diagram as text
  • spec:consumers.edit-model: Views compose scoped intent instead of patching canonical source
  • spec:consumers.projections-model: Projections fan out from one graph without becoming truth stores
  • 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.cited-line-text: A pinned declaration shows the words of each test line that cites it
  • 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.diff-page: The diff page shows what changed in the design since a base graph
  • spec:consumers.spec-studio.export: A Pack exports as one file, and every page prints as a document
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:consumers.spec-studio.lenses: Five lenses read the graph as Packs, capabilities, architecture, tests and evidence
  • spec:consumers.spec-studio.navigation: Every page of the page set is reached from the top navigation and the index
  • 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.register-input: An outside register is a named Studio input, so a cited token links to its entry
  • spec:consumers.spec-studio.registers: The corpus's registers are pages a reviewer opens from a link
  • spec:consumers.spec-studio.responsive: The Studio reads on a phone as on a desktop
  • 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.runs-page: The runs page shows the run records the build was given, joined to test files
  • spec:consumers.spec-studio.sharing: A Studio build is stamped and shared from a static host
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.slice-page: A slice page shows a Pack's design as one whole
  • spec:consumers.spec-studio.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order
  • spec:decisions.shipped-projections-frozen: The shipped projections stay frozen
  • spec:decisions.studio-build-renders: The build renders every Studio view, and an element only enhances it
  • spec:decisions.studio-html-surface: The Studio renders HTML, and the HTML stays derived
  • spec:decisions.studio-web-components: The Studio is built from custom elements, not a framework
  • spec:extraction.determinism: Committed source derives byte-identical output
  • spec:consumers.spec-studio constrainedBy spec:extraction.determinism · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.shipped-projections-frozen · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-build-renders · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-html-surface · declared
  • spec:consumers.spec-studio decidedBy spec:decisions.studio-web-components · declared
  • spec:consumers.spec-studio dependsOn spec:consumers.edit-model · declared — wanted changes leave the view as intent for an ordinary source edit
  • spec:consumers.spec-studio dependsOn spec:consumers.reader · declared
  • spec:consumers.spec-studio refines spec:consumers.projections-model · declared
  • spec:consumers.spec-studio.cited-line-text refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.components refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.data refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.diff-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.export refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.glossary-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.lenses refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.navigation refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.owner-queue refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.pack-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.publisher refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.register-input refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.registers refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.responsive refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.roadmap-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.runs-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.sharing refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.shell refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.slice-page refines spec:consumers.spec-studio · declared
  • spec:consumers.spec-studio.spec-page refines spec:consumers.spec-studio · declared
  • spec:decisions.studio-html-surface refines spec:consumers.spec-studio · declared
  • spec:decisions.studio-web-components refines spec:consumers.spec-studio · 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
constrainedBy · outgoingCommitted source derives byte-identical output
spec:extraction.determinism · resolves
declaredNoneNone
decidedBy · outgoingThe shipped projections stay frozen
spec:decisions.shipped-projections-frozen · resolves
declaredNoneNone
decidedBy · outgoingThe build renders every Studio view, and an element only enhances it
spec:decisions.studio-build-renders · resolves
declaredNoneNone
decidedBy · outgoingThe Studio renders HTML, and the HTML stays derived
spec:decisions.studio-html-surface · resolves
declaredNoneNone
decidedBy · outgoingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone
dependsOn · outgoingViews compose scoped intent instead of patching canonical source
spec:consumers.edit-model · resolves
declaredwanted changes leave the view as intent for an ordinary source editNone
dependsOn · outgoingThe reader bridges agent entry points to composable graph context
spec:consumers.reader · resolves
declaredNoneNone
refines · outgoingProjections fan out from one graph without becoming truth stores
spec:consumers.projections-model · resolves
declaredNoneNone
refines · incomingA pinned declaration shows the words of each test line that cites it
spec:consumers.spec-studio.cited-line-text · resolves
declaredNoneNone
refines · incomingThe Studio's custom elements each hold one view the build renders
spec:consumers.spec-studio.components · resolves
declaredNoneNone
refines · incomingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
refines · incomingThe diff page shows what changed in the design since a base graph
spec:consumers.spec-studio.diff-page · resolves
declaredNoneNone
refines · incomingA Pack exports as one file, and every page prints as a document
spec:consumers.spec-studio.export · resolves
declaredNoneNone
refines · incomingThe glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page · resolves
declaredNoneNone
refines · incomingFive lenses read the graph as Packs, capabilities, architecture, tests and evidence
spec:consumers.spec-studio.lenses · resolves
declaredNoneNone
refines · incomingEvery page of the page set is reached from the top navigation and the index
spec:consumers.spec-studio.navigation · resolves
declaredNoneNone
refines · incomingThe owner queue page orders the statements and questions only a person can settle
spec:consumers.spec-studio.owner-queue · resolves
declaredNoneNone
refines · incomingA Pack page shows the Pack's design as one card per member
spec:consumers.spec-studio.pack-page · resolves
declaredNoneNone
refines · incomingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredNoneNone
refines · incomingAn outside register is a named Studio input, so a cited token links to its entry
spec:consumers.spec-studio.register-input · resolves
declaredNoneNone
refines · incomingThe corpus's registers are pages a reviewer opens from a link
spec:consumers.spec-studio.registers · resolves
declaredNoneNone
refines · incomingThe Studio reads on a phone as on a desktop
spec:consumers.spec-studio.responsive · resolves
declaredNoneNone
refines · incomingThe roadmap page shows the upcoming work in priority order, split by what it needs
spec:consumers.spec-studio.roadmap-page · resolves
declaredNoneNone
refines · incomingThe runs page shows the run records the build was given, joined to test files
spec:consumers.spec-studio.runs-page · resolves
declaredNoneNone
refines · incomingA Studio build is stamped and shared from a static host
spec:consumers.spec-studio.sharing · resolves
declaredNoneNone
refines · incomingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · incomingA slice page shows a Pack's design as one whole
spec:consumers.spec-studio.slice-page · resolves
declaredNoneNone
refines · incomingA Spec page shows one Spec in collapsible panels, in a fixed order
spec:consumers.spec-studio.spec-page · resolves
declaredNoneNone
refines · incomingThe Studio renders HTML, and the HTML stays derived
spec:decisions.studio-html-surface · resolves
declaredNoneNone
refines · incomingThe Studio is built from custom elements, not a framework
spec:decisions.studio-web-components · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.studio-command · validates and renders the Studio with independent byte checks and diagnostic exit codes · src/cli/studio-command.ts:106 · role publisher · component component:protocol.cli · layer edge · context protocol
  • 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
  • impl:protocol.studio-frame · renders Studio navigation, page rails and composing controls · src/projections/studio/pages/frame.ts:6 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.studio-publisher · anchored · test/studio-publisher.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.