Spec Studio

Slot notation declares, binds, and refuses to guess

spec:carrier.slot-notationBusiness Rule · storyready floor ready

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/carrier/slot-notation.sdp.md

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

A closed union takes two or more literals because a dimension with one value varies nothing. A vocabulary that means one fixed word writes it as step text, so a group holding one quoted literal stays what it is in an example, a binding, and declares no dimension.

Intent
outcome
Give step text one owned typed placeholder syntax whose normalized identity a generated contract can key on.
Rule

A bound value cannot hold a double quote, so a point writes each double quote its step text needs as a single quote, and the world restores them before it parses. The world also runs contract generation over a parent whose example space holds the restored step text as its one Given step; the generation finding is nothing when generation reports none.

rule.slotName line 17 · specs/carrier/slot-notation.sdp.md:17
A slot group opens with a name matching ASCII [A-Za-z_][A-Za-z0-9_]*, and __proto__ is always a malformed slot; a brace group that does not open with such a name is prose, and prose is never policed.

spec:carrier.slot-notation.refused-guess · enabled

rule.typeForm line 18 · specs/carrier/slot-notation.sdp.md:18
A vocabulary slot declares a type only in the ratified type form — number, string, boolean, or a closed union of two or more quoted literals — while an example binds one scalar literal in the same position.

spec:carrier.slot-notation.typed-declaration · enabled

rule.skeletonIdentity line 19 · specs/carrier/slot-notation.sdp.md:19
The skeleton — every slot group normalized to {name} with prose braces left untouched — is the step's identity: it matches an example step to its vocabulary entry, makes a declaration and its binding the same step, and keys the generated step contract unless the step carries a step key under spec:carrier.step-keys.

spec:carrier.slot-notation.typed-declaration · enabled

rule.unusableSlot line 20 · specs/carrier/slot-notation.sdp.md:20
An identifier-led group whose remainder parses as neither a type nor a value stays a named but unusable slot: it declares nothing, binds nothing, and reads as unbound rather than being guessed into meaning.

spec:carrier.slot-notation.refused-guess · enabled

rule.oneLiteralBinding line 21 · specs/carrier/slot-notation.sdp.md:21
A group holding one double-quoted literal, {x: "only"}, is a binding; in a vocabulary it declares no type, no one-value dimension, and contract generation reports contracts/untyped-vocabulary-slot.

spec:carrier.slot-notation.one-literal-binding · enabled

rule.bareGroup line 22 · specs/carrier/slot-notation.sdp.md:22
A bare group, {n}, names a slot and binds nothing; in an example it is unbound, and in a vocabulary it declares no type.

no example exercises it

rule.localDegradation line 23 · specs/carrier/slot-notation.sdp.md:23
Lexical degradation stays local: a stray or unterminated brace group is prose only up to the next candidate, so it never swallows a well-formed binding that follows it.

spec:carrier.slot-notation.refused-guess · enabled

0 unkeyed rules.

Verifying examples

A one-literal group in a vocabulary is a binding that declares nothing · spec:carrier.slot-notation.one-literal-binding · ready floor ready

Executable Spec

Given the step text {stepText: "the cart is in {mode: 'only'} mode"}
When the notation parses the step text
Then the notation finds {slotCount: 1} slot groups
Then the first group has the form {form: "bound"} and the name {slotName: "mode"}
Then the step skeleton is {skeleton: "the cart is in {mode} mode"}
Then contract generation declares {dimensionCount: 0} dimensions and reports {generationFinding: "contracts/untyped-vocabulary-slot"}

Open example

A stray brace stays prose while an unusable group stays a named slot · spec:carrier.slot-notation.refused-guess · ready floor ready

Executable Spec

Given the step text {stepText: "a stray { then {n: maybe} line items"}
When the notation parses the step text
Then the notation finds {slotCount: 1} slot groups
Then the first group has the form {form: "malformed"} and the name {slotName: "n"}
Then the step skeleton is {skeleton: "a stray { then {n} line items"}

Open example

A typed declaration normalizes to the skeleton its binding shares · spec:carrier.slot-notation.typed-declaration · ready floor ready

Executable Spec

Given the step text {stepText: "a cart with {n:number} line items"}
When the notation parses the step text
Then the notation finds {slotCount: 1} slot groups
Then the first group has the form {form: "typed"} and the name {slotName: "n"}
Then the step skeleton is {skeleton: "a cart with {n} line items"}

Open example

Example space

Given the step text {stepText:string}
When the notation parses the step text
Then the notation finds {slotCount:number} slot groups
Then the first group has the form {form:"bare"|"typed"|"bound"|"malformed"} and the name {slotName:string}
Then the step skeleton is {skeleton:string}
Then contract generation declares {dimensionCount:number} dimensions and reports {generationFinding:string}
Verification

Verifier bindings

  • spec:carrier.slot-notation.one-literal-binding · A one-literal group in a vocabulary is a binding that declares nothing · declared · example enabled · specs/carrier/slot-notation.one-literal-binding.sdp.md

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

    Test anchors: test:protocol.markdown-parser.bounded-parity, test:protocol.open-question-fields.dropped-list-warns, test:protocol.slot-notation.one-literal-binding, test:protocol.slot-notation.refused-guess, test:protocol.slot-notation.typed-declaration. Specs verified by those bindings: spec:carrier.markdown-parser, spec:carrier.markdown-parser.bounded-parity, spec:carrier.slot-notation, spec:carrier.slot-notation.one-literal-binding, spec:carrier.slot-notation.refused-guess, spec:carrier.slot-notation.typed-declaration, spec:model.open-question-fields, spec:model.open-question-fields.dropped-list-warns.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldOne finding class is shared while the carriers' outcomes stay their own (spec:carrier.markdown-parser.bounded-parity)passed43.71 ms
    executes the bound example against a fresh worldA typed declaration normalizes to the skeleton its binding shares (spec:carrier.slot-notation.typed-declaration)passed1.52 ms
    executes the bound example against a fresh worldA stray brace stays prose while an unusable group stays a named slot (spec:carrier.slot-notation.refused-guess)passed0.45 ms
    executes the bound example against a fresh worldA one-literal group in a vocabulary is a binding that declares nothing (spec:carrier.slot-notation.one-literal-binding)passed2.74 ms
    executes the bound example against a fresh worldA TypeScript question list that cannot be read drops whole with a warning (spec:model.open-question-fields.dropped-list-warns)passed11.66 ms
    drops the whole question list for a non-static question textnot recordedpassed6.04 ms
    drops the whole question list for a non-static blocking flagnot recordedpassed6.76 ms
    drops the whole question list for a spread in the listnot recordedpassed8.19 ms
  • spec:carrier.slot-notation.refused-guess · A stray brace stays prose while an unusable group stays a named slot · declared · example enabled · specs/carrier/slot-notation.refused-guess.sdp.md
  • spec:carrier.slot-notation.typed-declaration · A typed declaration normalizes to the skeleton its binding shares · declared · example enabled · specs/carrier/slot-notation.typed-declaration.sdp.md

Example space

  • stepText · string · declared by the step text {stepText}

Bound points

ExamplestepText
spec:carrier.slot-notation.one-literal-binding"the cart is in {mode: 'only'} mode"
spec:carrier.slot-notation.refused-guess"a stray { then {n: maybe} line items"
spec:carrier.slot-notation.typed-declaration"a cart with {n:number} line items"

Oracle binding: present · oracle:protocol.slot-notation · test/self-hosting-carrier.test.ts:191

Coverage

stepText: "the cart is in {mode: 'only'} mode" · spec:carrier.slot-notation.one-literal-binding; "a stray { then {n: maybe} line items" · spec:carrier.slot-notation.refused-guess; "a cart with {n:number} line items" · spec:carrier.slot-notation.typed-declaration · not enumerable

Unbound

  • stepText: None
Design view

Requirement drawing

Requirement drawing for spec:carrier.slot-notation
The diagram as text
  • spec:carrier.slot-notation: Slot notation declares, binds, and refuses to guess · declared Spec
  • spec:carrier.slot-notation.one-literal-binding: A one-literal group in a vocabulary is a binding that declares nothing · declared Spec
  • spec:carrier.slot-notation.refused-guess: A stray brace stays prose while an unusable group stays a named slot · declared Spec
  • spec:carrier.slot-notation.typed-declaration: A typed declaration normalizes to the skeleton its binding shares · declared Spec
  • spec:carrier.step-keys: An example step may carry a key that survives rewording · 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.gherkin-keyed-step-stays-bound: A keyed Gherkin step keeps its binding across a rewording · 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.malformed-marker-refused: A step marker whose key is off the grammar refuses the carrier · declared Spec
  • spec:carrier.step-keys.renamed-key-breaks: Renaming a step key breaks the binding · declared Spec
  • spec:carrier.step-keys.repeated-key-refused: One key on two vocabulary steps refuses the carrier · 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.two-keys-on-one-step-refused: Two keys on one step refuse the carrier · declared Spec
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed: A keyed TypeScript step keeps its key through import to Markdown · declared Spec
  • spec:carrier.markdown-authoring: Markdown authoring enters the one graph · declared Spec
  • spec:extraction.executable-contracts: The build derives step and space contracts from graph examples · declared Spec
  • component:protocol.notation: the leaf step codec · anchored code · src/notation/slots.ts:261
  • impl:protocol.example-runner: plans and executes a bound example against the caller's world · anchored code · src/runner/index.ts:108
  • impl:protocol.example-space-decoding: shared example-space interpretation for contracts and reader contexts · anchored code · src/notation/example-space.ts:473
  • impl:protocol.executable-contracts: derives step and example-space contracts from the graph · anchored code · src/codegen/contracts.ts:647
  • impl:protocol.key-markers: normalizes step and term markers across the three carriers · anchored code · src/extract/key-markers.ts:136
  • impl:protocol.open-section-order: preserves authored open-section and model-term order and Pack field order · anchored code · src/extract/serialize.ts:105
  • impl:protocol.sdp-import-markdown-emit: emits the Markdown document twin for an imported Spec · anchored code · src/import/emit-markdown.ts:253
  • impl:protocol.slot-notation: parses slot groups and normalizes a step to its skeleton · anchored code · src/notation/slots.ts:269
  • impl:protocol.spec-sections: typed Spec section shapes · anchored code · src/model/sections.ts:138
  • oracle:protocol.slot-notation: oracle:protocol.slot-notation · anchored oracle binding · test/self-hosting-carrier.test.ts:191
  • test:protocol.keyed-content: test:protocol.keyed-content · anchored test binding · binding present · test/keyed-content.test.ts:28
  • test:protocol.slot-notation.one-literal-binding: test:protocol.slot-notation.one-literal-binding · anchored test binding · binding present · test/self-hosting-carrier.test.ts:258
  • test:protocol.slot-notation.refused-guess: the refusal point verifies prose braces and the unusable slot · anchored test binding · binding present · test/self-hosting-carrier.test.ts:231
  • test:protocol.slot-notation.typed-declaration: the declaration point verifies the typed form and its skeleton · anchored test binding · binding present · test/self-hosting-carrier.test.ts:205
  • 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.gherkin-keyed-step-stays-bound: test:protocol.step-keys.gherkin-keyed-step-stays-bound · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:73
  • 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.malformed-marker-refused: test:protocol.step-keys.malformed-marker-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:167
  • test:protocol.step-keys.renamed-key-breaks: test:protocol.step-keys.renamed-key-breaks · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:214
  • test:protocol.step-keys.repeated-key-refused: test:protocol.step-keys.repeated-key-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:261
  • 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
  • test:protocol.step-keys.two-keys-on-one-step-refused: test:protocol.step-keys.two-keys-on-one-step-refused · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:402
  • test:protocol.step-keys.typescript-keyed-step-imports-keyed: test:protocol.step-keys.typescript-keyed-step-imports-keyed · anchored test binding · binding present · test/self-hosting-step-keys.test.ts:449
  • spec:carrier.slot-notation refines spec:carrier.markdown-authoring · declared
  • spec:carrier.slot-notation.one-literal-binding refines spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.one-literal-binding verifies spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.refused-guess refines spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.refused-guess verifies spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.typed-declaration refines spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.typed-declaration verifies spec:carrier.slot-notation · declared
  • spec:carrier.step-keys refines spec:carrier.slot-notation · declared — a key joins the step text the notation reads, ahead of its slots
  • 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.gherkin-keyed-step-stays-bound refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys · 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.malformed-marker-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.malformed-marker-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.renamed-key-breaks verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.repeated-key-refused verifies spec:carrier.step-keys · 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:carrier.step-keys.two-keys-on-one-step-refused refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed refines spec:carrier.step-keys · declared
  • spec:carrier.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys · declared
  • component:protocol.notation satisfies spec:carrier.slot-notation · anchored
  • impl:protocol.example-runner satisfies spec:carrier.step-keys · anchored
  • impl:protocol.example-space-decoding satisfies spec:carrier.step-keys · anchored
  • impl:protocol.executable-contracts satisfies spec:carrier.step-keys · anchored
  • impl:protocol.key-markers satisfies spec:carrier.step-keys · anchored
  • impl:protocol.open-section-order satisfies spec:carrier.step-keys · anchored
  • impl:protocol.sdp-import-markdown-emit satisfies spec:carrier.step-keys · anchored
  • impl:protocol.slot-notation satisfies spec:carrier.slot-notation · anchored
  • impl:protocol.spec-sections satisfies spec:carrier.step-keys · anchored
  • oracle:protocol.slot-notation models spec:carrier.slot-notation · anchored
  • test:protocol.keyed-content verifies spec:carrier.step-keys · anchored
  • test:protocol.slot-notation.one-literal-binding verifies spec:carrier.slot-notation.one-literal-binding · anchored
  • test:protocol.slot-notation.refused-guess verifies spec:carrier.slot-notation.refused-guess · anchored
  • test:protocol.slot-notation.typed-declaration verifies spec:carrier.slot-notation.typed-declaration · anchored
  • test:protocol.step-keys.conflicting-example-key-withheld verifies spec:carrier.step-keys.conflicting-example-key-withheld · anchored
  • test:protocol.step-keys.gherkin-keyed-step-stays-bound verifies spec:carrier.step-keys.gherkin-keyed-step-stays-bound · 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.malformed-marker-refused verifies spec:carrier.step-keys.malformed-marker-refused · anchored
  • test:protocol.step-keys.renamed-key-breaks verifies spec:carrier.step-keys.renamed-key-breaks · anchored
  • test:protocol.step-keys.repeated-key-refused verifies spec:carrier.step-keys.repeated-key-refused · 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
  • test:protocol.step-keys.two-keys-on-one-step-refused verifies spec:carrier.step-keys.two-keys-on-one-step-refused · anchored
  • test:protocol.step-keys.typescript-keyed-step-imports-keyed verifies spec:carrier.step-keys.typescript-keyed-step-imports-keyed · 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

No decision record named.

Runtime
  • component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · layer domain · context protocol

    Uses

    None.

  • impl:protocol.slot-notation · parses slot groups and normalizes a step to its skeleton · src/notation/slots.ts:269

    Component: component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · 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:carrier.slot-notation
The diagram as text
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph
  • spec:carrier.markdown-authoring: Markdown authoring enters the one graph
  • spec:carrier.markdown-body-grammar: The Markdown body accepts one closed form per section
  • spec:carrier.slot-notation: Slot notation declares, binds, and refuses to guess
  • spec:carrier.slot-notation.one-literal-binding: A one-literal group in a vocabulary is a binding that declares nothing
  • spec:carrier.slot-notation.refused-guess: A stray brace stays prose while an unusable group stays a named slot
  • spec:carrier.slot-notation.typed-declaration: A typed declaration normalizes to the skeleton its binding shares
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:consumers.agent-surface.example-space-coverage: Example spaces report which values their examples cover
  • spec:carrier.slot-notation refines spec:carrier.markdown-authoring · declared
  • spec:carrier.gherkin-authoring dependsOn spec:carrier.slot-notation · declared
  • spec:carrier.markdown-body-grammar dependsOn spec:carrier.slot-notation · declared
  • spec:consumers.agent-surface.example-space-coverage dependsOn spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.one-literal-binding refines spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.refused-guess refines spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.typed-declaration refines spec:carrier.slot-notation · declared
  • spec:carrier.step-keys refines spec:carrier.slot-notation · declared — a key joins the step text the notation reads, ahead of its slots
  • spec:carrier.slot-notation.one-literal-binding verifies spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.refused-guess verifies spec:carrier.slot-notation · declared
  • spec:carrier.slot-notation.typed-declaration verifies spec:carrier.slot-notation · 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

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingMarkdown authoring enters the one graph
spec:carrier.markdown-authoring · resolves
declaredNoneNone
dependsOn · incomingGherkin authoring enters the one graph
spec:carrier.gherkin-authoring · resolves
declaredNoneNone
dependsOn · incomingThe Markdown body accepts one closed form per section
spec:carrier.markdown-body-grammar · resolves
declaredNoneNone
dependsOn · incomingExample spaces report which values their examples cover
spec:consumers.agent-surface.example-space-coverage · resolves
declaredNoneNone
refines · incomingA one-literal group in a vocabulary is a binding that declares nothing
spec:carrier.slot-notation.one-literal-binding · resolves
declaredNoneNone
refines · incomingA stray brace stays prose while an unusable group stays a named slot
spec:carrier.slot-notation.refused-guess · resolves
declaredNoneNone
refines · incomingA typed declaration normalizes to the skeleton its binding shares
spec:carrier.slot-notation.typed-declaration · resolves
declaredNoneNone
refines · incomingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declareda key joins the step text the notation reads, ahead of its slotsNone
verifies · incomingA one-literal group in a vocabulary is a binding that declares nothing
spec:carrier.slot-notation.one-literal-binding · resolves
declaredNoneoneLiteralBinding
verifies · incomingA stray brace stays prose while an unusable group stays a named slot
spec:carrier.slot-notation.refused-guess · resolves
declaredNoneslotName, unusableSlot, localDegradation
verifies · incomingA typed declaration normalizes to the skeleton its binding shares
spec:carrier.slot-notation.typed-declaration · resolves
declaredNonetypeForm, skeletonIdentity

Bindings

Implementation binding: present

  • component:protocol.notation · the leaf step codec · src/notation/slots.ts:261 · role codec · layer domain · context protocol
  • impl:protocol.slot-notation · parses slot groups and normalizes a step to its skeleton · src/notation/slots.ts:269 · role codec · component component:protocol.notation · layer domain · context protocol

Design reference: none

Verifier binding: present

Expected-outcome oracle: present

  • oracle:protocol.slot-notation · test/self-hosting-carrier.test.ts:191

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.