Spec Studio

A root that fails its check is removed while sdp generate writes the others

spec:consumers.command-line.generate-check-failureExample / 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/command-line.generate-check-failure.sdp.md

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

Intent
outcome
Execute the check rule of the all-roots verb over five current roots, one of which holds a page its publisher would not write.
assumptions
  • The world writes the extraction root of the generate example, runs sdp generate on it so every root is current, since each publisher alone would leave only its own root, then plants one stale page in the census root. It runs sdp generate --check-clean on the root, then checks that the census root is gone and that each other root's files equal the files its own publisher writes when run alone on a copy of the same root. Lists of roots read as in the generate example.
Behavior

Examples

Given an extraction root holding two authored Specs and {roots: "five current projection roots, one stale page planted in the census root"}
When the command {command: "sdp generate --check-clean"} runs at that root
Then the command exits {exitCode: 1}
Then the stale pages survive: {staleSurvive: false}
Then the roots holding the current pages for those Specs are {currentRoots: "design-review, mermaid, gherkin, spec-studio"}
Then the absent projection roots are {absentRoots: "census"}
Verification

Verifier bindings

  • test:protocol.command-line.generate-check-failure · anchored · test anchor binding present · test/self-hosting-command-line.test.ts:186

    External run evidence from test/self-hosting-command-line.test.ts

    Test anchors: test:protocol.command-line.generate-check-failure, test:protocol.command-line.generate-writes-every-root, test:protocol.command-line.verb-help-touches-nothing. Specs verified by those bindings: spec:consumers.command-line, spec:consumers.command-line.generate-check-failure, spec:consumers.command-line.generate-writes-every-root, spec:consumers.command-line.verb-help-touches-nothing.

    Run 1: external run evidence from vitest 4.1.10

    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

    NameSuiteResultDuration
    executes the bound example against a fresh worldOne run of sdp generate leaves all five roots current (spec:consumers.command-line.generate-writes-every-root)passed101.27 ms
    executes the bound example against a fresh worldA root that fails its check is removed while sdp generate writes the others (spec:consumers.command-line.generate-check-failure)passed68 ms
    executes the bound example against a fresh worldA publisher's --help prints its help and touches no root (spec:consumers.command-line.verb-help-touches-nothing)passed1.61 ms
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:consumers.command-line.generate-check-failure
The diagram as text
  • spec:consumers.command-line.generate-check-failure: A root that fails its check is removed while sdp generate writes the others · declared Spec
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root · declared Spec
  • test:protocol.command-line.generate-check-failure: test:protocol.command-line.generate-check-failure · anchored test binding · binding present · test/self-hosting-command-line.test.ts:186
  • spec:consumers.command-line.generate-check-failure refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-check-failure verifies spec:consumers.command-line · declared
  • test:protocol.command-line.generate-check-failure verifies spec:consumers.command-line.generate-check-failure · 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.command-line.generate-check-failure
  • E2: verifies · declared
The diagram as text
  • spec:consumers.command-line: Every verb answers --help, and one verb writes every projection root
  • spec:consumers.command-line.generate-check-failure: A root that fails its check is removed while sdp generate writes the others
  • spec:consumers.command-line.generate-check-failure refines spec:consumers.command-line · declared
  • spec:consumers.command-line.generate-check-failure verifies spec:consumers.command-line · 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 · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNoneNone
verifies · outgoingEvery verb answers --help, and one verb writes every projection root
spec:consumers.command-line · resolves
declaredNonegenerateCheck

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.command-line.generate-check-failure · anchored · test/self-hosting-command-line.test.ts:186 · 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.