Spec Studio

The owner queue page orders the statements and questions only a person can settle

spec:consumers.spec-studio.owner-queueUse Case / Behavior · storyready floor ready

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

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

Findings: no errors, no warnings

specs/consumers/spec-studio.owner-queue.sdp.md

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

A large design waits on one person: the statements its floor already allows and the questions only its owner decides. The readiness planner orders those statements, the ones they rest on first. This page shows that order to a reviewer with only a link, so the owner sees which statements can be made first and which questions hold the most. A rung stays a person's statement, so the page orders and links and states nothing.

Intent
outcome
Let the owner see, in one place, every statement the floor allows in the order that holds, and every open question only the owner settles, blocking ones first.
Behavior
rule.queuePage line 22 · specs/consumers/spec-studio.owner-queue.sdp.md:22
The page set holds queue.html, which renders recipe 46, the statement queue, over the whole corpus.

no example exercises it

rule.waitingStatements line 23 · specs/consumers/spec-studio.owner-queue.sdp.md:23
The first list holds every waiting statement in the queue's order, numbered by position: the Spec linked, its kind, its stated rung, the rung its floor allows, the waiting Specs it rests on, each linked to its own row, and its Packs; a statement that rests on no waiting Spec reads can be made now.

spec:consumers.spec-studio.owner-queue.dependency-first · enabled

rule.ownerQuestions line 24 · specs/consumers/spec-studio.owner-queue.sdp.md:24
The second list holds the open questions whose decider is owner, blocking ones first, each with its address linked to the question on its Spec page, its text, its provisional reading when present, and the Specs it holds below a rung, linked. The page reads the provisional reading from the reader by the question's Spec and key, or by its position when it has no key.

no example exercises it

rule.queueSummary line 25 · specs/consumers/spec-studio.owner-queue.sdp.md:25
The page opens with sentences the build counts from the queue's answer: the statements waiting, how many rest on no waiting Spec and can be made now, the owner's questions blocking and not blocking, and any dependency cycle the queue names.

no example exercises it

rule.queueFilters line 26 · specs/consumers/spec-studio.owner-queue.sdp.md:26
Filters narrow both lists by Pack, and the statements by the rung their floor allows; without script every row shows.

no example exercises it

rule.statesNothing line 27 · specs/consumers/spec-studio.owner-queue.sdp.md:27
The page orders and links: it states no rung, records no statement, and never presents a waiting statement as approved or a position as a priority the owner set.

no example exercises it

0 unkeyed rules.

Verifying examples

The owner queue lists a waiting statement after the one it rests on · spec:consumers.spec-studio.owner-queue.dependency-first · ready floor ready

Executable Spec

Given a Spec {dependent: "spec:probe.alpha"} that waits for a statement its floor allows and rests on a Spec {dependency: "spec:probe.zeta"} that waits for one too
When the build renders the owner queue page
Then the queue lists {first: "spec:probe.zeta"} first
Then the row of the Spec that rests on the other links it: {linked: true}

Open example

Example space

Given a Spec {dependent:string} that waits for a statement its floor allows and rests on a Spec {dependency:string} that waits for one too
When the build renders the owner queue page
Then the queue lists {first:string} first
Then the row of the Spec that rests on the other links it: {linked:boolean}
UI
statementRow line 30 · specs/consumers/spec-studio.owner-queue.sdp.md:30
<position>., the title linked, the id as code, then as plain text the kind, stated <rung>, floor allows <rung>, rests on and the waiting Specs as links to their rows or can be made now, and the Packs; the row's element id is the Spec's id.
ownerQuestionRow line 31 · specs/consumers/spec-studio.owner-queue.sdp.md:31
blocking or non-blocking in words, the address as a link with a copy action, the text, the provisional reading on its own labelled line, then holds and the held Specs as links.
Verification

Verifier bindings

  • spec:consumers.spec-studio.owner-queue.dependency-first · The owner queue lists a waiting statement after the one it rests on · declared · example enabled · specs/consumers/spec-studio.owner-queue.dependency-first.sdp.md

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

    Test 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

    NameSuiteResultDuration
    executes the bound example against a fresh worldThe questions page lists the Specs with a blocking question first (spec:consumers.spec-studio.registers.blocking-first)passed35.62 ms
    executes the bound example against a fresh worldThe owner queue lists a waiting statement after the one it rests on (spec:consumers.spec-studio.owner-queue.dependency-first)passed19.95 ms
    executes the bound example against a fresh worldThe diff page shows a changed entry's base and built values (spec:consumers.spec-studio.diff-page.changed-entry)passed21.64 ms
    executes the bound example against a fresh worldA word two Specs define appears once per Spec on the glossary page (spec:consumers.spec-studio.glossary-page.same-word-twice)passed8.31 ms
    renders declaration citations, decision reasons and design backlog from the shipped answersStudio register pagespassed34.81 ms
    reaches each page in order, marks it current and omits every diff reference without a baseStudio register pagespassed10.2 ms
    refuses malformed base flags and unreadable JSON before extractionStudio register pagespassed1.96 ms
    refuses a base in generated output before writing through graphStudio base comparisonpassed21.29 ms
    refuses a base in generated output before writing through nestedStudio base comparisonpassed15.24 ms
    refuses a base in generated output before writing through file aliasStudio base comparisonpassed17.97 ms
    refuses a base in generated output before writing through root aliasStudio base comparisonpassed6.75 ms
    refuses a base in generated output before writing through input aliasStudio base comparisonpassed10.5 ms
    renders only existing sides for added and removed entries and one value for moved entriesStudio base comparisonpassed13.63 ms
    shows per-Pack diagnostics without no-change claims for invalid graphStudio base comparisonpassed19.84 ms
    shows per-Pack diagnostics without no-change claims for different schemaStudio base comparisonpassed15.35 ms
    keeps additions, removals, Pack order and anchor bindings apart and escapes compared valuesStudio base comparisonpassed24.48 ms
    shows unreadable graph values as the recipe's diagnostics on the named diff pageStudio base comparisonpassed2.54 ms
    leaves the base file unchanged and certifies repeat publication with the same inputStudio base comparisonpassed28.52 ms
    keeps a cycle's round separate from statements that rest on nothing, and lists owner holdsStudio base comparisonpassed12.27 ms
    sorts terms without locale collation and keeps non-letter headings addressableStudio base comparisonpassed5.74 ms
    orders queue floor options by rung and carries the Pack and floor on each rowStudio base comparisonpassed16.78 ms
    uses authored term keys and orders duplicate terms by Spec idStudio base comparisonpassed6.7 ms
    reads each owner question's provisional reading from its reader Spec and keynot recordedpassed9.69 ms
    renders a keying proposal as one line per keyed entry and readable changed rule textnot recordedpassed9.43 ms
    lists keyed lines in head rule order with rendered text for added, renamed and removed keysnot recordedpassed14.46 ms
    counts keyed rules apart from changed parts, mixed changes: falsenot recordedpassed6.09 ms
    counts keyed rules apart from changed parts, mixed changes: truenot recordedpassed6.9 ms
    names one keyed rule in the singularnot recordedpassed7.97 ms
    marks only members with exclusively keyed changes as keyed onlynot recordedpassed13.49 ms
    renders changed list values as lists instead of raw JSON arraysnot recordedpassed6.06 ms
    retains the owning list when readable rule text moves to a flownot recordedpassed5.57 ms

Example space

  • dependent · string · declared by a Spec {dependent} that waits for a statement its floor allows and rests on a Spec {dependency} that waits for one too
  • dependency · string · declared by a Spec {dependent} that waits for a statement its floor allows and rests on a Spec {dependency} that waits for one too

Bound points

Exampledependentdependency
spec:consumers.spec-studio.owner-queue.dependency-first"spec:probe.alpha""spec:probe.zeta"

Oracle binding: present · oracle:protocol.studio-owner-queue · test/studio-s3.test.ts:132

Coverage

dependent: "spec:probe.alpha" · spec:consumers.spec-studio.owner-queue.dependency-first · not enumerable

dependency: "spec:probe.zeta" · spec:consumers.spec-studio.owner-queue.dependency-first · not enumerable

Unbound

  • dependent: None
  • dependency: None
Design view

Requirement drawing

Requirement drawing for spec:consumers.spec-studio.owner-queue
The diagram as text
  • 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.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on · declared Spec
  • spec:consumers.spec-studio: The Spec Studio is a static HTML workbench over the one graph · declared Spec
  • impl:protocol.studio-owner-queue: renders waiting readiness statements and decider questions · anchored code · src/projections/studio/pages/queue-page.ts:9
  • oracle:protocol.studio-owner-queue: oracle:protocol.studio-owner-queue · anchored oracle binding · test/studio-s3.test.ts:132
  • test:protocol.studio-queue-dependency-first: test:protocol.studio-queue-dependency-first · anchored test binding · binding present · test/studio-s3.test.ts:142
  • 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
  • impl:protocol.studio-owner-queue satisfies spec:consumers.spec-studio.owner-queue · anchored
  • oracle:protocol.studio-owner-queue models spec:consumers.spec-studio.owner-queue · anchored
  • test:protocol.studio-queue-dependency-first verifies spec:consumers.spec-studio.owner-queue.dependency-first · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models require exact labels unavailable in requirement syntax.

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-owner-queue · renders waiting readiness statements and decider questions · src/projections/studio/pages/queue-page.ts:9

    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.owner-queue
The diagram as text
  • spec:consumers.readiness-planner: The readiness planner orders the statements a person can make
  • 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.owner-queue: The owner queue page orders the statements and questions only a person can settle
  • spec:consumers.spec-studio.owner-queue.dependency-first: The owner queue lists a waiting statement after the one it rests on
  • spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.readiness-planner · declared — the page renders the statement queue the planner orders
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.data · declared
  • spec:consumers.spec-studio.owner-queue dependsOn spec:consumers.spec-studio.shell · 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
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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingThe readiness planner orders the statements a person can make
spec:consumers.readiness-planner · resolves
declaredthe page renders the statement queue the planner ordersNone
dependsOn · outgoingThe Studio renders from the reader's values and embeds only what its script reads
spec:consumers.spec-studio.data · resolves
declaredNoneNone
dependsOn · outgoingThe Studio's shell frames every page with navigation, a rail and a canvas
spec:consumers.spec-studio.shell · resolves
declaredNoneNone
refines · outgoingThe Spec Studio is a static HTML workbench over the one graph
spec:consumers.spec-studio · resolves
declaredNoneNone
refines · incomingThe owner queue lists a waiting statement after the one it rests on
spec:consumers.spec-studio.owner-queue.dependency-first · resolves
declaredNoneNone
verifies · incomingThe owner queue lists a waiting statement after the one it rests on
spec:consumers.spec-studio.owner-queue.dependency-first · resolves
declaredNonewaitingStatements

Bindings

Implementation binding: present

  • impl:protocol.studio-owner-queue · renders waiting readiness statements and decider questions · src/projections/studio/pages/queue-page.ts:9 · role projection · component component:protocol.projections · layer edge · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.studio-owner-queue · test/studio-s3.test.ts:132

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.