Spec Studio

Graph claims and contracts stay distinct

spec:validation.claim-separationBusiness Rule · storyready floor ready

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/validation/claim-separation.sdp.md

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

Intent
outcome
Preserve the graph's declared, anchored, and inferred distinctions while keeping its typed contracts lawful.
Rule
rule line 18 · specs/validation/claim-separation.sdp.md:18
Node and edge types, claims, descriptors, and relation endpoint contracts must use their ratified forms; the claim taxonomy never collapses.
rule line 19 · specs/validation/claim-separation.sdp.md:19
An unratified descriptor value fails closed: it is a conformance error, and no readiness floor is evaluated over it.

2 unkeyed rules.

Verifying examples

A binding edge cannot borrow the declared claim · spec:validation.claim-separation.collapsed-edge-claim · ready floor ready

Executable Spec

Given the graph holds a spec {specId: "spec:probe.create-order"}
Given the graph carries an off-contract {element: "edge claim"} spelled {value: "declared"}
When the graph is validated
Then the report names {findingId: "conformance/claim-separation"} at severity {severity: "error"}
Then the finding message states {phrase: "never collapsed"}
Then the report holds {floorCount: 0} readiness-floor findings

Open example

An unratified kind fails closed instead of reaching the floor · spec:validation.claim-separation.unratified-descriptor · ready floor ready

Executable Spec

Given the graph holds a spec {specId: "spec:probe.create-order"}
Given the graph carries an off-contract {element: "descriptor value"} spelled {value: "saga"}
When the graph is validated
Then the report names {findingId: "conformance/claim-separation"} at severity {severity: "error"}
Then the finding message states {phrase: "outside the ratified descriptor values"}
Then the report holds {floorCount: 0} readiness-floor findings

Open example

Example space

Given the graph holds a spec {specId:string}
Given the graph carries an off-contract {element:"edge claim"|"descriptor value"} spelled {value:string}
When the graph is validated
Then the report names {findingId:string} at severity {severity:"warning"|"error"}
Then the finding message states {phrase:string}
Then the report holds {floorCount:number} readiness-floor findings
Verification

Verifier bindings

Example space

  • specId · string · declared by the graph holds a spec {specId}
  • element · "edge claim" | "descriptor value" · declared by the graph carries an off-contract {element} spelled {value}
  • value · string · declared by the graph carries an off-contract {element} spelled {value}

Bound points

ExamplespecIdelementvalue
spec:validation.claim-separation.collapsed-edge-claim"spec:probe.create-order""edge claim""declared"
spec:validation.claim-separation.unratified-descriptor"spec:probe.create-order""descriptor value""saga"

Oracle binding: none

Coverage

specId: "spec:probe.create-order" · spec:validation.claim-separation.collapsed-edge-claim, spec:validation.claim-separation.unratified-descriptor · not enumerable

value: "declared" · spec:validation.claim-separation.collapsed-edge-claim; "saga" · spec:validation.claim-separation.unratified-descriptor · not enumerable

Unbound

  • specId: None
  • element: None
  • value: None
Design view

Requirement drawing

Requirement drawing for spec:validation.claim-separation
The diagram as text
  • spec:validation.claim-separation: Graph claims and contracts stay distinct · declared Spec
  • spec:validation.claim-separation.collapsed-edge-claim: A binding edge cannot borrow the declared claim · declared Spec
  • spec:validation.claim-separation.unratified-descriptor: An unratified kind fails closed instead of reaching the floor · declared Spec
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending · declared Spec
  • impl:protocol.claim-separation: checks graph claims, descriptors, node shapes, and relation endpoint contracts · anchored code · src/validate/validators.ts:534
  • test:protocol.claim-separation.collapsed-edge-claim: the collapsed-claim point verifies the binding-edge contract row · anchored test binding · binding present · test/self-hosting-validators.test.ts:952
  • test:protocol.claim-separation.unratified-descriptor: the unratified-kind point verifies the fail-closed descriptor law · anchored test binding · binding present · test/self-hosting-validators.test.ts:968
  • spec:validation.claim-separation refines spec:validation.two-check-families · declared
  • spec:validation.claim-separation.collapsed-edge-claim refines spec:validation.claim-separation · declared
  • spec:validation.claim-separation.collapsed-edge-claim verifies spec:validation.claim-separation · declared
  • spec:validation.claim-separation.unratified-descriptor refines spec:validation.claim-separation · declared
  • spec:validation.claim-separation.unratified-descriptor verifies spec:validation.claim-separation · declared
  • impl:protocol.claim-separation satisfies spec:validation.claim-separation · anchored
  • test:protocol.claim-separation.collapsed-edge-claim verifies spec:validation.claim-separation.collapsed-edge-claim · anchored
  • test:protocol.claim-separation.unratified-descriptor verifies spec:validation.claim-separation.unratified-descriptor · 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
  • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol

    Uses

  • impl:protocol.claim-separation · checks graph claims, descriptors, node shapes, and relation endpoint contracts · src/validate/validators.ts:534

    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.claim-separation
The diagram as text
  • spec:extraction.claim-taxonomy: Graph claims retain their epistemic source
  • spec:extraction.derive-graph: Carrier reification derives the one graph
  • spec:validation.claim-separation: Graph claims and contracts stay distinct
  • spec:validation.claim-separation.collapsed-edge-claim: A binding edge cannot borrow the declared claim
  • spec:validation.claim-separation.unratified-descriptor: An unratified kind fails closed instead of reaching the floor
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending
  • spec:validation.claim-separation dependsOn spec:extraction.claim-taxonomy · declared
  • spec:validation.claim-separation dependsOn spec:extraction.derive-graph · declared
  • spec:validation.claim-separation refines spec:validation.two-check-families · declared
  • spec:validation.claim-separation.collapsed-edge-claim refines spec:validation.claim-separation · declared
  • spec:validation.claim-separation.unratified-descriptor refines spec:validation.claim-separation · declared
  • spec:validation.claim-separation.collapsed-edge-claim verifies spec:validation.claim-separation · declared
  • spec:validation.claim-separation.unratified-descriptor verifies spec:validation.claim-separation · 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

Relations

Relation and directionOther endClaimReasonExercised keys
dependsOn · outgoingGraph claims retain their epistemic source
spec:extraction.claim-taxonomy · resolves
declaredNoneNone
dependsOn · outgoingCarrier reification derives the one graph
spec:extraction.derive-graph · resolves
declaredNoneNone
refines · outgoingValidation separates well-formedness from non-pretending
spec:validation.two-check-families · resolves
declaredNoneNone
refines · incomingA binding edge cannot borrow the declared claim
spec:validation.claim-separation.collapsed-edge-claim · resolves
declaredNoneNone
refines · incomingAn unratified kind fails closed instead of reaching the floor
spec:validation.claim-separation.unratified-descriptor · resolves
declaredNoneNone
verifies · incomingA binding edge cannot borrow the declared claim
spec:validation.claim-separation.collapsed-edge-claim · resolves
declaredNoneNone
verifies · incomingAn unratified kind fails closed instead of reaching the floor
spec:validation.claim-separation.unratified-descriptor · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.claim-separation · checks graph claims, descriptors, node shapes, and relation endpoint contracts · src/validate/validators.ts:534 · role validator · component component:protocol.validate · layer domain · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.