outcomeEvery Spec id written in prose resolves
spec:validation.prose-mentionsPacks: pack:self-hosting-v1
Design: no design entries · no pinned declarations · 1 decision
Findings: no errors, no warnings
specs/validation/prose-mentions.sdp.md
No open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
Intent
- Refuse a prose reference to an absent Spec or entry, and report a prose reference that no declared relation backs.
Rule
ruleline 21 ·specs/validation/prose-mentions.sdp.md:21- The validator id is
conformance/prose-mentions, in the conformance family; it reads the graph's Primitive nodes, edges and location table and nothing else. ruleline 22 ·specs/validation/prose-mentions.sdp.md:22- The scanned text of a Spec is its narrative and every string value under its sections, except the
gwt-vocabularyfence atbehavior.exampleSpaceand thegwtfences that are object entries ofbehavior.examples. The title is not scanned. Scan order is the narrative first, then the sections in the serialized graph's order, then entries in their authored order. ruleline 23 ·specs/validation/prose-mentions.sdp.md:23- A mention starts at
spec:where the character before it, if any, is not an ASCII letter, an ASCII digit, or-. A backslash before ASCII punctuation is read as that punctuation, as Markdown reads an escape. The token ends at ASCII whitespace, at one of the ASCII delimiters`"'()[]{}<>|, or at a character outside ASCII that is whitespace, U+0085 included, punctuation other than connector punctuation, a symbol, or a space, line, or paragraph separator, so every dash, ellipsis, typographic quote, and arrow ends it. Every other character stays in the token, letters, combining marks, digits, connector punctuation, control characters other than whitespace, and format, private-use, and unassigned characters among them. Trailing.,;:!?*_~are then removed after the prefix, so a sentence, a list, or emphasis may end in an id. When nothing remains afterspec:, there is no mention, so a bare prefix or a placeholder such asspec:<id>stays prose. The whole token goes toparseId, so an underscore, a slash, a comma, a control character, or any character outside ASCII that stays in it refuses the whole token as malformed; the token is never cut short to the valid id before that character, and a refused token counts toward no pair. A token equal to the scanning Spec's own id is skipped. ruleline 24 ·specs/validation/prose-mentions.sdp.md:24- An open question's links entry is checked whole as a Spec id or entry address, under
spec:model.open-question-fields, at pathintent.openQuestions[<i>].links[<j>]. It uses the same malformed-token error; an otherwise parsed id outside the Spec namespace has reasonexpected spec namespace. ruleline 25 ·specs/validation/prose-mentions.sdp.md:25- A token that fails
parseIdis an error with the messageMention "<token>" in "<spec>" at <path> is not a Spec id or entry address: <reason>, where<reason>is the grammar's refusal text with itsInvalid ID "<token>":prefix stripped. ruleline 26 ·specs/validation/prose-mentions.sdp.md:26- A token whose Spec part names no Primitive node is an error with the message
Mention in "<spec>" at <path> points to missing target "<token>"., followed by the referential-integrity nearest-id suggestion when one is unique. ruleline 27 ·specs/validation/prose-mentions.sdp.md:27- A token whose Spec exists and whose entry address names no key of that
designoruisection, namesdescriptionthere, names a question key no open question of that Spec carries, names a rule key that Spec'sbehavior.ruleKeysdoes not carry, or names a term key that Spec'smodel.termKeysdoes not carry, is an error with the messageMention in "<spec>" at <path> points to missing entry "<section>.<key>" of "<target>". ruleline 28 ·specs/validation/prose-mentions.sdp.md:28- Errors are reported once per scanning Spec, text path, and distinct token;
subjectIdis the scanning Spec,relatedIdthe token as written,paththe text path, andfilethe Spec's carrier. The path isnarrativeor the section path in the mention audit's form, such asintent.openQuestions[0].question,behavior.rules[2],design.step2, ormodel.terms.<term>. ruleline 29 ·specs/validation/prose-mentions.sdp.md:29- A target Spec that exists and shares no declared
refines,dependsOn,constrainedBy,decidedBy,verifies, orsupersedesedge with the scanning Spec, in either direction, is one warning per scanning Spec and target Spec pair, counting every location where any token names that Spec or one of its entries. The message isMention of "<target>" in "<spec>" at <n> locations, first at <path>, with no declared relation between them; informative only. Declare the relation that fits, or leave the mention as prose and let the warning stand when none does.with<n>the count of distinct paths, written1 locationwhen it is one, and<path>the first in scan order;subjectIdis the scanning Spec,relatedIdthe target Spec id,paththat first path, andfilethe Spec's carrier. An address on the scanning Spec's own id is checked for its entry and never warned. ruleline 30 ·specs/validation/prose-mentions.sdp.md:30- A mention error or pair warning carries
linewhen the location table records the corresponding text path;behavior.rules[<i>]usesrule[<i>],behavior.flows[<i>]usesflow[<i>], an open question's text usesquestion[<i>], a question field usesquestion[<i>].<field>, with each question link using thelinksrow, and a Model term's definition, atmodel.terms.<term>, usesterm[<i>]. Entries of Rule, Workflow and Contract use the same behavior paths as entries of Behavior. An unrecorded line is omitted. ruleline 31 ·specs/validation/prose-mentions.sdp.md:31- The warning is honest when it stands: the six relations are typed, a mention that none of them describes is lawful prose, and no author declares a relation to silence the report. Warnings never fail
sdp validate; the mention audit recipe reports every location of every pair as data and stays the way to list them at once.
11 unkeyed rules.
Verification
Verifier bindings
- test:protocol.entry-locations · anchored · test anchor binding present ·
test/entry-locations.test.ts:14External run evidence from
test/entry-locations.test.tsTest anchors:
test:protocol.entry-locations. Specs verified by those bindings: spec:extraction.entry-locations, spec:validation.prose-mentions.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 locates each Gherkin relation at its own tag and defaults at the Scenario line entry locations passed 6.91 ms records Markdown Design, UI, keyed and unkeyed questions at their first item lines entry locations passed 11.12 ms locates Markdown question fields, rules, flows and declared relation targets entry locations passed 3.12 ms records TypeScript property lines through transparent wrappers entry locations passed 22.49 ms locates TypeScript string questions and omits properties dropped as non-static entry locations passed 6.06 ms locates Gherkin rules and relations while keeping open questions outside its grammar entry locations passed 4.41 ms sorts Specs and entries in code-unit order and serializes reversed rows identically entry locations passed 4.36 ms keeps Primitive and Pack nodes line-free when an edit above entries moves their lines entry locations passed 6.24 ms compares carrier parity on nodes and edges while locations differ entry locations passed 7 ms serializes an empty table for entries without recorded carrier lines entry locations passed 3.99 ms extracts the location table byte-identically twice entry locations passed 3.74 ms locates errors and warnings in behavior Behavior rule: entries prose mention finding lines passed 20.91 ms locates errors and warnings in behavior Behavior flow: entries prose mention finding lines passed 2.84 ms locates errors and warnings in rule Rule entries prose mention finding lines passed 2.29 ms locates errors and warnings in workflow Workflow entries prose mention finding lines passed 2.16 ms locates errors and warnings in workflow Workflow rule: entries prose mention finding lines passed 2.7 ms locates errors and warnings in contract Contract entries prose mention finding lines passed 1.89 ms locates question text, fields and links and omits an unrecorded line prose mention finding lines passed 1.69 ms - test:protocol.prose-mentions · verifies prose-mention resolution and the unbacked-pair warning · anchored · test anchor binding present ·
test/validators.test.ts:1321External run evidence from
test/validators.test.tsTest anchors:
test:protocol.prose-mentions. Specs verified by those bindings: spec:validation.prose-mentions.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 reports referential integrity across relations, pack members, modelRefs, and bindings graph validators passed 6.14 ms offers a "did you mean" suggestion only when one nearest id is unambiguous (L2) graph validators passed 1.2 ms reports duplicate node ids — the graph backstop behind the extractor's per-site errors graph validators passed 1.17 ms keeps the claim taxonomy uncollapsed: a declared satisfies edge violates the edge contract graph validators passed 0.53 ms admits no inferred edge on the ratified edge types: the claim ships designed-in and empty graph validators passed 0.68 ms rejects a node claim its nodeType never carries graph validators passed 0.4 ms rejects wrong-kind endpoints on the kind-typed relations — constrainedBy, decidedBy, supersedes graph validators passed 0.89 ms accepts the valid kind-typed relation shapes — rule/constraint bounds, a decision decider, decision supersedes decision graph validators passed 0.58 ms fails the anchors-resolve ready clause when a binding edge has no binding node behind it graph validators passed 0.68 ms reports a readiness-floor failure with the spec id, stated rung, and failing clause graph validators passed 0.7 ms surfaces the gap only while no verifier resolves — a derived fact silences it, a stated one never does graph validators passed 1.16 ms exempts decision-kind Specs from the gap signal while other kinds still warn graph validators passed 0.49 ms never lets an anchored verifies edge from a non-Anchor source enable an example — fail closed graph validators passed 0.99 ms refuses an oracle Anchor as the test binding for a direct verifier graph validators passed 2.54 ms refuses an oracle Anchor as the test binding for a example verifier graph validators passed 1.03 ms confers satisfies only when the duplicate target's first node is a Primitive graph validators passed 1.19 ms confers direct verifies only when the duplicate target's first node is a Primitive graph validators passed 1.32 ms confers example verifies only when the duplicate target's first node is a Primitive graph validators passed 2.59 ms rejects stated delivery facts the graph does not earn — derived, never authored graph validators passed 0.37 ms rejects an omitted delivery fact the graph's resolving bindings derive graph validators passed 0.46 ms fails closed on unratified descriptor values — a conformance error, never a crash or a silent floor skip graph validators passed 0.37 ms returns a valid empty aggregate report without throwing graph validators passed 0.22 ms composes cleanly over a valid non-empty model with bindings, a pack, and a model-kind modelRef graph validators passed 0.72 ms reports nothing when every listed member has its one edge and every edge is listed conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.3 ms names a listed member with no belongsTo edge into the pack conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.3 ms names a belongsTo edge whose source the members do not list conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.23 ms names a listed member that is no Spec when no edge carries it, and defers to the edge contract when one does conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.62 ms leaves an absent listed member whose edge dangles to referential integrity conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.53 ms leaves an unlisted belongsTo edge from an absent source to referential integrity conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.4 ms leaves an unlisted belongsTo edge from a CodeNode to the edge contract conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.33 ms names both membership counts when one listed member has two belongsTo edges conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.29 ms keeps the duplicate rule: a repeated member is named once, in authored order, with its count conformance/pack-coherence — the members list and the belongsTo edges agree passed 0.38 ms passes on its contract row (anchored, Anchor → Primitive) and confers no delivery fact the models edge — the oracle anchor's contract row passed 0.42 ms rejects a declared claim on a models edge — the claim taxonomy is never collapsed the models edge — the oracle anchor's contract row passed 0.36 ms rejects an oracle target that does not own a behavior example space the models edge — the oracle anchor's contract row passed 0.34 ms rejects competing oracle anchors for one parent example space the models edge — the oracle anchor's contract row passed 0.36 ms rejects a models edge whose Anchor does not use the oracle namespace the models edge — the oracle anchor's contract row passed 0.39 ms accepts a rule-kind oracle target when the rule owns an example space the models edge — the oracle anchor's contract row passed 0.25 ms rejects a models edge from a non-Anchor source — the endpoints are typed the models edge — the oracle anchor's contract row passed 0.24 ms flags a dangling models target through referential integrity, like every edge the models edge — the oracle anchor's contract row passed 0.32 ms refuses a malformed token with the id grammar's own reason conformance/prose-mentions — prose mentions and their entry addresses passed 0.69 ms refuses a missing target and suggests the unique nearest id conformance/prose-mentions — prose mentions and their entry addresses passed 1.63 ms refuses a missing target without a suggestion on a tie, once per path and distinct token conformance/prose-mentions — prose mentions and their entry addresses passed 1.57 ms refuses an entry address whose key the target's section does not hold conformance/prose-mentions — prose mentions and their entry addresses passed 0.62 ms never resolves an address to a section's description conformance/prose-mentions — prose mentions and their entry addresses passed 0.46 ms resolves to an open question that carries the key, beside unkeyed and prose questions conformance/prose-mentions — prose mentions and their entry addresses > a question address passed 6.21 ms fails every mention of an old address once its key is renamed conformance/prose-mentions — prose mentions and their entry addresses > a question address passed 0.56 ms finds no entry on a Spec whose questions carry no key, or that has none conformance/prose-mentions — prose mentions and their entry addresses > a question address passed 0.44 ms reads question keys only, never the Design or UI keys of the Spec conformance/prose-mentions — prose mentions and their entry addresses > a question address passed 0.31 ms treats description as an ordinary question key conformance/prose-mentions — prose mentions and their entry addresses > a question address passed 0.4 ms refuses a question address with a key off the grammar by the id grammar's reason conformance/prose-mentions — prose mentions and their entry addresses > a question address passed 0.25 ms checks a self-address for its entry and never warns on it conformance/prose-mentions — prose mentions and their entry addresses passed 0.39 ms warns once for a pair across three locations, first in scan order conformance/prose-mentions — prose mentions and their entry addresses passed 0.5 ms writes one location in the singular conformance/prose-mentions — prose mentions and their entry addresses passed 0.28 ms lets a declared relation in the reverse direction back the mention conformance/prose-mentions — prose mentions and their entry addresses passed 0.19 ms counts an address mention toward its pair, resolved or not conformance/prose-mentions — prose mentions and their entry addresses passed 0.3 ms never scans the gwt and gwt-vocabulary fences, and skips them by position only conformance/prose-mentions — prose mentions and their entry addresses passed 2.96 ms keeps authored order inside an object nested in design, so a nested description is not read first conformance/prose-mentions — prose mentions and their entry addresses passed 0.27 ms keeps authored order inside an object nested in ui, so a nested description is not read first conformance/prose-mentions — prose mentions and their entry addresses passed 0.19 ms scans arrays nested in behavior examples, as the mention audit does conformance/prose-mentions — prose mentions and their entry addresses passed 0.25 ms still warns on a pair joined only by an edge whose claim is anchored conformance/prose-mentions — prose mentions and their entry addresses passed 0.34 ms still warns on a pair joined only by an edge whose claim is inferred conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms resolves an address only to an own key, never an inherited one conformance/prose-mentions — prose mentions and their entry addresses passed 0.22 ms puts the pair warning's first path in authored entry order, with description first conformance/prose-mentions — prose mentions and their entry addresses passed 0.3 ms puts the pair warning's first path in a description authored after another mentioning entry, with description first conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms suggests the nearest Spec id for a missing target written as an address conformance/prose-mentions — prose mentions and their entry addresses passed 0.22 ms reads the whole token through an underscore and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.26 ms reads the whole token through an underscore and a letter and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.18 ms reads the whole token through a slash and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.18 ms reads the whole token through a slash and a letter and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the whole token through a comma and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the whole token through a comma and a letter and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the whole token through a letter outside ASCII and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the whole token through an escaped underscore and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the whole token through a combining mark and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.67 ms reads the whole token through a combining mark after an entry key and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.24 ms reads the whole token through a zero-width space and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the whole token through fullwidth connector punctuation and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the whole token through a NUL and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the whole token through an escape character and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the whole token through a delete character and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.2 ms reads the whole token through a C1 control character and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the whole token through a hyphenated entry key and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.19 ms reads the whole token through an entry suffix with no key and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the whole token through an entry suffix outside design, ui, question, and rule and refuses it, never the existing prefix conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: a sentence dot conformance/prose-mentions — prose mentions and their entry addresses passed 0.2 ms reads the clean id through Markdown punctuation: a comma conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the clean id through Markdown punctuation: a colon conformance/prose-mentions — prose mentions and their entry addresses passed 0.28 ms reads the clean id through Markdown punctuation: a closing parenthesis conformance/prose-mentions — prose mentions and their entry addresses passed 0.19 ms reads the clean id through Markdown punctuation: bold conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: emphasis conformance/prose-mentions — prose mentions and their entry addresses passed 0.13 ms reads the clean id through Markdown punctuation: strikethrough conformance/prose-mentions — prose mentions and their entry addresses passed 0.13 ms reads the clean id through Markdown punctuation: backticks conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: ASCII double quotes conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the clean id through Markdown punctuation: ASCII single quotes conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the clean id through Markdown punctuation: typographic double quotes conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the clean id through Markdown punctuation: typographic single quotes conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: an em dash conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: an en dash conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the clean id through Markdown punctuation: an ellipsis conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads the clean id through Markdown punctuation: an escaped star conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the clean id through Markdown punctuation: an escaped exclamation mark conformance/prose-mentions — prose mentions and their entry addresses passed 0.16 ms reads the clean id through Markdown punctuation: U+0085 conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: a no-break space conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: a tab conformance/prose-mentions — prose mentions and their entry addresses passed 0.15 ms reads the clean id through Markdown punctuation: an arrow conformance/prose-mentions — prose mentions and their entry addresses passed 0.17 ms reads a placeholder or a bare prefix as prose, not a mention conformance/prose-mentions — prose mentions and their entry addresses passed 0.36 ms strips a sentence-final dot from a token conformance/prose-mentions — prose mentions and their entry addresses passed 0.25 ms
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
The diagram as text
- spec:validation.prose-mentions: Every Spec id written in prose resolves · declared Spec
- spec:validation.referential-integrity: Every graph reference resolves · declared Spec
- impl:protocol.entry-address-resolution: resolves entry addresses for prose validation and citation readers · anchored code ·
src/graph/entry-address.ts:6 - impl:protocol.prose-mentions: checks that prose mentions resolve and warns once per unbacked Spec pair · anchored code ·
src/validate/validators.ts:1370 - test:protocol.entry-locations: test:protocol.entry-locations · anchored test binding · binding present ·
test/entry-locations.test.ts:14 - test:protocol.prose-mentions: verifies prose-mention resolution and the unbacked-pair warning · anchored test binding · binding present ·
test/validators.test.ts:1321 - spec:validation.prose-mentions refines spec:validation.referential-integrity · declared
- impl:protocol.entry-address-resolution satisfies spec:validation.prose-mentions · anchored
- impl:protocol.prose-mentions satisfies spec:validation.prose-mentions · anchored
- test:protocol.entry-locations verifies spec:validation.prose-mentions · anchored
- test:protocol.prose-mentions verifies spec:validation.prose-mentions · 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
- A Spec id written in prose is a checked mention
A Spec id in narrative or section text, outside
gwtandgwt-vocabularyfences, is a mention. A mention that does not resolve is a conformance error. A mention of another Spec that shares no declared relation with the mentioning Spec, in either direction, is one warning per mentioning Spec and target Spec pair, whatever the number of locations; an address on the mentioning Spec's own id is checked for its entry and never warned. An entry address is a Spec id followed by#, the section namedesign,ui,question,rule, orterm, a dot, and the entry's lower-camel ASCII key, as inspec:<id>#design.<key>orspec:<id>#question.<key>. Adesignoruiaddress resolves when the Spec exists and that section holds the key as its own key, other thandescription; aquestionaddress resolves when the Spec exists and one of its open questions carries that key; atermaddress resolves when the Spec exists and one of its Model terms carries that key. The#sub-part is reserved for the entry address in every namespace: a Spec's own id, a relation target, a Pack member or model reference, an anchor id or target, and thespecIdandrefbuilders all refuse it. A mention mints no edge, and the reader gains no join.
Runtime
component:protocol.graph· the one graph and its semantic decisions ·src/graph/schema.ts:34· layer domain · context protocol Uses
component:protocol.model· the authored contracts and stable ids ·src/model/anchors.ts:100· layer domain · context protocol component:protocol.notation· the leaf step codec ·src/notation/slots.ts:261· layer domain · context protocol
component:protocol.validate· one finding currency and ordered checks ·src/validate/validators.ts:72· layer domain · context protocol Uses
component:protocol.graph· the one graph and its semantic decisions ·src/graph/schema.ts:34· layer domain · context protocol component:protocol.model· the authored contracts and stable ids ·src/model/anchors.ts:100· layer domain · context protocol component:protocol.notation· the leaf step codec ·src/notation/slots.ts:261· layer domain · context protocol
impl:protocol.entry-address-resolution· resolves entry addresses for prose validation and citation readers ·src/graph/entry-address.ts:6Component:
component:protocol.graph· the one graph and its semantic decisions ·src/graph/schema.ts:34· layer domain · context protocol Uses
None.
impl:protocol.prose-mentions· checks that prose mentions resolve and warns once per unbacked Spec pair ·src/validate/validators.ts:1370Component:
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
The diagram as text
- spec:consumers.obsidian-vault.notes: Every Spec, Pack, code unit and keyed term is a note, and every relation is a link
- spec:consumers.spec-studio.shell: The Studio's shell frames every page with navigation, a rail and a canvas
- spec:decisions.checked-mentions: A Spec id written in prose is a checked mention
- spec:extraction.entry-citations: The graph records where anchored source cites an entry address
- spec:model.open-question-fields: An open question may name who decides it, its links, a provisional reading and a re-entry trigger
- spec:model.term-addresses: A Model term may carry a key that addresses it
- spec:validation.prose-mentions: Every Spec id written in prose resolves
- spec:validation.referential-integrity: Every graph reference resolves
- spec:validation.prose-mentions decidedBy spec:decisions.checked-mentions · declared
- spec:validation.prose-mentions dependsOn spec:model.open-question-fields · declared — the links field it checks whole is defined by the open-question field grammar
- spec:validation.prose-mentions dependsOn spec:model.term-addresses · declared — a term address resolves through the Spec's term keys
- spec:validation.prose-mentions refines spec:validation.referential-integrity · declared
- spec:consumers.obsidian-vault.notes dependsOn spec:validation.prose-mentions · declared — a mention can become a link because validation already refuses one that does not resolve
- spec:consumers.spec-studio.shell dependsOn spec:validation.prose-mentions · declared — a mention links where the validator resolves it
- spec:extraction.entry-citations dependsOn spec:validation.prose-mentions · declared — a citation is a token the prose-mention scan would read, and resolves by the same address rules
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:validation.referential-integrity · stated ready, floor ready
- dependsOn · spec:model.open-question-fields · stated ready, floor ready
- dependsOn · spec:model.term-addresses · stated ready, floor ready
- decidedBy · spec:decisions.checked-mentions · stated ready, floor ready
Rested on by
Distance 1
- spec:consumers.obsidian-vault.notes
Implementing units
impl:protocol.vault-notes·src/projections/vault/notes.ts:45impl:protocol.vault-sections·src/projections/vault/sections.ts:10impl:protocol.vault-text·src/projections/vault/text.ts:30
Referencing units
None.
Enabled verifiers: spec:consumers.obsidian-vault.notes.case-collision-refused, spec:consumers.obsidian-vault.notes.entry-address-link, spec:consumers.obsidian-vault.notes.term-address-link, spec:consumers.obsidian-vault.notes.unresolved-mention-stays, test:protocol.vault-priority
- spec:consumers.spec-studio.shell
Implementing units
impl:protocol.studio-code-spans·src/projections/studio/pages/code-spans.ts:9impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-html·src/projections/studio/pages/html.ts:8impl:protocol.studio-text·src/projections/studio/pages/text.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- spec:extraction.entry-citations
Implementing units
impl:protocol.entry-address-resolution·src/graph/entry-address.ts:6impl:protocol.entry-citation-reader·src/reader/entry-citations.ts:19impl:protocol.entry-citation-recipe·test/recipes.test.ts:7008impl:protocol.entry-citation-scan·src/extract/entry-citations.ts:6
Referencing units
None.
Enabled verifiers: spec:extraction.entry-citations.code-comment-cites-declaration, spec:extraction.entry-citations.test-title-cites-declaration, spec:extraction.entry-citations.unanchored-file-unread, spec:extraction.entry-citations.unresolved-citation
Distance 2
- spec:consumers.obsidian-vault.notes.case-collision-refused
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.case-collision-refused
- spec:consumers.obsidian-vault.notes.entry-address-link
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.entry-address-link
- spec:consumers.obsidian-vault.notes.term-address-link
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.term-address-link
- spec:consumers.obsidian-vault.notes.unresolved-mention-stays
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.consumers.obsidian-vault.notes.unresolved-mention-stays
- spec:consumers.spec-studio.cited-line-text
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:roadmap, pack:self-hosting-v1
- spec:consumers.spec-studio.index-page
Implementing units
impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- spec:consumers.spec-studio.navigation
Implementing units
impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-navigation, test:protocol.studio-roadmap-page
- spec:consumers.spec-studio.owner-queue
Implementing units
impl:protocol.studio-owner-queue·src/projections/studio/pages/queue-page.ts:9
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.owner-queue.dependency-first
- spec:consumers.spec-studio.pack-page
Implementing units
impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68
Referencing units
None.
Enabled verifiers: test:protocol.roadmap-priority, test:protocol.studio-pages
- spec:consumers.spec-studio.page-elements
Implementing units
component:protocol.studio-elements·src/studio-elements/index.ts:13impl:protocol.studio-copy·src/studio-elements/copy.ts:22impl:protocol.studio-expander·src/studio-elements/expander.ts:16impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-search-form·src/studio-elements/search.ts:18impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95impl:protocol.studio-stamp·src/studio-elements/stamp.ts:30
Referencing units
None.
Enabled verifiers: test:protocol.studio-copy-source, test:protocol.studio-page-elements
- spec:consumers.spec-studio.registers
Implementing units
impl:protocol.studio-registers·src/projections/studio/pages/registers-page.ts:47
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.registers.blocking-first
- spec:consumers.spec-studio.roadmap-page
Implementing units
impl:protocol.studio-roadmap-page·src/projections/studio/pages/roadmap-page.ts:168
Referencing units
None.
Enabled verifiers: test:protocol.studio-roadmap-page
- spec:consumers.spec-studio.search
Implementing units
impl:protocol.studio-concept-match·src/reader/concept-match.ts:43impl:protocol.studio-search-page·src/projections/studio/pages/search-page.ts:5impl:protocol.studio-search-results·src/studio-elements/search-results.ts:95
Referencing units
None.
Enabled verifiers: test:protocol.studio-concept-match, test:protocol.studio-page-elements, test:protocol.studio-pages
- spec:consumers.spec-studio.spec-page
Implementing units
impl:protocol.studio-requirement-view·src/projections/studio/pages/requirement-view.ts:8impl:protocol.studio-spec-page·src/projections/studio/pages/spec-page.ts:201impl:protocol.studio-spec-structure·src/projections/studio/pages/spec-structure.ts:44
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.spec-page.cited-declaration, test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
- spec:consumers.spec-studio.spec-page.core
Implementing units
impl:protocol.studio-spec-page·src/projections/studio/pages/spec-page.ts:201
Referencing units
None.
Enabled verifiers: test:protocol.studio-pages
- spec:consumers.upgrade-kit.capability-adoption
Implementing units
impl:protocol.capability-adoption-recipe·test/upgrade-kit.test.ts:514
Referencing units
None.
Enabled verifiers: spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
- spec:consumers.vault-on-ramp
Implementing units
impl:protocol.vault-on-ramp·test/skills.test.ts:1995
Referencing units
None.
Enabled verifiers: test:protocol.vault-on-ramp
- spec:extraction.entry-citations.code-comment-cites-declaration
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.code-comment-cites-declaration
- spec:extraction.entry-citations.test-title-cites-declaration
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.test-title-cites-declaration
- spec:extraction.entry-citations.unanchored-file-unread
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unanchored-file-unread
- spec:extraction.entry-citations.unresolved-citation
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.entry-citations.unresolved-citation
Distance 3
- spec:consumers.spec-studio.capability-map-page
Implementing units
impl:protocol.studio-capabilities-page·src/projections/studio/pages/capabilities-page.ts:78impl:protocol.studio-filter·src/studio-elements/filter.ts:25impl:protocol.studio-frame·src/projections/studio/pages/frame.ts:6impl:protocol.studio-index-page·src/projections/studio/pages/index-page.ts:8
Referencing units
None.
Enabled verifiers: test:protocol.studio-capabilities
- spec:consumers.spec-studio.diagram-kinds.mermaid-source
Implementing units
impl:protocol.studio-diagram-source·src/projections/studio/diagrams/mermaid.ts:13impl:protocol.studio-diagrams·src/projections/studio/diagrams/svg.ts:73
Referencing units
None.
Enabled verifiers: test:protocol.studio-diagram-core
- spec:consumers.spec-studio.export
Implementing units
impl:protocol.studio-diagram-element·src/studio-elements/diagram.ts:23impl:protocol.studio-expander·src/studio-elements/expander.ts:16impl:protocol.studio-pack-export·src/projections/studio/pages/export-page.ts:35impl:protocol.studio-pack-page·src/projections/studio/pages/pack-page.ts:68
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.export.self-contained, test:protocol.studio-intent-handoff
- spec:consumers.spec-studio.owner-queue.dependency-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-queue-dependency-first
- spec:consumers.spec-studio.pack-page.maturity-map
Implementing units
impl:protocol.studio-maturity-map·src/projections/studio/pages/maturity-map.ts:7
Referencing units
None.
Enabled verifiers: test:protocol.studio-architecture-maturity-requirement, test:protocol.studio-panels
- spec:consumers.spec-studio.registers.blocking-first
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-registers-blocking-first
- spec:consumers.spec-studio.slice-page
Implementing units
impl:protocol.studio-slice-page·src/projections/studio/pages/slice-page.ts:25
Referencing units
None.
Enabled verifiers: test:protocol.studio-slice-page
- spec:consumers.spec-studio.spec-page.cited-declaration
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-cited-declaration
- spec:consumers.spec-studio.verification-panels
Implementing units
impl:protocol.studio-run-rows·src/projections/studio/pages/run-rows.ts:69impl:protocol.studio-verification-panels·src/projections/studio/pages/spec-verification.ts:74
Referencing units
None.
Enabled verifiers: spec:consumers.spec-studio.verification-panels.rule-coverage, test:protocol.studio-panels
- spec:consumers.upgrade-kit.capability-adoption.counts-a-corpus
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.capability-adoption.counts-a-corpus
Distance 4
- spec:consumers.spec-studio.export.self-contained
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-export-contained
- spec:consumers.spec-studio.verification-panels.rule-coverage
Implementing units
None.
Referencing units
None.
Enabled verifiers: test:protocol.studio-rule-coverage
- spec:consumers.studio-on-ramp
Implementing units
impl:protocol.studio-on-ramp·test/skills.test.ts:1693
Referencing units
None.
Enabled verifiers: test:protocol.studio-on-ramp
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | A Spec id written in prose is a checked mentionspec:decisions.checked-mentions · resolves | declared | None | None |
| dependsOn · outgoing | An open question may name who decides it, its links, a provisional reading and a re-entry triggerspec:model.open-question-fields · resolves | declared | the links field it checks whole is defined by the open-question field grammar | None |
| dependsOn · outgoing | A Model term may carry a key that addresses itspec:model.term-addresses · resolves | declared | a term address resolves through the Spec's term keys | None |
| refines · outgoing | Every graph reference resolvesspec:validation.referential-integrity · resolves | declared | None | None |
| dependsOn · incoming | Every Spec, Pack, code unit and keyed term is a note, and every relation is a linkspec:consumers.obsidian-vault.notes · resolves | declared | a mention can become a link because validation already refuses one that does not resolve | None |
| dependsOn · incoming | The Studio's shell frames every page with navigation, a rail and a canvasspec:consumers.spec-studio.shell · resolves | declared | a mention links where the validator resolves it | None |
| dependsOn · incoming | The graph records where anchored source cites an entry addressspec:extraction.entry-citations · resolves | declared | a citation is a token the prose-mention scan would read, and resolves by the same address rules | None |
Bindings
Implementation binding: present
impl:protocol.entry-address-resolution· resolves entry addresses for prose validation and citation readers ·src/graph/entry-address.ts:6· role reader · component component:protocol.graph· layer domain · context protocolimpl:protocol.prose-mentions· checks that prose mentions resolve and warns once per unbacked Spec pair ·src/validate/validators.ts:1370· role validator · component component:protocol.validate· layer domain · context protocol
Design reference: none
Verifier binding: present
- test:protocol.entry-locations · anchored ·
test/entry-locations.test.ts:14· test anchor - test:protocol.prose-mentions · verifies prose-mention resolution and the unbacked-pair warning · anchored ·
test/validators.test.ts:1321· 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.