outcomeA keyed term is reified and its address resolves
spec:model.term-addresses.keyed-term-resolvesPacks: pack:adopter-speed-v1, pack:self-hosting-v1
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/model/term-addresses.keyed-term-resolves.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **slot** — one typed placeholder in a step"}
a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the firstWhen
the extractor reifies both carriers and the graph is validated
Then
the first carrier is reified: {reified: true}
the first extraction finding's message contains {extractMessage: ""}
the graph holds the term keys {keys: "stepKey"}
the report holds {mentionErrors: 0} prose-mention errors
address resolution resolves the address to the marker-free definition at its recorded term location: {resolved: true}
entry search for the addressed term's words finds it at that same address and line: {found: true}Composing needs the script.
Intent
- Execute the term marker and the term address on one keyed term beside an unkeyed one, and show that address resolution and entry search find the term at the line the location table records.
Behavior
Examples
Given a {carrier: "Markdown"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker; - **slot** — one typed placeholder in a step"}
Given a second Spec that names {address: "spec:probe.subject#term.stepKey"} in its narrative and declares dependsOn on the first
When the extractor reifies both carriers and the graph is validated
Then the first carrier is reified: {reified: true}
Then the first extraction finding's message contains {extractMessage: ""}
Then the graph holds the term keys {keys: "stepKey"}
Then the report holds {mentionErrors: 0} prose-mention errors
Then address resolution resolves the address to the marker-free definition at its recorded term location: {resolved: true}
Then entry search for the addressed term's words finds it at that same address and line: {found: true}Verification
Verifier bindings
- test:protocol.term-addresses.keyed-term-resolves · anchored · test anchor binding present ·
test/self-hosting-term-addresses.test.ts:16External run evidence from
test/self-hosting-term-addresses.test.tsTest anchors:
test:protocol.term-addresses.keyed-term-resolves,test:protocol.term-addresses.malformed-term-marker-refused,test:protocol.term-addresses.repeated-term-key-refused,test:protocol.term-addresses.typescript-term-imports-keyed,test:protocol.term-addresses.unknown-term-key-refused. Specs verified by those bindings: spec:model.term-addresses, spec:model.term-addresses.keyed-term-resolves, spec:model.term-addresses.malformed-term-marker-refused, spec:model.term-addresses.repeated-term-key-refused, spec:model.term-addresses.typescript-term-imports-keyed, spec:model.term-addresses.unknown-term-key-refused.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
Name Suite Result Duration executes the bound example against a fresh world A keyed term is reified and its address resolves (spec:model.term-addresses.keyed-term-resolves) passed 30.53 ms executes the bound example against a fresh world A term marker whose key is off the grammar refuses its carrier (spec:model.term-addresses.malformed-term-marker-refused) passed 8.46 ms executes the bound example against a fresh world A term key repeated in one Spec refuses its carrier (spec:model.term-addresses.repeated-term-key-refused) passed 5.37 ms executes the bound example against a fresh world A keyed TypeScript term keeps its address through import to Markdown (spec:model.term-addresses.typescript-term-imports-keyed) passed 38.98 ms executes the bound example against a fresh world An address that names a term key no term carries is an error (spec:model.term-addresses.unknown-term-key-refused) passed 4.33 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
The diagram as text
- spec:model.term-addresses.keyed-term-resolves: A keyed term is reified and its address resolves · declared Spec
- spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
- test:protocol.term-addresses.keyed-term-resolves: test:protocol.term-addresses.keyed-term-resolves · anchored test binding · binding present ·
test/self-hosting-term-addresses.test.ts:16 - spec:model.term-addresses.keyed-term-resolves refines spec:model.term-addresses · declared
- spec:model.term-addresses.keyed-term-resolves verifies spec:model.term-addresses · declared
- test:protocol.term-addresses.keyed-term-resolves verifies spec:model.term-addresses.keyed-term-resolves · 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
No implementation neighborhood recorded.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
- E2: verifies · declared
The diagram as text
- spec:model.term-addresses: A Model term may carry a key that addresses it
- spec:model.term-addresses.keyed-term-resolves: A keyed term is reified and its address resolves
- spec:model.term-addresses.keyed-term-resolves refines spec:model.term-addresses · declared
- spec:model.term-addresses.keyed-term-resolves verifies spec:model.term-addresses · 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
- refines · spec:model.term-addresses · stated ready, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | None |
| verifies · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | None | termMarker, termAddress, termLocations, termReaders |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.term-addresses.keyed-term-resolves · anchored ·
test/self-hosting-term-addresses.test.ts:16· test anchor
Expected-outcome oracle: none
Runtime observation: not tracked.
Run results: not recorded in the graph.
Findings
None.
Composing (0)
Composing needs the script.