Spec Studio

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-unkeyableExample / Scenario · storyready floor ready

Packs: 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.collision-and-unkeyable.sdp.md

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

Intent
outcome
Execute the uniqueness and unkeyable rules on a probe Spec whose first two rules coin the same key and whose third holds no ASCII word.
assumptions
  • The world writes the probe corpus of the applies-clean example with the three rules the step lists, the third written in Greek letters, and reads the shipped rule-key proposal file's answer as that example does.
Behavior

Examples

Given a probe Spec whose unkeyed rules read {rules: "A part fits the budget. / Every part fits the budget again. / Ο κανόνας ισχύει."}
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: "partFitsBudget, partFitsBudget2"}
Then the proposal leaves {unkeyable: 1} entries unkeyed
Then the proposal check reports {moved: 0} moved changes and {problems: 0} schema problems
Verification

Verifier bindings

  • test:protocol.rule-key-proposal.collision-and-unkeyable · anchored · test anchor binding present · test/upgrade-kit.test.ts:483

    External run evidence from test/upgrade-kit.test.ts

    Test 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

    NameSuiteResultDuration
    applies unchanged scopes while sending only moved changes to a personupgrade kitpassed2.69 ms
    names a carrying Spec in every guide sectionupgrade kitpassed0.66 ms
    teaches the upgrade steps in the pinned orderupgrade kitpassed1.11 ms
    teaches epic reparenting and advisory roadmap adoptionupgrade kitpassed0.5 ms
    runs the guide's rules file on a clean corpus with no address parametersupgrade kitpassed22.82 ms
    names the recipes' carrying Specs and teaches rule-key proposal as the rule-key actionupgrade kitpassed1.68 ms
    ships the guide and names every reported capability's law and measurementupgrade kitpassed13.26 ms
    counts rules, reasons and unknown external perspectivesupgrade kitpassed7.81 ms
    coins collisions and lists an unkeyable entryupgrade kitpassed4.95 ms
    executes the bound example against a fresh worldCapability adoption counts keyed rules and reasoned relations (spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus)passed7.51 ms
    executes the bound example against a fresh worldA rule-key proposal passes the proposal check and validates once applied (spec:consumers.upgrade-kit.rule-key-proposal.proposal-applies-clean)passed14.93 ms
    executes the bound example against a fresh worldTwo 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)passed13.14 ms
    counts distinct step skeletons and vocabulary keys inherited through refinescapability adoption detailspassed14.92 ms
    counts distinct step skeletons and vocabulary keys inherited through verifiescapability adoption detailspassed5.93 ms
    counts repeated vocabulary and example steps once per skeleton within a Speccapability adoption detailspassed1.83 ms
    counts all capabilities and deduplicates shared components and repeated Pack memberscapability adoption detailspassed14.29 ms
    diagnoses detail nullcapability adoption detailspassed3.74 ms
    diagnoses detail 1capability adoption detailspassed2.14 ms
    diagnoses detail "all"capability adoption detailspassed1.93 ms
    diagnoses detail {}capability adoption detailspassed1.91 ms
    diagnoses detail "spec:missing"capability adoption detailspassed1.91 ms
    diagnoses detail truecapability adoption detailspassed1.85 ms
    drops possessives and apostrophes before coining keysrule-key proposal detailspassed2.22 ms
    preserves scope and entry order and skips existing keys and tagsrule-key proposal detailspassed12.48 ms
    diagnoses both scopes even when each resolvesrule-key proposal detailspassed2.12 ms
    diagnoses invalid parameters {}rule-key proposal detailspassed1.94 ms
    diagnoses invalid parameters {"commit":""}rule-key proposal detailspassed1.99 ms
    diagnoses invalid parameters {"commit":1}rule-key proposal detailspassed1.91 ms
    diagnoses invalid parameters {"commit":"abc","pack":"pack:missing"}rule-key proposal detailspassed1.81 ms
    diagnoses invalid parameters {"commit":"abc","specs":["spec:missing"]}rule-key proposal detailspassed1.85 ms
    diagnoses invalid parameters {"commit":"abc","specs":[],"pack":"pack:missing"}rule-key proposal detailspassed3.9 ms
    diagnoses invalid parameters {"commit":"abc","specs":"all"}rule-key proposal detailspassed1.84 ms
    drops leading digit words before checking word repeatsnot recordedpassed1.97 ms
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
The diagram as text
  • 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: The rule-key proposal keys every unkeyed rule as a change proposal · declared Spec
  • 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
  • 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
  • test:protocol.rule-key-proposal.collision-and-unkeyable verifies spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable · 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
Relations of spec:consumers.upgrade-kit.rule-key-proposal.collision-and-unkeyable
  • 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.collision-and-unkeyable: 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 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
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
refines · outgoingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNoneNone
verifies · outgoingThe rule-key proposal keys every unkeyed rule as a change proposal
spec:consumers.upgrade-kit.rule-key-proposal · resolves
declaredNonecoinedKey, uniqueKey, unkeyable

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.rule-key-proposal.collision-and-unkeyable · anchored · test/upgrade-kit.test.ts:483 · 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.