outcomeA Spec page's core shows the whole Spec, with an anchor for every entry
spec:consumers.spec-studio.spec-page.corePacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: 8 design entries · no pinned declarations · 1 decision
Findings: no errors, no warnings
specs/consumers/spec-studio.spec-page.core.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The full Spec page adds panels to this core: diagrams, a runtime neighborhood, verification and evidence panels, impact, and actions that compose intent. The core shows what the Spec context holds, as text, so a reviewer with only a link reads the whole Spec and can cite any entry by its address.
Intent
- Show everything the graph holds about one Spec on one page that reads without script: its header, its sections in order with an anchor for every addressable entry, its relations both ways, its bindings and its findings.
Behavior
rule.headerline 27 ·specs/consumers/spec-studio.spec-page.core.sdp.md:27- The header shows the title; the id with a copy action; the kind's display label and the altitude; the stated rung beside the floor reached on one line, with the divergence banner only in the dishonest direction; the stated next rung with
nothing blocksor each unmet clause and its targets; the Packs the Spec belongs to, linked; its design columns; its findings by severity; and its carrier file as text with a copy action. It shows no owner, capability, tag or last-verified time: the envelope holds none, the Packs stand for a capability, and a binding never records a run.no example exercises it
rule.summaryline 28 ·specs/consumers/spec-studio.spec-page.core.sdp.md:28- A summary in words follows the header with what the header does not show: the open and blocking questions, and the implementation, verifier and oracle bindings as present or none. It repeats no rung the header shows.
no example exercises it
rule.sectionsline 29 ·specs/consumers/spec-studio.spec-page.core.sdp.md:29- The narrative comes next, then each section the Spec carries as a panel open by default, in the order intent, behavior, constraints, model, design, decision, verification, ui, with its entries in authored order. A section the Spec lacks is absent, and the page adds no section the graph does not hold. The narrative carries the element id
narrativeand each section panelsection.<name>, such assection.behavior.no example exercises it
rule.entryIdsline 30 ·specs/consumers/spec-studio.spec-page.core.sdp.md:30- Every entry an entry address can name, a keyed Design or UI entry, a keyed rule or flow and a keyed open question, carries an element id equal to its address after the
#, such asdesign.<key>, and shows its key and its recorded line.no example exercises it
rule.questionsline 31 ·specs/consumers/spec-studio.spec-page.core.sdp.md:31- Each open question shows its blocking flag in words, its key as code with a copy action for the full entry address when it has one, its text, its decider, its links, linked, its provisional reading and its trigger when present, and its recorded line. It shows no date: git records when a line changed.
no example exercises it
ruleline 32 ·specs/consumers/spec-studio.spec-page.core.sdp.md:32- A
gwtorgwt-vocabularyfence shows as preformatted step text, as authored. rule.relationsline 33 ·specs/consumers/spec-studio.spec-page.core.sdp.md:33- Relations show both ways, each with its type, its direction, its claim, the other endpoint, linked when it is a Spec or a Pack, whether it resolves, and its reason and the rule keys it exercises when present.
no example exercises it
rule.bindingsline 34 ·specs/consumers/spec-studio.spec-page.core.sdp.md:34- Bindings speak binding language. The implementation binding, design reference, verifier binding and expected-outcome oracle each read present or none, and list each unit, test anchor, example or oracle by id, label, and recorded file and line as text with a copy action; a unit adds its role and component, and an example verifier says whether it is enabled. Runtime observation reads not tracked, and run results read not recorded in the graph.
no example exercises it
rule.findingsline 35 ·specs/consumers/spec-studio.spec-page.core.sdp.md:35- The findings that name the Spec close the page, each with its severity in words, its validator id and its message.
no example exercises it
1 unkeyed rule.
UI
headerBlockline 38 ·specs/consumers/spec-studio.spec-page.core.sdp.md:38- the title as the page heading; below it a line with the id, kind, altitude, the rung badge with the floor in words, and the next rung; then the Packs, the design columns, the finding counts and the carrier file.
summaryLineline 39 ·specs/consumers/spec-studio.spec-page.core.sdp.md:39- one sentence under the header.
sectionPanelline 40 ·specs/consumers/spec-studio.spec-page.core.sdp.md:40- an open disclosure per section, headed with the section's name, and for Verification its mode.
entryRowline 41 ·specs/consumers/spec-studio.spec-page.core.sdp.md:41- an entry's key as code, its value, and
line <n>when recorded, in a definition list. questionItemline 42 ·specs/consumers/spec-studio.spec-page.core.sdp.md:42- the blocking flag in words,
question.<key>as code when keyed, a copy action whose text and accessible name carry the full entry address, with no second code span of that address, the text, each present field on its own labelled line, andline <n>when recorded. relationsTableline 43 ·specs/consumers/spec-studio.spec-page.core.sdp.md:43- five columns, relation and direction, other end, claim, reason, and exercised keys, with an unresolved endpoint marked in words.
bindingsBlockline 44 ·specs/consumers/spec-studio.spec-page.core.sdp.md:44- four labelled lines, each present or none with its items below it, then runtime observation and run results.
findingsListline 45 ·specs/consumers/spec-studio.spec-page.core.sdp.md:45- one line per finding, the severity word first.
Verification
Verifier bindings
- test:protocol.studio-pages · anchored · test anchor binding present ·
test/studio-pages.test.ts:18External run evidence from
test/studio-pages.test.tsTest anchors:
test:protocol.studio-pages. Specs verified by those bindings: spec:consumers.spec-studio.index-page, spec:consumers.spec-studio.pack-page, spec:consumers.spec-studio.search, spec:consumers.spec-studio.shell, spec:consumers.spec-studio.spec-page.core.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 rejects malformed page links: <div id="same"></div><div id="same"></div> not recorded passed 3.03 ms rejects malformed page links: <a href="missing.html">Missing</a> not recorded passed 0.61 ms rejects malformed page links: <a href="#missing">Missing</a> not recorded passed 0.42 ms rejects malformed page links: <a href="https://example.com">Outside</a> not recorded passed 0.3 ms renders Model definitions without exposing the derived term key map Studio static pages passed 9.63 ms frames every browsing page with a skip link, labelled search, rail, canvas, classic script and stamp Studio static pages passed 2.2 ms lists example-space owners only in Pack and Spec rails Studio static pages passed 0.36 ms shows a keyed question once with a copy action naming its full address Studio static pages passed 0.35 ms opens the index with counts, four task routes, every filter and stable section ids Studio static pages passed 0.84 ms gives each Spec row one rung badge and binding words Studio static pages passed 1.06 ms puts Pack totals before framing and folds holds into that summary Studio static pages passed 0.53 ms leaves member names out when every member waits only for its author Studio static pages passed 15.8 ms agrees each boundary verb with its count Studio static pages passed 13.16 ms shows only the Spec's own Packs in its rail and every Pack on the index Studio static pages passed 21.3 ms asserts every index summary sentence including fact-based verifier counts Studio static pages passed 10.79 ms renders code spans in titles on every page and strips them in document titles Studio static pages passed 13.22 ms orders rung filters by the ladder and uses none everywhere for an unmet idea floor Studio static pages passed 12.07 ms keeps navigation links outside Pack disclosure controls Studio static pages passed 0.23 ms labels next rungs, UI and finding links and avoids repeating absent bindings Studio static pages passed 0.49 ms renders Pack members in authored order, closed and with one colored badge per summary Studio static pages passed 0.7 ms renders the four Pack boundary sections and the verifier gap sentence once Studio static pages passed 0.29 ms shows the stated rung beside its floor and warns only in the dishonest direction Studio static pages passed 0.24 ms renders every section in order and every addressable entry with its key and recorded line Studio static pages passed 0.49 ms names the first unmet clause and renders a missing idea floor as none Studio static pages passed 5.38 ms shows question fields, code location, component, bindings and relations both ways Studio static pages passed 0.93 ms escapes authored text, reads only code spans and links resolving mentions Studio static pages passed 0.42 ms links validator-readable escaped mentions and preserves unequal code delimiters Studio static pages passed 0.36 ms shows findings on the index and only links page-bearing subjects Studio static pages passed 10.06 ms embeds the index only on search and supplies its element and no-script explanation Studio static pages passed 0.78 ms resolves all probe links including fragments in dynamic search results Studio static pages passed 9.25 ms keeps unresolved component bindings as text and resolves every remaining link Studio static pages passed 22.76 ms renders deterministically with no time or commit metadata Studio static pages passed 11.35 ms ships the native layout and focus stylesheet in the browser assets Studio static pages passed 0.4 ms resolves every page link and element fragment Protocol Studio page set passed 1364.19 ms contains the complete Spec prose without executing script Protocol Studio page set passed 103.58 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- 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.spec-page: A Spec page shows one Spec in collapsible panels, in a fixed order · declared Spec
- impl:protocol.studio-spec-page: renders Spec intent, relations and realization bindings · anchored code ·
src/projections/studio/pages/spec-page.ts:201 - test:protocol.studio-pages: test:protocol.studio-pages · anchored test binding · binding present ·
test/studio-pages.test.ts:18 - spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · declared
- impl:protocol.studio-spec-page satisfies spec:consumers.spec-studio.spec-page.core · anchored
- test:protocol.studio-pages verifies spec:consumers.spec-studio.spec-page.core · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.
Decisions
- The Design Review renders open-section entries as a list
The Design Review renders each entry of a
designoruisection as a list item in authored order, its key as inline code. A string value renders as Markdown text through the prose escaping rule; a number or boolean renders as inline code; an array or object renders as a fenced JSON block nested under its item, so a structured value the TypeScript carrier admits survives without loss. The fenced-JSON rule of the Design Review stops covering an open section as a whole and keeps covering a structured value inside one entry. The freeze on the four shipped projections stands for everything else.
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-spec-page· renders Spec intent, relations and realization bindings ·src/projections/studio/pages/spec-page.ts:201Component:
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.binding-language-views: Views speak binding language, never the internal fact name
- spec:consumers.derived-readiness-banner: Derived readiness renders beside the stated rung and warns in one direction
- spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
- 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:decisions.authored-entry-order: The Design Review renders open-section entries as a list
- spec:extraction.entry-locations: The graph records where each addressable entry is written
- spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
- spec:model.relation-reasons: An authored relation may carry its reason
- spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
- spec:consumers.spec-studio.spec-page.core decidedBy spec:decisions.authored-entry-order · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.binding-language-views · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.derived-readiness-banner · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:consumers.spec-studio.shell · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:extraction.entry-locations · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:model.open-question-fields · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:model.relation-reasons · declared
- spec:consumers.spec-studio.spec-page.core dependsOn spec:model.rule-keys · declared
- spec:consumers.spec-studio.spec-page.core refines spec:consumers.spec-studio.spec-page · 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.spec-page · stated ready, floor ready
- dependsOn · spec:consumers.binding-language-views · stated ready, floor ready
- dependsOn · spec:consumers.derived-readiness-banner · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.shell · stated ready, floor ready
- dependsOn · spec:extraction.entry-locations · stated ready, floor ready
- dependsOn · spec:model.open-question-fields · stated ready, floor ready
- dependsOn · spec:model.relation-reasons · stated ready, floor ready
- dependsOn · spec:model.rule-keys · stated ready, floor ready
- decidedBy · spec:decisions.authored-entry-order · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | The Design Review renders open-section entries as a listspec:decisions.authored-entry-order · resolves | declared | None | None |
| dependsOn · outgoing | Views speak binding language, never the internal fact namespec:consumers.binding-language-views · resolves | declared | None | None |
| dependsOn · outgoing | Derived readiness renders beside the stated rung and warns in one directionspec:consumers.derived-readiness-banner · resolves | declared | None | None |
| dependsOn · outgoing | The Studio renders from the reader's values and embeds only what its script readsspec:consumers.spec-studio.data · resolves | declared | None | None |
| dependsOn · outgoing | The Studio's shell frames every page with navigation, a rail and a canvasspec:consumers.spec-studio.shell · resolves | declared | None | None |
| dependsOn · outgoing | The graph records where each addressable entry is writtenspec:extraction.entry-locations · resolves | declared | None | None |
| dependsOn · outgoing | An open question may name who decides it, its links, a provisional reading and a re-entry triggerspec:model.open-question-fields · resolves | declared | None | None |
| dependsOn · outgoing | An authored relation may carry its reasonspec:model.relation-reasons · resolves | declared | None | None |
| dependsOn · outgoing | A rule or flow entry may carry a key that addresses itspec:model.rule-keys · resolves | declared | None | None |
| refines · outgoing | A Spec page shows one Spec in collapsible panels, in a fixed orderspec:consumers.spec-studio.spec-page · resolves | declared | None | None |
Bindings
Implementation binding: present
impl:protocol.studio-spec-page· renders Spec intent, relations and realization bindings ·src/projections/studio/pages/spec-page.ts:201· role projection · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
- test:protocol.studio-pages · anchored ·
test/studio-pages.test.ts:18· 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.