actorThe upgrade kit shows a corpus what it could adopt
spec:consumers.upgrade-kitPacks: pack:adopter-speed-v1, pack:self-hosting-v1
Design: 2 design entries · 1 pinned declaration · no decisions
Findings: no errors, no warnings
specs/consumers/upgrade-kit.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
An adopter learns what its corpus does not use yet only by writing its own queries, as the first adopter's survey did when it counted rule keys, question fields, relation reasons and exercises lists one at a time. The kit answers that survey with a recipe and turns the one capability a machine can apply without an author's judgment, a key for each rule, into a change proposal. Every other capability it reports asks for intent only an author has, so the kit reports where each could apply and proposes nothing for it.
Intent
- An adopter moving a corpus onto a newer Protocol commit, or the agent working for it.
problem- An adopter cannot see which capabilities its corpus already uses and where each could apply, so it hand-rolls the survey for every release and applies each new capability by hand.
outcome- Report, per Spec and Pack, the Protocol capabilities a corpus uses and where each could apply, and propose the edits as a change proposal an agent applies, never editing a carrier itself.
Behavior
rule.reportsAndProposesline 30 ·specs/consumers/upgrade-kit.sdp.md:30- The kit reports and proposes and never edits: its recipes read the graph and return data, and a change reaches a carrier only as an agent's or a person's edit, applied after the proposal check and recorded by git.
no example exercises it
rule.statesNoRungline 31 ·specs/consumers/upgrade-kit.sdp.md:31- The kit states no rung, authors no fact and scores nothing: a capability it reports as unused is a place it could apply, never a finding, a gate or a quota.
no example exercises it
rule.upgradeGuideline 32 ·specs/consumers/upgrade-kit.sdp.md:32- The package ships an upgrade guide for an adopter moving its corpus onto a newer commit: it measures the corpus with capability adoption, keys its rules with the rule-key proposal, and, for each capability the report lists, names the Spec that carries its law, with capability adoption as the recipe that measures it.
no example exercises it
rule.guideTeachesline 33 ·specs/consumers/upgrade-kit.sdp.md:33- The guide teaches and states no law: each section names the Spec that carries what it teaches, and no section repeats that Spec's rules.
no example exercises it
0 unkeyed rules.
Design
guideFileline 36 ·specs/consumers/upgrade-kit.sdp.md:36docs/agent-surface/upgrade-guide.md, shipped in the package beside the recipe catalog, listed in the package's files and named bysdp --helpamong the shipped on-ramps.no citation recorded
guideSectionsline 37 ·specs/consumers/upgrade-kit.sdp.md:37- in this order: re-pin the package and check
sdp --version; measure the corpus with capability adoption (recipe 47); organize features in epics, reading the capability map (recipe 52) and citingspec:consumers.capability-map;Model upcoming work in the graph; keep review history in git and pull requests, a roadmap Pack read with recipes 53 and 55 and intended design proposed as a change proposal checked by recipe 38, citingspec:consumers.roadmap, with the guidanceUnresolved intended design lives in open questions. Review disposition and acceptance remain in git and the pull request; neither becomes a graph field.; key the rules with the rule-key proposal (recipe 48), check the proposal with the proposal check (recipe 38) and apply it through an agent's edit; for every capability in recipe 47's answer, one subsection citing itscarriedBySpec and recipe 47 as the measurement, naming a further recipe only when the subsection teaches a distinct next action with it and otherwise sending the reader to the carrying Spec; move rules files onto shipped recipes, recipes 25, 26, 42, 50 and 51 and therecipesbinding; read large Packs in parts and order the waiting statements, recipes 36 and 46; publish every root withsdp generate; and pass a recipe's subject as--paramsdata, the recipe-caller guidance the README carries.
Verification
Verifier bindings
- test:protocol.upgrade-guide · anchored · test anchor binding present ·
test/upgrade-kit.test.ts:94External run evidence from
test/upgrade-kit.test.tsTest anchors:
test:protocol.capability-adoption.counts-a-corpus,test:protocol.rule-key-proposal.collision-and-unkeyable,test:protocol.rule-key-proposal.proposal-applies-clean,test:protocol.upgrade-guide. Specs verified by those bindings: spec:consumers.upgrade-kit, spec:consumers.upgrade-kit.capability-adoption, spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus, spec:consumers.upgrade-kit.rule-key-proposal, spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean.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 applies unchanged scopes while sending only moved changes to a person upgrade kit passed 2.69 ms names a carrying Spec in every guide section upgrade kit passed 0.66 ms teaches the upgrade steps in the pinned order upgrade kit passed 1.11 ms teaches epic reparenting and advisory roadmap adoption upgrade kit passed 0.5 ms runs the guide's rules file on a clean corpus with no address parameters upgrade kit passed 22.82 ms names the recipes' carrying Specs and teaches rule-key proposal as the rule-key action upgrade kit passed 1.68 ms ships the guide and names every reported capability's law and measurement upgrade kit passed 13.26 ms counts rules, reasons and unknown external perspectives upgrade kit passed 7.81 ms coins collisions and lists an unkeyable entry upgrade kit passed 4.95 ms executes the bound example against a fresh world Capability adoption counts keyed rules and reasoned relations (spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus) passed 7.51 ms executes the bound example against a fresh world A rule-key proposal passes the proposal check and validates once applied (spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean) passed 14.93 ms executes the bound example against a fresh world Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed (spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable) passed 13.14 ms counts distinct step skeletons and vocabulary keys inherited through refines capability adoption details passed 14.92 ms counts distinct step skeletons and vocabulary keys inherited through verifies capability adoption details passed 5.93 ms counts repeated vocabulary and example steps once per skeleton within a Spec capability adoption details passed 1.83 ms counts all capabilities and deduplicates shared components and repeated Pack members capability adoption details passed 14.29 ms diagnoses detail null capability adoption details passed 3.74 ms diagnoses detail 1 capability adoption details passed 2.14 ms diagnoses detail "all" capability adoption details passed 1.93 ms diagnoses detail {} capability adoption details passed 1.91 ms diagnoses detail "spec:missing" capability adoption details passed 1.91 ms diagnoses detail true capability adoption details passed 1.85 ms drops possessives and apostrophes before coining keys rule-key proposal details passed 2.22 ms preserves scope and entry order and skips existing keys and tags rule-key proposal details passed 12.48 ms diagnoses both scopes even when each resolves rule-key proposal details passed 2.12 ms diagnoses invalid parameters {} rule-key proposal details passed 1.94 ms diagnoses invalid parameters {"commit":""} rule-key proposal details passed 1.99 ms diagnoses invalid parameters {"commit":1} rule-key proposal details passed 1.91 ms diagnoses invalid parameters {"commit":"abc","pack":"pack:missing"} rule-key proposal details passed 1.81 ms diagnoses invalid parameters {"commit":"abc","specs":["spec:missing"]} rule-key proposal details passed 1.85 ms diagnoses invalid parameters {"commit":"abc","specs":[],"pack":"pack:missing"} rule-key proposal details passed 3.9 ms diagnoses invalid parameters {"commit":"abc","specs":"all"} rule-key proposal details passed 1.84 ms drops leading digit words before checking word repeats not recorded passed 1.97 ms
Design view
Requirement drawing
The diagram as text
- spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt · declared Spec
- spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply · declared Spec
- spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus: Capability adoption counts keyed rules and reasoned relations · declared Spec
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable: Two rules that coin one key stay apart, and a rule with no ASCII word stays unkeyed · declared Spec
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied · declared Spec
- spec:consumers.authoring-on-ramp: Authors move one Spec from intent to reviewed evidence · declared Spec
- impl:protocol.capability-adoption-recipe: realizes capability adoption in the shipped recipe catalog · anchored code ·
test/upgrade-kit.test.ts:514 - impl:protocol.rule-key-proposal-recipe: realizes the rule-key proposal in the shipped recipe catalog · anchored code ·
test/upgrade-kit.test.ts:742 - impl:protocol.upgrade-guide: realizes the shipped upgrade guide document · anchored code ·
test/upgrade-kit.test.ts:87 - oracle:protocol.capability-adoption: oracle:protocol.capability-adoption · anchored oracle binding ·
test/upgrade-kit.test.ts:322 - oracle:protocol.rule-key-proposal: oracle:protocol.rule-key-proposal · anchored oracle binding ·
test/upgrade-kit.test.ts:398 - test:protocol.capability-adoption.counts-a-corpus: test:protocol.capability-adoption.counts-a-corpus · anchored test binding · binding present ·
test/upgrade-kit.test.ts:345 - test:protocol.rule-key-proposal.collision-and-unkeyable: test:protocol.rule-key-proposal.collision-and-unkeyable · anchored test binding · binding present ·
test/upgrade-kit.test.ts:483 - test:protocol.rule-key-proposal.proposal-applies-clean: test:protocol.rule-key-proposal.proposal-applies-clean · anchored test binding · binding present ·
test/upgrade-kit.test.ts:466 - test:protocol.upgrade-guide: test:protocol.upgrade-guide · anchored test binding · binding present ·
test/upgrade-kit.test.ts:94 - spec:consumers.upgrade-kit refines spec:consumers.authoring-on-ramp · declared — the kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a time
- spec:consumers.upgrade-kit.capability-adoption refines spec:consumers.upgrade-kit · declared
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus refines spec:consumers.upgrade-kit.capability-adoption · declared
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption · declared
- spec:consumers.upgrade-kit.rule-key-proposal refines spec:consumers.upgrade-kit · declared
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable refines spec:consumers.upgrade-kit.rule-key-proposal · declared
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean refines spec:consumers.upgrade-kit.rule-key-proposal · declared
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal · declared
- impl:protocol.capability-adoption-recipe satisfies spec:consumers.upgrade-kit.capability-adoption · anchored
- impl:protocol.rule-key-proposal-recipe satisfies spec:consumers.upgrade-kit.rule-key-proposal · anchored
- impl:protocol.upgrade-guide satisfies spec:consumers.upgrade-kit · anchored
- oracle:protocol.capability-adoption models spec:consumers.upgrade-kit.capability-adoption · anchored
- oracle:protocol.rule-key-proposal models spec:consumers.upgrade-kit.rule-key-proposal · anchored
- test:protocol.capability-adoption.counts-a-corpus verifies spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus · anchored
- test:protocol.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · anchored
- test:protocol.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · anchored
- test:protocol.upgrade-guide verifies spec:consumers.upgrade-kit · anchored
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because models, folds require exact labels unavailable in requirement syntax.
Decisions
No decision record named.
Runtime
impl:protocol.upgrade-guide· realizes the shipped upgrade guide document ·test/upgrade-kit.test.ts:87Uses
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.authoring-on-ramp: Authors move one Spec from intent to reviewed evidence
- spec:consumers.capability-map: The capability map reads every epic and its refinement descendants
- spec:consumers.edit-model: Views compose scoped intent instead of patching canonical source
- spec:consumers.intent-composition: Composed intent hands off on one proposal shape
- spec:consumers.roadmap: A roadmap orders the next bodies of work, and the graph says what each still needs
- spec:consumers.upgrade-kit: The upgrade kit shows a corpus what it could adopt
- spec:consumers.upgrade-kit.capability-adoption: Capability adoption counts where each capability is used and where it could apply
- spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
- spec:consumers.upgrade-kit dependsOn spec:consumers.capability-map · declared — the guide teaches epic organization through the capability map
- spec:consumers.upgrade-kit dependsOn spec:consumers.edit-model · declared — a carrier changes only through an agent's or a person's edit, recorded by git
- spec:consumers.upgrade-kit dependsOn spec:consumers.intent-composition · declared — a proposed upgrade hands off on the one change-proposal shape and is applied after its check
- spec:consumers.upgrade-kit dependsOn spec:consumers.roadmap · declared — the guide teaches advisory priority and the roadmap memo as planning records
- spec:consumers.upgrade-kit refines spec:consumers.authoring-on-ramp · declared — the kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a time
- spec:consumers.upgrade-kit.capability-adoption refines spec:consumers.upgrade-kit · declared
- spec:consumers.upgrade-kit.rule-key-proposal refines spec:consumers.upgrade-kit · 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.authoring-on-ramp · stated ready, floor ready
- dependsOn · spec:consumers.capability-map · stated ready, floor ready
- dependsOn · spec:consumers.edit-model · stated ready, floor ready
- dependsOn · spec:consumers.intent-composition · stated ready, floor ready
- dependsOn · spec:consumers.roadmap · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.upgrade-kit.capability-adoption
Implementing units
impl:protocol.capability-adoption-recipe·test/upgrade-kit.test.ts:514
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
- spec:consumers.upgrade-kit.rule-key-proposal
Implementing units
impl:protocol.rule-key-proposal-recipe·test/upgrade-kit.test.ts:742
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable, spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
Distance 2
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
- spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.collision-and-unkeyable
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.rule-key-proposal.proposal-applies-clean
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | The capability map reads every epic and its refinement descendantsspec:consumers.capability-map · resolves | declared | the guide teaches epic organization through the capability map | None |
| dependsOn · outgoing | Views compose scoped intent instead of patching canonical sourcespec:consumers.edit-model · resolves | declared | a carrier changes only through an agent's or a person's edit, recorded by git | None |
| dependsOn · outgoing | Composed intent hands off on one proposal shapespec:consumers.intent-composition · resolves | declared | a proposed upgrade hands off on the one change-proposal shape and is applied after its check | None |
| dependsOn · outgoing | A roadmap orders the next bodies of work, and the graph says what each still needsspec:consumers.roadmap · resolves | declared | the guide teaches advisory priority and the roadmap memo as planning records | None |
| refines · outgoing | Authors move one Spec from intent to reviewed evidencespec:consumers.authoring-on-ramp · resolves | declared | the kit moves a whole corpus onto the capabilities the on-ramp teaches one Spec at a time | None |
| refines · incoming | Capability adoption counts where each capability is used and where it could applyspec:consumers.upgrade-kit.capability-adoption · resolves | declared | None | None |
| refines · incoming | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | None |
Bindings
Implementation binding: present
impl:protocol.upgrade-guide· realizes the shipped upgrade guide document ·test/upgrade-kit.test.ts:87
Design reference: none
Verifier binding: present
- test:protocol.upgrade-guide · anchored ·
test/upgrade-kit.test.ts:94· 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.