Spec Studio

The build derives step and space contracts from graph examples

spec:extraction.executable-contractsUse Case / Behavior · featureready floor ready

Packs: pack:adopter-speed-v1, pack:self-hosting-v1

Design: 6 design entries · 5 pinned declarations · 1 decision

Findings: no errors, no warnings

specs/extraction/executable-contracts.sdp.md

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

Intent
outcome
Give bound tests typed step contracts and space contracts without reading authored Specs directly.
Behavior
rule line 22 · specs/extraction/executable-contracts.sdp.md:22
generateContracts derives per-example step contracts and per-parent space contracts solely from the extracted graph.
rule line 23 · specs/extraction/executable-contracts.sdp.md:23
A generated contract is disposable, keyed by Spec ID, and withheld when its example is not in the bindable form or its steps do not resolve against the shared vocabulary.
rule.concreteness line 24 · specs/extraction/executable-contracts.sdp.md:24
The concreteness law is a refusal, never a guess — an example carrying an unbound slot in any used step of any entry is not the bindable form and receives no step contract, and a prose-only example receives none either.

spec:extraction.executable-contracts.concreteness-refusal · enabled

rule line 25 · specs/extraction/executable-contracts.sdp.md:25
Concreteness reads the example's own form, whether or not a parent declares shared vocabulary. Vocabulary resolution is a separate later check; incompatible resolution withholds the step contract with contracts/unmatched-vocabulary-step.
rule.onePoint line 26 · specs/extraction/executable-contracts.sdp.md:26
An example is one point, so the step contract and bound point derive from the same first complete structured Given/When/Then entry. A further entry, which the TypeScript carrier can carry, is named contracts/multi-entry-example rather than left silently inert.

spec:extraction.executable-contracts.multi-entry-example · enabled

rule.contractKeys line 27 · specs/extraction/executable-contracts.sdp.md:27
Each step of a step contract carries its contract key beside its skeleton: its step key, from its own marker or from the vocabulary step it resolves to, under spec:carrier.step-keys, and its skeleton when it has none. The Step union and the StepParams properties are the contract keys in first-occurrence order, and the runner dispatches each step to the handler bound under its contract key.

spec:carrier.step-keys.reworded-keyed-step-stays-bound · enabled, spec:carrier.step-keys.reworded-unkeyed-step-breaks · enabled

rule line 28 · specs/extraction/executable-contracts.sdp.md:28
Degradation is loud and local: an undeclared slot or a value outside its declared type is named and left out of the bound point; an off-type value stays in the step contract, widened to its scalar kind, so the emitted module still compiles; and a conflicting re-binding is named and its first value wins, in the bound point for a slot bound twice and in the step contract for a step that recurs with other values.
rule line 29 · specs/extraction/executable-contracts.sdp.md:29
A vocabulary slot group that declares no usable type is named rather than dropped in silence, and no dimension enters the space for it.
rule.outcomeIdentity line 30 · specs/extraction/executable-contracts.sdp.md:30
Each Then step of the parent's example space is one variant of the space contract's Outcome union, whose kind is that step's contract key, its step key or else its skeleton text; the build derives no slug or ordinal, and the runner core adds unspecified.

no example exercises it

rule.keyConflicts line 31 · specs/extraction/executable-contracts.sdp.md:31
A contract never holds two steps under one contract key. An example marker that disagrees with the key of its vocabulary step withholds the example's step contract with contracts/conflicting-step-key. A step or space contract whose steps would share a contract key, two skeletons under one key or a key equal to another step's skeleton, is withheld with contracts/duplicate-step-key, naming the key and both skeletons; a withheld space contract withholds every registrar of its children.

spec:carrier.step-keys.conflicting-example-key-withheld · enabled, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · enabled

rule.caseCollision line 32 · specs/extraction/executable-contracts.sdp.md:32
Two contract paths differing only by letter case cannot coexist on a case-insensitive filesystem, so the contracts tree is withheld whole and the finding names the colliding pair.

spec:extraction.executable-contracts.case-colliding-path · enabled

rule line 33 · specs/extraction/executable-contracts.sdp.md:33
Every generation finding is a warning that describes what did not emit; gating belongs to graph validation alone, so a withheld contract never fails the build by itself.

6 unkeyed rules.

Verifying examples

An example marker that disagrees with its vocabulary withholds the contract · spec:carrier.step-keys.conflicting-example-key-withheld · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "[#basketSize] a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/conflicting-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}

Open example

A step key equal to another step's skeleton withholds the contract · spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] the cart has {items:number} items; cartSize"}
Given a child example of that parent whose Given steps read {example: "the cart has {items: 2} items; cartSize"}
When the contracts are generated, the step lines are reworded by replacing {before: "the cart has"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the first contract finding about the child is {contractFinding: "contracts/duplicate-step-key"}
Then the child contract binds its first Given step as {bindingKey: ""} and then as {rewordedBindingKey: ""}

Open example

A keyed step reworded in its vocabulary and its example keeps its binding · spec:carrier.step-keys.reworded-keyed-step-stays-bound · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "[#cartSize] a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "cartSize"} and then as {rewordedBindingKey: "cartSize"}
Then the handlers bound to the first contract cover the second: {stillBound: true}

Open example

The same rewording without a key breaks the binding · spec:carrier.step-keys.reworded-unkeyed-step-breaks · ready floor ready

Executable Spec

Given the {carrier: "Markdown"} carriers of a parent whose example space declares the Given steps {vocabulary: "a customer has a cart with {items:number} line items"}
Given a child example of that parent whose Given steps read {example: "a customer has a cart with {items: 2} line items"}
When the contracts are generated, the step lines are reworded by replacing {before: "a customer has a cart with"} with {after: "the cart holds"}, and the contracts are generated again
Then the first extraction finding's message contains {extractMessage: ""}
Then the child contract binds its first Given step as {bindingKey: "a customer has a cart with {items} line items"} and then as {rewordedBindingKey: "the cart holds {items} line items"}
Then the handlers bound to the first contract cover the second: {stillBound: false}

Open example

A case-only path collision withholds the whole contracts tree · spec:extraction.executable-contracts.case-colliding-path · ready floor ready

Executable Spec

Given a parent spec whose example space declares the slot {dimension: "n"}
Given a refining example {exampleId: "spec:probe.create-order.same-case"} whose used step {binding: "binds"} that slot
Given a case-twin example {twinId: "spec:probe.create-order.same-Case"} whose contract path differs only by letter case
When the contracts are generated from the derived graph
Then the generated tree holds {fileCount: 0} files
Then the findings name {findingId: "contracts/case-colliding-path"}

Open example

An unbound slot in a used step earns no step contract · spec:extraction.executable-contracts.concreteness-refusal · ready floor ready

Executable Spec

Given a parent spec that declares no shared vocabulary for the slot {dimension: "n"}
Given a refining example {exampleId: "spec:probe.create-order.unbound"} whose used step {binding: "leaves unbound"} that slot
When the contracts are generated from the derived graph
Then the generated tree holds {fileCount: 0} files
Then the step contract for the example is emitted: {emitted: false}

Open example

A second structured entry is named, never left silently inert · spec:extraction.executable-contracts.multi-entry-example · ready floor ready

Executable Spec

Given a parent spec whose example space declares the slot {dimension: "n"}
Given a refining example {exampleId: "spec:probe.create-order.multi"} whose used step {binding: "binds"} that slot
Given the example carries {entryCount: 2} structured entries
When the contracts are generated from the derived graph
Then the step contract for the example is emitted: {emitted: true}
Then the findings name {findingId: "contracts/multi-entry-example"}

Open example

Example space

Given a parent spec whose example space declares the slot {dimension:string}
Given a parent spec that declares no shared vocabulary for the slot {dimension:string}
Given a refining example {exampleId:string} whose used step {binding:"binds"|"leaves unbound"} that slot
Given the example carries {entryCount:number} structured entries
Given a case-twin example {twinId:string} whose contract path differs only by letter case
When the contracts are generated from the derived graph
Then the generated tree holds {fileCount:number} files
Then the step contract for the example is emitted: {emitted:boolean}
Then the findings name {findingId:string}
Design
findingIds line 49 · specs/extraction/executable-contracts.sdp.md:49
contracts/undeclared-slot · contracts/off-dimension-value · contracts/conflicting-binding · contracts/conflicting-dimension · contracts/untyped-vocabulary-slot · contracts/multi-entry-example · contracts/unmatched-vocabulary-step · contracts/case-colliding-path · contracts/multiple-registrar-paths · contracts/conflicting-step-key · contracts/duplicate-step-key, each at warning severity.

no citation recorded

duplicateStepKey line 50 · specs/extraction/executable-contracts.sdp.md:50
contracts/duplicate-step-key is a warning on the parent at behavior.exampleSpace for a space collision, or on the example at behavior.examples for a step-contract collision. Its message is contract key "<key>" names both "<first skeleton>" and "<second skeleton>"; <space|step> contract withheld, with the skeletons in first-occurrence order.

no citation recorded

contractStep line 51 · specs/extraction/executable-contracts.sdp.md:51
export interface ContractStep<K extends string, P extends ParamShape> { readonly kind: StepKind; readonly key: K; readonly text: string; readonly params: P; } is the step shape the runner exports, where key is the contract key and text the skeleton the natural reading renders.

no citation recorded

stepContractModule line 52 · specs/extraction/executable-contracts.sdp.md:52
export type Step = "<contract key>" | …; is the union of the example's contract keys in first-occurrence order, StepParams maps each contract key to its parameters, and export const <camel>Contract: ExampleContract<Step, StepParams> lists every step as { kind, key, text, params } in authored order.

no citation recorded

outcomeVariant line 53 · specs/extraction/executable-contracts.sdp.md:53
{ readonly kind: "<contract key>"; readonly <slot>: <type>; … } is the Outcome variant of one Then step of the example space, one per Then step, beside UnspecifiedOutcome.

no citation recorded

planDispatch line 54 · specs/extraction/executable-contracts.sdp.md:54
the runner's planExample runs each step through bindings[step.key], carries key on each planned step beside text and label, and renders the label from text and params, so a red keyed step still names itself in the Spec's own words.
Verification

Verifier bindings

  • spec:carrier.step-keys.conflicting-example-key-withheld · An example marker that disagrees with its vocabulary withholds the contract · declared · example enabled · specs/carrier/step-keys.conflicting-example-key-withheld.sdp.md

    External run evidence from test/self-hosting-step-keys.test.ts

    Test anchors: test:protocol.step-keys.conflicting-example-key-withheld, test:protocol.step-keys.gherkin-keyed-step-stays-bound, test:protocol.step-keys.key-equal-to-a-skeleton-withheld, test:protocol.step-keys.malformed-marker-refused, test:protocol.step-keys.renamed-key-breaks, test:protocol.step-keys.repeated-key-refused, test:protocol.step-keys.reworded-keyed-step-stays-bound, test:protocol.step-keys.reworded-unkeyed-step-breaks, test:protocol.step-keys.two-keys-on-one-step-refused, test:protocol.step-keys.typescript-keyed-step-imports-keyed. Specs verified by those bindings: spec:carrier.step-keys, spec:carrier.step-keys.conflicting-example-key-withheld, spec:carrier.step-keys.gherkin-keyed-step-stays-bound, spec:carrier.step-keys.key-equal-to-a-skeleton-withheld, spec:carrier.step-keys.malformed-marker-refused, spec:carrier.step-keys.renamed-key-breaks, spec:carrier.step-keys.repeated-key-refused, spec:carrier.step-keys.reworded-keyed-step-stays-bound, spec:carrier.step-keys.reworded-unkeyed-step-breaks, spec:carrier.step-keys.two-keys-on-one-step-refused, spec:carrier.step-keys.typescript-keyed-step-imports-keyed, spec:extraction.executable-contracts.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldAn example marker that disagrees with its vocabulary withholds the contract (spec:carrier.step-keys.conflicting-example-key-withheld)passed22.63 ms
    executes the bound example against a fresh worldA keyed Gherkin step keeps its binding across a rewording (spec:carrier.step-keys.gherkin-keyed-step-stays-bound)passed1217.15 ms
    executes the bound example against a fresh worldA step key equal to another step's skeleton withholds the contract (spec:carrier.step-keys.key-equal-to-a-skeleton-withheld)passed28 ms
    executes the bound example against a fresh worldA step marker whose key is off the grammar refuses the carrier (spec:carrier.step-keys.malformed-marker-refused)passed770.98 ms
    executes the bound example against a fresh worldRenaming a step key breaks the binding (spec:carrier.step-keys.renamed-key-breaks)passed645.28 ms
    executes the bound example against a fresh worldOne key on two vocabulary steps refuses the carrier (spec:carrier.step-keys.repeated-key-refused)passed585.85 ms
    executes the bound example against a fresh worldA keyed step reworded in its vocabulary and its example keeps its binding (spec:carrier.step-keys.reworded-keyed-step-stays-bound)passed671.38 ms
    executes the bound example against a fresh worldThe same rewording without a key breaks the binding (spec:carrier.step-keys.reworded-unkeyed-step-breaks)passed654.66 ms
    executes the bound example against a fresh worldTwo keys on one step refuse the carrier (spec:carrier.step-keys.two-keys-on-one-step-refused)passed726.16 ms
    executes the bound example against a fresh worldA keyed TypeScript step keeps its key through import to Markdown (spec:carrier.step-keys.typescript-keyed-step-imports-keyed)passed666.12 ms
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · A step key equal to another step's skeleton withholds the contract · declared · example enabled · specs/carrier/step-keys.key-equal-to-a-skeleton-withheld.sdp.md
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound · A keyed step reworded in its vocabulary and its example keeps its binding · declared · example enabled · specs/carrier/step-keys.reworded-keyed-step-stays-bound.sdp.md
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks · The same rewording without a key breaks the binding · declared · example enabled · specs/carrier/step-keys.reworded-unkeyed-step-breaks.sdp.md
  • spec:extraction.executable-contracts.case-colliding-path · A case-only path collision withholds the whole contracts tree · declared · example enabled · specs/extraction/executable-contracts.case-colliding-path.sdp.md

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

    Test anchors: test:protocol.build-pipeline.same-invocation, test:protocol.example-runner.red-step-naming, test:protocol.example-runner.step-order, test:protocol.excludes.refused-path, test:protocol.excludes.segment-boundary, test:protocol.executable-contracts.case-colliding-path, test:protocol.executable-contracts.concreteness-refusal, test:protocol.executable-contracts.multi-entry-example, test:protocol.schema-versioning.declared-version. Specs verified by those bindings: spec:extraction.build-pipeline, spec:extraction.build-pipeline.same-invocation, spec:extraction.example-runner, spec:extraction.example-runner.red-step-naming, spec:extraction.example-runner.step-order, spec:extraction.excludes, spec:extraction.excludes.refused-path, spec:extraction.excludes.segment-boundary, spec:extraction.executable-contracts, spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.concreteness-refusal, spec:extraction.executable-contracts.multi-entry-example, spec:extraction.schema-versioning, spec:extraction.schema-versioning.declared-version.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldOne query invocation shares its extracted graph and validation result (spec:extraction.build-pipeline.same-invocation)passed16.91 ms
    executes the bound example against a fresh worldA prefix excludes its own tree and leaves a similar sibling standing (spec:extraction.excludes.segment-boundary)passed1.58 ms
    executes the bound example against a fresh worldA Windows-drive absolute path is refused rather than normalized (spec:extraction.excludes.refused-path)passed1.08 ms
    executes the bound example against a fresh worldA derived payload carries a schema version its consumer can read (spec:extraction.schema-versioning.declared-version)passed0.5 ms
    executes the bound example against a fresh worldAn unbound slot in a used step earns no step contract (spec:extraction.executable-contracts.concreteness-refusal)passed2.41 ms
    executes the bound example against a fresh worldA second structured entry is named, never left silently inert (spec:extraction.executable-contracts.multi-entry-example)passed2.37 ms
    executes the bound example against a fresh worldA case-only path collision withholds the whole contracts tree (spec:extraction.executable-contracts.case-colliding-path)passed0.95 ms
    executes the bound example against a fresh worldA repeated step runs its one handler at each occurrence, in contract order (spec:extraction.example-runner.step-order)passed0.4 ms
    executes the bound example against a fresh worldA red step names itself before the assertion detail (spec:extraction.example-runner.red-step-naming)passed0.45 ms
  • spec:extraction.executable-contracts.concreteness-refusal · An unbound slot in a used step earns no step contract · declared · example enabled · specs/extraction/executable-contracts.concreteness-refusal.sdp.md
  • spec:extraction.executable-contracts.multi-entry-example · A second structured entry is named, never left silently inert · declared · example enabled · specs/extraction/executable-contracts.multi-entry-example.sdp.md

Example space

  • dimension · string · declared by a parent spec whose example space declares the slot {dimension}
  • exampleId · string · declared by a refining example {exampleId} whose used step {binding} that slot
  • binding · "binds" | "leaves unbound" · declared by a refining example {exampleId} whose used step {binding} that slot
  • entryCount · number · declared by the example carries {entryCount} structured entries
  • twinId · string · declared by a case-twin example {twinId} whose contract path differs only by letter case

Bound points

ExampledimensionexampleIdbindingentryCounttwinId
spec:extraction.executable-contracts.case-colliding-path"n""spec:probe.create-order.same-case""binds"unbound"spec:probe.create-order.same-Case"
spec:extraction.executable-contracts.concreteness-refusal"n""spec:probe.create-order.unbound""leaves unbound"unboundunbound
spec:extraction.executable-contracts.multi-entry-example"n""spec:probe.create-order.multi""binds"2unbound

Oracle binding: none

Coverage

dimension: "n" · spec:extraction.executable-contracts.case-colliding-path, spec:extraction.executable-contracts.concreteness-refusal, spec:extraction.executable-contracts.multi-entry-example · not enumerable

exampleId: "spec:probe.create-order.same-case" · spec:extraction.executable-contracts.case-colliding-path; "spec:probe.create-order.unbound" · spec:extraction.executable-contracts.concreteness-refusal; "spec:probe.create-order.multi" · spec:extraction.executable-contracts.multi-entry-example · not enumerable

entryCount: 2 · spec:extraction.executable-contracts.multi-entry-example · not enumerable

twinId: "spec:probe.create-order.same-Case" · spec:extraction.executable-contracts.case-colliding-path · not enumerable

Unbound

Design view

Requirement drawing

Requirement drawing for spec:extraction.executable-contracts
The diagram as text
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • spec:extraction.contract-declarations: Pinned declarations give an adopter a derived module to typecheck · declared Spec
  • spec:extraction.executable-contracts.case-colliding-path: A case-only path collision withholds the whole contracts tree · declared Spec
  • spec:extraction.executable-contracts.concreteness-refusal: An unbound slot in a used step earns no step contract · declared Spec
  • spec:extraction.executable-contracts.multi-entry-example: A second structured entry is named, never left silently inert · declared Spec
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract · declared Spec
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract · declared Spec
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding · declared Spec
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · declared Spec
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow · declared Spec
  • spec:extraction.executable-examples: Bound examples execute their authored steps · declared Spec
  • impl:protocol.example-space: resolves example-space vocabulary for contracts and floors · anchored code · src/graph/example-space.ts:117
  • impl:protocol.executable-contracts: derives step and example-space contracts from the graph · anchored code · src/codegen/contracts.ts:647
  • impl:protocol.pack-design: the Pack design helpers and the Pack context assembly they serve · anchored code · src/reader/reader.ts:499
  • impl:protocol.register-recipes: asserts realization of the shipped register recipes · anchored code · test/recipes.test.ts:2057
  • test:protocol.executable-contracts.case-colliding-path: the collision point verifies the all-or-nothing withholding · anchored test binding · binding present · test/self-hosting-extraction.test.ts:593
  • test:protocol.executable-contracts.concreteness-refusal: the concreteness point verifies the unbound-slot refusal · anchored test binding · binding present · test/self-hosting-extraction.test.ts:575
  • test:protocol.executable-contracts.multi-entry-example: the multi-entry point verifies the named second entry · anchored test binding · binding present · test/self-hosting-extraction.test.ts:584
  • test:protocol.register-recipes: recipe checks verify the register recipes · anchored test binding · binding present · test/recipes.test.ts:2068
  • test:protocol.step-keys.conflicting-example-key-withheld: test:protocol.step-keys.conflicting-example-key-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:26
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld: test:protocol.step-keys.key-equal-to-a-skeleton-withheld · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:120
  • test:protocol.step-keys.reworded-keyed-step-stays-bound: test:protocol.step-keys.reworded-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:308
  • test:protocol.step-keys.reworded-unkeyed-step-breaks: test:protocol.step-keys.reworded-unkeyed-step-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:355
  • spec:carrier.step-keys.conflicting-example-key-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · declared
  • spec:extraction.contract-declarations refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts refines spec:extraction.build-pipeline · declared
  • spec:extraction.executable-contracts refines spec:extraction.executable-examples · declared — typed contracts carry the authored steps and example space into execution
  • spec:extraction.executable-contracts.case-colliding-path refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.case-colliding-path verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example verifies spec:extraction.executable-contracts · declared
  • impl:protocol.example-space satisfies spec:extraction.executable-contracts · anchored
  • impl:protocol.executable-contracts satisfies spec:extraction.executable-contracts · anchored
  • impl:protocol.pack-design satisfies spec:extraction.contract-declarations · anchored
  • impl:protocol.register-recipes satisfies spec:extraction.contract-declarations · anchored
  • test:protocol.executable-contracts.case-colliding-path verifies spec:extraction.executable-contracts.case-colliding-path · anchored
  • test:protocol.executable-contracts.concreteness-refusal verifies spec:extraction.executable-contracts.concreteness-refusal · anchored
  • test:protocol.executable-contracts.multi-entry-example verifies spec:extraction.executable-contracts.multi-entry-example · anchored
  • test:protocol.register-recipes verifies spec:extraction.contract-declarations · anchored
  • test:protocol.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys.conflicting-example-key-withheld · anchored
  • test:protocol.step-keys.key-equal-to-a-skeleton-withheld verifies spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · anchored
  • test:protocol.step-keys.reworded-keyed-step-stays-bound verifies spec:carrier.step-keys.reworded-keyed-step-stays-bound · anchored
  • test:protocol.step-keys.reworded-unkeyed-step-breaks verifies spec:carrier.step-keys.reworded-unkeyed-step-breaks · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: requirementDiagram. Chosen syntax: flowchart TB because folds require exact labels unavailable in requirement syntax.

Decisions

  • Each example binds one point

    An example binds exactly one point; table syntax may expand statically into sibling examples and renderers may project siblings as a table.

Runtime
  • component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · context protocol

    Uses

    • component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol
    • component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocol
    • component:protocol.reader · the typed graph contract and body evaluator · src/reader/reader.ts:671 · layer application · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:72 · layer domain · context protocol
  • component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

  • impl:protocol.example-space · resolves example-space vocabulary for contracts and floors · src/graph/example-space.ts:117

    Component: component:protocol.graph · the one graph and its semantic decisions · src/graph/schema.ts:34 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647

    Component: component:protocol.codegen · contracts and registrar output · src/codegen/contracts.ts:633 · layer application · 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:extraction.executable-contracts

Shown as text: this drawing exceeds the height budget of 2000 pixels after folding.

The diagram as text
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:carrier.step-keys.conflicting-example-key-withheld: An example marker that disagrees with its vocabulary withholds the contract
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld: A step key equal to another step's skeleton withholds the contract
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound: A keyed step reworded in its vocabulary and its example keeps its binding
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks: The same rewording without a key breaks the binding
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:consumers.spec-studio.verification-panels: The panels for examples, targets, verifiers and evidence
  • spec:decisions.point-per-example: Each example binds one point
  • spec:extraction.build-pipeline: The build pipeline has one ordered flow
  • spec:extraction.contract-declarations: Pinned declarations give an adopter a derived module to typecheck
  • spec:extraction.example-runner: A bound example runs its contract steps against a fresh world
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples
  • spec:extraction.executable-contracts.case-colliding-path: A case-only path collision withholds the whole contracts tree
  • spec:extraction.executable-contracts.concreteness-refusal: An unbound slot in a used step earns no step contract
  • spec:extraction.executable-contracts.multi-entry-example: A second structured entry is named, never left silently inert
  • spec:extraction.executable-examples: Bound examples execute their authored steps
  • spec:extraction.runnable-modules: Derived runnable modules freeze the registrar interface
  • spec:extraction.executable-contracts decidedBy spec:decisions.point-per-example · declared
  • spec:extraction.executable-contracts dependsOn spec:carrier.step-keys · declared — a keyed step's contract key is its step key
  • spec:extraction.executable-contracts refines spec:extraction.build-pipeline · declared
  • spec:extraction.executable-contracts refines spec:extraction.executable-examples · declared — typed contracts carry the authored steps and example space into execution
  • spec:consumers.agent-surface.example-space-coverage dependsOn spec:extraction.executable-contracts · declared — its decoded slots and bound points reuse the space-contract interpretation
  • spec:consumers.spec-studio.verification-panels dependsOn spec:extraction.executable-contracts · declared
  • spec:extraction.example-runner dependsOn spec:extraction.executable-contracts · declared — runs the step contracts the build emits
  • spec:extraction.runnable-modules dependsOn spec:extraction.executable-contracts · declared
  • spec:extraction.contract-declarations refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.case-colliding-path refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal refines spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example refines spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.conflicting-example-key-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.key-equal-to-a-skeleton-withheld verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-keyed-step-stays-bound verifies spec:extraction.executable-contracts · declared
  • spec:carrier.step-keys.reworded-unkeyed-step-breaks verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.case-colliding-path verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.concreteness-refusal verifies spec:extraction.executable-contracts · declared
  • spec:extraction.executable-contracts.multi-entry-example verifies spec:extraction.executable-contracts · declared

Rests on

Rested on by

Distance 1

Distance 2

Distance 3

Distance 4

Distance 5

Distance 6

Distance 7

Distance 8

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingEach example binds one point
spec:decisions.point-per-example · resolves
declaredNoneNone
dependsOn · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declareda keyed step's contract key is its step keyNone
refines · outgoingThe build pipeline has one ordered flow
spec:extraction.build-pipeline · resolves
declaredNoneNone
refines · outgoingBound examples execute their authored steps
spec:extraction.executable-examples · resolves
declaredtyped contracts carry the authored steps and example space into executionNone
dependsOn · incomingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredits decoded slots and bound points reuse the space-contract interpretationNone
dependsOn · incomingThe panels for examples, targets, verifiers and evidence
spec:consumers.spec-studio.verification-panels · resolves
declaredNoneNone
dependsOn · incomingA bound example runs its contract steps against a fresh world
spec:extraction.example-runner · resolves
declaredruns the step contracts the build emitsNone
dependsOn · incomingDerived runnable modules freeze the registrar interface
spec:extraction.runnable-modules · resolves
declaredNoneNone
refines · incomingPinned declarations give an adopter a derived module to typecheck
spec:extraction.contract-declarations · resolves
declaredNoneNone
refines · incomingA case-only path collision withholds the whole contracts tree
spec:extraction.executable-contracts.case-colliding-path · resolves
declaredNoneNone
refines · incomingAn unbound slot in a used step earns no step contract
spec:extraction.executable-contracts.concreteness-refusal · resolves
declaredNoneNone
refines · incomingA second structured entry is named, never left silently inert
spec:extraction.executable-contracts.multi-entry-example · resolves
declaredNoneNone
verifies · incomingAn example marker that disagrees with its vocabulary withholds the contract
spec:carrier.step-keys.conflicting-example-key-withheld · resolves
declaredNonekeyConflicts
verifies · incomingA step key equal to another step's skeleton withholds the contract
spec:carrier.step-keys.key-equal-to-a-skeleton-withheld · resolves
declaredNonekeyConflicts
verifies · incomingA keyed step reworded in its vocabulary and its example keeps its binding
spec:carrier.step-keys.reworded-keyed-step-stays-bound · resolves
declaredNonecontractKeys
verifies · incomingThe same rewording without a key breaks the binding
spec:carrier.step-keys.reworded-unkeyed-step-breaks · resolves
declaredNonecontractKeys
verifies · incomingA case-only path collision withholds the whole contracts tree
spec:extraction.executable-contracts.case-colliding-path · resolves
declaredNonecaseCollision
verifies · incomingAn unbound slot in a used step earns no step contract
spec:extraction.executable-contracts.concreteness-refusal · resolves
declaredNoneconcreteness
verifies · incomingA second structured entry is named, never left silently inert
spec:extraction.executable-contracts.multi-entry-example · resolves
declaredNoneonePoint

Bindings

Implementation binding: present

  • impl:protocol.example-space · resolves example-space vocabulary for contracts and floors · src/graph/example-space.ts:117 · role decider · component component:protocol.graph · layer domain · context protocol
  • impl:protocol.executable-contracts · derives step and example-space contracts from the graph · src/codegen/contracts.ts:647 · role projection · component component:protocol.codegen · layer application · 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.