Spec Studio

The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests

spec:protocol.roadmap-replaces-plansUse Case / Behavior · featureready floor ready

Packs: pack:roadmaps-and-slices-v1, pack:self-hosting-v1

Design: 3 design entries · 2 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/protocol/roadmap-replaces-plans.sdp.md

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

Each arc's intent already lives in its capture Specs and Pack, its rulings in their carrying Specs, and its story in its pull request description. What a plan file still carries is the status line agents read first, the lanes and waves of the arc, and copies of ruling tables; what a committed review file carries, a change proposal, its memo and git already hold. Once a roadmap holds priority, the Protocol reads its next work from the graph, keeps each arc's record in git and its pull request, with review findings and evidence beside the story, and lets the plan and review files stand as the record of how earlier arcs were run. The Protocol keeps one living roadmap: its owner selects what it lists, and the pull requests that complete that work remove it.

Intent
actor
An agent or a person opening, reviewing or resuming the Protocol's work, and the owner keeping its order.
problem
The handbook points every session at the newest plan file and keeps a status line for each, and a gate requires both, so forward planning lives in prose beside the graph that already holds the arc's intent, and committed review files repeat what change proposals, git and the pull request already carry.
outcome
Let an agent opening the Protocol's next work read it from the roadmap recipe, review and recover an arc from git and its pull request, and keep the plan and review files as frozen history no gate requires to grow.
Behavior
rule.readsRoadmap line 33 · specs/protocol/roadmap-replaces-plans.sdp.md:33
An agent opening the Protocol's next work runs the roadmap recipe over the roadmap Pack the handbook names and follows each entry to its Packs and carrying Specs; no plan file answers for forward work.

no example exercises it

rule.oneRoadmap line 34 · specs/protocol/roadmap-replaces-plans.sdp.md:34
The Protocol keeps one living roadmap Pack, edited in place. Its owner selects captured work for the upcoming pull requests; landing a capture does not add it. Entries leave by an ordinary manifest edit when the selected work is complete or no longer belongs among the next work, and move on the owner's word, with git as history.

no example exercises it

rule.plansFrozen line 35 · specs/protocol/roadmap-replaces-plans.sdp.md:35
plans/ and reviews/ keep the plans and review records of the arcs that had them as history until a cleanup arc removes or archives them; no file is added to either, and a file in either changes only to correct the record it keeps.

no example exercises it

rule.executionRecord line 36 · specs/protocol/roadmap-replaces-plans.sdp.md:36
Before an arc's first push its record is its branch, git being the event log: the first commit message states the owner's working rules for the arc and the arc's Pack, each later message says what its unit did, and outstanding work is read from the arc's Pack, the backlogs and the open-question register; no record file is kept under reviews/ or anywhere else. The arc pushes and opens its draft pull request at its first coherent commit, normally the scaffold, so the window in which only local git holds the record stays short and a session restarted on another machine sees the work. The draft pull request description then holds the record: its branch and base, working rules, lanes, the rulings with who made them, review findings as change proposals and their memos, acceptance as measured, deferrals and refusals. A session resuming without its predecessor's context reads the branch, its commits, the draft pull request and the graph, and never claims git kept what was never committed. The authority to commit and push comes from the owner's instruction for the arc, never from this rule, and no check reads the record.

no example exercises it

rule.reviewFindings line 37 · specs/protocol/roadmap-replaces-plans.sdp.md:37
A review's findings against Specs travel as one change proposal in the shape spec:consumers.intent-composition.proposal states, whose base is the branch-head commit the reviewer read; a proposal composed in a preview names the preview's merge commit from its stamp; the proposal check runs it against the graph at that base, a moved, unresolved or incomparable scope is read again before its change applies, and its memo, as spec:consumers.intent-composition.proposal.memo renders it, is posted to the pull request. A finding against code or another file is a review comment on its line, and a review that proposes no Spec edit has no proposal. The commit that applies a proposal carries its reason line and base, and whether a change was accepted stays in the pull request's discussion and git, never in the proposal or the graph. No review file is committed, and a brief or prompt stays in the session that used it.

no example exercises it

rule.openFindings line 38 · specs/protocol/roadmap-replaces-plans.sdp.md:38
A finding left open against intended design becomes an open question on its carrying Spec with its decider, provisional reading and links, and a deferral is a blocking question with its re-entry trigger; a code defect against settled intent stays a code finding until it is repaired and never becomes an invented design question.

no example exercises it

rule.evidence line 39 · specs/protocol/roadmap-replaces-plans.sdp.md:39
Evidence no test or recipe carries, such as a prototype of a view not yet built, an adopter measurement's raw output or a screenshot for the description, is committed on the arc's branch with the commands that made it, linked from the description at that commit, and removed before the merge; the Protocol merges its pull requests with merge commits, and GitHub keeps each pull request's head ref, so links at the evidence commit keep resolving. A squash or rebase merge would need the evidence published to a durable ref first.

no example exercises it

rule.acceptance line 40 · specs/protocol/roadmap-replaces-plans.sdp.md:40
An arc's acceptance links its bound examples and their run evidence, and re-derives each recipe measurement at the commit the description names, with its commands, never inheriting an earlier result. A run record is evidence from its test file as spec:observation.run-evidence reads it, never a verdict for one verifier, and it counts as evidence for a preview only when its recorded commit is the commit the preview's stamp names; a preview stays a current view, never an acceptance record.

no example exercises it

rule.forwardSection line 41 · specs/protocol/roadmap-replaces-plans.sdp.md:41
Each description's forward section is the roadmap memo rendered at the branch's head, with the re-entry condition, the owner's reason for each entry's place and the refused list in the author's words around it; the pull request that completes an entry's selected work removes it from the roadmap in the same change, entries join or move only on the owner's word, and nothing checks either.

no example exercises it

rule.handbookPointer line 42 · specs/protocol/roadmap-replaces-plans.sdp.md:42
The handbook names the roadmap Pack and the roadmap recipe where it named the current plan, and keeps no status line for any plan.

no example exercises it

rule.gateRecord line 43 · specs/protocol/roadmap-replaces-plans.sdp.md:43
The self-hosting gate's current-record check refuses a handbook that does not name the roadmap Pack or the roadmap recipe, and a generated graph without a Pack node pack:roadmap whose order is priority; it keeps the frozen historical checks, the documented green-gate legs, and the ban on plan status in the decision registry and the glossary until the cleanup arc removes the folders they read. It checks no plan number, roadmap content, freshness, work order or review disposition.

no example exercises it

0 unkeyed rules.

Design
roadmapPack line 47 · specs/protocol/roadmap-replaces-plans.sdp.md:47
pack:roadmap, carried by specs/roadmap.pack.sdp.md.

no citation recorded

handbookTokens line 48 · specs/protocol/roadmap-replaces-plans.sdp.md:48
the gate reads the handbook for the strings pack:roadmap and recipe 53, and the generated graph at generated/graph.json for a Pack node pack:roadmap whose order is "priority".
gateMessages line 49 · specs/protocol/roadmap-replaces-plans.sdp.md:49
AGENTS.md — the handbook does not name the roadmap Pack, AGENTS.md — the handbook does not name the roadmap recipe, generated/graph.json — the roadmap Pack pack:roadmap is missing, generated/graph.json — the roadmap Pack pack:roadmap does not state order: priority, and generated/graph.json — the generated graph is missing or unreadable.

no citation recorded

Verification · reviewed
criteria
  • Resume an arc from its branch and draft pull request alone, reading the tree, its commits and the graph, and name any context that lived only in the earlier session.
  • Run the gate with a handbook that does not name the roadmap Pack and with a roadmap manifest that does not state order: priority, and see each refused; an empty roadmap, a built entry and an order contrary to dependency add no finding.
mode
reviewed
Verification

Verifier bindings

  • test:protocol.roadmap-practice · anchored · test anchor binding present · test/check-self-hosting-gates.test.ts:59

    External run evidence from test/check-self-hosting-gates.test.ts

    Test anchors: test:protocol.roadmap-practice. Specs verified by those bindings: spec:protocol.roadmap-replaces-plans.

    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
    accepts the current record without requiring the historical ledger shapethe self-hosting records gatepassed60.25 ms
    fails when a frozen historical owner-packet pin is brokenthe self-hosting records gatepassed72.88 ms
    refuses a missing handbook pointer: pack:roadmapthe self-hosting records gatepassed61.63 ms
    refuses a missing handbook pointer: recipe 53the self-hosting records gatepassed51.88 ms
    names a missing roadmap manifestthe self-hosting records gatepassed66.31 ms
    names the generated graph when absentthe self-hosting records gatepassed51.11 ms
    names the generated graph when corruptthe self-hosting records gatepassed51.2 ms
    accepts quoted priority with a comment and rejects a renamed roadmap idthe self-hosting records gatepassed143.42 ms
    requires a priority roadmap node derived from the manifest: the self-hosting records gatepassed54.29 ms
    requires a priority roadmap node derived from the manifest: order: readingthe self-hosting records gatepassed54.06 ms
    requires a priority roadmap node derived from the manifest: --- # Roadmap order: prioritythe self-hosting records gatepassed48.32 ms
    checks no content, dependency order or plan number: []the self-hosting records gatepassed66.27 ms
    checks no content, dependency order or plan number: [spec:probe.built]the self-hosting records gatepassed55.04 ms
    checks no content, dependency order or plan number: [spec:probe.dependent, spec:probe.dependency]the self-hosting records gatepassed54.32 ms
    keeps the documented green gate and semantic plan-status banthe self-hosting records gatepassed58.2 ms
    ships the roadmap, recovery and review convention in the handbookthe self-hosting records gatepassed1.69 ms
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:protocol.roadmap-replaces-plans
The diagram as text
  • spec:protocol.roadmap-replaces-plans: The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests · declared Spec
  • spec:protocol.delivery-record-cleanup: The Protocol removes its frozen plans, review reports and superseded concept material · declared Spec · no satisfying binding
  • spec:protocol.self-hosting: The Protocol authors and validates itself · declared Spec
  • impl:protocol.roadmap-practice: realizes the roadmap handbook and its current-record gate · anchored code · test/check-self-hosting-gates.test.ts:52
  • test:protocol.roadmap-practice: test:protocol.roadmap-practice · anchored test binding · binding present · test/check-self-hosting-gates.test.ts:59
  • spec:protocol.delivery-record-cleanup refines spec:protocol.roadmap-replaces-plans · declared — carries out the removal the roadmap and the pull request record made possible for frozen history
  • spec:protocol.roadmap-replaces-plans refines spec:protocol.self-hosting · declared
  • impl:protocol.roadmap-practice satisfies spec:protocol.roadmap-replaces-plans · anchored
  • test:protocol.roadmap-practice verifies spec:protocol.roadmap-replaces-plans · 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

  • Plan and review files stop carrying the delivery record once the roadmap and the pull request do

    The Protocol reads its forward planning from its roadmap and keeps its delivery record in git and its pull requests; it adds no plan file and no review file, and plans/ and reviews/ stand as frozen history until a later arc removes or archives them. An agent opening the next work runs the roadmap recipe over the roadmap Pack the handbook names and follows each entry to its Packs and carrying Specs. Before an arc's first push its record is its branch, git being the event log: the arc's first commit message states the owner's working rules for the arc and the arc's Pack, each later message says what its unit did, and outstanding work is read from the arc's Pack, the backlogs and the open-question register; no record file is kept under reviews/ or anywhere else. The arc pushes and opens its draft pull request at its first coherent commit, normally the scaffold, so the window in which only local git holds the record stays short and a session restarted on another machine sees the work. The draft pull request description then holds the arc's narrative: its story, lanes, rulings with who made them, review findings as change proposals and their memos, acceptance as measured, deferrals and refusals. A review's findings against Specs travel as a change proposal whose base is the commit the reviewer read: the branch head, or, for a proposal composed in a preview, the merge commit its stamp names, checked against that base and posted to the pull request as its memo; a finding against code or another file is a review comment on its line; a finding left open becomes an open question with its decider, provisional reading and links. Evidence no test or recipe carries is committed on the arc's branch with the commands that made it, linked from the description at that commit, and removed before the merge; the Protocol merges its pull requests with merge commits, and GitHub keeps each pull request's head ref, so links at the evidence commit keep resolving. A squash or rebase merge would need the evidence published to a durable ref first. Briefs and prompts stay in the session. The handbook names the roadmap Pack and the roadmap recipe where it named the current plan, and the self-hosting gate checks that instead of a current plan.

Runtime
  • impl:protocol.roadmap-practice · realizes the roadmap handbook and its current-record gate · test/check-self-hosting-gates.test.ts:52

    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:protocol.roadmap-replaces-plans
Relations of spec:protocol.roadmap-replaces-plansrefines · declareddependsOn · declareddependsOn · declareddependsOn · declareddependsOn · declareddecidedBy · declareddependsOn · declaredrefines · declaredOutgoing refinesspec:protocol.self-hostingThe Protocol authors andvalidates itself…protocol.self-hostingOutgoing dependsOnspec:consumers.intent-composition.proposalA change proposal isaddressed, based andchecked before it lands…consumers.intent-composition.proposalspec:consumers.intent-composition.proposal.memoRecipe 49 renders a changeproposal as the Markdownmemo a person reviews…consumers.intent-composition.proposal.memospec:consumers.roadmapA roadmap orders the nextbodies of work, and thegraph says what each stillneeds…consumers.roadmapspec:consumers.roadmap.memoA roadmap renders as theforward section of a pullrequest description…consumers.roadmap.memospec:observation.run-evidenceCI run records are joinedto verifiers in a view…observation.run-evidenceOutgoing decidedByspec:decisions.roadmap-over-plansPlan and review files stopcarrying the deliveryrecord once the roadmap andthe pull request do…decisions.roadmap-over-plansSubjectspec:protocol.roadmap-replaces-plansThe Protocol reads its nextwork from its roadmap andkeeps its delivery recordin git and its pull requests…protocol.roadmap-replaces-plansIncoming refinesspec:protocol.delivery-record-cleanupThe Protocol removes itsfrozen plans, reviewreports and supersededconcept material…protocol.delivery-record-cleanup
The diagram as text
  • spec:consumers.intent-composition.proposal: A change proposal is addressed, based and checked before it lands
  • spec:consumers.intent-composition.proposal.memo: Recipe 49 renders a change proposal as the Markdown memo a person reviews
  • 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:decisions.roadmap-over-plans: Plan and review files stop carrying the delivery record once the roadmap and the pull request do
  • spec:observation.run-evidence: CI run records are joined to verifiers in a view
  • spec:protocol.delivery-record-cleanup: The Protocol removes its frozen plans, review reports and superseded concept material
  • spec:protocol.roadmap-replaces-plans: The Protocol reads its next work from its roadmap and keeps its delivery record in git and its pull requests
  • spec:protocol.self-hosting: The Protocol authors and validates itself
  • spec:protocol.roadmap-replaces-plans decidedBy spec:decisions.roadmap-over-plans · declared
  • spec:protocol.roadmap-replaces-plans dependsOn spec:consumers.intent-composition.proposal · declared — a review's findings against Specs travel as a checked change proposal
  • spec:protocol.roadmap-replaces-plans dependsOn spec:consumers.intent-composition.proposal.memo · declared — the pull request carries a review's proposal as its memo
  • spec:protocol.roadmap-replaces-plans dependsOn spec:consumers.roadmap · declared — the Protocol reads its own next work from its roadmap
  • spec:protocol.roadmap-replaces-plans dependsOn spec:consumers.roadmap.memo · declared — each description's forward section is the roadmap memo
  • spec:protocol.roadmap-replaces-plans dependsOn spec:observation.run-evidence · declared — an arc's acceptance reads run records as evidence from test files at their recorded commit
  • spec:protocol.roadmap-replaces-plans refines spec:protocol.self-hosting · declared
  • spec:protocol.delivery-record-cleanup refines spec:protocol.roadmap-replaces-plans · declared — carries out the removal the roadmap and the pull request record made possible for frozen history
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
decidedBy · outgoingPlan and review files stop carrying the delivery record once the roadmap and the pull request do
spec:decisions.roadmap-over-plans · resolves
declaredNoneNone
dependsOn · outgoingA change proposal is addressed, based and checked before it lands
spec:consumers.intent-composition.proposal · resolves
declareda review's findings against Specs travel as a checked change proposalNone
dependsOn · outgoingRecipe 49 renders a change proposal as the Markdown memo a person reviews
spec:consumers.intent-composition.proposal.memo · resolves
declaredthe pull request carries a review's proposal as its memoNone
dependsOn · outgoingA roadmap orders the next bodies of work, and the graph says what each still needs
spec:consumers.roadmap · resolves
declaredthe Protocol reads its own next work from its roadmapNone
dependsOn · outgoingA roadmap renders as the forward section of a pull request description
spec:consumers.roadmap.memo · resolves
declaredeach description's forward section is the roadmap memoNone
dependsOn · outgoingCI run records are joined to verifiers in a view
spec:observation.run-evidence · resolves
declaredan arc's acceptance reads run records as evidence from test files at their recorded commitNone
refines · outgoingThe Protocol authors and validates itself
spec:protocol.self-hosting · resolves
declaredNoneNone
refines · incomingThe Protocol removes its frozen plans, review reports and superseded concept material
spec:protocol.delivery-record-cleanup · resolves
declaredcarries out the removal the roadmap and the pull request record made possible for frozen historyNone

Bindings

Implementation binding: present

  • impl:protocol.roadmap-practice · realizes the roadmap handbook and its current-record gate · test/check-self-hosting-gates.test.ts:52 · role validator

Design reference: none

Verifier binding: present

  • test:protocol.roadmap-practice · anchored · test/check-self-hosting-gates.test.ts:59 · 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.