actorThe roadmap page shows the upcoming work in priority order, split by what it needs
spec:consumers.spec-studio.roadmap-pageNew since the base graph base da4b141. See the diff.
Base input: schema 0.11.0, 405 Specs.
Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1
Design: 5 design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/spec-studio.roadmap-page.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The owner reads a roadmap to choose what the next pull requests take up, and a reviewer reads it to see where an arc stands. The page shows each roadmap at a glance as a board, its entries in the column of what each needs next, and then each entry with what holds it. It ends with the forward section a pull request description carries, ready to copy. The page orders by the owner's places and links; it states nothing.
Intent
- The owner choosing the next work, and a reviewer with only a link.
problem- No page shows what comes next in priority order, so the owner reads it from the last pull request description, and a reviewer cannot tell which upcoming work needs design, a statement or a build.
outcome- Give the Studio a page that shows each roadmap in its priority order, with what to design, what to state, what to build and what is built, and for each entry what it lacks.
Behavior
rule.roadmapPageline 33 ·specs/consumers/spec-studio.roadmap-page.sdp.md:33- The page set holds
roadmap.html, which renders recipe 53 over every Pack whose manifest statesorder: priority, one section per roadmap in id order, each ending with recipe 55's memo for that Pack.no example exercises it
rule.noRoadmapline 34 ·specs/consumers/spec-studio.roadmap-page.sdp.md:34- With no such Pack, the page says the corpus states no roadmap and that a Pack becomes one when its manifest states
order: priority.no example exercises it
rule.roadmapSummaryline 35 ·specs/consumers/spec-studio.roadmap-page.sdp.md:35- Each roadmap's section opens with its title linked to its Pack page, its framing, and sentences the build counts from the answer: the entries with each need, those listed apart and any unresolved members, said to be in priority order only when the answer's
orderispriorityand in authored reading order otherwise; the questions waiting on the owner, blocking and not, and those that name no decider; and the statements waiting, with a link to the owner queue.no example exercises it
rule.boardline 36 ·specs/consumers/spec-studio.roadmap-page.sdp.md:36- A board follows: four columns, to design, to state, to build and built, each headed by its need and its count and listing its entries in place order, each as its place and its title linked to the entry's row below; an empty column reads
none.no example exercises it
rule.readingLegendline 37 ·specs/consumers/spec-studio.roadmap-page.sdp.md:37- Beside the board, a legend reads
To state means the floor allows ready and a person still judges the statement. Built means every Spec of the entry's work states ready and has an implementation binding; it reports no passing test and no deployment. The entry's own readiness is shown separately.no example exercises it
rule.needListsline 38 ·specs/consumers/spec-studio.roadmap-page.sdp.md:38- Four lists follow in the same order, each keeping the roadmap's order and numbering each entry by its place, so a gap in the numbers shows an entry with another need; an empty list says no entry has that need.
no example exercises it
rule.entryRowline 39 ·specs/consumers/spec-studio.roadmap-page.sdp.md:39- Each entry shows its place and title, its kind and altitude, its stated rung and the rung its floor reaches, and its work by need with any drift; opened, it shows its Spec linked, its stated next rung with the clauses that hold it or
nothing blocks, the parts with its need, each linked with its rungs and what holds its next rung, its own labelleditself, with its other parts folded under one line that counts them, the parts to build now linked, its blocking questions linked to their Spec pages, its decisions belowreadywith their blocking questions, what it rests on with the parts that reach it, what waits on it, for an entry to state the waiting statements the statement queue puts before its own, its other Packs and the entries it shares Specs with.no example exercises it
rule.restsOnShownline 40 ·specs/consumers/spec-studio.roadmap-page.sdp.md:40- Among what an entry rests on, the Specs to design, the Specs on the roadmap and the Specs that hold a
readystatement show first, each with its relation, its need and its place on the roadmap oroutside the roadmap; the rest fold under one line that counts them.no example exercises it
rule.waitingListline 41 ·specs/consumers/spec-studio.roadmap-page.sdp.md:41- After the lists, the page lists what waits on the owner, recipe 53's
waiting: each question with its blocking flag, its address linked to the question on its Spec page with a copy action, its text and its provisional reading when present, and each waiting statement with its stated rung and the rung its floor allows, in the order the answer gives, each row linking the entries it touches. The questions that name no decider follow under the sentenceThese questions have no named decider., apart from the owner's.no example exercises it
rule.apartListline 42 ·specs/consumers/spec-studio.roadmap-page.sdp.md:42- The entries listed apart follow the lists, each with its place, kind, stated rung and need. Unresolved members follow under
Unresolved members, each with its original place and its id as code, with no invented title, rung or need.no example exercises it
rule.forwardSectionline 43 ·specs/consumers/spec-studio.roadmap-page.sdp.md:43- Each roadmap ends with a disclosure holding recipe 55's memo as preformatted text with a copy action, so a description's author pastes the forward section the graph holds.
no example exercises it
rule.needFilterline 44 ·specs/consumers/spec-studio.roadmap-page.sdp.md:44- A filter narrows the lists by need; without script every row shows.
no example exercises it
rule.statesNothingline 45 ·specs/consumers/spec-studio.roadmap-page.sdp.md:45- The page orders by the roadmap's places and links: it states no rung, approves nothing, and never presents a place as a date, a deadline or permission to start.
no example exercises it
0 unkeyed rules.
UI
boardColumnline 49 ·specs/consumers/spec-studio.roadmap-page.sdp.md:49- a column headed
To design,To state,To buildorBuiltwith its count, listing<place>and the title as a link to the entry's element id; the four columns sit side by side at desktop width and stack at phone width. entryRowline 50 ·specs/consumers/spec-studio.roadmap-page.sdp.md:50- a disclosure whose summary reads
<place>. <title>on its first line and, on its second, the kind and altitude, the stated rung as a badge,floor <rung>, and the work as<n> Specs:followed by the nonzero counts ofto design,to state,to buildandbuilt, then<d> driftwhen present; its element id isroadmap-<name>-entry-<place>,<name>the name the page set gives the roadmap's Pack page, and every link to an entry, from the board, a rests-on row, the waiting list or a shared-Specs line, uses the owning roadmap's prefix, so two roadmaps on the page never share an id. entryFieldsline 51 ·specs/consumers/spec-studio.roadmap-page.sdp.md:51- labelled lines Id, Next, Parts, Build now, Blocked by, Decided by, Rests on, Waited on by, Earlier statements, Also in and Shares Specs with, an empty line left out; Parts appears when the entry has more than one part or a part other than itself sets its need.
restsOnItemline 52 ·specs/consumers/spec-studio.roadmap-page.sdp.md:52- the Spec linked, its relation in words, followed by
fromand the parts that reach it when any part other than the entry itself does, its need,holds readywhen it states belowdefined, andentry <place>linked to that row oroutside the roadmap. memoDisclosureline 53 ·specs/consumers/spec-studio.roadmap-page.sdp.md:53- a disclosure whose summary reads
The forward section, as Markdown, holding a copy action and the memo in apreelement.
Verification
Verifier bindings
- 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 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z
Name Suite Result Duration shows unresolved members with their original manifest places Studio roadmap page passed 47.39 ms publishes the empty state and navigation even with no roadmap Studio roadmap page passed 11.25 ms renders the board, four need lists, numbered gaps, legend and entries listed apart Studio roadmap page passed 1 ms counts empty board columns and gives each empty need list its own sentence Studio roadmap page passed 36.36 ms shows holding parts and their next-rung clauses: has one part implemented below ready Studio roadmap page passed 37.12 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 21.82 ms shows holding parts and their next-rung clauses: has one descendant that also refines a Spec outside the roadmap Studio roadmap page passed 36.47 ms keeps waiting questions, provisional readings, unnamed deciders and statements in recipe order Studio roadmap page passed 4.13 ms leaves out Earlier statements when no waiting statement precedes the entry Studio roadmap page passed 23.81 ms uses the correct statement count and verb for 0 waiting statements Studio roadmap page passed 17.28 ms uses the correct statement count and verb for 1 waiting statements Studio roadmap page passed 30.27 ms uses the correct statement count and verb for 2 waiting statements Studio roadmap page passed 33.01 ms renders code spans and escapes authored titles consistently on the board and entry Studio roadmap page passed 21.83 ms shows decisions and their questions, dependency folds, incoming work and other Packs Studio roadmap page passed 53.9 ms labels an ordinary Pack answer as authored reading order Studio roadmap page passed 43.99 ms uses each roadmap's escaped page name for every local entry link and copies recipe 55's exact bytes Studio roadmap page passed 59.65 ms shows every row without script and supplies the existing filter with need tokens Studio roadmap page passed 1.39 ms keeps heading, memo and entry ids distinct when roadmap names contain their suffixes Studio roadmap page passed 25.08 ms stacks the board at phone width using the Studio breakpoint Studio roadmap page passed 0.4 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- 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.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs · declared Spec
- spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
- 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 - test:protocol.studio-roadmap-page: test:protocol.studio-roadmap-page · anchored test binding · binding present ·
test/studio-roadmap.test.ts:24 - 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
- impl:protocol.studio-roadmap-page satisfies spec:consumers.spec-studio.roadmap-page · anchored
- test:protocol.studio-roadmap-page verifies spec:consumers.spec-studio.roadmap-page · 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
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-roadmap-page· renders roadmap needs, holding parts and the shared Markdown memo ·src/projections/studio/pages/roadmap-page.ts:168Component:
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.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs
- spec:consumers.roadmap.memo: A roadmap renders as the forward section of a pull request description
- spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph
- spec:consumers.spec-studio.data: The Studio renders from the reader's values and embeds only what its script reads
- spec:consumers.spec-studio.publisher: sdp studio publishes the Studio as one page set
- 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.shell: The Studio's shell frames every page with navigation, a rail and a canvas
- spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.roadmap · declared — the page renders the roadmap reading
- spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.roadmap.memo · declared — the page carries the roadmap memo for a description's author to copy
- spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.data · declared
- spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.publisher · declared — an entry's element id carries the name the page set gives its roadmap's Pack page
- spec:consumers.spec-studio.roadmap-page dependsOn spec:consumers.spec-studio.shell · 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
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.roadmap · stated ready, floor ready
- refines · spec:consumers.spec-studio · stated ready, floor ready
- dependsOn · spec:consumers.roadmap · stated ready, floor ready
- dependsOn · spec:consumers.roadmap.memo · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.data · stated ready, floor ready
- dependsOn · spec:consumers.spec-studio.publisher · 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 | A roadmap orders the next bodies of work, and the graph says what each still needsspec:consumers.roadmap · resolves | declared | the page renders the roadmap reading | None |
| dependsOn · outgoing | A roadmap renders as the forward section of a pull request descriptionspec:consumers.roadmap.memo · resolves | declared | the page carries the roadmap memo for a description's author to copy | 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 | sdp studio publishes the Studio as one page setspec:consumers.spec-studio.publisher · resolves | declared | an entry's element id carries the name the page set gives its roadmap's Pack page | 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 |
| refines · outgoing | A roadmap orders the next bodies of work, and the graph says what each still needsspec:consumers.roadmap · resolves | declared | the page is the roadmap's reading for a person | 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-roadmap-page· renders roadmap needs, holding parts and the shared Markdown memo ·src/projections/studio/pages/roadmap-page.ts:168· role projection · component component:protocol.projections· layer edge · context protocol
Design reference: none
Verifier binding: present
- 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.