Spec Studio

The roadmap page shows the upcoming work in priority order, split by what it needs

spec:consumers.spec-studio.roadmap-pageUse Case / Behavior · storyready floor ready

New 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
actor
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.roadmapPage line 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 states order: priority, one section per roadmap in id order, each ending with recipe 55's memo for that Pack.

no example exercises it

rule.noRoadmap line 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.roadmapSummary line 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 order is priority and 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.board line 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.readingLegend line 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.needLists line 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.entryRow line 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 labelled itself, 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 below ready with 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.restsOnShown line 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 ready statement show first, each with its relation, its need and its place on the roadmap or outside the roadmap; the rest fold under one line that counts them.

no example exercises it

rule.waitingList line 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 sentence These questions have no named decider., apart from the owner's.

no example exercises it

rule.apartList line 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.forwardSection line 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.needFilter line 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.statesNothing line 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
boardColumn line 49 · specs/consumers/spec-studio.roadmap-page.sdp.md:49
a column headed To design, To state, To build or Built with 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.
entryRow line 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 of to design, to state, to build and built, then <d> drift when present; its element id is roadmap-<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.
entryFields line 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.
restsOnItem line 52 · specs/consumers/spec-studio.roadmap-page.sdp.md:52
the Spec linked, its relation in words, followed by from and the parts that reach it when any part other than the entry itself does, its need, holds ready when it states below defined, and entry <place> linked to that row or outside the roadmap.
memoDisclosure line 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 a pre element.
Verification

Verifier bindings

  • test:protocol.studio-roadmap-page · anchored · test anchor binding present · test/studio-roadmap.test.ts:24

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

    Test 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

    NameSuiteResultDuration
    shows unresolved members with their original manifest placesStudio roadmap pagepassed47.39 ms
    publishes the empty state and navigation even with no roadmapStudio roadmap pagepassed11.25 ms
    renders the board, four need lists, numbered gaps, legend and entries listed apartStudio roadmap pagepassed1 ms
    counts empty board columns and gives each empty need list its own sentenceStudio roadmap pagepassed36.36 ms
    shows holding parts and their next-rung clauses: has one part implemented below readyStudio roadmap pagepassed37.12 ms
    shows holding parts and their next-rung clauses: has a ready root and one descendant held by a blocking questionStudio roadmap pagepassed21.82 ms
    shows holding parts and their next-rung clauses: has one descendant that also refines a Spec outside the roadmapStudio roadmap pagepassed36.47 ms
    keeps waiting questions, provisional readings, unnamed deciders and statements in recipe orderStudio roadmap pagepassed4.13 ms
    leaves out Earlier statements when no waiting statement precedes the entryStudio roadmap pagepassed23.81 ms
    uses the correct statement count and verb for 0 waiting statementsStudio roadmap pagepassed17.28 ms
    uses the correct statement count and verb for 1 waiting statementsStudio roadmap pagepassed30.27 ms
    uses the correct statement count and verb for 2 waiting statementsStudio roadmap pagepassed33.01 ms
    renders code spans and escapes authored titles consistently on the board and entryStudio roadmap pagepassed21.83 ms
    shows decisions and their questions, dependency folds, incoming work and other PacksStudio roadmap pagepassed53.9 ms
    labels an ordinary Pack answer as authored reading orderStudio roadmap pagepassed43.99 ms
    uses each roadmap's escaped page name for every local entry link and copies recipe 55's exact bytesStudio roadmap pagepassed59.65 ms
    shows every row without script and supplies the existing filter with need tokensStudio roadmap pagepassed1.39 ms
    keeps heading, memo and entry ids distinct when roadmap names contain their suffixesStudio roadmap pagepassed25.08 ms
    stacks the board at phone width using the Studio breakpointStudio roadmap pagepassed0.4 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:consumers.spec-studio.roadmap-page
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:168

    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.roadmap-page
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

Rested on by

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingA roadmap orders the next bodies of work, and the graph says what each still needs
spec:consumers.roadmap · resolves
declaredthe page renders the roadmap readingNone
dependsOn · outgoingA roadmap renders as the forward section of a pull request description
spec:consumers.roadmap.memo · resolves
declaredthe page carries the roadmap memo for a description's author to copyNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingsdp studio publishes the Studio as one page set
spec:consumers.spec-studio.publisher · resolves
declaredan entry's element id carries the name the page set gives its roadmap's Pack pageNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · outgoingA roadmap orders the next bodies of work, and the graph says what each still needs
spec:consumers.roadmap · resolves
declaredthe page is the roadmap's reading for a personNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone

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.