Spec Studio

Missing connective evidence warns without failing

spec:validation.warn-level-signalsBusiness Rule · featureready floor ready

Packs: pack:self-hosting-v1

Design: no design entries · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/validation/warn-level-signals.sdp.md

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

Intent
outcome
Surface graph conditions that need attention without turning informative delivery signals into workflow gates.
Rule
rule line 16 · specs/validation/warn-level-signals.sdp.md:16
Orphaned Specs and ready Specs lacking a resolving verifier are warnings, not validation errors.
rule line 17 · specs/validation/warn-level-signals.sdp.md:17
The gap signal excludes kind decision.
rule line 18 · specs/validation/warn-level-signals.sdp.md:18
The gap signal reads the delivery facts the one derivation recomputes from the graph, never the deliveryFacts a node carries, so a hand-authored fact cannot silence it.
rule line 19 · specs/validation/warn-level-signals.sdp.md:19
The Protocol fixes the severity of these signals; no validator reads a per-team setting.

4 unkeyed rules.

Verifying examples

A disconnected Spec warns and fails nothing · spec:validation.warn-level-signals.orphan-signal · ready floor ready

Executable Spec

Given the graph holds a spec {specId: "spec:probe.orphan-signal"} at readiness {readiness: "idea"}
Given the spec declares {relations: "no relation"}
When the graph is validated
Then the report names {findingId: "conformance/orphans"} at severity {severity: "warning"}
Then the report holds {errorCount: 0} errors

Open example

A ready Spec without a verifier warns and fails nothing · spec:validation.warn-level-signals.ready-gap-signal · ready floor ready

Executable Spec

Given the graph holds a spec {specId: "spec:probe.gap-signal"} at readiness {readiness: "ready"}
Given the spec declares {relations: "a decidedBy decision"}
When the graph is validated
Then the report names {findingId: "honesty/gaps"} at severity {severity: "warning"}
Then the report holds {errorCount: 0} errors

Open example

Example space

Given the graph holds a spec {specId:string} at readiness {readiness:"idea"|"ready"}
Given the spec declares {relations:"no relation"|"a decidedBy decision"}
When the graph is validated
Then the report names {findingId:string} at severity {severity:"warning"|"error"}
Then the report holds {errorCount:number} errors
Verification

Verifier bindings

Example space

  • specId · string · declared by the graph holds a spec {specId} at readiness {readiness}
  • readiness · "idea" | "ready" · declared by the graph holds a spec {specId} at readiness {readiness}
  • relations · "no relation" | "a decidedBy decision" · declared by the spec declares {relations}

Bound points

ExamplespecIdreadinessrelations
spec:validation.warn-level-signals.orphan-signal"spec:probe.orphan-signal""idea""no relation"
spec:validation.warn-level-signals.ready-gap-signal"spec:probe.gap-signal""ready""a decidedBy decision"

Oracle binding: none

Coverage

specId: "spec:probe.orphan-signal" · spec:validation.warn-level-signals.orphan-signal; "spec:probe.gap-signal" · spec:validation.warn-level-signals.ready-gap-signal · not enumerable

relations
Declared valueExamples
"no relation"spec:validation.warn-level-signals.orphan-signal
"a decidedBy decision"spec:validation.warn-level-signals.ready-gap-signal

Unbound

  • specId: None
  • readiness: None
  • relations: None
Design view

Requirement drawing

Requirement drawing for spec:validation.warn-level-signals
Requirement drawing for spec:validation.warn-level-signalsrefines, verifies · declaredrefines, verifies · declaredsatisfies · anchoredsatisfies · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines · declaredrefines · declaredIntended Specsspec:decisions.decision-readiness-postureDecision records statereadiness from ratificationevidence…decisions.decision-readiness-posturedeclared Specspec:validation.superseded-decision-signalA Spec shaped by asuperseded decision warns…validation.superseded-decision-signaldeclared Specspec:validation.warn-level-signalsMissing connective evidencewarns without failing…validation.warn-level-signalsdeclared SpecDeclared verifying examples11 verifying examples · declared; 11 test bindings · anchored, folded11 verifying examples ·declared11 test bindings · anchored ·foldedSatisfying or referencingunitsimpl:protocol.orphan-signalsurfaces relationless Specsas informative orphanwarnings…protocol.orphan-signalanchored codeimpl:protocol.superseded-decision-signalwalks decision replacementsto surface stale shapingrelationsimpl:protocol.superseded-decision-signalanchored codeimpl:protocol.verifier-gap-signalsurfaces ready Specswithout recomputed verifierbindings as informative gaps…protocol.verifier-gap-signalanchored codeTest or oracle bindingsoracle:protocol.superseded-decision-signaloracle:protocol.superseded-decision-signaloracle:protocol.superseded-decision-signalanchored oracle bindingOutside the selected setspec:validation.two-check-familiesValidation separateswell-formedness fromnon-pretending…validation.two-check-familiesdeclared Spec
The diagram as text
  • spec:validation.warn-level-signals: Missing connective evidence warns without failing · declared Spec
  • spec:decisions.decision-readiness-posture: Decision records state readiness from ratification evidence · declared Spec
  • spec:validation.superseded-decision-signal: A Spec shaped by a superseded decision warns · declared Spec
  • spec:validation.warn-level-signals.orphan-signal: A disconnected Spec warns and fails nothing · declared Spec
  • spec:validation.warn-level-signals.ready-gap-signal: A ready Spec without a verifier warns and fails nothing · declared Spec
  • spec:validation.superseded-decision-signal.branch-names-every-end: A replacement chain that branches names every end · declared Spec
  • spec:validation.superseded-decision-signal.chain-end-named: The warning names the decision at the end of a chain of replacements · declared Spec
  • spec:validation.superseded-decision-signal.closed-chain-named: A chain of replacements that closes on itself is named and fails nothing · declared Spec
  • spec:validation.superseded-decision-signal.dependency-unread: A dependency on a replaced decision raises no warning · declared Spec
  • spec:validation.superseded-decision-signal.end-and-loop-named: A chain of replacements that reaches an end and a loop names both · declared Spec
  • spec:validation.superseded-decision-signal.live-replacement-warns: A decision still decided by the record it replaces warns · declared Spec
  • spec:validation.superseded-decision-signal.replaced-ruling-warns: A Spec shaped by a replaced decision warns once and fails nothing · declared Spec
  • spec:validation.superseded-decision-signal.replacement-below-ready-named: A replacement still below ready is named as it stands · declared Spec
  • spec:validation.superseded-decision-signal.superseded-subject-silent: A superseded decision is not warned for the decision it names · declared Spec
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending · declared Spec
  • impl:protocol.orphan-signal: surfaces relationless Specs as informative orphan warnings · anchored code · src/validate/validators.ts:1128
  • impl:protocol.superseded-decision-signal: walks decision replacements to surface stale shaping relations · anchored code · src/validate/validators.ts:1817
  • impl:protocol.verifier-gap-signal: surfaces ready Specs without recomputed verifier bindings as informative gaps · anchored code · src/validate/validators.ts:1734
  • oracle:protocol.superseded-decision-signal: oracle:protocol.superseded-decision-signal · anchored oracle binding · test/self-hosting-validators.test.ts:1551
  • test:protocol.superseded-decision-signal.branch-names-every-end: test:protocol.superseded-decision-signal.branch-names-every-end · anchored test binding · binding present · test/self-hosting-validators.test.ts:1666
  • test:protocol.superseded-decision-signal.chain-end-named: test:protocol.superseded-decision-signal.chain-end-named · anchored test binding · binding present · test/self-hosting-validators.test.ts:1651
  • test:protocol.superseded-decision-signal.closed-chain-named: test:protocol.superseded-decision-signal.closed-chain-named · anchored test binding · binding present · test/self-hosting-validators.test.ts:1681
  • test:protocol.superseded-decision-signal.dependency-unread: test:protocol.superseded-decision-signal.dependency-unread · anchored test binding · binding present · test/self-hosting-validators.test.ts:1696
  • test:protocol.superseded-decision-signal.end-and-loop-named: test:protocol.superseded-decision-signal.end-and-loop-named · anchored test binding · binding present · test/self-hosting-validators.test.ts:1756
  • test:protocol.superseded-decision-signal.live-replacement-warns: test:protocol.superseded-decision-signal.live-replacement-warns · anchored test binding · binding present · test/self-hosting-validators.test.ts:1741
  • test:protocol.superseded-decision-signal.replaced-ruling-warns: test:protocol.superseded-decision-signal.replaced-ruling-warns · anchored test binding · binding present · test/self-hosting-validators.test.ts:1636
  • test:protocol.superseded-decision-signal.replacement-below-ready-named: test:protocol.superseded-decision-signal.replacement-below-ready-named · anchored test binding · binding present · test/self-hosting-validators.test.ts:1726
  • test:protocol.superseded-decision-signal.superseded-subject-silent: test:protocol.superseded-decision-signal.superseded-subject-silent · anchored test binding · binding present · test/self-hosting-validators.test.ts:1711
  • test:protocol.warn-level-signals.orphan-signal: the orphan point verifies the disconnected-spec warning · anchored test binding · binding present · test/self-hosting-validators.test.ts:657
  • test:protocol.warn-level-signals.ready-gap-signal: the gap point verifies the unverified-ready warning · anchored test binding · binding present · test/self-hosting-validators.test.ts:673
  • spec:decisions.decision-readiness-posture refines spec:validation.warn-level-signals · declared
  • spec:validation.superseded-decision-signal refines spec:validation.warn-level-signals · declared
  • spec:validation.superseded-decision-signal.branch-names-every-end refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.branch-names-every-end verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.chain-end-named refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.chain-end-named verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.closed-chain-named refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.closed-chain-named verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.dependency-unread refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.dependency-unread verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.end-and-loop-named refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.end-and-loop-named verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.live-replacement-warns refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.live-replacement-warns verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.replaced-ruling-warns refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.replaced-ruling-warns verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.replacement-below-ready-named refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.replacement-below-ready-named verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.superseded-subject-silent refines spec:validation.superseded-decision-signal · declared
  • spec:validation.superseded-decision-signal.superseded-subject-silent verifies spec:validation.superseded-decision-signal · declared
  • spec:validation.warn-level-signals refines spec:validation.two-check-families · declared
  • spec:validation.warn-level-signals.orphan-signal refines spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.orphan-signal verifies spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.ready-gap-signal refines spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.ready-gap-signal verifies spec:validation.warn-level-signals · declared
  • impl:protocol.orphan-signal satisfies spec:validation.warn-level-signals · anchored
  • impl:protocol.superseded-decision-signal satisfies spec:validation.superseded-decision-signal · anchored
  • impl:protocol.verifier-gap-signal satisfies spec:validation.warn-level-signals · anchored
  • oracle:protocol.superseded-decision-signal models spec:validation.superseded-decision-signal · anchored
  • test:protocol.superseded-decision-signal.branch-names-every-end verifies spec:validation.superseded-decision-signal.branch-names-every-end · anchored
  • test:protocol.superseded-decision-signal.chain-end-named verifies spec:validation.superseded-decision-signal.chain-end-named · anchored
  • test:protocol.superseded-decision-signal.closed-chain-named verifies spec:validation.superseded-decision-signal.closed-chain-named · anchored
  • test:protocol.superseded-decision-signal.dependency-unread verifies spec:validation.superseded-decision-signal.dependency-unread · anchored
  • test:protocol.superseded-decision-signal.end-and-loop-named verifies spec:validation.superseded-decision-signal.end-and-loop-named · anchored
  • test:protocol.superseded-decision-signal.live-replacement-warns verifies spec:validation.superseded-decision-signal.live-replacement-warns · anchored
  • test:protocol.superseded-decision-signal.replaced-ruling-warns verifies spec:validation.superseded-decision-signal.replaced-ruling-warns · anchored
  • test:protocol.superseded-decision-signal.replacement-below-ready-named verifies spec:validation.superseded-decision-signal.replacement-below-ready-named · anchored
  • test:protocol.superseded-decision-signal.superseded-subject-silent verifies spec:validation.superseded-decision-signal.superseded-subject-silent · anchored
  • test:protocol.warn-level-signals.orphan-signal verifies spec:validation.warn-level-signals.orphan-signal · anchored
  • test:protocol.warn-level-signals.ready-gap-signal verifies spec:validation.warn-level-signals.ready-gap-signal · 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

  • Decision records state readiness from ratification evidence

    A decision Spec states ready when its complete record is registry-ratified. Decision records never require implementation or verifier bindings; the operational build backlog and verifier-gap signal exclude kind decision, while recipe 1 reports the excluded ready-decision count.

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

    Uses

  • impl:protocol.orphan-signal · surfaces relationless Specs as informative orphan warnings · src/validate/validators.ts:1128

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

    Uses

    None.

  • impl:protocol.verifier-gap-signal · surfaces ready Specs without recomputed verifier bindings as informative gaps · src/validate/validators.ts:1734

    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.warn-level-signals
The diagram as text
  • spec:decisions.decision-readiness-posture: Decision records state readiness from ratification evidence
  • spec:validation.superseded-decision-signal: A Spec shaped by a superseded decision warns
  • spec:validation.two-check-families: Validation separates well-formedness from non-pretending
  • spec:validation.warn-level-signals: Missing connective evidence warns without failing
  • spec:validation.warn-level-signals.orphan-signal: A disconnected Spec warns and fails nothing
  • spec:validation.warn-level-signals.ready-gap-signal: A ready Spec without a verifier warns and fails nothing
  • spec:validation.warn-level-signals decidedBy spec:decisions.decision-readiness-posture · declared
  • spec:validation.warn-level-signals refines spec:validation.two-check-families · declared
  • spec:decisions.decision-readiness-posture refines spec:validation.warn-level-signals · declared
  • spec:validation.superseded-decision-signal refines spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.orphan-signal refines spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.ready-gap-signal refines spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.orphan-signal verifies spec:validation.warn-level-signals · declared
  • spec:validation.warn-level-signals.ready-gap-signal verifies spec:validation.warn-level-signals · 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 · outgoingDecision records state readiness from ratification evidence
spec:decisions.decision-readiness-posture · resolves
declaredNoneNone
refines · outgoingValidation separates well-formedness from non-pretending
spec:validation.two-check-families · resolves
declaredNoneNone
refines · incomingDecision records state readiness from ratification evidence
spec:decisions.decision-readiness-posture · resolves
declaredNoneNone
refines · incomingA Spec shaped by a superseded decision warns
spec:validation.superseded-decision-signal · resolves
declaredNoneNone
refines · incomingA disconnected Spec warns and fails nothing
spec:validation.warn-level-signals.orphan-signal · resolves
declaredNoneNone
refines · incomingA ready Spec without a verifier warns and fails nothing
spec:validation.warn-level-signals.ready-gap-signal · resolves
declaredNoneNone
verifies · incomingA disconnected Spec warns and fails nothing
spec:validation.warn-level-signals.orphan-signal · resolves
declaredNoneNone
verifies · incomingA ready Spec without a verifier warns and fails nothing
spec:validation.warn-level-signals.ready-gap-signal · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.orphan-signal · surfaces relationless Specs as informative orphan warnings · src/validate/validators.ts:1128 · role validator · component component:protocol.validate · layer domain · context protocol
  • impl:protocol.verifier-gap-signal · surfaces ready Specs without recomputed verifier bindings as informative gaps · src/validate/validators.ts:1734 · 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.