outcomeA rule-key proposal passes the proposal check and validates once applied
spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-cleanPacks: pack:adopter-speed-v1, pack:self-hosting-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/upgrade-kit.rule-key-proposal.proposal-applies-clean.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a probe Spec whose unkeyed rules read {rules: "The bundle is composed on each invocation. / Each part fits the budget."}When
the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then
the proposal adds the keys {keys: "bundleComposedInvocation, partFitsBudget"}
the proposal leaves {unkeyable: 0} entries unkeyed
the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems
the probe validates with {errors: 0} errors once an agent applies the proposalComposing needs the script.
Intent
- Execute the proposal end to end on a probe Spec with two unkeyed rules: coin the keys, check the proposal against the base graph, apply it as an agent would, and validate.
assumptions- The world writes a probe corpus of one story-altitude behavior Spec stating
ideawith an Intent outcome and the two rules the step lists, split at/, runssdp buildto write the base graph, and runs the shipped rule-key proposal file throughsdp q --jsonwith the Spec inspecsand a commit string. It runs the shipped proposal check file with the answer'sproposaland the base graph, then applies each change by putting its marker after the rule's label at the line its request names, and runssdp validateon the probe root. The keys read joined by a comma and a space.
- The world writes a probe corpus of one story-altitude behavior Spec stating
Behavior
Examples
Given a probe Spec whose unkeyed rules read {rules: "The bundle is composed on each invocation. / Each part fits the budget."}
When the rule-key proposal runs for it at a commit and the proposal check reads it against the graph of that commit
Then the proposal adds the keys {keys: "bundleComposedInvocation, partFitsBudget"}
Then the proposal leaves {unkeyable: 0} entries unkeyed
Then the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems
Then the probe validates with {errors: 0} errors once an agent applies the proposalVerification
Verifier bindings
- test:protocol.rule-key-proposal.proposal-applies-clean · anchored · test anchor binding present ·
test/upgrade-kit.test.ts:466External 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
- Satisfying or referencing units: no recorded binding.
The diagram as text
- 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.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
- 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 - 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
- test:protocol.rule-key-proposal.proposal-applies-clean verifies spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean · 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
No implementation neighborhood recorded.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
- E2: verifies · declared
The diagram as text
- spec:consumers.upgrade-kit.rule-key-proposal: The rule-key proposal keys every unkeyed rule as a change proposal
- spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean: A rule-key proposal passes the proposal check and validates once applied
- 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
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.upgrade-kit.rule-key-proposal · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | None |
| verifies · outgoing | The rule-key proposal keys every unkeyed rule as a change proposalspec:consumers.upgrade-kit.rule-key-proposal · resolves | declared | None | proposesKeys, keepsText, coinedKey, applyAfterCheck |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.rule-key-proposal.proposal-applies-clean · anchored ·
test/upgrade-kit.test.ts:466· 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.