Spec Studio

Stated readiness must clear its floor

spec:validation.readiness-floorBusiness Rule · featureready floor ready

Changed since the base graph base da4b141: relation.refines:spec:protocol.self-hosting; relation.refines:spec:validation.two-check-families

Base input: schema 0.11.0, 405 Specs.

Packs: pack:self-hosting-v1

Design: no design entries · no pinned declarations · 2 decisions

Findings: no errors, no warnings

specs/validation/readiness-floor.sdp.md

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

Intent
outcome
Refuse a stated readiness that its authored evidence does not support.
Rule
rule line 23 · specs/validation/readiness-floor.sdp.md:23
A Spec may state a readiness only when every clause in that readiness floor passes.
rule line 24 · specs/validation/readiness-floor.sdp.md:24
Floors are cumulative: a stated rung is checked against its own clauses and every lower rung's, so a Spec that clears a higher rung has cleared each one beneath it.
rule.ideaFloor line 25 · specs/validation/readiness-floor.sdp.md:25
The idea floor has five clauses: the Spec carries a stable id, a human-readable title, a stated kind and a stated altitude, and it either states its intended outcome or declares a parent relation through refines.

no example exercises it

rule.scopedFloor line 26 · specs/validation/readiness-floor.sdp.md:26
The scoped floor adds three clauses: the intended outcome is stated, at least one authored relation is declared, and the kind's natural evidence is present.

spec:validation.readiness-floor.unrelated-scoped-spec · enabled

rule.definedFloor line 27 · specs/validation/readiness-floor.sdp.md:27
The defined floor adds two clauses: the kind's natural evidence is complete, and no open question the Spec records is flagged as blocking.

spec:validation.readiness-floor.blocking-open-question · enabled

rule.readyFloor line 28 · specs/validation/readiness-floor.sdp.md:28
The ready floor reads the Spec's own edges through three clauses: every authored relation resolves to a known target, every resolving refines, dependsOn, constrainedBy, and decidedBy target itself states at least defined, and every anchor bound to the Spec resolves.

no example exercises it

rule line 29 · specs/validation/readiness-floor.sdp.md:29
A child's readiness statement is its own and may be higher than its parent's. Below ready, the child's floor does not read the parent's rung; at ready, its typed-dependency clause requires a resolving refines parent to state at least defined.
rule line 30 · specs/validation/readiness-floor.sdp.md:30
The anchor clause reads the bindings that are present, so a Spec carrying no anchor clears it — the floor never demands a binding an author has not made.
rule line 31 · specs/validation/readiness-floor.sdp.md:31
Only relations the Spec itself declares count toward the relation clauses; membership of a Pack is derived from the manifest and never stands in for an authored relation.
rule line 32 · specs/validation/readiness-floor.sdp.md:32
Every clause except the two evidence clauses is kind-blind; what counts as a kind's natural evidence is stated in full by spec:validation.kind-evidence.
rule line 33 · specs/validation/readiness-floor.sdp.md:33
One clause table checks the stated rung and yields derived readiness, the highest rung whose cumulative clauses all pass, which is read beside the stated rung and never overwrites it. Asked about a named rung, the evaluator yields that rung's unmet clauses; the reader uses it for the stated next rung and the floor's next rung.
rule line 34 · specs/validation/readiness-floor.sdp.md:34
Given a Primitive node and a valid graph index over plain value data, evidence predicates tolerate section containers of the wrong shape and treat missing expected containers as absent evidence. An unratified kind derives no rung; an evaluation with an unratified kind or rung returns no failures, and descriptor conformance reports the invalid descriptor.
rule line 35 · specs/validation/readiness-floor.sdp.md:35
The shipped clause table is the only floor any Spec is checked against; no validator reads a per-team floor setting.
rule.floorTable line 36 · specs/validation/readiness-floor.sdp.md:36
The floor table in src/validate/readiness-floor.ts is the clause set's code-level source of truth and the realizing entrypoint. The clauses stated here and the rows of that table are one law read twice, so any disagreement between them is drift to resolve on one side, never a second floor.

no example exercises it

9 unkeyed rules.

Verifying examples

A blocking open question holds a Spec below defined · spec:validation.readiness-floor.blocking-open-question · ready floor ready

Executable Spec

Given the graph holds a spec {specId: "spec:probe.blocked-defined"} stating readiness {readiness: "defined"}
Given the spec {defect: "records a blocking open question"}
When the graph is validated
Then the report names {findingId: "honesty/readiness-floor"} at severity {severity: "error"}
Then the finding names the unmet floor clause {clauseId: "no-blocking-open-questions"}
Then the report holds {errorCount: 1} errors

Open example

A scoped Spec with no relation names the relation clause · spec:validation.readiness-floor.unrelated-scoped-spec · ready floor ready

Executable Spec

Given the graph holds a spec {specId: "spec:probe.unrelated-scoped"} stating readiness {readiness: "scoped"}
Given the spec {defect: "declares no relation"}
When the graph is validated
Then the report names {findingId: "honesty/readiness-floor"} at severity {severity: "error"}
Then the finding names the unmet floor clause {clauseId: "at-least-one-relation"}
Then the report holds {errorCount: 1} errors

Open example

Example space

Given the graph holds a spec {specId:string} stating readiness {readiness:"scoped"|"defined"}
Given the spec {defect:"declares no relation"|"records a blocking open question"}
When the graph is validated
Then the report names {findingId:string} at severity {severity:"warning"|"error"}
Then the finding names the unmet floor clause {clauseId:string}
Then the report holds {errorCount:number} errors
Verification

Verifier bindings

  • spec:validation.readiness-floor.blocking-open-question · A blocking open question holds a Spec below defined · declared · example enabled · specs/validation/readiness-floor.blocking-open-question.sdp.md

    External run evidence from test/self-hosting-validators.test.ts

    Test anchors: test:protocol.authored-honesty.section-authored-fact, test:protocol.authored-honesty.unearned-stated-fact, test:protocol.claim-separation.collapsed-edge-claim, test:protocol.claim-separation.unratified-descriptor, test:protocol.kind-evidence.constraints-alone, test:protocol.kind-evidence.empty-promoted-child, test:protocol.kind-evidence.second-entry-untargeted, test:protocol.kind-evidence.untargeted-constraint, test:protocol.oracle-target-eligibility.missing-space-refused, test:protocol.oracle-target-eligibility.rule-space-accepted, test:protocol.pack-coherence.incoherent-aggregate, test:protocol.readiness-floor.blocking-open-question, test:protocol.readiness-floor.unrelated-scoped-spec, test:protocol.referential-integrity.dangling-target, test:protocol.referential-integrity.did-you-mean, test:protocol.superseded-decision-signal.branch-names-every-end, test:protocol.superseded-decision-signal.chain-end-named, test:protocol.superseded-decision-signal.closed-chain-named, test:protocol.superseded-decision-signal.dependency-unread, test:protocol.superseded-decision-signal.end-and-loop-named, test:protocol.superseded-decision-signal.live-replacement-warns, test:protocol.superseded-decision-signal.replaced-ruling-warns, test:protocol.superseded-decision-signal.replacement-below-ready-named, test:protocol.superseded-decision-signal.superseded-subject-silent, test:protocol.two-check-families.split-report, test:protocol.verification-linkage.unbound-example, test:protocol.verification-linkage.unresolved-oracle, test:protocol.warn-level-signals.orphan-signal, test:protocol.warn-level-signals.ready-gap-signal. Specs verified by those bindings: spec:carrier.markdown-body-grammar, spec:validation.authored-honesty, spec:validation.authored-honesty.section-authored-fact, spec:validation.authored-honesty.unearned-stated-fact, spec:validation.claim-separation, spec:validation.claim-separation.collapsed-edge-claim, spec:validation.claim-separation.unratified-descriptor, spec:validation.kind-evidence, spec:validation.kind-evidence.constraints-alone, spec:validation.kind-evidence.empty-promoted-child, spec:validation.kind-evidence.second-entry-untargeted, spec:validation.kind-evidence.untargeted-constraint, spec:validation.oracle-target-eligibility, spec:validation.oracle-target-eligibility.missing-space-refused, spec:validation.oracle-target-eligibility.rule-space-accepted, spec:validation.pack-coherence, spec:validation.pack-coherence.incoherent-aggregate, spec:validation.readiness-floor, spec:validation.readiness-floor.blocking-open-question, spec:validation.readiness-floor.unrelated-scoped-spec, spec:validation.referential-integrity, spec:validation.referential-integrity.dangling-target, spec:validation.referential-integrity.did-you-mean, spec:validation.superseded-decision-signal, spec:validation.superseded-decision-signal.branch-names-every-end, spec:validation.superseded-decision-signal.chain-end-named, spec:validation.superseded-decision-signal.closed-chain-named, spec:validation.superseded-decision-signal.dependency-unread, spec:validation.superseded-decision-signal.end-and-loop-named, spec:validation.superseded-decision-signal.live-replacement-warns, spec:validation.superseded-decision-signal.replaced-ruling-warns, spec:validation.superseded-decision-signal.replacement-below-ready-named, spec:validation.superseded-decision-signal.superseded-subject-silent, spec:validation.two-check-families, spec:validation.two-check-families.split-report, spec:validation.verification-linkage, spec:validation.verification-linkage.unbound-example, spec:validation.verification-linkage.unresolved-oracle, spec:validation.warn-level-signals, spec:validation.warn-level-signals.orphan-signal, spec:validation.warn-level-signals.ready-gap-signal.

    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 worldA scoped Spec with no relation names the relation clause (spec:validation.readiness-floor.unrelated-scoped-spec)passed6.49 ms
    executes the bound example against a fresh worldA blocking open question holds a Spec below defined (spec:validation.readiness-floor.blocking-open-question)passed1.25 ms
    executes the bound example against a fresh worldConstraints alone stop short of complete behavior evidence (spec:validation.kind-evidence.constraints-alone)passed1.16 ms
    executes the bound example against a fresh worldA constraint without a machine-readable target is not complete (spec:validation.kind-evidence.untargeted-constraint)passed0.96 ms
    executes the bound example against a fresh worldAn empty promoted child confers no evidence (spec:validation.kind-evidence.empty-promoted-child)passed0.8 ms
    executes the bound example against a fresh worldA disconnected Spec warns and fails nothing (spec:validation.warn-level-signals.orphan-signal)passed1.82 ms
    executes the bound example against a fresh worldA ready Spec without a verifier warns and fails nothing (spec:validation.warn-level-signals.ready-gap-signal)passed0.81 ms
    executes the bound example against a fresh worldAn unrelated missing target is a bare conformance error (spec:validation.referential-integrity.dangling-target)passed0.8 ms
    executes the bound example against a fresh worldA unique near miss earns a did-you-mean suggestion (spec:validation.referential-integrity.did-you-mean)passed0.71 ms
    executes the bound example against a fresh worldA delivery fact smuggled into a section is refused (spec:validation.authored-honesty.section-authored-fact)passed0.8 ms
    executes the bound example against a fresh worldA stated delivery fact no binding earns is refused (spec:validation.authored-honesty.unearned-stated-fact)passed0.73 ms
    executes the bound example against a fresh worldA binding edge cannot borrow the declared claim (spec:validation.claim-separation.collapsed-edge-claim)passed0.92 ms
    executes the bound example against a fresh worldAn unratified kind fails closed instead of reaching the floor (spec:validation.claim-separation.unratified-descriptor)passed0.49 ms
    executes the bound example against a fresh worldA declared verifier no test binds confers nothing (spec:validation.verification-linkage.unbound-example)passed2.2 ms
    executes the bound example against a fresh worldAn oracle targeting a Spec with no example space is refused (spec:validation.verification-linkage.unresolved-oracle)passed0.68 ms
    executes the bound example against a fresh worldA rule owning an example space accepts an oracle (spec:validation.oracle-target-eligibility.rule-space-accepted)passed0.94 ms
    executes the bound example against a fresh worldA target without an example space refuses an oracle (spec:validation.oracle-target-eligibility.missing-space-refused)passed0.42 ms
    executes the bound example against a fresh worldA repeated member and a non-model modelRef are both named (spec:validation.pack-coherence.incoherent-aggregate)passed3.58 ms
    executes the bound example against a fresh worldOne report carries both families and claims neither as its own (spec:validation.two-check-families.split-report)passed0.69 ms
    executes the bound example against a fresh worldA Spec shaped by a replaced decision warns once and fails nothing (spec:validation.superseded-decision-signal.replaced-ruling-warns)passed1.73 ms
    executes the bound example against a fresh worldThe warning names the decision at the end of a chain of replacements (spec:validation.superseded-decision-signal.chain-end-named)passed0.72 ms
    executes the bound example against a fresh worldA replacement chain that branches names every end (spec:validation.superseded-decision-signal.branch-names-every-end)passed0.85 ms
    executes the bound example against a fresh worldA chain of replacements that closes on itself is named and fails nothing (spec:validation.superseded-decision-signal.closed-chain-named)passed0.82 ms
    executes the bound example against a fresh worldA dependency on a replaced decision raises no warning (spec:validation.superseded-decision-signal.dependency-unread)passed0.53 ms
    executes the bound example against a fresh worldA superseded decision is not warned for the decision it names (spec:validation.superseded-decision-signal.superseded-subject-silent)passed0.63 ms
    executes the bound example against a fresh worldA replacement still below ready is named as it stands (spec:validation.superseded-decision-signal.replacement-below-ready-named)passed0.73 ms
    executes the bound example against a fresh worldA decision still decided by the record it replaces warns (spec:validation.superseded-decision-signal.live-replacement-warns)passed0.56 ms
    executes the bound example against a fresh worldA chain of replacements that reaches an end and a loop names both (spec:validation.superseded-decision-signal.end-and-loop-named)passed0.72 ms
    deduplicates stale pairs, names self loops and leaves absent locations absentnot recordedpassed0.9 ms
    warns once for each stale decision and ignores unresolved and wrongly typed replacementsnot recordedpassed2.06 ms
    locates each subject separately when two Specs name the same stale decisionnot recordedpassed0.51 ms
    checks branch messages independently of the example idnot recordedpassed0.56 ms
    checks the extracted 'message' Design entrynot recordedpassed1.74 ms
    checks the extracted 'closedChainMessage' Design entrynot recordedpassed0.56 ms
    checks the extracted 'mixedChainMessage' Design entrynot recordedpassed0.49 ms
    executes the bound example against a fresh worldA constraint whose second entry has no target is not complete (spec:validation.kind-evidence.second-entry-untargeted)passed0.61 ms
  • spec:validation.readiness-floor.unrelated-scoped-spec · A scoped Spec with no relation names the relation clause · declared · example enabled · specs/validation/readiness-floor.unrelated-scoped-spec.sdp.md
  • test:protocol.readiness-floor · readiness-floor contracts verify stated maturity · anchored · test anchor binding present · test/readiness.test.ts:66

    External run evidence from test/readiness.test.ts

    Test anchors: test:protocol.readiness-floor. Specs verified by those bindings: spec:validation.readiness-floor.

    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
    exports the canonical validator families and severitiesreadiness and validation contractspassed1.86 ms
    defines the kind-blind structural clauses as one table (MD-13), clause ids defined exactly oncereadiness and validation contractspassed0.65 ms
    evaluates every clause — the ready clauses included — over the one graph (one validation path, MD-14)readiness and validation contractspassed1.27 ms
    covers every kind in the evidence table; workflow and contract ride the behavior row (MD-12)readiness and validation contractspassed0.37 ms
    keeps a workflow with flows below defined until it carries a rulereadiness and validation contractspassed0.6 ms
    counts promoted children as evidence — promotion never costs an earned rung (MD-10/MD-12)readiness and validation contractspassed0.65 ms
    keeps the constraint floor monotonic: an untargeted entry clears scoped, not defined (MD-12)readiness and validation contractspassed0.39 ms
    keeps every kind's evidence row monotonic: defined evidence implies scoped evidence (MD-12)readiness and validation contractspassed1.73 ms
    requires a structured GWT entry for a defined example; prose clears scoped only (MD-10)readiness and validation contractspassed0.44 ms
    derives the highest cumulatively-cleared rung, independent of the stated onereadiness and validation contracts > derived readiness (the stated-vs-derived split, `spec:validation.readiness-floor`)passed0.41 ms
    derives below the stated rung exactly where the floor check fails (the divergence)readiness and validation contracts > derived readiness (the stated-vs-derived split, `spec:validation.readiness-floor`)passed0.31 ms
    derives undefined when even the idea clauses failreadiness and validation contracts > derived readiness (the stated-vs-derived split, `spec:validation.readiness-floor`)passed0.21 ms
    stays total over an unratified kind: no rung derives, the conformance error owns itreadiness and validation contracts > derived readiness (the stated-vs-derived split, `spec:validation.readiness-floor`)passed0.23 ms
    holds a fully bound example at defined — the clause flips on the binding alonethe concreteness law — an example is a bound point (the plan-12 ratification)passed0.66 ms
    caps a fully bound example below defined when a parent example space no longer owns its stepthe concreteness law — an example is a bound point (the plan-12 ratification)passed0.67 ms
    caps an example with a bare unbound slot in a used step below definedthe concreteness law — an example is a bound point (the plan-12 ratification)passed0.27 ms
    caps a declaration-form slot in a used step the same way ({n:number} is not a binding)the concreteness law — an example is a bound point (the plan-12 ratification)passed0.22 ms
    keeps a partial point honest: an unused step binds nothing and fails nothingthe concreteness law — an example is a bound point (the plan-12 ratification)passed0.18 ms
    derives the honest rung: the unbound-slot example structurally reaches scoped, never definedthe concreteness law — an example is a bound point (the plan-12 ratification)passed0.14 ms
    names the scoped dependency at a target rung of ready on a Spec stating definedthe floor for a target rung and the targets a dependency failure namespassed0.44 ms
    finds nothing at ready when the same dependency states definedthe floor for a target rung and the targets a dependency failure namespassed0.2 ms
    evaluates the target rung, not the stated one, in both directionsthe floor for a target rung and the targets a dependency failure namespassed0.28 ms
    evaluates the cumulative clauses of every rung up to the targetthe floor for a target rung and the targets a dependency failure namespassed0.23 ms
    yields no failure for an unratified kind or an unratified target rungthe floor for a target rung and the targets a dependency failure namespassed0.31 ms
    names every distinct breaking target, sorted by relation type and then by idthe floor for a target rung and the targets a dependency failure namespassed0.5 ms
    keeps the readiness-floor finding message free of targetsthe floor for a target rung and the targets a dependency failure namespassed2.65 ms
    sets a targets reader on the typed-dependency clause alonethe floor for a target rung and the targets a dependency failure namespassed0.22 ms

Example space

  • specId · string · declared by the graph holds a spec {specId} stating readiness {readiness}
  • readiness · "scoped" | "defined" · declared by the graph holds a spec {specId} stating readiness {readiness}
  • defect · "declares no relation" | "records a blocking open question" · declared by the spec {defect}

Bound points

ExamplespecIdreadinessdefect
spec:validation.readiness-floor.blocking-open-question"spec:probe.blocked-defined""defined""records a blocking open question"
spec:validation.readiness-floor.unrelated-scoped-spec"spec:probe.unrelated-scoped""scoped""declares no relation"

Oracle binding: none

Coverage

specId: "spec:probe.blocked-defined" · spec:validation.readiness-floor.blocking-open-question; "spec:probe.unrelated-scoped" · spec:validation.readiness-floor.unrelated-scoped-spec · not enumerable

defect
Declared valueExamples
"declares no relation"spec:validation.readiness-floor.unrelated-scoped-spec
"records a blocking open question"spec:validation.readiness-floor.blocking-open-question

Unbound

  • specId: None
  • readiness: None
  • defect: None
Design view

Requirement drawing

Requirement drawing for spec:validation.readiness-floor
  • E6: refines (10), verifies (11) · declared
The diagram as text
  • spec:validation.readiness-floor: Stated readiness must clear its floor · declared Spec
  • spec:decisions.carried-evidence: Promoted evidence must carry its own evidence · declared Spec
  • spec:decisions.kind-conditional-floor: Readiness evidence follows the Spec kind · declared Spec
  • spec:validation.kind-evidence: Each kind carries its own evidence · declared Spec
  • spec:validation.next-rung-floor: The floor names what blocks the floor's next rung · declared Spec
  • spec:validation.readiness-floor.blocking-open-question: A blocking open question holds a Spec below defined · declared Spec
  • spec:validation.readiness-floor.unrelated-scoped-spec: A scoped Spec with no relation names the relation clause · declared Spec
  • spec:validation.typed-dependency-floor: A ready Spec rests only on settled dependencies · declared Spec
  • spec:carrier.gherkin-authoring.unbound-ready-refused: A Gherkin example with an unbound used slot fails its stated readiness floor · declared Spec
  • spec:validation.kind-evidence.constraints-alone: Constraints alone stop short of complete behavior evidence · declared Spec
  • spec:validation.kind-evidence.empty-promoted-child: An empty promoted child confers no evidence · declared Spec
  • spec:validation.kind-evidence.second-entry-untargeted: A constraint whose second entry has no target is not complete · declared Spec
  • spec:validation.kind-evidence.untargeted-constraint: A constraint without a machine-readable target is not complete · declared Spec
  • spec:validation.next-rung-floor.blocking-question: A scoped Spec held by a blocking question is told the clause · declared Spec
  • spec:validation.next-rung-floor.typed-dependency-targets: A defined Spec resting on a scoped dependency is told which one · declared Spec
  • spec:validation.typed-dependency-floor.missing-targets: Missing targets fail relation resolution once · declared Spec
  • spec:validation.typed-dependency-floor.relation-rungs: Every relation reads the four stated target rungs · declared Spec
  • spec:validation.typed-dependency-floor.stated-readiness: Target floor failures do not propagate across dependencies · declared Spec
  • spec:validation.typed-dependency-floor.unsettled-fact: An unsettled constraint bounds ready but permits defined · declared Spec
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph · declared Spec
  • spec:carrier.markdown-body-grammar: The Markdown body accepts one closed form per section · declared Spec
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending · declared Spec
  • impl:protocol.kind-evidence: defines the code-level per-kind evidence rows for readiness floors · anchored code · src/validate/readiness-floor.ts:398
  • impl:protocol.next-rung-floor: evaluates the floor for a target rung and names the targets that break a dependency · anchored code · src/validate/readiness-floor.ts:603
  • impl:protocol.reader: typed graph queries, entry adapters and context joins · anchored code · src/reader/reader.ts:687
  • impl:protocol.readiness-floor: evaluates the stated readiness floor against the graph · anchored code · src/validate/readiness-floor.ts:612
  • impl:protocol.typed-dependency-floor: checks stated readiness across all four typed dependencies · anchored code · src/validate/readiness-floor.ts:347
  • oracle:protocol.kind-evidence: oracle:protocol.kind-evidence · anchored oracle binding · test/self-hosting-validators.test.ts:1919
  • oracle:protocol.next-rung-floor: expected next-rung clause and targets by structure · anchored oracle binding · test/self-hosting-next-rung-floor.test.ts:47
  • oracle:protocol.typed-dependency-floor: expected readiness failures by typed dependency matrix · anchored oracle binding · test/self-hosting-typed-dependency.test.ts:51
  • test:protocol.gherkin-authoring.unbound-ready-refused: the unbound-ready-refused point verifies the Gherkin carrier contract · anchored test binding · binding present · test/self-hosting-carrier-gherkin.test.ts:588
  • test:protocol.kind-evidence.constraints-alone: the constraints-alone point verifies the behavior-family complete cell · anchored test binding · binding present · test/self-hosting-validators.test.ts:534
  • test:protocol.kind-evidence.empty-promoted-child: the empty-promotion point verifies the promoted-evidence honesty bound · anchored test binding · binding present · test/self-hosting-validators.test.ts:584
  • test:protocol.kind-evidence.second-entry-untargeted: test:protocol.kind-evidence.second-entry-untargeted · anchored test binding · binding present · test/self-hosting-validators.test.ts:1928
  • test:protocol.kind-evidence.untargeted-constraint: the untargeted-constraint point verifies the constraint row's target requirement · anchored test binding · binding present · test/self-hosting-validators.test.ts:559
  • test:protocol.next-rung-floor.blocking-question: verifies the next rung's failure names a blocking question and no target · anchored test binding · binding present · test/self-hosting-next-rung-floor.test.ts:248
  • test:protocol.next-rung-floor.typed-dependency-targets: verifies the next rung's failure names the dependency stated below defined · anchored test binding · binding present · test/self-hosting-next-rung-floor.test.ts:234
  • test:protocol.readiness-floor: readiness-floor contracts verify stated maturity · anchored test binding · binding present · test/readiness.test.ts:66
  • test:protocol.readiness-floor.blocking-open-question: the blocked-question point verifies the open-questions clause of the defined rung · anchored test binding · binding present · test/self-hosting-validators.test.ts:372
  • test:protocol.readiness-floor.unrelated-scoped-spec: the unrelated-scoped point verifies the relation clause of the scoped rung · anchored test binding · binding present · test/self-hosting-validators.test.ts:356
  • test:protocol.typed-dependency-floor.missing-targets: verifies unresolved targets fail resolution once · anchored test binding · binding present · test/self-hosting-typed-dependency.test.ts:320
  • test:protocol.typed-dependency-floor.relation-rungs: verifies six relations across four target rungs · anchored test binding · binding present · test/self-hosting-typed-dependency.test.ts:313
  • test:protocol.typed-dependency-floor.stated-readiness: verifies stated target readiness and kind blindness · anchored test binding · binding present · test/self-hosting-typed-dependency.test.ts:334
  • test:protocol.typed-dependency-floor.unsettled-fact: verifies blocking questions and bounded readiness · anchored test binding · binding present · test/self-hosting-typed-dependency.test.ts:327
  • spec:carrier.gherkin-authoring.unbound-ready-refused refines spec:carrier.gherkin-authoring · declared
  • spec:carrier.gherkin-authoring.unbound-ready-refused verifies spec:carrier.gherkin-authoring · declared
  • spec:carrier.gherkin-authoring.unbound-ready-refused verifies spec:validation.kind-evidence · declared
  • spec:decisions.carried-evidence refines spec:validation.readiness-floor · declared
  • spec:decisions.kind-conditional-floor refines spec:validation.readiness-floor · declared
  • spec:validation.kind-evidence refines spec:validation.readiness-floor · declared
  • spec:validation.kind-evidence.constraints-alone refines spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.constraints-alone verifies spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.empty-promoted-child refines spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.empty-promoted-child verifies spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.second-entry-untargeted refines spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.second-entry-untargeted verifies spec:carrier.markdown-body-grammar · declared
  • spec:validation.kind-evidence.second-entry-untargeted verifies spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.untargeted-constraint refines spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.untargeted-constraint verifies spec:validation.kind-evidence · declared
  • spec:validation.next-rung-floor refines spec:validation.readiness-floor · declared
  • spec:validation.next-rung-floor.blocking-question refines spec:validation.next-rung-floor · declared
  • spec:validation.next-rung-floor.blocking-question verifies spec:validation.next-rung-floor · declared
  • spec:validation.next-rung-floor.typed-dependency-targets refines spec:validation.next-rung-floor · declared
  • spec:validation.next-rung-floor.typed-dependency-targets verifies spec:validation.next-rung-floor · declared
  • spec:validation.readiness-floor refines spec:validation.two-check-families · declared — the readiness floor checks honesty of the stated rung
  • spec:validation.readiness-floor.blocking-open-question refines spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.blocking-open-question verifies spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.unrelated-scoped-spec refines spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.unrelated-scoped-spec verifies spec:validation.readiness-floor · declared
  • spec:validation.typed-dependency-floor refines spec:validation.readiness-floor · declared
  • spec:validation.typed-dependency-floor.missing-targets refines spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.missing-targets verifies spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.relation-rungs refines spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.relation-rungs verifies spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.stated-readiness refines spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.stated-readiness verifies spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.unsettled-fact refines spec:validation.typed-dependency-floor · declared
  • spec:validation.typed-dependency-floor.unsettled-fact verifies spec:validation.typed-dependency-floor · declared
  • impl:protocol.kind-evidence satisfies spec:validation.kind-evidence · anchored
  • impl:protocol.next-rung-floor satisfies spec:validation.next-rung-floor · anchored
  • impl:protocol.reader satisfies spec:validation.next-rung-floor · anchored
  • impl:protocol.readiness-floor satisfies spec:validation.readiness-floor · anchored
  • impl:protocol.typed-dependency-floor satisfies spec:validation.typed-dependency-floor · anchored
  • oracle:protocol.kind-evidence models spec:validation.kind-evidence · anchored
  • oracle:protocol.next-rung-floor models spec:validation.next-rung-floor · anchored
  • oracle:protocol.typed-dependency-floor models spec:validation.typed-dependency-floor · anchored
  • test:protocol.gherkin-authoring.unbound-ready-refused verifies spec:carrier.gherkin-authoring.unbound-ready-refused · anchored
  • test:protocol.kind-evidence.constraints-alone verifies spec:validation.kind-evidence.constraints-alone · anchored
  • test:protocol.kind-evidence.empty-promoted-child verifies spec:validation.kind-evidence.empty-promoted-child · anchored
  • test:protocol.kind-evidence.second-entry-untargeted verifies spec:validation.kind-evidence.second-entry-untargeted · anchored
  • test:protocol.kind-evidence.untargeted-constraint verifies spec:validation.kind-evidence.untargeted-constraint · anchored
  • test:protocol.next-rung-floor.blocking-question verifies spec:validation.next-rung-floor.blocking-question · anchored
  • test:protocol.next-rung-floor.typed-dependency-targets verifies spec:validation.next-rung-floor.typed-dependency-targets · anchored
  • test:protocol.readiness-floor verifies spec:validation.readiness-floor · anchored
  • test:protocol.readiness-floor.blocking-open-question verifies spec:validation.readiness-floor.blocking-open-question · anchored
  • test:protocol.readiness-floor.unrelated-scoped-spec verifies spec:validation.readiness-floor.unrelated-scoped-spec · anchored
  • test:protocol.typed-dependency-floor.missing-targets verifies spec:validation.typed-dependency-floor.missing-targets · anchored
  • test:protocol.typed-dependency-floor.relation-rungs verifies spec:validation.typed-dependency-floor.relation-rungs · anchored
  • test:protocol.typed-dependency-floor.stated-readiness verifies spec:validation.typed-dependency-floor.stated-readiness · anchored
  • test:protocol.typed-dependency-floor.unsettled-fact verifies spec:validation.typed-dependency-floor.unsettled-fact · 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

Runtime
  • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol

    Uses

  • impl:protocol.readiness-floor · evaluates the stated readiness floor against the graph · src/validate/readiness-floor.ts:612

    Component: component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol

    Uses

    None.

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:validation.readiness-floor
The diagram as text
  • spec:consumers.capability-map: The capability map reads every epic and its refinement descendants
  • spec:consumers.derived-readiness-banner: Derived readiness renders beside the stated rung and warns in one direction
  • spec:decisions.carried-evidence: Promoted evidence must carry its own evidence
  • spec:decisions.kind-conditional-floor: Readiness evidence follows the Spec kind
  • spec:model.core-model: The Protocol models delivery with one enrichable Spec
  • spec:protocol.capability-epics: The Protocol organizes its own features in capability epics
  • spec:validation.kind-evidence: Each kind carries its own evidence
  • spec:validation.next-rung-floor: The floor names what blocks the floor's next rung
  • spec:validation.readiness-floor: Stated readiness must clear its floor
  • spec:validation.readiness-floor.blocking-open-question: A blocking open question holds a Spec below defined
  • spec:validation.readiness-floor.unrelated-scoped-spec: A scoped Spec with no relation names the relation clause
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending
  • spec:validation.typed-dependency-floor: A ready Spec rests only on settled dependencies
  • spec:validation.readiness-floor decidedBy spec:decisions.carried-evidence · declared
  • spec:validation.readiness-floor decidedBy spec:decisions.kind-conditional-floor · declared
  • spec:validation.readiness-floor dependsOn spec:model.core-model · declared — the floor reads the Protocol descriptor model
  • spec:validation.readiness-floor refines spec:validation.two-check-families · declared — the readiness floor checks honesty of the stated rung
  • spec:consumers.capability-map dependsOn spec:validation.readiness-floor · declared — each node reads the existing floor beside the author's statement
  • spec:consumers.derived-readiness-banner dependsOn spec:validation.readiness-floor · declared
  • spec:protocol.capability-epics dependsOn spec:validation.readiness-floor · declared — reparenting preserves the floor of each existing ready child
  • spec:decisions.carried-evidence refines spec:validation.readiness-floor · declared
  • spec:decisions.kind-conditional-floor refines spec:validation.readiness-floor · declared
  • spec:validation.kind-evidence refines spec:validation.readiness-floor · declared
  • spec:validation.next-rung-floor refines spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.blocking-open-question refines spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.unrelated-scoped-spec refines spec:validation.readiness-floor · declared
  • spec:validation.typed-dependency-floor refines spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.blocking-open-question verifies spec:validation.readiness-floor · declared
  • spec:validation.readiness-floor.unrelated-scoped-spec verifies spec:validation.readiness-floor · 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

Distance 1

Distance 2

Distance 3

Distance 4

Distance 5

Distance 6

Distance 7

Distance 8

Distance 9

Distance 10

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingPromoted evidence must carry its own evidence
spec:decisions.carried-evidence · resolves
declaredNoneNone
decidedBy · outgoingReadiness evidence follows the Spec kind
spec:decisions.kind-conditional-floor · resolves
declaredNoneNone
dependsOn · outgoingThe Protocol models delivery with one enrichable Spec
spec:model.core-model · resolves
declaredthe floor reads the Protocol descriptor modelNone
refines · outgoingValidation separates well-formedness from non-pretending
spec:validation.two-check-families · resolves
declaredthe readiness floor checks honesty of the stated rungNone
dependsOn · incomingThe capability map reads every epic and its refinement descendants
spec:consumers.capability-map · resolves
declaredeach node reads the existing floor beside the author's statementNone
dependsOn · incomingDerived readiness renders beside the stated rung and warns in one direction
spec:consumers.derived-readiness-banner · resolves
declaredNoneNone
dependsOn · incomingThe Protocol organizes its own features in capability epics
spec:protocol.capability-epics · resolves
declaredreparenting preserves the floor of each existing ready childNone
refines · incomingPromoted evidence must carry its own evidence
spec:decisions.carried-evidence · resolves
declaredNoneNone
refines · incomingReadiness evidence follows the Spec kind
spec:decisions.kind-conditional-floor · resolves
declaredNoneNone
refines · incomingEach kind carries its own evidence
spec:validation.kind-evidence · resolves
declaredNoneNone
refines · incomingThe floor names what blocks the floor's next rung
spec:validation.next-rung-floor · resolves
declaredNoneNone
refines · incomingA blocking open question holds a Spec below defined
spec:validation.readiness-floor.blocking-open-question · resolves
declaredNoneNone
refines · incomingA scoped Spec with no relation names the relation clause
spec:validation.readiness-floor.unrelated-scoped-spec · resolves
declaredNoneNone
refines · incomingA ready Spec rests only on settled dependencies
spec:validation.typed-dependency-floor · resolves
declaredNoneNone
verifies · incomingA blocking open question holds a Spec below defined
spec:validation.readiness-floor.blocking-open-question · resolves
declaredNonedefinedFloor
verifies · incomingA scoped Spec with no relation names the relation clause
spec:validation.readiness-floor.unrelated-scoped-spec · resolves
declaredNonescopedFloor

Bindings

Implementation binding: present

  • impl:protocol.readiness-floor · evaluates the stated readiness floor against the graph · src/validate/readiness-floor.ts:612 · role validator · component component:protocol.validate · layer domain · context protocol

Design reference: none

Verifier binding: present

  • spec:validation.readiness-floor.blocking-open-question · A blocking open question holds a Spec below defined · declared · specs/validation/readiness-floor.blocking-open-question.sdp.md · example enabled
  • spec:validation.readiness-floor.unrelated-scoped-spec · A scoped Spec with no relation names the relation clause · declared · specs/validation/readiness-floor.unrelated-scoped-spec.sdp.md · example enabled
  • test:protocol.readiness-floor · readiness-floor contracts verify stated maturity · anchored · test/readiness.test.ts:66 · 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.