outcomeEvery page of the page set is reached from the top navigation and the index
spec:consumers.spec-studio.navigationPacks: pack:self-hosting-v1, pack:spec-studio-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.navigation.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The shell's top navigation reaches the index and each lens, and the index routes a reader by the task they came to do. The register pages, the owner queue, the glossary, and the diff and runs pages join both, so a reviewer with only a link reaches every page from any page and sees which page they are on.
Intent
- Let a person reach every page of the page set from the top navigation of any page, and from the index by the task they came to do.
Behavior
rule.topEntriesline 24 ·specs/consumers/spec-studio.navigation.sdp.md:24- After the lens entries, the top navigation lists Roadmap, Queue, Questions, Decisions, Declarations, Backlog and Glossary, then Diff when the build was given a base graph and Runs when it was given run records, each linking its page; the search field follows them.
no example exercises it
rule.currentPageline 25 ·specs/consumers/spec-studio.navigation.sdp.md:25- The top-navigation link to the page being read carries
aria-current="page"and an underline, so it shows by more than color.no example exercises it
rule.indexRoutesline 26 ·specs/consumers/spec-studio.navigation.sdp.md:26- After its four routes, the index's
Start herelist adds See what comes next, linking the roadmap page; See what the owner can state first, linking the owner queue; See the components by context and layer, linking the architecture lens; and, given a base graph, See what changed since the base, linking the diff page.no example exercises it
0 unkeyed rules.
Verification
Verifier bindings
- test:protocol.studio-navigation · anchored · test anchor binding present ·
test/studio-s3.test.ts:317External run evidence from
test/studio-s3.test.tsTest anchors:
test:protocol.studio-diff-changed-entry,test:protocol.studio-glossary-same-word-twice,test:protocol.studio-navigation,test:protocol.studio-queue-dependency-first,test:protocol.studio-registers-blocking-first. Specs verified by those bindings: spec:consumers.spec-studio.diff-page, spec:consumers.spec-studio.diff-page.changed-entry, spec:consumers.spec-studio.glossary-page, spec:consumers.spec-studio.glossary-page.same-word-twice, spec:consumers.spec-studio.navigation, spec:consumers.spec-studio.owner-queue, spec:consumers.spec-studio.owner-queue.dependency-first, spec:consumers.spec-studio.registers, spec:consumers.spec-studio.registers.blocking-first.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 executes the bound example against a fresh world The questions page lists the Specs with a blocking question first (spec:consumers.spec-studio.registers.blocking-first) passed 35.62 ms executes the bound example against a fresh world The owner queue lists a waiting statement after the one it rests on (spec:consumers.spec-studio.owner-queue.dependency-first) passed 19.95 ms executes the bound example against a fresh world The diff page shows a changed entry's base and built values (spec:consumers.spec-studio.diff-page.changed-entry) passed 21.64 ms executes the bound example against a fresh world A word two Specs define appears once per Spec on the glossary page (spec:consumers.spec-studio.glossary-page.same-word-twice) passed 8.31 ms renders declaration citations, decision reasons and design backlog from the shipped answers Studio register pages passed 34.81 ms reaches each page in order, marks it current and omits every diff reference without a base Studio register pages passed 10.2 ms refuses malformed base flags and unreadable JSON before extraction Studio register pages passed 1.96 ms refuses a base in generated output before writing through graph Studio base comparison passed 21.29 ms refuses a base in generated output before writing through nested Studio base comparison passed 15.24 ms refuses a base in generated output before writing through file alias Studio base comparison passed 17.97 ms refuses a base in generated output before writing through root alias Studio base comparison passed 6.75 ms refuses a base in generated output before writing through input alias Studio base comparison passed 10.5 ms renders only existing sides for added and removed entries and one value for moved entries Studio base comparison passed 13.63 ms shows per-Pack diagnostics without no-change claims for invalid graph Studio base comparison passed 19.84 ms shows per-Pack diagnostics without no-change claims for different schema Studio base comparison passed 15.35 ms keeps additions, removals, Pack order and anchor bindings apart and escapes compared values Studio base comparison passed 24.48 ms shows unreadable graph values as the recipe's diagnostics on the named diff page Studio base comparison passed 2.54 ms leaves the base file unchanged and certifies repeat publication with the same input Studio base comparison passed 28.52 ms keeps a cycle's round separate from statements that rest on nothing, and lists owner holds Studio base comparison passed 12.27 ms sorts terms without locale collation and keeps non-letter headings addressable Studio base comparison passed 5.74 ms orders queue floor options by rung and carries the Pack and floor on each row Studio base comparison passed 16.78 ms uses authored term keys and orders duplicate terms by Spec id Studio base comparison passed 6.7 ms reads each owner question's provisional reading from its reader Spec and key not recorded passed 9.69 ms renders a keying proposal as one line per keyed entry and readable changed rule text not recorded passed 9.43 ms lists keyed lines in head rule order with rendered text for added, renamed and removed keys not recorded passed 14.46 ms counts keyed rules apart from changed parts, mixed changes: false not recorded passed 6.09 ms counts keyed rules apart from changed parts, mixed changes: true not recorded passed 6.9 ms names one keyed rule in the singular not recorded passed 7.97 ms marks only members with exclusively keyed changes as keyed only not recorded passed 13.49 ms renders changed list values as lists instead of raw JSON arrays not recorded passed 6.06 ms retains the owning list when readable rule text moves to a flow not recorded passed 5.57 ms - test:protocol.studio-roadmap-page · anchored · test anchor binding present ·
test/studio-roadmap.test.ts:24External run evidence from
test/studio-roadmap.test.tsTest anchors:
test:protocol.studio-roadmap-page. Specs verified by those bindings: spec:consumers.roadmap.memo, spec:consumers.spec-studio.navigation, spec:consumers.spec-studio.roadmap-page.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 shows unresolved members with their original manifest places Studio roadmap page passed 31.36 ms publishes the empty state and navigation even with no roadmap Studio roadmap page passed 16.43 ms renders the board, four need lists, numbered gaps, legend and entries listed apart Studio roadmap page passed 0.94 ms counts empty board columns and gives each empty need list its own sentence Studio roadmap page passed 25.86 ms shows holding parts and their next-rung clauses: has one part implemented below ready Studio roadmap page passed 26.69 ms shows holding parts and their next-rung clauses: has a ready root and one descendant held by a blocking question Studio roadmap page passed 16.98 ms shows holding parts and their next-rung clauses: has one descendant that also refines a Spec outside the roadmap Studio roadmap page passed 28.01 ms keeps waiting questions, provisional readings, unnamed deciders and statements in recipe order Studio roadmap page passed 3.58 ms leaves out Earlier statements when no waiting statement precedes the entry Studio roadmap page passed 24.36 ms uses the correct statement count and verb for 0 waiting statements Studio roadmap page passed 18.36 ms uses the correct statement count and verb for 1 waiting statements Studio roadmap page passed 22.88 ms uses the correct statement count and verb for 2 waiting statements Studio roadmap page passed 25.07 ms renders code spans and escapes authored titles consistently on the board and entry Studio roadmap page passed 19.89 ms shows decisions and their questions, dependency folds, incoming work and other Packs Studio roadmap page passed 62.18 ms labels an ordinary Pack answer as authored reading order Studio roadmap page passed 30.08 ms uses each roadmap's escaped page name for every local entry link and copies recipe 55's exact bytes Studio roadmap page passed 73.4 ms shows every row without script and supplies the existing filter with need tokens Studio roadmap page passed 1.22 ms keeps heading, memo and entry ids distinct when roadmap names contain their suffixes Studio roadmap page passed 38.68 ms stacks the board at phone width using the Studio breakpoint Studio roadmap page passed 0.38 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
Decisions
No decision record named.
Runtime
component:protocol.projections· read-only output, layout and owned publication ·src/projections/design-review.ts:29· layer edge · context protocol Uses
component:protocol.extract· the carrier and source pipeline ·src/extract/index.ts:192· layer application · context protocol component:protocol.graph· the one graph and its semantic decisions ·src/graph/schema.ts:34· layer domain · context protocol component:protocol.model· the authored contracts and stable ids ·src/model/anchors.ts:100· layer domain · context protocol component:protocol.notation· the leaf step codec ·src/notation/slots.ts:261· layer domain · context protocol component:protocol.reader· the typed graph contract and body evaluator ·src/reader/reader.ts:671· layer application · context protocol component:protocol.validate· one finding currency and ordered checks ·src/validate/validators.ts:72· layer domain · context protocol
impl:protocol.studio-frame· renders Studio navigation, page rails and composing controls ·src/projections/studio/pages/frame.ts:6Component:
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-index-page· renders Pack disclosures and filterable Spec rows ·src/projections/studio/pages/index-page.ts:8Component:
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
Rests on
- refines · spec:consumers.spec-studio · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.index-page · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.lenses · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.shell · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | The index says where the corpus stands and narrows every Specspec:consumers.spec-studio.index-page · resolves | declared | the routes extend the index's task list | None |
| dependsOn · outgoing | Five lenses read the graph as Packs, capabilities, architecture, tests and evidencespec:consumers.spec-studio.lenses · resolves | declared | the lens entries keep the order the lenses take | None |
| dependsOn · outgoing | The Studio's shell frames every page with navigation, a rail and a canvasspec:consumers.spec-studio.shell · resolves | declared | the entries extend the shell's top navigation | None |
| refines · outgoing | The Spec Studio is a static HTML workbench over the one graphspec:consumers.spec-studio · resolves | declared | None | None |
Bindings
Implementation binding: present
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 protocolimpl:protocol.studio-index-page· renders Pack disclosures and filterable Spec rows ·src/projections/studio/pages/index-page.ts:8· role projection · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
- test:protocol.studio-navigation · anchored ·
test/studio-s3.test.ts:317· test anchor - test:protocol.studio-roadmap-page · anchored ·
test/studio-roadmap.test.ts:24· 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.