outcomeA keyed TypeScript term keeps its address through import to Markdown
spec:model.term-addresses.typescript-term-imports-keyedPacks: 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.typescript-term-imports-keyed.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding present, and expected-outcome oracle none.
Given
a {carrier: "TypeScript"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker"}
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
the first carrier imported to Markdown writes the entry {importedEntry: "- **step key** — [#stepKey] the key a step carries in its marker"} and keeps its term keys and definitions: {keptOnImport: true}Composing needs the script.
Intent
- Execute the term marker in the TypeScript carrier: a keyed definition string is reified with its key, its address resolves, and importing the carrier to Markdown writes the marker and extracts to the same term keys and definitions.
Behavior
Examples
Given a {carrier: "TypeScript"} Spec carrier {specId: "spec:probe.subject"} whose Model terms read {terms: "- **step key** — [#stepKey] the key a step carries in its marker"}
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 the first carrier imported to Markdown writes the entry {importedEntry: "- **step key** — [#stepKey] the key a step carries in its marker"} and keeps its term keys and definitions: {keptOnImport: true}Verification
Verifier bindings
- test:protocol.term-addresses.typescript-term-imports-keyed · anchored · test anchor binding present ·
test/self-hosting-term-addresses.test.ts:157External 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 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z
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 31.89 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 7.42 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 7.57 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 33.79 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 2.92 ms
Design view
Requirement drawing
- Satisfying or referencing units: no recorded binding.
The diagram as text
- spec:model.term-addresses.typescript-term-imports-keyed: A keyed TypeScript term keeps its address through import to Markdown · declared Spec
- spec:model.term-addresses: A Model term may carry a key that addresses it · declared Spec
- test:protocol.term-addresses.typescript-term-imports-keyed: test:protocol.term-addresses.typescript-term-imports-keyed · anchored test binding · binding present ·
test/self-hosting-term-addresses.test.ts:157 - spec:model.term-addresses.typescript-term-imports-keyed refines spec:model.term-addresses · declared
- spec:model.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses · declared
- test:protocol.term-addresses.typescript-term-imports-keyed verifies spec:model.term-addresses.typescript-term-imports-keyed · 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.typescript-term-imports-keyed: A keyed TypeScript term keeps its address through import to Markdown
- spec:model.term-addresses.typescript-term-imports-keyed refines spec:model.term-addresses · declared
- spec:model.term-addresses.typescript-term-imports-keyed 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 |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: present
- test:protocol.term-addresses.typescript-term-imports-keyed · anchored ·
test/self-hosting-term-addresses.test.ts:157· 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.