Spec Studio

The Markdown body accepts one closed form per section

spec:carrier.markdown-body-grammarUse Case / Behavior · featureready floor ready

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/carrier/markdown-body-grammar.sdp.md

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

Intent
problem
Without a stated body grammar, an author learns the default carrier by probing refusals and keeps a private copy that drifts when the parser changes.
outcome
State what each section of a Markdown Spec body accepts and refuses, and name the Spec that owns each field's values, so an author can write a lawful carrier from this Spec and the Specs it depends on.
Behavior

The world writes two Markdown carriers in one extraction root, the refused carrier and a healthy sibling. The sibling is a story-altitude behavior Spec stating idea, with no relations and an Intent outcome.

rule line 31 · specs/carrier/markdown-body-grammar.sdp.md:31
The body opens with one H1 title. Text between the title and the first H2 is the Spec's narrative, and narrative accepts plain paragraphs only.
rule.closedOwners line 32 · specs/carrier/markdown-body-grammar.sdp.md:32
Each H2 names one section owner from a closed set of Intent, Behavior, Rule, Workflow, Contract, Example space, Constraints, Model, Design, Decision, UI, and Verification — manual, reviewed, contract, or executable, spelled with the em dash. An unrecognized heading is refused, with the nearest known name offered when it lies within edit distance two; an owner appears at most once, and a Spec carries at most one of Behavior, Rule, Workflow, and Contract.

spec:carrier.markdown-body-grammar.second-primary-owner-refused · enabled, spec:carrier.markdown-body-grammar.unrecognized-heading-refused · enabled

rule.sectionProse line 33 · specs/carrier/markdown-body-grammar.sdp.md:33
A section holds optional leading paragraphs and then structured content. Prose after the first list entry, fence, or H3 is refused as unowned. The primary behavior owner, whichever of Behavior, Rule, Workflow, or Contract the Spec uses, and Example space share one description: leading prose may stand under one of them, and prose under both is refused.

spec:carrier.markdown-body-grammar.shared-description-refused · enabled, spec:carrier.markdown-body-grammar.trailing-prose-refused · enabled

rule.oneLineEntries line 34 · specs/carrier/markdown-body-grammar.sdp.md:34
A list entry is one line that starts with a hyphen and a space. A wrapped or indented continuation, a nested list, a star or plus bullet, and an ordered list are refused, except the field lines an open question may carry, each indented by exactly two spaces directly under its question.

spec:carrier.markdown-body-grammar.continuation-line-refused · enabled, spec:carrier.markdown-body-grammar.ordered-list-refused · enabled

rule.blockShapes line 35 · specs/carrier/markdown-body-grammar.sdp.md:35
The refused block shapes are read line by line in narrative, section prose, and list text: a line that opens with a pipe, a block-quote opener, whitespace, a star or plus bullet, an ordered-list prefix, or a <, and a line that is only a thematic break or a setext underline. A table without outer pipes is prose to the parser.

spec:carrier.markdown-body-grammar.table-refused · enabled

rule.rawHtml line 36 · specs/carrier/markdown-body-grammar.sdp.md:36
Raw HTML is refused in narrative, section prose, and list text, and is not scanned in the H1 title or inside fence steps. The test matches an HTML tag with its closing >, a comment delimiter, a declaration, or a processing instruction, so a < b and an unclosed Promise<T pass. The test ignores matched code spans, as ruled by spec:carrier.inline-code-spans.

spec:carrier.markdown-body-grammar.raw-html-refused · enabled

rule.closedFences line 37 · specs/carrier/markdown-body-grammar.sdp.md:37
The only fences are gwt and gwt-vocabulary. A fence holds Given steps, exactly one When step, and Then steps in that order, with no blank or indented line, and its slot syntax is spec:carrier.slot-notation. A step may open with a step key marker after its keyword, under spec:carrier.step-keys. An example's Intent owns one gwt fence that closes the section. Example space owns optional leading prose, which counts as the shared description above, and then exactly one gwt-vocabulary fence, with no list entry or H3.

spec:carrier.markdown-body-grammar.foreign-fence-refused · enabled

rule.singleH3 line 38 · specs/carrier/markdown-body-grammar.sdp.md:38
Intent accepts actor, problem, outcome, and value once each and risk and assumption repeatedly. One ### Open questions heading may follow those fields, each of its entries opens with [blocking] or [non-blocking], optionally with a lower-camel key after one space and # inside the brackets, unique within the Spec, and it is the only H3 any section accepts. Under a question's line may follow its decider, links, provisional and trigger fields, one line each and each at most once; their values follow spec:model.open-question-fields.

spec:carrier.markdown-body-grammar.h3-refused · enabled

rule line 39 · specs/carrier/markdown-body-grammar.sdp.md:39
Behavior entries are keyed rule or flow. Rule and Contract entries are plain bullets, each one rule. Workflow entries are plain bullets, each one flow, plus keyed rule entries. Any entry of the primary behavior owner may open its text, after its label where it has one, with a rule key marker, [#key] and a space, and the key follows spec:model.rule-keys. Verification entries are plain criteria.
rule.keyedEntryShape line 40 · specs/carrier/markdown-body-grammar.sdp.md:40
A keyed entry is one ASCII word, a colon, and a space before its value. Where a section takes plain bullets, a bullet of that shape is read as a key and refused unless the section names that key, so a plain bullet never opens with a single word and a colon.

spec:carrier.markdown-body-grammar.keyed-bullet-refused · enabled

rule.constraintFields line 41 · specs/carrier/markdown-body-grammar.sdp.md:41
Constraints accept one flat entry of statement, flavor, target, and measurableBy, each at most once, with statement required and no prose. A second entry is refused by this carrier.

spec:carrier.markdown-body-grammar.repeated-field-refused · enabled

rule.constraintEntryCount line 42 · specs/carrier/markdown-body-grammar.sdp.md:42
The TypeScript carrier may give one Spec several constraint entries, and the evidence clauses read every entry a Spec carries, whichever carrier wrote it. A constrainedBy edge names the constraint Spec whole, whatever its entry count, so a Markdown author with two measurable targets writes two constraint Specs.

spec:carrier.markdown-body-grammar.repeated-field-refused · enabled, spec:validation.kind-evidence.second-entry-untargeted · enabled

rule.modelEntries line 43 · specs/carrier/markdown-body-grammar.sdp.md:43
A Model entry is a bold term, the em dash character with a space on each side, and the definition, which may open with a term key marker under spec:model.term-addresses; a hyphen is refused, terms are unique, and an integer-like term is refused. Decision accepts context and decision once each and rationale, alternative, and consequence repeatedly.

spec:carrier.markdown-body-grammar.integer-term-refused · enabled

rule.openSectionKeys line 44 · specs/carrier/markdown-body-grammar.sdp.md:44
Design and UI are open sections. Each entry is a lower-camel ASCII key, unique within its section, and a one-line value; the same key may appear once under Design and once under UI.

spec:carrier.markdown-body-grammar.plain-bullet-refused · enabled

rule line 45 · specs/carrier/markdown-body-grammar.sdp.md:45
The keys implemented, hasVerifier, observed, claim, deliveryFacts, nodeType, specKind, satisfies, verifies, belongsTo, and models are refused in every keyed section, under spec:validation.authored-honesty. In Design and UI, an otherwise lawful lower-camel key outside this set is ordinary content, including dependsOn, references, uses and memberOf; it creates no edge. Every closed section still admits only its own fields.
rule line 46 · specs/carrier/markdown-body-grammar.sdp.md:46
A refused construct excludes its whole carrier from the graph, and healthy sibling carriers survive.

4 unkeyed rules.

Verifying examples

A bullet wrapped onto a second line is refused · spec:carrier.markdown-body-grammar.continuation-line-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Behavior"} section holds {construct: "a bullet wrapped onto an indented second line"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "nested or unsupported Markdown structure"} at line {line: 15}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A fence other than gwt or gwt-vocabulary is refused · spec:carrier.markdown-body-grammar.foreign-fence-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Design"} section holds {construct: "a ts fence"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "fences must be exact gwt or gwt-vocabulary fences"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

An H3 under Design is refused · spec:carrier.markdown-body-grammar.h3-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Design"} section holds {construct: "an H3 heading"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "open sections do not accept an H3 or fence"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

An integer-like Model term is refused · spec:carrier.markdown-body-grammar.integer-term-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Model"} section holds {construct: "an integer-like term"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "model terms must not be integer-like"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A keyed bullet under a plain-bullet owner is refused · spec:carrier.markdown-body-grammar.keyed-bullet-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Rule"} section holds {construct: "a bullet opening with one word and a colon"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/unrecognized-property"} whose message contains {reason: "is not accepted"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

An ordered list is refused · spec:carrier.markdown-body-grammar.ordered-list-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Contract"} section holds {construct: "an ordered list item"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "nested or unsupported Markdown structure"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A plain bullet under an open section is refused · spec:carrier.markdown-body-grammar.plain-bullet-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Design"} section holds {construct: "a plain bullet"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "open section keys must be lower-camel ASCII"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

Raw HTML outside a code span is refused · spec:carrier.markdown-body-grammar.raw-html-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Behavior"} section holds {construct: "a line break tag"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "raw HTML is unsupported"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A repeated single-valued field is refused · spec:carrier.markdown-body-grammar.repeated-field-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Constraints"} section holds {construct: "a second statement field"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "is authored more than once"} at line {line: 15}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A second primary owner is refused · spec:carrier.markdown-body-grammar.second-primary-owner-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Rule"} section holds {construct: "a plain bullet after a Behavior section"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "a single-valued Markdown owner is authored more than once"} at line {line: 16}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A second description across Behavior and Example space is refused · spec:carrier.markdown-body-grammar.shared-description-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Example space"} section holds {construct: "a description when Behavior already has one"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "behavior description has more than one owner"} at line {line: 19}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A table under a section is refused · spec:carrier.markdown-body-grammar.table-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Design"} section holds {construct: "a table row"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/invalid-markdown-structure"} whose message contains {reason: "nested or unsupported Markdown structure"} at line {line: 14}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

Prose after structured content is refused · spec:carrier.markdown-body-grammar.trailing-prose-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Behavior"} section holds {construct: "a paragraph after the first bullet"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/unowned-prose"} whose message contains {reason: "prose after structured content has no owner"} at line {line: 16}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

An unrecognized heading is refused with a suggestion · spec:carrier.markdown-body-grammar.unrecognized-heading-refused · ready floor ready

Executable Spec

Given a Markdown Spec carrier whose {owner: "Behaviour"} section holds {construct: "a rule bullet"}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId: "extract/unrecognized-heading"} whose message contains {reason: "did you mean"} at line {line: 13}
Then the healthy sibling {siblingId: "spec:probe.sibling"} stays in the graph

Open example

A constraint whose second entry has no target is not complete · spec:validation.kind-evidence.second-entry-untargeted · ready floor ready

Executable Spec

Given the graph holds a {kind: "constraint"} spec {specId: "spec:probe.second-entry-untargeted"} stating readiness {readiness: "defined"}
Given its only evidence is {evidence: "a targeted constraints entry and an untargeted second entry"}
When the graph is validated
Then the report names {findingId: "honesty/readiness-floor"} at severity {severity: "error"}
Then the finding names the unmet floor clause {clauseId: "kind-evidence-complete"}
Then the report holds {errorCount: 1} errors

Open example

Example space

Given a Markdown Spec carrier whose {owner:string} section holds {construct:string}
When the extractor reifies the carrier
Then the carrier is refused whole with the finding {findingId:string} whose message contains {reason:string} at line {line:number}
Then the healthy sibling {siblingId:string} stays in the graph
Verification

Verifier bindings

Example space

  • owner · string · declared by a Markdown Spec carrier whose {owner} section holds {construct}
  • construct · string · declared by a Markdown Spec carrier whose {owner} section holds {construct}

Bound points

Exampleownerconstruct
spec:carrier.markdown-body-grammar.continuation-line-refused"Behavior""a bullet wrapped onto an indented second line"
spec:carrier.markdown-body-grammar.foreign-fence-refused"Design""a ts fence"
spec:carrier.markdown-body-grammar.h3-refused"Design""an H3 heading"
spec:carrier.markdown-body-grammar.integer-term-refused"Model""an integer-like term"
spec:carrier.markdown-body-grammar.keyed-bullet-refused"Rule""a bullet opening with one word and a colon"
spec:carrier.markdown-body-grammar.ordered-list-refused"Contract""an ordered list item"
spec:carrier.markdown-body-grammar.plain-bullet-refused"Design""a plain bullet"
spec:carrier.markdown-body-grammar.raw-html-refused"Behavior""a line break tag"
spec:carrier.markdown-body-grammar.repeated-field-refused"Constraints""a second statement field"
spec:carrier.markdown-body-grammar.second-primary-owner-refused"Rule""a plain bullet after a Behavior section"
spec:carrier.markdown-body-grammar.shared-description-refused"Example space""a description when Behavior already has one"
spec:carrier.markdown-body-grammar.table-refused"Design""a table row"
spec:carrier.markdown-body-grammar.trailing-prose-refused"Behavior""a paragraph after the first bullet"
spec:carrier.markdown-body-grammar.unrecognized-heading-refused"Behaviour""a rule bullet"

Oracle binding: none

Coverage

owner: "Behavior" · spec:carrier.markdown-body-grammar.continuation-line-refused, spec:carrier.markdown-body-grammar.raw-html-refused, spec:carrier.markdown-body-grammar.trailing-prose-refused; "Design" · spec:carrier.markdown-body-grammar.foreign-fence-refused, spec:carrier.markdown-body-grammar.h3-refused, spec:carrier.markdown-body-grammar.plain-bullet-refused, spec:carrier.markdown-body-grammar.table-refused; "Model" · spec:carrier.markdown-body-grammar.integer-term-refused; "Rule" · spec:carrier.markdown-body-grammar.keyed-bullet-refused, spec:carrier.markdown-body-grammar.second-primary-owner-refused; "Contract" · spec:carrier.markdown-body-grammar.ordered-list-refused; "Constraints" · spec:carrier.markdown-body-grammar.repeated-field-refused; "Example space" · spec:carrier.markdown-body-grammar.shared-description-refused; "Behaviour" · spec:carrier.markdown-body-grammar.unrecognized-heading-refused · not enumerable

construct: "a bullet wrapped onto an indented second line" · spec:carrier.markdown-body-grammar.continuation-line-refused; "a ts fence" · spec:carrier.markdown-body-grammar.foreign-fence-refused; "an H3 heading" · spec:carrier.markdown-body-grammar.h3-refused; "an integer-like term" · spec:carrier.markdown-body-grammar.integer-term-refused; "a bullet opening with one word and a colon" · spec:carrier.markdown-body-grammar.keyed-bullet-refused; "an ordered list item" · spec:carrier.markdown-body-grammar.ordered-list-refused; "a plain bullet" · spec:carrier.markdown-body-grammar.plain-bullet-refused; "a line break tag" · spec:carrier.markdown-body-grammar.raw-html-refused; "a second statement field" · spec:carrier.markdown-body-grammar.repeated-field-refused; "a plain bullet after a Behavior section" · spec:carrier.markdown-body-grammar.second-primary-owner-refused; "a description when Behavior already has one" · spec:carrier.markdown-body-grammar.shared-description-refused; "a table row" · spec:carrier.markdown-body-grammar.table-refused; "a paragraph after the first bullet" · spec:carrier.markdown-body-grammar.trailing-prose-refused; "a rule bullet" · spec:carrier.markdown-body-grammar.unrecognized-heading-refused · not enumerable

Unbound

  • owner: None
  • construct: None
Design view

Requirement drawing

Requirement drawing for spec:carrier.markdown-body-grammar
The diagram as text
  • spec:carrier.markdown-body-grammar: The Markdown body accepts one closed form per section · declared Spec
  • spec:carrier.inline-code-spans: Inline code is content, never markup · declared Spec
  • spec:carrier.markdown-body-grammar.continuation-line-refused: A bullet wrapped onto a second line is refused · declared Spec
  • spec:carrier.markdown-body-grammar.foreign-fence-refused: A fence other than gwt or gwt-vocabulary is refused · declared Spec
  • spec:carrier.markdown-body-grammar.h3-refused: An H3 under Design is refused · declared Spec
  • spec:carrier.markdown-body-grammar.integer-term-refused: An integer-like Model term is refused · declared Spec
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused: A keyed bullet under a plain-bullet owner is refused · declared Spec
  • spec:carrier.markdown-body-grammar.ordered-list-refused: An ordered list is refused · declared Spec
  • spec:carrier.markdown-body-grammar.plain-bullet-refused: A plain bullet under an open section is refused · declared Spec
  • spec:carrier.markdown-body-grammar.raw-html-refused: Raw HTML outside a code span is refused · declared Spec
  • spec:carrier.markdown-body-grammar.repeated-field-refused: A repeated single-valued field is refused · declared Spec
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused: A second primary owner is refused · declared Spec
  • spec:carrier.markdown-body-grammar.shared-description-refused: A second description across Behavior and Example space is refused · declared Spec
  • spec:carrier.markdown-body-grammar.table-refused: A table under a section is refused · declared Spec
  • spec:carrier.markdown-body-grammar.trailing-prose-refused: Prose after structured content is refused · declared Spec
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused: An unrecognized heading is refused with a suggestion · declared Spec
  • spec:carrier.inline-code-spans.description: Code spans in section descriptions are literal · declared Spec
  • spec:carrier.inline-code-spans.list: Code spans in list entries are literal · declared Spec
  • spec:carrier.inline-code-spans.narrative: Code spans in a Spec narrative are literal · declared Spec
  • spec:carrier.inline-code-spans.pack: Code spans in Pack framing are literal · declared Spec
  • spec:validation.kind-evidence.second-entry-untargeted: A constraint whose second entry has no target is not complete · declared Spec
  • spec:carrier.markdown-authoring: Markdown authoring enters the one graph · declared Spec
  • spec:validation.kind-evidence: Each kind carries its own evidence · declared Spec
  • impl:protocol.inline-code-spans: scans raw HTML outside matched code spans · anchored code · src/extract/markdown-inline-code.ts:4
  • impl:protocol.markdown-body-grammar: maps Markdown body content to typed prose owners · anchored code · src/extract/markdown-body.ts:120
  • impl:protocol.markdown-content: decodes located Markdown entries and typed fences · anchored code · src/extract/markdown-body-content.ts:7
  • oracle:protocol.inline-code-spans: expected inline code outcome by authored location · anchored oracle binding · test/self-hosting-inline-code.test.ts:74
  • test:protocol.inline-code-spans.description: verifies inline code in section descriptions · anchored test binding · binding present · test/self-hosting-inline-code.test.ts:219
  • test:protocol.inline-code-spans.list: verifies inline code in list entries · anchored test binding · binding present · test/self-hosting-inline-code.test.ts:227
  • test:protocol.inline-code-spans.narrative: verifies inline code in Spec narrative · anchored test binding · binding present · test/self-hosting-inline-code.test.ts:211
  • test:protocol.inline-code-spans.pack: verifies inline code in Pack framing · anchored test binding · binding present · test/self-hosting-inline-code.test.ts:235
  • test:protocol.kind-evidence.second-entry-untargeted: test:protocol.kind-evidence.second-entry-untargeted · anchored test binding · binding present · test/self-hosting-validators.test.ts:1928
  • test:protocol.markdown-body-grammar.continuation-line-refused: the continuation-line point verifies the one-line entry rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:197
  • test:protocol.markdown-body-grammar.foreign-fence-refused: the foreign-fence point verifies the closed fence set · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:213
  • test:protocol.markdown-body-grammar.h3-refused: the H3 point verifies the single-H3 rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:221
  • test:protocol.markdown-body-grammar.integer-term-refused: the integer-term point verifies the integer-like Model term refusal · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:293
  • test:protocol.markdown-body-grammar.keyed-bullet-refused: the keyed-bullet point verifies the keyed-bullet rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:237
  • test:protocol.markdown-body-grammar.ordered-list-refused: the ordered-list point verifies the list-entry rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:205
  • test:protocol.markdown-body-grammar.plain-bullet-refused: the plain-bullet point verifies the open-section key rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:229
  • test:protocol.markdown-body-grammar.raw-html-refused: the raw-HTML point verifies the raw-HTML refusal outside code spans · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:277
  • test:protocol.markdown-body-grammar.repeated-field-refused: the repeated-field point verifies the at-most-once rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:253
  • test:protocol.markdown-body-grammar.second-primary-owner-refused: the second-primary-owner point verifies the one-primary-owner rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:269
  • test:protocol.markdown-body-grammar.shared-description-refused: the shared-description point verifies the one-description-owner rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:285
  • test:protocol.markdown-body-grammar.table-refused: the table point verifies the block-structure refusal · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:189
  • test:protocol.markdown-body-grammar.trailing-prose-refused: the trailing-prose point verifies the prose-ownership rule · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:245
  • test:protocol.markdown-body-grammar.unrecognized-heading-refused: the unrecognized-heading point verifies the closed owner set · anchored test binding · binding present · test/self-hosting-markdown-grammar.test.ts:261
  • spec:carrier.inline-code-spans refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.inline-code-spans.description refines spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.description verifies spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.list refines spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.list verifies spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.narrative refines spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.narrative verifies spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.pack refines spec:carrier.inline-code-spans · declared
  • spec:carrier.inline-code-spans.pack verifies spec:carrier.inline-code-spans · declared
  • spec:carrier.markdown-body-grammar refines spec:carrier.markdown-authoring · declared
  • spec:carrier.markdown-body-grammar.continuation-line-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.continuation-line-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.foreign-fence-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.foreign-fence-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.h3-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.h3-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.integer-term-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.integer-term-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.ordered-list-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.ordered-list-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.plain-bullet-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.plain-bullet-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.raw-html-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.raw-html-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.repeated-field-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.repeated-field-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.shared-description-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.shared-description-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.table-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.table-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.trailing-prose-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.trailing-prose-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:validation.kind-evidence.second-entry-untargeted refines spec:validation.kind-evidence · declared
  • spec:validation.kind-evidence.second-entry-untargeted verifies spec:carrier.markdown-body-grammar · declared
  • spec:validation.kind-evidence.second-entry-untargeted verifies spec:validation.kind-evidence · declared
  • impl:protocol.inline-code-spans satisfies spec:carrier.inline-code-spans · anchored
  • impl:protocol.markdown-body-grammar satisfies spec:carrier.markdown-body-grammar · anchored
  • impl:protocol.markdown-content satisfies spec:carrier.markdown-body-grammar · anchored
  • oracle:protocol.inline-code-spans models spec:carrier.inline-code-spans · anchored
  • test:protocol.inline-code-spans.description verifies spec:carrier.inline-code-spans.description · anchored
  • test:protocol.inline-code-spans.list verifies spec:carrier.inline-code-spans.list · anchored
  • test:protocol.inline-code-spans.narrative verifies spec:carrier.inline-code-spans.narrative · anchored
  • test:protocol.inline-code-spans.pack verifies spec:carrier.inline-code-spans.pack · anchored
  • test:protocol.kind-evidence.second-entry-untargeted verifies spec:validation.kind-evidence.second-entry-untargeted · anchored
  • test:protocol.markdown-body-grammar.continuation-line-refused verifies spec:carrier.markdown-body-grammar.continuation-line-refused · anchored
  • test:protocol.markdown-body-grammar.foreign-fence-refused verifies spec:carrier.markdown-body-grammar.foreign-fence-refused · anchored
  • test:protocol.markdown-body-grammar.h3-refused verifies spec:carrier.markdown-body-grammar.h3-refused · anchored
  • test:protocol.markdown-body-grammar.integer-term-refused verifies spec:carrier.markdown-body-grammar.integer-term-refused · anchored
  • test:protocol.markdown-body-grammar.keyed-bullet-refused verifies spec:carrier.markdown-body-grammar.keyed-bullet-refused · anchored
  • test:protocol.markdown-body-grammar.ordered-list-refused verifies spec:carrier.markdown-body-grammar.ordered-list-refused · anchored
  • test:protocol.markdown-body-grammar.plain-bullet-refused verifies spec:carrier.markdown-body-grammar.plain-bullet-refused · anchored
  • test:protocol.markdown-body-grammar.raw-html-refused verifies spec:carrier.markdown-body-grammar.raw-html-refused · anchored
  • test:protocol.markdown-body-grammar.repeated-field-refused verifies spec:carrier.markdown-body-grammar.repeated-field-refused · anchored
  • test:protocol.markdown-body-grammar.second-primary-owner-refused verifies spec:carrier.markdown-body-grammar.second-primary-owner-refused · anchored
  • test:protocol.markdown-body-grammar.shared-description-refused verifies spec:carrier.markdown-body-grammar.shared-description-refused · anchored
  • test:protocol.markdown-body-grammar.table-refused verifies spec:carrier.markdown-body-grammar.table-refused · anchored
  • test:protocol.markdown-body-grammar.trailing-prose-refused verifies spec:carrier.markdown-body-grammar.trailing-prose-refused · anchored
  • test:protocol.markdown-body-grammar.unrecognized-heading-refused verifies spec:carrier.markdown-body-grammar.unrecognized-heading-refused · 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

  • Markdown is the default Spec carrier

    Specs default to Markdown; Packs remain TS until a Pack syntax ruling; the TS DSL survives as import source and a lawful per-ID option. Later refinements keep this default and the one-surface law without repealing them: the Pack syntax ruling completes Pack Markdown, and the Gherkin carrier option admits graph-aware Gherkin as a lawful per-ID option for behavior and example Specs only, with the canonical suffix settled as .sdp.gherkin.

  • Prose belongs to typed graph owners

    Free prose is stored as a narrative or a description on its typed owner; unowned prose is refused.

Runtime
  • component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · 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.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
  • impl:protocol.markdown-body-grammar · maps Markdown body content to typed prose owners · src/extract/markdown-body.ts:120

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · layer application · context protocol

    Uses

    None.

  • impl:protocol.markdown-content · decodes located Markdown entries and typed fences · src/extract/markdown-body-content.ts:7

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:192 · 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:carrier.markdown-body-grammar

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

The diagram as text
  • spec:carrier.inline-code-spans: Inline code is content, never markup
  • 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.markdown-body-grammar.continuation-line-refused: A bullet wrapped onto a second line is refused
  • spec:carrier.markdown-body-grammar.foreign-fence-refused: A fence other than gwt or gwt-vocabulary is refused
  • spec:carrier.markdown-body-grammar.h3-refused: An H3 under Design is refused
  • spec:carrier.markdown-body-grammar.integer-term-refused: An integer-like Model term is refused
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused: A keyed bullet under a plain-bullet owner is refused
  • spec:carrier.markdown-body-grammar.ordered-list-refused: An ordered list is refused
  • spec:carrier.markdown-body-grammar.plain-bullet-refused: A plain bullet under an open section is refused
  • spec:carrier.markdown-body-grammar.raw-html-refused: Raw HTML outside a code span is refused
  • spec:carrier.markdown-body-grammar.repeated-field-refused: A repeated single-valued field is refused
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused: A second primary owner is refused
  • spec:carrier.markdown-body-grammar.shared-description-refused: A second description across Behavior and Example space is refused
  • spec:carrier.markdown-body-grammar.table-refused: A table under a section is refused
  • spec:carrier.markdown-body-grammar.trailing-prose-refused: Prose after structured content is refused
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused: An unrecognized heading is refused with a suggestion
  • spec:carrier.markdown-parser: The Markdown parser reifies the ruled subset
  • spec:carrier.prose-ownership-rule: Every prose value has one typed owner
  • spec:carrier.slot-notation: Slot notation declares, binds, and refuses to guess
  • spec:carrier.step-keys: An example step may carry a key that survives rewording
  • spec:consumers.adopter-on-ramp: An adopter learns graph homes, carrier grammar and shipped paths from the on-ramps
  • spec:consumers.spec-studio.glossary-page: The glossary page lists every term the corpus's Specs define
  • spec:decisions.carrier-ruling: Markdown is the default Spec carrier
  • spec:decisions.prose-ownership: Prose belongs to typed graph owners
  • 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.open-question-keys: An open question may carry a key that addresses it
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:model.spec-sections: Spec sections carry typed detail and direct verifier semantics
  • spec:model.term-addresses: A Model term may carry a key that addresses it
  • spec:validation.authored-honesty: Machine truth is never authored
  • spec:validation.kind-evidence: Each kind carries its own evidence
  • spec:validation.kind-evidence.second-entry-untargeted: A constraint whose second entry has no target is not complete
  • spec:carrier.markdown-body-grammar constrainedBy spec:validation.authored-honesty · declared
  • spec:carrier.markdown-body-grammar decidedBy spec:decisions.carrier-ruling · declared
  • spec:carrier.markdown-body-grammar decidedBy spec:decisions.prose-ownership · declared
  • spec:carrier.markdown-body-grammar dependsOn spec:carrier.slot-notation · declared
  • spec:carrier.markdown-body-grammar dependsOn spec:carrier.step-keys · declared — a fence step may open with a step key marker
  • spec:carrier.markdown-body-grammar dependsOn spec:model.open-question-fields · declared
  • spec:carrier.markdown-body-grammar dependsOn spec:model.rule-keys · declared
  • spec:carrier.markdown-body-grammar dependsOn spec:model.spec-sections · declared
  • spec:carrier.markdown-body-grammar dependsOn spec:model.term-addresses · declared — a Model definition may open with a term key marker
  • spec:carrier.markdown-body-grammar dependsOn spec:validation.kind-evidence · declared — its evidence clauses read every constraint entry a Spec carries, whichever carrier wrote it
  • spec:carrier.markdown-body-grammar refines spec:carrier.markdown-authoring · declared
  • spec:carrier.markdown-parser dependsOn spec:carrier.markdown-body-grammar · declared
  • spec:carrier.prose-ownership-rule dependsOn spec:carrier.markdown-body-grammar · declared
  • spec:consumers.adopter-on-ramp dependsOn spec:carrier.markdown-body-grammar · declared
  • spec:consumers.spec-studio.glossary-page dependsOn spec:carrier.markdown-body-grammar · declared — the page splits a Model entry into its term and definition as the body grammar reads it
  • spec:model.open-question-keys dependsOn spec:carrier.markdown-body-grammar · declared
  • spec:carrier.inline-code-spans refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.continuation-line-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.foreign-fence-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.h3-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.integer-term-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.ordered-list-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.plain-bullet-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.raw-html-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.repeated-field-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.shared-description-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.table-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.trailing-prose-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused refines spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.continuation-line-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.foreign-fence-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.h3-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.integer-term-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.ordered-list-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.plain-bullet-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.raw-html-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.repeated-field-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.shared-description-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.table-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.trailing-prose-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused verifies spec:carrier.markdown-body-grammar · declared
  • spec:validation.kind-evidence.second-entry-untargeted verifies spec:carrier.markdown-body-grammar · 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
constrainedBy · outgoingMachine truth is never authored
spec:validation.authored-honesty · resolves
declaredNoneNone
decidedBy · outgoingMarkdown is the default Spec carrier
spec:decisions.carrier-ruling · resolves
declaredNoneNone
decidedBy · outgoingProse belongs to typed graph owners
spec:decisions.prose-ownership · resolves
declaredNoneNone
dependsOn · outgoingSlot notation declares, binds, and refuses to guess
spec:carrier.slot-notation · resolves
declaredNoneNone
dependsOn · outgoingAn example step may carry a key that survives rewording
spec:carrier.step-keys · resolves
declareda fence step may open with a step key markerNone
dependsOn · outgoingAn open question may name who decides it, its links, a provisional reading and a re-entry trigger
spec:model.open-question-fields · resolves
declaredNoneNone
dependsOn · outgoingA rule or flow entry may carry a key that addresses it
spec:model.rule-keys · resolves
declaredNoneNone
dependsOn · outgoingSpec sections carry typed detail and direct verifier semantics
spec:model.spec-sections · resolves
declaredNoneNone
dependsOn · outgoingA Model term may carry a key that addresses it
spec:model.term-addresses · resolves
declareda Model definition may open with a term key markerNone
dependsOn · outgoingEach kind carries its own evidence
spec:validation.kind-evidence · resolves
declaredits evidence clauses read every constraint entry a Spec carries, whichever carrier wrote itNone
refines · outgoingMarkdown authoring enters the one graph
spec:carrier.markdown-authoring · resolves
declaredNoneNone
dependsOn · incomingThe Markdown parser reifies the ruled subset
spec:carrier.markdown-parser · resolves
declaredNoneNone
dependsOn · incomingEvery prose value has one typed owner
spec:carrier.prose-ownership-rule · resolves
declaredNoneNone
dependsOn · incomingAn adopter learns graph homes, carrier grammar and shipped paths from the on-ramps
spec:consumers.adopter-on-ramp · resolves
declaredNoneNone
dependsOn · incomingThe glossary page lists every term the corpus's Specs define
spec:consumers.spec-studio.glossary-page · resolves
declaredthe page splits a Model entry into its term and definition as the body grammar reads itNone
dependsOn · incomingAn open question may carry a key that addresses it
spec:model.open-question-keys · resolves
declaredNoneNone
refines · incomingInline code is content, never markup
spec:carrier.inline-code-spans · resolves
declaredNoneNone
refines · incomingA bullet wrapped onto a second line is refused
spec:carrier.markdown-body-grammar.continuation-line-refused · resolves
declaredNoneNone
refines · incomingA fence other than gwt or gwt-vocabulary is refused
spec:carrier.markdown-body-grammar.foreign-fence-refused · resolves
declaredNoneNone
refines · incomingAn H3 under Design is refused
spec:carrier.markdown-body-grammar.h3-refused · resolves
declaredNoneNone
refines · incomingAn integer-like Model term is refused
spec:carrier.markdown-body-grammar.integer-term-refused · resolves
declaredNoneNone
refines · incomingA keyed bullet under a plain-bullet owner is refused
spec:carrier.markdown-body-grammar.keyed-bullet-refused · resolves
declaredNoneNone
refines · incomingAn ordered list is refused
spec:carrier.markdown-body-grammar.ordered-list-refused · resolves
declaredNoneNone
refines · incomingA plain bullet under an open section is refused
spec:carrier.markdown-body-grammar.plain-bullet-refused · resolves
declaredNoneNone
refines · incomingRaw HTML outside a code span is refused
spec:carrier.markdown-body-grammar.raw-html-refused · resolves
declaredNoneNone
refines · incomingA repeated single-valued field is refused
spec:carrier.markdown-body-grammar.repeated-field-refused · resolves
declaredNoneNone
refines · incomingA second primary owner is refused
spec:carrier.markdown-body-grammar.second-primary-owner-refused · resolves
declaredNoneNone
refines · incomingA second description across Behavior and Example space is refused
spec:carrier.markdown-body-grammar.shared-description-refused · resolves
declaredNoneNone
refines · incomingA table under a section is refused
spec:carrier.markdown-body-grammar.table-refused · resolves
declaredNoneNone
refines · incomingProse after structured content is refused
spec:carrier.markdown-body-grammar.trailing-prose-refused · resolves
declaredNoneNone
refines · incomingAn unrecognized heading is refused with a suggestion
spec:carrier.markdown-body-grammar.unrecognized-heading-refused · resolves
declaredNoneNone
verifies · incomingA bullet wrapped onto a second line is refused
spec:carrier.markdown-body-grammar.continuation-line-refused · resolves
declaredNoneoneLineEntries
verifies · incomingA fence other than gwt or gwt-vocabulary is refused
spec:carrier.markdown-body-grammar.foreign-fence-refused · resolves
declaredNoneclosedFences
verifies · incomingAn H3 under Design is refused
spec:carrier.markdown-body-grammar.h3-refused · resolves
declaredNonesingleH3
verifies · incomingAn integer-like Model term is refused
spec:carrier.markdown-body-grammar.integer-term-refused · resolves
declaredNonemodelEntries
verifies · incomingA keyed bullet under a plain-bullet owner is refused
spec:carrier.markdown-body-grammar.keyed-bullet-refused · resolves
declaredNonekeyedEntryShape
verifies · incomingAn ordered list is refused
spec:carrier.markdown-body-grammar.ordered-list-refused · resolves
declaredNoneoneLineEntries
verifies · incomingA plain bullet under an open section is refused
spec:carrier.markdown-body-grammar.plain-bullet-refused · resolves
declaredNoneopenSectionKeys
verifies · incomingRaw HTML outside a code span is refused
spec:carrier.markdown-body-grammar.raw-html-refused · resolves
declaredNonerawHtml
verifies · incomingA repeated single-valued field is refused
spec:carrier.markdown-body-grammar.repeated-field-refused · resolves
declaredNoneconstraintFields, constraintEntryCount
verifies · incomingA second primary owner is refused
spec:carrier.markdown-body-grammar.second-primary-owner-refused · resolves
declaredNoneclosedOwners
verifies · incomingA second description across Behavior and Example space is refused
spec:carrier.markdown-body-grammar.shared-description-refused · resolves
declaredNonesectionProse
verifies · incomingA table under a section is refused
spec:carrier.markdown-body-grammar.table-refused · resolves
declaredNoneblockShapes
verifies · incomingProse after structured content is refused
spec:carrier.markdown-body-grammar.trailing-prose-refused · resolves
declaredNonesectionProse
verifies · incomingAn unrecognized heading is refused with a suggestion
spec:carrier.markdown-body-grammar.unrecognized-heading-refused · resolves
declaredNoneclosedOwners
verifies · incomingA constraint whose second entry has no target is not complete
spec:validation.kind-evidence.second-entry-untargeted · resolves
declaredNoneconstraintEntryCount

Bindings

Implementation binding: present

  • impl:protocol.markdown-body-grammar · maps Markdown body content to typed prose owners · src/extract/markdown-body.ts:120 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.markdown-content · decodes located Markdown entries and typed fences · src/extract/markdown-body-content.ts:7 · role codec · component component:protocol.extract · 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.