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 is refused when it opens with a pipe, a block-quote opener, whitespace, a <, or a hyphen and a tab; with a star, a plus sign, or an ordered-list prefix (digits and then . or )), each followed by whitespace or the end of the line; with an ATX heading (one to six hashes followed by whitespace or the end of the line); or with a backtick or tilde fence opener. A line that is only a thematic break or a setext underline, including a single = or -, is refused too. 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 a key, one ASCII letter followed by zero or more ASCII letters or digits, then a colon and a space before its nonempty value, so a single letter such as a: is a key. A hyphenated delivery-fact name, compared case-insensitively, is also read as a key; other hyphenated or underscored words stay plain text. Where a section takes plain bullets, a bullet of the keyed shape is read as a key and refused unless the section names that key, with reserved properties refused there too.

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.reservedProperties line 45 · specs/carrier/markdown-body-grammar.sdp.md:45
The keys implemented, has-verifier, hasVerifier, observed, claim, deliveryFacts, nodeType, specKind, satisfies, verifies, belongsTo, and models are refused in every keyed entry, including one in a plain-bullet 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. Delivery-fact names and deliveryFacts are compared case-insensitively; underscore forms are not delivery-fact names.

no example exercises it

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.

3 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

  • spec:carrier.markdown-body-grammar.continuation-line-refused · A bullet wrapped onto a second line is refused · declared · example enabled · specs/carrier/markdown-body-grammar.continuation-line-refused.sdp.md

    External run evidence from test/self-hosting-markdown-grammar.test.ts

    Test anchors: test:protocol.markdown-body-grammar.continuation-line-refused, test:protocol.markdown-body-grammar.foreign-fence-refused, test:protocol.markdown-body-grammar.h3-refused, test:protocol.markdown-body-grammar.integer-term-refused, test:protocol.markdown-body-grammar.keyed-bullet-refused, test:protocol.markdown-body-grammar.ordered-list-refused, test:protocol.markdown-body-grammar.plain-bullet-refused, test:protocol.markdown-body-grammar.raw-html-refused, test:protocol.markdown-body-grammar.repeated-field-refused, test:protocol.markdown-body-grammar.second-primary-owner-refused, test:protocol.markdown-body-grammar.shared-description-refused, test:protocol.markdown-body-grammar.table-refused, test:protocol.markdown-body-grammar.trailing-prose-refused, test:protocol.markdown-body-grammar.unrecognized-heading-refused. Specs verified by those bindings: spec:carrier.markdown-body-grammar, spec:carrier.markdown-body-grammar.continuation-line-refused, spec:carrier.markdown-body-grammar.foreign-fence-refused, spec:carrier.markdown-body-grammar.h3-refused, spec:carrier.markdown-body-grammar.integer-term-refused, spec:carrier.markdown-body-grammar.keyed-bullet-refused, spec:carrier.markdown-body-grammar.ordered-list-refused, spec:carrier.markdown-body-grammar.plain-bullet-refused, spec:carrier.markdown-body-grammar.raw-html-refused, spec:carrier.markdown-body-grammar.repeated-field-refused, spec:carrier.markdown-body-grammar.second-primary-owner-refused, spec:carrier.markdown-body-grammar.shared-description-refused, spec:carrier.markdown-body-grammar.table-refused, spec:carrier.markdown-body-grammar.trailing-prose-refused, spec:carrier.markdown-body-grammar.unrecognized-heading-refused.

    Run 2: external run evidence from vitest 4.1.10

    Build: CI 439 · Branch: docs/articles-refresh-1 · Commit: 61576184ea9f39b7f91c51fef5ff991b0bf2d0e6 · Start: 2026-11-04T07:59:39.962Z · Stop: 2026-11-04T08:03:39.928Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldA table under a section is refused (spec:carrier.markdown-body-grammar.table-refused)passed26.91 ms
    executes the bound example against a fresh worldA bullet wrapped onto a second line is refused (spec:carrier.markdown-body-grammar.continuation-line-refused)passed6.39 ms
    executes the bound example against a fresh worldAn ordered list is refused (spec:carrier.markdown-body-grammar.ordered-list-refused)passed4.65 ms
    executes the bound example against a fresh worldA fence other than gwt or gwt-vocabulary is refused (spec:carrier.markdown-body-grammar.foreign-fence-refused)passed5.41 ms
    executes the bound example against a fresh worldAn H3 under Design is refused (spec:carrier.markdown-body-grammar.h3-refused)passed4.69 ms
    executes the bound example against a fresh worldA plain bullet under an open section is refused (spec:carrier.markdown-body-grammar.plain-bullet-refused)passed4.64 ms
    executes the bound example against a fresh worldA keyed bullet under a plain-bullet owner is refused (spec:carrier.markdown-body-grammar.keyed-bullet-refused)passed4.32 ms
    executes the bound example against a fresh worldProse after structured content is refused (spec:carrier.markdown-body-grammar.trailing-prose-refused)passed3.83 ms
    executes the bound example against a fresh worldA repeated single-valued field is refused (spec:carrier.markdown-body-grammar.repeated-field-refused)passed4.52 ms
    executes the bound example against a fresh worldAn unrecognized heading is refused with a suggestion (spec:carrier.markdown-body-grammar.unrecognized-heading-refused)passed9.11 ms
    executes the bound example against a fresh worldA second primary owner is refused (spec:carrier.markdown-body-grammar.second-primary-owner-refused)passed4.38 ms
    executes the bound example against a fresh worldRaw HTML outside a code span is refused (spec:carrier.markdown-body-grammar.raw-html-refused)passed3.66 ms
    executes the bound example against a fresh worldA second description across Behavior and Example space is refused (spec:carrier.markdown-body-grammar.shared-description-refused)passed4.02 ms
    executes the bound example against a fresh worldAn integer-like Model term is refused (spec:carrier.markdown-body-grammar.integer-term-refused)passed4.1 ms
  • spec:carrier.markdown-body-grammar.foreign-fence-refused · A fence other than gwt or gwt-vocabulary is refused · declared · example enabled · specs/carrier/markdown-body-grammar.foreign-fence-refused.sdp.md
  • spec:carrier.markdown-body-grammar.h3-refused · An H3 under Design is refused · declared · example enabled · specs/carrier/markdown-body-grammar.h3-refused.sdp.md
  • spec:carrier.markdown-body-grammar.integer-term-refused · An integer-like Model term is refused · declared · example enabled · specs/carrier/markdown-body-grammar.integer-term-refused.sdp.md
  • spec:carrier.markdown-body-grammar.keyed-bullet-refused · A keyed bullet under a plain-bullet owner is refused · declared · example enabled · specs/carrier/markdown-body-grammar.keyed-bullet-refused.sdp.md
  • spec:carrier.markdown-body-grammar.ordered-list-refused · An ordered list is refused · declared · example enabled · specs/carrier/markdown-body-grammar.ordered-list-refused.sdp.md
  • spec:carrier.markdown-body-grammar.plain-bullet-refused · A plain bullet under an open section is refused · declared · example enabled · specs/carrier/markdown-body-grammar.plain-bullet-refused.sdp.md
  • spec:carrier.markdown-body-grammar.raw-html-refused · Raw HTML outside a code span is refused · declared · example enabled · specs/carrier/markdown-body-grammar.raw-html-refused.sdp.md
  • spec:carrier.markdown-body-grammar.repeated-field-refused · A repeated single-valued field is refused · declared · example enabled · specs/carrier/markdown-body-grammar.repeated-field-refused.sdp.md
  • spec:carrier.markdown-body-grammar.second-primary-owner-refused · A second primary owner is refused · declared · example enabled · specs/carrier/markdown-body-grammar.second-primary-owner-refused.sdp.md
  • spec:carrier.markdown-body-grammar.shared-description-refused · A second description across Behavior and Example space is refused · declared · example enabled · specs/carrier/markdown-body-grammar.shared-description-refused.sdp.md
  • spec:carrier.markdown-body-grammar.table-refused · A table under a section is refused · declared · example enabled · specs/carrier/markdown-body-grammar.table-refused.sdp.md
  • spec:carrier.markdown-body-grammar.trailing-prose-refused · Prose after structured content is refused · declared · example enabled · specs/carrier/markdown-body-grammar.trailing-prose-refused.sdp.md
  • spec:carrier.markdown-body-grammar.unrecognized-heading-refused · An unrecognized heading is refused with a suggestion · declared · example enabled · specs/carrier/markdown-body-grammar.unrecognized-heading-refused.sdp.md
  • spec:validation.kind-evidence.second-entry-untargeted · A constraint whose second entry has no target is not complete · declared · example enabled · specs/validation/kind-evidence.second-entry-untargeted.sdp.md

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

    Test anchors: test:protocol.authored-honesty.section-authored-fact, test:protocol.authored-honesty.unearned-stated-fact, test:protocol.claim-separation.collapsed-edge-claim, test:protocol.claim-separation.unratified-descriptor, test:protocol.kind-evidence.constraints-alone, test:protocol.kind-evidence.empty-promoted-child, test:protocol.kind-evidence.second-entry-untargeted, test:protocol.kind-evidence.untargeted-constraint, test:protocol.oracle-target-eligibility.missing-space-refused, test:protocol.oracle-target-eligibility.rule-space-accepted, test:protocol.pack-coherence.incoherent-aggregate, test:protocol.readiness-floor.blocking-open-question, test:protocol.readiness-floor.unrelated-scoped-spec, test:protocol.referential-integrity.dangling-target, test:protocol.referential-integrity.did-you-mean, test:protocol.superseded-decision-signal.branch-names-every-end, test:protocol.superseded-decision-signal.chain-end-named, test:protocol.superseded-decision-signal.closed-chain-named, test:protocol.superseded-decision-signal.dependency-unread, test:protocol.superseded-decision-signal.end-and-loop-named, test:protocol.superseded-decision-signal.live-replacement-warns, test:protocol.superseded-decision-signal.replaced-ruling-warns, test:protocol.superseded-decision-signal.replacement-below-ready-named, test:protocol.superseded-decision-signal.superseded-subject-silent, test:protocol.two-check-families.split-report, test:protocol.verification-linkage.unbound-example, test:protocol.verification-linkage.unresolved-oracle, test:protocol.warn-level-signals.orphan-signal, test:protocol.warn-level-signals.ready-gap-signal. Specs verified by those bindings: spec:carrier.markdown-body-grammar, spec:validation.authored-honesty, spec:validation.authored-honesty.section-authored-fact, spec:validation.authored-honesty.unearned-stated-fact, spec:validation.claim-separation, spec:validation.claim-separation.collapsed-edge-claim, spec:validation.claim-separation.unratified-descriptor, spec:validation.kind-evidence, spec:validation.kind-evidence.constraints-alone, spec:validation.kind-evidence.empty-promoted-child, spec:validation.kind-evidence.second-entry-untargeted, spec:validation.kind-evidence.untargeted-constraint, spec:validation.oracle-target-eligibility, spec:validation.oracle-target-eligibility.missing-space-refused, spec:validation.oracle-target-eligibility.rule-space-accepted, spec:validation.pack-coherence, spec:validation.pack-coherence.incoherent-aggregate, spec:validation.readiness-floor, spec:validation.readiness-floor.blocking-open-question, spec:validation.readiness-floor.unrelated-scoped-spec, spec:validation.referential-integrity, spec:validation.referential-integrity.dangling-target, spec:validation.referential-integrity.did-you-mean, spec:validation.superseded-decision-signal, spec:validation.superseded-decision-signal.branch-names-every-end, spec:validation.superseded-decision-signal.chain-end-named, spec:validation.superseded-decision-signal.closed-chain-named, spec:validation.superseded-decision-signal.dependency-unread, spec:validation.superseded-decision-signal.end-and-loop-named, spec:validation.superseded-decision-signal.live-replacement-warns, spec:validation.superseded-decision-signal.replaced-ruling-warns, spec:validation.superseded-decision-signal.replacement-below-ready-named, spec:validation.superseded-decision-signal.superseded-subject-silent, spec:validation.two-check-families, spec:validation.two-check-families.split-report, spec:validation.verification-linkage, spec:validation.verification-linkage.unbound-example, spec:validation.verification-linkage.unresolved-oracle, spec:validation.warn-level-signals, spec:validation.warn-level-signals.orphan-signal, spec:validation.warn-level-signals.ready-gap-signal.

    Run 2: external run evidence from vitest 4.1.10

    Build: CI 439 · Branch: docs/articles-refresh-1 · Commit: 61576184ea9f39b7f91c51fef5ff991b0bf2d0e6 · Start: 2026-11-04T07:59:39.962Z · Stop: 2026-11-04T08:03:39.928Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldA scoped Spec with no relation names the relation clause (spec:validation.readiness-floor.unrelated-scoped-spec)passed10.94 ms
    executes the bound example against a fresh worldA blocking open question holds a Spec below defined (spec:validation.readiness-floor.blocking-open-question)passed1.66 ms
    executes the bound example against a fresh worldConstraints alone stop short of complete behavior evidence (spec:validation.kind-evidence.constraints-alone)passed1.78 ms
    executes the bound example against a fresh worldA constraint without a machine-readable target is not complete (spec:validation.kind-evidence.untargeted-constraint)passed1.21 ms
    executes the bound example against a fresh worldAn empty promoted child confers no evidence (spec:validation.kind-evidence.empty-promoted-child)passed1.08 ms
    executes the bound example against a fresh worldA disconnected Spec warns and fails nothing (spec:validation.warn-level-signals.orphan-signal)passed0.73 ms
    executes the bound example against a fresh worldA ready Spec without a verifier warns and fails nothing (spec:validation.warn-level-signals.ready-gap-signal)passed1.09 ms
    executes the bound example against a fresh worldAn unrelated missing target is a bare conformance error (spec:validation.referential-integrity.dangling-target)passed1.11 ms
    executes the bound example against a fresh worldA unique near miss earns a did-you-mean suggestion (spec:validation.referential-integrity.did-you-mean)passed1 ms
    executes the bound example against a fresh worldA delivery fact smuggled into a section is refused (spec:validation.authored-honesty.section-authored-fact)passed1.1 ms
    executes the bound example against a fresh worldA stated delivery fact no binding earns is refused (spec:validation.authored-honesty.unearned-stated-fact)passed0.93 ms
    executes the bound example against a fresh worldA binding edge cannot borrow the declared claim (spec:validation.claim-separation.collapsed-edge-claim)passed1.12 ms
    executes the bound example against a fresh worldAn unratified kind fails closed instead of reaching the floor (spec:validation.claim-separation.unratified-descriptor)passed0.69 ms
    executes the bound example against a fresh worldA declared verifier no test binds confers nothing (spec:validation.verification-linkage.unbound-example)passed3.23 ms
    executes the bound example against a fresh worldAn oracle targeting a Spec with no example space is refused (spec:validation.verification-linkage.unresolved-oracle)passed0.94 ms
    executes the bound example against a fresh worldA rule owning an example space accepts an oracle (spec:validation.oracle-target-eligibility.rule-space-accepted)passed1.31 ms
    executes the bound example against a fresh worldA target without an example space refuses an oracle (spec:validation.oracle-target-eligibility.missing-space-refused)passed0.54 ms
    executes the bound example against a fresh worldA repeated member and a non-model modelRef are both named (spec:validation.pack-coherence.incoherent-aggregate)passed1.28 ms
    executes the bound example against a fresh worldOne report carries both families and claims neither as its own (spec:validation.two-check-families.split-report)passed1.28 ms
    executes the bound example against a fresh worldA Spec shaped by a replaced decision warns once and fails nothing (spec:validation.superseded-decision-signal.replaced-ruling-warns)passed3.45 ms
    executes the bound example against a fresh worldThe warning names the decision at the end of a chain of replacements (spec:validation.superseded-decision-signal.chain-end-named)passed1.23 ms
    executes the bound example against a fresh worldA replacement chain that branches names every end (spec:validation.superseded-decision-signal.branch-names-every-end)passed1.3 ms
    executes the bound example against a fresh worldA chain of replacements that closes on itself is named and fails nothing (spec:validation.superseded-decision-signal.closed-chain-named)passed2.24 ms
    executes the bound example against a fresh worldA dependency on a replaced decision raises no warning (spec:validation.superseded-decision-signal.dependency-unread)passed0.91 ms
    executes the bound example against a fresh worldA superseded decision is not warned for the decision it names (spec:validation.superseded-decision-signal.superseded-subject-silent)passed0.96 ms
    executes the bound example against a fresh worldA replacement still below ready is named as it stands (spec:validation.superseded-decision-signal.replacement-below-ready-named)passed1.09 ms
    executes the bound example against a fresh worldA decision still decided by the record it replaces warns (spec:validation.superseded-decision-signal.live-replacement-warns)passed0.92 ms
    executes the bound example against a fresh worldA chain of replacements that reaches an end and a loop names both (spec:validation.superseded-decision-signal.end-and-loop-named)passed1.12 ms
    deduplicates stale pairs, names self loops and leaves absent locations absentnot recordedpassed1.31 ms
    warns once for each stale decision and ignores unresolved and wrongly typed replacementsnot recordedpassed1.17 ms
    locates each subject separately when two Specs name the same stale decisionnot recordedpassed0.69 ms
    checks branch messages independently of the example idnot recordedpassed0.83 ms
    checks the extracted 'message' Design entrynot recordedpassed2.62 ms
    checks the extracted 'closedChainMessage' Design entrynot recordedpassed0.8 ms
    checks the extracted 'mixedChainMessage' Design entrynot recordedpassed0.82 ms
    executes the bound example against a fresh worldA constraint whose second entry has no target is not complete (spec:validation.kind-evidence.second-entry-untargeted)passed0.85 ms
  • test:protocol.markdown-body-grammar-regressions · checks Markdown body grammar refusals · anchored · test anchor binding present · test/markdown-reifier.test.ts:102

    External run evidence from test/markdown-reifier.test.ts

    Test anchors: test:protocol.envelope-contract, test:protocol.markdown-body-grammar-regressions, test:protocol.markdown-parser, test:protocol.prose-ownership. Specs verified by those bindings: spec:carrier.envelope-contract, spec:carrier.markdown-body-grammar, spec:carrier.markdown-parser, spec:carrier.prose-ownership-rule.

    Run 2: external run evidence from vitest 4.1.10

    Build: CI 439 · Branch: docs/articles-refresh-1 · Commit: 61576184ea9f39b7f91c51fef5ff991b0bf2d0e6 · Start: 2026-11-04T07:59:39.962Z · Stop: 2026-11-04T08:03:39.928Z

    NameSuiteResultDuration
    reifies a lawful Markdown Pack manifestMarkdown frontmatter reifierpassed10.78 ms
    refuses a Spec-only key on a PackMarkdown frontmatter reifierpassed3.13 ms
    refuses Pack membership on a SpecMarkdown frontmatter reifierpassed3.8 ms
    refuses a Pack section headingMarkdown frontmatter reifierpassed1.72 ms
    refuses a wrong-namespace Pack memberMarkdown frontmatter reifierpassed1.1 ms
    refuses a reserved derived-name key on a PackMarkdown frontmatter reifierpassed0.91 ms
    refuses a pack: id that fails the id grammarMarkdown frontmatter reifierpassed1.13 ms
    reifies the frozen corpus envelopes at their id token linesMarkdown frontmatter reifierpassed18.14 ms
    maps scalar and list relations in authored orderMarkdown frontmatter reifierpassed2.89 ms
    distinguishes an explicit empty relation set from a missing relation keyMarkdown frontmatter reifierpassed2.27 ms
    refuses warning without throwingMarkdown frontmatter reifierpassed2.91 ms
    refuses directive without throwingMarkdown frontmatter reifierpassed1.11 ms
    refuses tag without throwingMarkdown frontmatter reifierpassed1.98 ms
    refuses anchor without throwingMarkdown frontmatter reifierpassed0.85 ms
    refuses alias without throwingMarkdown frontmatter reifierpassed0.89 ms
    refuses merge without throwingMarkdown frontmatter reifierpassed2.65 ms
    refuses complex key without throwingMarkdown frontmatter reifierpassed0.99 ms
    refuses non-string scalar without throwingMarkdown frontmatter reifierpassed3.67 ms
    refuses body delimiter without throwingMarkdown frontmatter reifierpassed0.33 ms
    caps findings and leaves a healthy sibling independently reifiableMarkdown frontmatter reifierpassed25.03 ms
    caps body findings with the frozen structure finding IDMarkdown frontmatter reifierpassed2.1 ms
    reports a genuine YAML document warningMarkdown frontmatter reifierpassed1.5 ms
    contains the YAML parser's unknown throw at the public reifier boundaryMarkdown frontmatter reifierpassed25.54 ms
    enforces the 256 KiB carrier byte limit at and immediately over its boundaryMarkdown frontmatter reifierpassed5.8 ms
    enforces the 32 KiB frontmatter byte limit at and immediately over its boundaryMarkdown frontmatter reifierpassed1.51 ms
    enforces the 16 KiB scalar byte limit at and immediately over its boundaryMarkdown frontmatter reifierpassed3.39 ms
    enforces the 2,000 node limit at and immediately over its boundaryMarkdown frontmatter reifierpassed1315.11 ms
    enforces the depth limit of 16 at and immediately over its boundaryMarkdown frontmatter reifierpassed3.96 ms
    refuses duplicate relation keysMarkdown frontmatter reifierpassed0.94 ms
    refuses duplicate targets within one relation listMarkdown frontmatter reifierpassed0.78 ms
    refuses an empty relation sequenceMarkdown frontmatter reifierpassed3.3 ms
    refuses a wrong-namespace relation targetMarkdown frontmatter reifierpassed0.74 ms
    refuses an entry address in the Spec id at the field's lineMarkdown frontmatter reifierpassed1.03 ms
    refuses an entry address in a relation target at the field's lineMarkdown frontmatter reifierpassed0.8 ms
    refuses an entry address in a Pack member at the field's lineMarkdown frontmatter reifierpassed0.72 ms
    refuses an entry address in a Pack model reference at the field's lineMarkdown frontmatter reifierpassed0.68 ms
    refuses a Pack whose own id carries an entry address with the namespace reasonMarkdown frontmatter reifierpassed0.71 ms
    accepts distinct relation keys that share a targetMarkdown frontmatter reifierpassed0.81 ms
    accepts a pure CRLF carrierMarkdown frontmatter reifierpassed0.99 ms
    refuses a byte-order markMarkdown frontmatter reifierpassed0.28 ms
    refuses an indented openerMarkdown frontmatter reifierpassed0.2 ms
    refuses a document-end closerMarkdown frontmatter reifierpassed0.2 ms
    refuses mixed CRLF and LF newlinesMarkdown frontmatter reifierpassed0.21 ms
    refuses the carrier at its physical line in the H1 titleMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.54 ms
    refuses the carrier at its physical line in the narrativeMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.37 ms
    refuses the carrier at its physical line in section proseMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.39 ms
    refuses the carrier at its physical line in a plain entryMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.44 ms
    refuses the carrier at its physical line in a keyed entryMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.36 ms
    refuses the carrier at its physical line in an open question fieldMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.41 ms
    refuses the carrier at its physical line in an end of lineMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.36 ms
    refuses a fence step, a frontmatter value and a Pack manifest at their physical linesMarkdown frontmatter reifier > a carrier line holding a lone CRpassed0.74 ms
    refuses the carrier at its physical line in the H1 titleMarkdown frontmatter reifier > a carrier line holding U+2028passed0.43 ms
    refuses the carrier at its physical line in the narrativeMarkdown frontmatter reifier > a carrier line holding U+2028passed0.43 ms
    refuses the carrier at its physical line in section proseMarkdown frontmatter reifier > a carrier line holding U+2028passed0.37 ms
    refuses the carrier at its physical line in a plain entryMarkdown frontmatter reifier > a carrier line holding U+2028passed0.38 ms
    refuses the carrier at its physical line in a keyed entryMarkdown frontmatter reifier > a carrier line holding U+2028passed0.34 ms
    refuses the carrier at its physical line in an open question fieldMarkdown frontmatter reifier > a carrier line holding U+2028passed0.35 ms
    refuses the carrier at its physical line in an end of lineMarkdown frontmatter reifier > a carrier line holding U+2028passed0.37 ms
    refuses a fence step, a frontmatter value and a Pack manifest at their physical linesMarkdown frontmatter reifier > a carrier line holding U+2028passed0.53 ms
    refuses the carrier at its physical line in the H1 titleMarkdown frontmatter reifier > a carrier line holding U+2029passed0.33 ms
    refuses the carrier at its physical line in the narrativeMarkdown frontmatter reifier > a carrier line holding U+2029passed0.27 ms
    refuses the carrier at its physical line in section proseMarkdown frontmatter reifier > a carrier line holding U+2029passed0.26 ms
    refuses the carrier at its physical line in a plain entryMarkdown frontmatter reifier > a carrier line holding U+2029passed0.27 ms
    refuses the carrier at its physical line in a keyed entryMarkdown frontmatter reifier > a carrier line holding U+2029passed0.31 ms
    refuses the carrier at its physical line in an open question fieldMarkdown frontmatter reifier > a carrier line holding U+2029passed0.26 ms
    refuses the carrier at its physical line in an end of lineMarkdown frontmatter reifier > a carrier line holding U+2029passed0.28 ms
    refuses a fence step, a frontmatter value and a Pack manifest at their physical linesMarkdown frontmatter reifier > a carrier line holding U+2029passed0.5 ms
    keeps LF and CRLF line endings lawful beside the refused separatorsMarkdown frontmatter reifierpassed2.09 ms
    maps the ruled title, intent, and behavior lists from the bodyMarkdown frontmatter reifierpassed1.42 ms
    maps the ruled fences and every remaining typed ownerMarkdown frontmatter reifierpassed4.12 ms
    serializes owned prose canonically across both public carrier reifiersMarkdown frontmatter reifierpassed48.23 ms
    serializes GWT and behavior key permutations to identical bytesMarkdown frontmatter reifierpassed18.59 ms
    omits absent prose fields and rejects constraint-local prose from the TypeScript carrierMarkdown frontmatter reifierpassed8.15 ms
    uses the first minimum heading suggestion within edit distance twoMarkdown frontmatter reifierpassed1.81 ms
    refuses a missing H1 through the frozen body diagnosticMarkdown frontmatter reifierpassed0.77 ms
    refuses an empty H1 through the frozen body diagnosticMarkdown frontmatter reifierpassed0.83 ms
    refuses a heading beyond suggestion distance two through the frozen body diagnosticMarkdown frontmatter reifierpassed1.17 ms
    refuses a tied heading using the first minimum through the frozen body diagnosticMarkdown frontmatter reifierpassed1.12 ms
    refuses a blank line in a fence through the frozen body diagnosticMarkdown frontmatter reifierpassed0.92 ms
    refuses fence attributes through the frozen body diagnosticMarkdown frontmatter reifierpassed0.74 ms
    refuses an unclosed fence through the frozen body diagnosticMarkdown frontmatter reifierpassed0.71 ms
    refuses a gwt fence on a non-example through the frozen body diagnosticMarkdown frontmatter reifierpassed0.79 ms
    refuses an invalid Verification mode through the frozen body diagnosticMarkdown frontmatter reifierpassed1.56 ms
    refuses a repeated identical literal heading through the frozen body diagnosticMarkdown frontmatter reifierpassed0.7 ms
    refuses ordered dot list in narrativeMarkdown frontmatter reifierpassed0.81 ms
    refuses ordered parenthesis list in narrativeMarkdown frontmatter reifierpassed0.69 ms
    refuses star list in narrativeMarkdown frontmatter reifierpassed0.65 ms
    refuses plus list in narrativeMarkdown frontmatter reifierpassed0.79 ms
    refuses ordered dot tab list in narrativeMarkdown frontmatter reifierpassed0.95 ms
    refuses ordered parenthesis tab list in narrativeMarkdown frontmatter reifierpassed0.69 ms
    refuses star tab list in narrativeMarkdown frontmatter reifierpassed0.67 ms
    refuses plus tab list in narrativeMarkdown frontmatter reifierpassed0.63 ms
    refuses HTML comment in narrativeMarkdown frontmatter reifierpassed0.69 ms
    refuses setext equals underline in narrativeMarkdown frontmatter reifierpassed0.69 ms
    refuses setext dash underline in narrativeMarkdown frontmatter reifierpassed0.65 ms
    refuses star thematic break in narrativeMarkdown frontmatter reifierpassed0.67 ms
    refuses underscore thematic break in narrativeMarkdown frontmatter reifierpassed0.88 ms
    refuses ordered list in section proseMarkdown frontmatter reifierpassed0.89 ms
    refuses star list in section proseMarkdown frontmatter reifierpassed0.75 ms
    refuses plus list in section proseMarkdown frontmatter reifierpassed0.67 ms
    refuses setext underline in section proseMarkdown frontmatter reifierpassed0.7 ms
    refuses thematic break in section proseMarkdown frontmatter reifierpassed0.67 ms
    refuses bare HTML opener in section proseMarkdown frontmatter reifierpassed0.63 ms
    refuses dash tab list in section proseMarkdown frontmatter reifierpassed0.66 ms
    refuses HTML comment in section proseMarkdown frontmatter reifierpassed0.65 ms
    refuses processing instruction in section proseMarkdown frontmatter reifierpassed2.09 ms
    refuses declaration in section proseMarkdown frontmatter reifierpassed0.65 ms
    refuses mixed-mode Verification headings instead of overwriting the first sectionMarkdown frontmatter reifierpassed0.79 ms
    preserves Behavior rules when an example Intent appears after BehaviorMarkdown frontmatter reifierpassed0.98 ms
    refuses a GWT fence under ModelMarkdown frontmatter reifierpassed0.96 ms
    refuses an H3 under DesignMarkdown frontmatter reifierpassed0.86 ms
    refuses an open question before its H3 ownerMarkdown frontmatter reifierpassed0.74 ms
    refuses an Intent field after the open-questions H3Markdown frontmatter reifierpassed0.8 ms
    refuses block shapes in list text: > quoteMarkdown frontmatter reifierpassed2.42 ms
    refuses block shapes in list text: | tableMarkdown frontmatter reifierpassed2.25 ms
    refuses block shapes in list text: * nestedMarkdown frontmatter reifierpassed1.77 ms
    refuses block shapes in list text: + nestedMarkdown frontmatter reifierpassed2.02 ms
    refuses block shapes in list text: - nestedMarkdown frontmatter reifierpassed1.86 ms
    refuses block shapes in list text: - - xMarkdown frontmatter reifierpassed1.75 ms
    refuses block shapes in list text: -Markdown frontmatter reifierpassed1.98 ms
    refuses block shapes in list text: *Markdown frontmatter reifierpassed1.88 ms
    refuses block shapes in list text: +Markdown frontmatter reifierpassed1.85 ms
    refuses block shapes in list text: 1.Markdown frontmatter reifierpassed1.81 ms
    refuses block shapes in list text: 1)Markdown frontmatter reifierpassed1.87 ms
    refuses block shapes in list text: 1. numberedMarkdown frontmatter reifierpassed2.04 ms
    refuses block shapes in list text: 1) numberedMarkdown frontmatter reifierpassed1.8 ms
    refuses block shapes in list text: ---Markdown frontmatter reifierpassed1.83 ms
    refuses block shapes in list text: ***Markdown frontmatter reifierpassed1.92 ms
    refuses block shapes in list text: ___Markdown frontmatter reifierpassed1.89 ms
    refuses block shapes in list text: ===Markdown frontmatter reifierpassed1.8 ms
    refuses block shapes in list text: <unclosedMarkdown frontmatter reifierpassed1.86 ms
    refuses block shapes in list text: =Markdown frontmatter reifierpassed1.84 ms
    refuses block shapes in list text: ==Markdown frontmatter reifierpassed1.83 ms
    refuses block shapes in list text: --Markdown frontmatter reifierpassed1.86 ms
    refuses block shapes in list text: # TitleMarkdown frontmatter reifierpassed1.88 ms
    refuses block shapes in list text: ### NotesMarkdown frontmatter reifierpassed1.86 ms
    refuses block shapes in list text: ######Markdown frontmatter reifierpassed1.97 ms
    refuses block shapes in list text: ## DesignMarkdown frontmatter reifierpassed1.85 ms
    refuses block shapes in list text: ```jsMarkdown frontmatter reifierpassed1.82 ms
    refuses block shapes in list text: ~~~Markdown frontmatter reifierpassed1.82 ms
    refuses lone list markers across prose owners: *Markdown frontmatter reifierpassed4.64 ms
    refuses lone list markers across prose owners: +Markdown frontmatter reifierpassed4.13 ms
    refuses lone list markers across prose owners: 1.Markdown frontmatter reifierpassed7.35 ms
    refuses lone list markers across prose owners: 1)Markdown frontmatter reifierpassed6.87 ms
    refuses the block opener "* item" wherever prose is readMarkdown frontmatter reifierpassed3.24 ms
    refuses the block opener "+ item" wherever prose is readMarkdown frontmatter reifierpassed7.28 ms
    refuses the block opener "1. item" wherever prose is readMarkdown frontmatter reifierpassed2.16 ms
    refuses the block opener "1)\titem" wherever prose is readMarkdown frontmatter reifierpassed6.39 ms
    refuses the block opener "-\titem" wherever prose is readMarkdown frontmatter reifierpassed9.81 ms
    refuses short underlines and fences across prose owners: =Markdown frontmatter reifierpassed4.79 ms
    refuses short underlines and fences across prose owners: ==Markdown frontmatter reifierpassed4.64 ms
    refuses short underlines and fences across prose owners: -Markdown frontmatter reifierpassed1.58 ms
    refuses short underlines and fences across prose owners: --Markdown frontmatter reifierpassed4.59 ms
    refuses short underlines and fences across prose owners: ~~~Markdown frontmatter reifierpassed1.54 ms
    refuses short underlines and fences across prose owners: ~~~jsMarkdown frontmatter reifierpassed4.6 ms
    refuses short underlines and fences across prose owners: ~~~~Markdown frontmatter reifierpassed1.6 ms
    refuses short underlines and fences across prose owners: ```jsMarkdown frontmatter reifierpassed4.51 ms
    reports each tilde fence line exactly once in narrativeMarkdown frontmatter reifierpassed0.79 ms
    reports each tilde fence line exactly once in sectionMarkdown frontmatter reifierpassed0.66 ms
    reports each tilde fence line exactly once in section with an H2 inside the blockMarkdown frontmatter reifierpassed3.72 ms
    refuses a backtick-prefixed section line even with backticks in its info stringMarkdown frontmatter reifierpassed0.8 ms
    distinguishes reserved and ordinary plain-bullet names: has-verifierMarkdown frontmatter reifierpassed0.77 ms
    distinguishes reserved and ordinary plain-bullet names: Has-VerifierMarkdown frontmatter reifierpassed0.64 ms
    distinguishes reserved and ordinary plain-bullet names: some-labelMarkdown frontmatter reifierpassed3.8 ms
    distinguishes reserved and ordinary plain-bullet names: has_verifierMarkdown frontmatter reifierpassed0.72 ms
    reads the single-letter-led word in "a: note" as a key in a plain-bullet sectionMarkdown frontmatter reifierpassed0.73 ms
    reads the single-letter-led word in "Z: note" as a key in a plain-bullet sectionMarkdown frontmatter reifierpassed0.65 ms
    reads the single-letter-led word in "x1: note" as a key in a plain-bullet sectionMarkdown frontmatter reifierpassed0.61 ms
    keeps the bullet "a:note" plain text in a plain-bullet sectionMarkdown frontmatter reifierpassed3.8 ms
    keeps the bullet "1: note" plain text in a plain-bullet sectionMarkdown frontmatter reifierpassed0.71 ms
    keeps the bullet "a : note" plain text in a plain-bullet sectionMarkdown frontmatter reifierpassed0.67 ms
    keeps the bullet "`a: note`" plain text in a plain-bullet sectionMarkdown frontmatter reifierpassed0.65 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: implementedMarkdown frontmatter reifierpassed12.64 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: IMPLEMENTEDMarkdown frontmatter reifierpassed7.71 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: hasverifierMarkdown frontmatter reifierpassed5.58 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: HasVerifierMarkdown frontmatter reifierpassed5.56 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: HAS-VERIFIERMarkdown frontmatter reifierpassed5.44 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: ObservedMarkdown frontmatter reifierpassed7.24 ms
    refuses reserved delivery properties in Markdown envelopes and keyed sections: deliveryFactsMarkdown frontmatter reifierpassed5.64 ms
    refuses frontmatter title through its ruled diagnosticMarkdown frontmatter reifierpassed0.8 ms
    refuses second H1 through its ruled diagnosticMarkdown frontmatter reifierpassed0.62 ms
    refuses near-miss heading through its ruled diagnosticMarkdown frontmatter reifierpassed0.69 ms
    refuses indented list through its ruled diagnosticMarkdown frontmatter reifierpassed0.57 ms
    refuses empty list through its ruled diagnosticMarkdown frontmatter reifierpassed0.61 ms
    refuses nested list through its ruled diagnosticMarkdown frontmatter reifierpassed0.54 ms
    refuses extra heading space through its ruled diagnosticMarkdown frontmatter reifierpassed0.57 ms
    refuses extra list space through its ruled diagnosticMarkdown frontmatter reifierpassed0.62 ms
    refuses invalid GWT phase through its ruled diagnosticMarkdown frontmatter reifierpassed0.68 ms
    refuses late description through its ruled diagnosticMarkdown frontmatter reifierpassed0.62 ms
    refuses raw HTML through its ruled diagnosticMarkdown frontmatter reifierpassed0.51 ms
    refuses inline raw HTML through its ruled diagnosticMarkdown frontmatter reifierpassed0.52 ms
    refuses trailing prose through its ruled diagnosticMarkdown frontmatter reifierpassed0.52 ms
    refuses unsupported block through its ruled diagnosticMarkdown frontmatter reifierpassed0.62 ms
    refuses reserved authored fact through its ruled diagnosticMarkdown frontmatter reifierpassed0.6 ms
    reads a key after the flag and leaves an unkeyed question without oneopen question keys in the Markdown markerpassed1.16 ms
    refuses the carrier whole on a key with an upper-case first letteropen question keys in the Markdown markerpassed0.74 ms
    refuses the carrier whole on a key with an empty keyopen question keys in the Markdown markerpassed0.58 ms
    refuses the carrier whole on a key with a hyphenopen question keys in the Markdown markerpassed0.61 ms
    refuses the carrier whole on a key with a digit firstopen question keys in the Markdown markerpassed0.81 ms
    refuses the carrier whole on a key with a space insideopen question keys in the Markdown markerpassed0.65 ms
    refuses the carrier whole on a key with a non-ASCII letteropen question keys in the Markdown markerpassed0.67 ms
    refuses the carrier whole on a key an earlier question of the Spec carriesopen question keys in the Markdown markerpassed0.72 ms
    keeps distinct keys that differ only in caseopen question keys in the Markdown markerpassed0.8 ms
    keeps today's refusal for a marker with no space before the hashopen question keys in the Markdown markerpassed0.68 ms
    keeps today's refusal for a marker with two spaces before the hashopen question keys in the Markdown markerpassed0.61 ms
    keeps today's refusal for a marker with a key without its hashopen question keys in the Markdown markerpassed0.58 ms
    refuses a keyed question outside its H3 owner as an unkeyed one is refusedopen question keys in the Markdown markerpassed0.63 ms

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
Requirement drawing for spec:carrier.markdown-body-grammarrefines, verifies · declaredrefines (14), verifies (15) · declaredrefines, verifies · declaredsatisfies · anchoredsatisfies · anchoredsatisfies · anchoredmodels · anchoredrefines · declaredrefines · declaredverifies · anchoredIntended Specsspec:carrier.inline-code-spansInline code is content,never markup…carrier.inline-code-spansdeclared Specspec:carrier.markdown-body-grammarThe Markdown body acceptsone closed form per section…carrier.markdown-body-grammardeclared SpecDeclared verifying examples19 verifying examples · declared; 19 test bindings · anchored, folded19 verifying examples ·declared19 test bindings · anchored ·foldedSatisfying or referencingunitsimpl:protocol.inline-code-spansscans raw HTML outsidematched code spansimpl:protocol.inline-code-spansanchored codeimpl:protocol.markdown-body-grammarmaps Markdown body contentto typed prose owners…protocol.markdown-body-grammaranchored codeimpl:protocol.markdown-contentdecodes located Markdownentries and typed fences…protocol.markdown-contentanchored codeTest or oracle bindingsoracle:protocol.inline-code-spansexpected inline codeoutcome by authored locationoracle:protocol.inline-code-spansanchored oracle bindingtest:protocol.markdown-body-grammar-regressionschecks Markdown bodygrammar refusals…protocol.markdown-body-grammar-regressionsanchored test binding ·binding presentOutside the selected setspec:carrier.markdown-authoringMarkdown authoring entersthe one graph…carrier.markdown-authoringdeclared Specspec:validation.kind-evidenceEach kind carries its ownevidence…validation.kind-evidencedeclared Spec
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:126
  • impl:protocol.markdown-content: decodes located Markdown entries and typed fences · anchored code · src/extract/markdown-body-content.ts:12
  • 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-regressions: checks Markdown body grammar refusals · anchored test binding · binding present · test/markdown-reifier.test.ts:102
  • 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-regressions verifies spec:carrier.markdown-body-grammar · 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:197 · 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:263 · layer domain · context protocol
    • component:protocol.validate · one finding currency and ordered checks · src/validate/validators.ts:76 · layer domain · context protocol
  • impl:protocol.markdown-body-grammar · maps Markdown body content to typed prose owners · src/extract/markdown-body.ts:126

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

    Uses

    None.

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

    Component: component:protocol.extract · the carrier and source pipeline · src/extract/index.ts:197 · 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:126 · 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:12 · 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.