outcomedecidedBy.spec:consumers.readiness-planner.decision-firstPacks: pack:adopter-speed-v1, pack:self-hosting-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/consumers/readiness-planner.decision-first.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a probe corpus in which {corpus: "a waiting Spec names a waiting decision that refines it"}When
the statement queue runs over the probe corpus
Then
the queue lists {queue: "spec:probe.decision, spec:probe.shaped"} in that order
round 1 holds {firstRound: "spec:probe.decision"}
the queue reports {cycles: 0} cyclesComposing needs the script.
outcomedecidedBy.assumptionsdefined with an Intent outcome and one rule, and a decision stating defined with its context and choice. The decision refines the behavior Spec, and the behavior Spec names the decision through decidedBy, so both floors reach ready. The Specs carry the ids the queue names, and the world reads the queue as the dependency-order example does.Given a probe corpus in which {corpus: "a waiting Spec names a waiting decision that refines it"}
When the statement queue runs over the probe corpus
Then the queue lists {queue: "spec:probe.decision, spec:probe.shaped"} in that order
Then round 1 holds {firstRound: "spec:probe.decision"}
Then the queue reports {cycles: 0} cyclestest/self-hosting-readiness-planner.test.ts:220test/self-hosting-readiness-planner.test.tsTest anchors: test:protocol.readiness-planner.cycle-shares-a-round, test:protocol.readiness-planner.decision-first, test:protocol.readiness-planner.dependency-order, test:protocol.readiness-planner.owner-question-holds. Specs verified by those bindings: spec:consumers.readiness-planner, spec:consumers.readiness-planner.cycle-shares-a-round, spec:consumers.readiness-planner.decision-first, spec:consumers.readiness-planner.dependency-order, spec:consumers.readiness-planner.owner-question-holds.
Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z
| Name | Suite | Result | Duration |
|---|---|---|---|
| executes the bound example against a fresh world | The Spec another rests on comes first in the queue (spec:consumers.readiness-planner.dependency-order) | passed | 16.93 ms |
| executes the bound example against a fresh world | A waiting decision comes before the Spec it shapes (spec:consumers.readiness-planner.decision-first) | passed | 3.53 ms |
| executes the bound example against a fresh world | Waiting Specs that rest on each other share a round and report a cycle (spec:consumers.readiness-planner.cycle-shares-a-round) | passed | 2.58 ms |
| executes the bound example against a fresh world | An owner's blocking question lists the Specs it holds (spec:consumers.readiness-planner.owner-question-holds) | passed | 2.85 ms |
| diagnoses invalid decider null | statement queue details | passed | 5.3 ms |
| diagnoses invalid decider false | statement queue details | passed | 2.91 ms |
| diagnoses invalid decider 1 | statement queue details | passed | 2.79 ms |
| diagnoses invalid decider "" | statement queue details | passed | 2.7 ms |
| diagnoses invalid decider "Owner" | statement queue details | passed | 5.63 ms |
| diagnoses invalid decider "two words" | statement queue details | passed | 2.82 ms |
| diagnoses invalid decider "with_underscore" | statement queue details | passed | 3 ms |
| orders SCCs by longest dependency chain, ignores non-ordering and self edges, and sorts ids by code unit | statement queue details | passed | 6.48 ms |
| yields refines to the reverse dependsOn relation | statement queue details | passed | 1.71 ms |
| yields refines to the reverse constrainedBy relation | statement queue details | passed | 2.39 ms |
| yields refines to the reverse decidedBy relation | statement queue details | passed | 1.68 ms |
| chooses a shortest cycle path before breaking ties by target id | statement queue details | passed | 3.3 ms |
| selects every higher floor, ignores lower or equal floors, and orders only direct waiting links | statement queue details | passed | 3.23 ms |
| selects questions, counts undecided ones, and holds direct typed dependents by stated rung | statement queue details | passed | 4.57 ms |
test/self-hosting-readiness-planner.test.ts:220Copyable 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.
No decision record named.
No implementation neighborhood recorded.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
No Spec rests on this Spec.
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | None |
| verifies · outgoing | The readiness planner orders the statements a person can makespec:consumers.readiness-planner · resolves | declared | None | refinesYields, rounds |
test/self-hosting-readiness-planner.test.ts:220Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
Composing needs the script.