Spec Studio

The Markdown parser reifies the ruled subset

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

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/carrier/markdown-parser.sdp.md

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

Intent
problem
Prevent carrier-specific graph and validation paths from diverging.
outcome
Reify authored Markdown without a second graph or validation path.
value
Markdown-carried intent remains subject to the Protocol's deterministic checks.
Behavior
rule line 21 · specs/carrier/markdown-parser.sdp.md:21
The parser accepts the grammar stated by spec:carrier.markdown-body-grammar, keeps matched code spans literal under spec:carrier.inline-code-spans, and excludes a malformed Markdown carrier while continuing healthy siblings.
rule line 22 · specs/carrier/markdown-parser.sdp.md:22
The ruled Markdown parser has bounded finding-class parity with the TypeScript carrier for extract/non-static-envelope, extract/invalid-id, extract/duplicate-id, extract/reserved-property, extract/unowned-prose, and extract/unrecognized-property; both carriers report each of these findings under the same validator id, while severity and extract-versus-refuse outcomes remain carrier-specific.
rule line 23 · specs/carrier/markdown-parser.sdp.md:23
Carrier-specific finding — extract/parse-error remains distinct because YAML/frontmatter parsing has no TypeScript parser-diagnostic analogue.
rule line 24 · specs/carrier/markdown-parser.sdp.md:24
Carrier-specific finding — extract/non-static-section remains distinct because TypeScript degrades optional section properties while Markdown refuses malformed documents whole.
rule line 25 · specs/carrier/markdown-parser.sdp.md:25
A static envelope field that cannot be reified fails extraction in either carrier. A non-static optional TypeScript section property drops with a warning, except the question failures below; a malformed Markdown carrier is refused whole.
rule line 26 · specs/carrier/markdown-parser.sdp.md:26
The TypeScript carrier refuses an integer-like Design or UI key or Model term with an error and drops only that member. An unknown property inside a question, or a malformed question key, is an error at that property; refusing it does not remove the question's blocking flag.
rule line 27 · specs/carrier/markdown-parser.sdp.md:27
In the TypeScript carrier, a non-static value under a question's decider, links, provisional or trigger field drops the whole question list with an error; a non-static question text or blocking flag drops the whole list with a warning.
rule line 28 · specs/carrier/markdown-parser.sdp.md:28
Carrier-specific finding — extract/unrecognized-statement remains distinct because Markdown owns prose and structures, not TypeScript statement recognition.
rule line 29 · specs/carrier/markdown-parser.sdp.md:29
Carrier-specific finding — extract/misplaced-authoring remains distinct because Markdown has no executable authoring-call surface.

9 unkeyed rules.

Verifying examples

One finding class is shared while the carriers' outcomes stay their own · spec:carrier.markdown-parser.bounded-parity · ready floor ready

Executable Spec

Given the paired carrier probes named {probe: "unrecognized-property"}
When both carriers reify their probe
Then both carriers report the finding class {findingId: "extract/unrecognized-property"}
Then the TypeScript carrier reports severity {typeScriptSeverity: "warning"} and extracts {typeScriptSpecs: 1} specs
Then the Markdown carrier reports severity {markdownSeverity: "error"} and extracts {markdownSpecs: 0} specs

Open example

Example space

Given the paired carrier probes named {probe:string}
When both carriers reify their probe
Then both carriers report the finding class {findingId:string}
Then the TypeScript carrier reports severity {typeScriptSeverity:"warning"|"error"} and extracts {typeScriptSpecs:number} specs
Then the Markdown carrier reports severity {markdownSeverity:"warning"|"error"} and extracts {markdownSpecs:number} specs
Verification · executable
criteria
  • Each same-class matrix row reports the same validator id from both carriers, with the specified severity and extraction outcome for each carrier; carrier-specific rows keep their distinct findings.
mode
executable
Verification

Verifier bindings

  • spec:carrier.markdown-parser.bounded-parity · One finding class is shared while the carriers' outcomes stay their own · declared · example enabled · specs/carrier/markdown-parser.bounded-parity.sdp.md

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

    Test anchors: test:protocol.markdown-parser.bounded-parity, test:protocol.open-question-fields.dropped-list-warns, test:protocol.slot-notation.one-literal-binding, test:protocol.slot-notation.refused-guess, test:protocol.slot-notation.typed-declaration. Specs verified by those bindings: spec:carrier.markdown-parser, spec:carrier.markdown-parser.bounded-parity, spec:carrier.slot-notation, spec:carrier.slot-notation.one-literal-binding, spec:carrier.slot-notation.refused-guess, spec:carrier.slot-notation.typed-declaration, spec:model.open-question-fields, spec:model.open-question-fields.dropped-list-warns.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 433 · Branch: fix/second-review-pass · Commit: 6375b6e431a7cf885a49befec76d7876cd3e538c · Start: 2026-11-04T07:12:23.076Z · Stop: 2026-11-04T07:15:49.695Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldOne finding class is shared while the carriers' outcomes stay their own (spec:carrier.markdown-parser.bounded-parity)passed47.31 ms
    executes the bound example against a fresh worldA typed declaration normalizes to the skeleton its binding shares (spec:carrier.slot-notation.typed-declaration)passed0.85 ms
    executes the bound example against a fresh worldA stray brace stays prose while an unusable group stays a named slot (spec:carrier.slot-notation.refused-guess)passed0.65 ms
    executes the bound example against a fresh worldA one-literal group in a vocabulary is a binding that declares nothing (spec:carrier.slot-notation.one-literal-binding)passed4.39 ms
    executes the bound example against a fresh worldA TypeScript question list that cannot be read drops whole with a warning (spec:model.open-question-fields.dropped-list-warns)passed16.67 ms
    drops the whole question list for a non-static question textnot recordedpassed6.76 ms
    drops the whole question list for a non-static blocking flagnot recordedpassed5.92 ms
    drops the whole question list for a spread in the listnot recordedpassed8.19 ms
  • test:protocol.markdown-parser · Markdown reifier tests verify the ruled parser · anchored · test anchor binding present · test/markdown-reifier.test.ts:91

    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 1: external run evidence from vitest 4.1.10

    Build: CI 433 · Branch: fix/second-review-pass · Commit: 6375b6e431a7cf885a49befec76d7876cd3e538c · Start: 2026-11-04T07:12:23.076Z · Stop: 2026-11-04T07:15:49.695Z

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

Example space

  • probe · string · declared by the paired carrier probes named {probe}

Bound points

Exampleprobe
spec:carrier.markdown-parser.bounded-parity"unrecognized-property"

Oracle binding: none

Coverage

probe: "unrecognized-property" · spec:carrier.markdown-parser.bounded-parity · not enumerable

Unbound

  • probe: None
Design view

Requirement drawing

Requirement drawing for spec:carrier.markdown-parser
The diagram as text
  • spec:carrier.markdown-parser: The Markdown parser reifies the ruled subset · declared Spec
  • spec:carrier.markdown-parser.bounded-parity: One finding class is shared while the carriers' outcomes stay their own · declared Spec
  • spec:carrier.markdown-authoring: Markdown authoring enters the one graph · declared Spec
  • impl:protocol.markdown-parser: reifies Markdown Specs and Packs through one carrier boundary · anchored code · src/extract/markdown.ts:37
  • impl:protocol.static-reification: reifies authored carriers from the AST and never evaluates them · anchored code · src/extract/reify.ts:2217
  • test:protocol.markdown-parser: Markdown reifier tests verify the ruled parser · anchored test binding · binding present · test/markdown-reifier.test.ts:91
  • test:protocol.markdown-parser.bounded-parity: the bounded-parity point verifies one shared finding class and its split outcomes · anchored test binding · binding present · test/self-hosting-carrier.test.ts:149
  • spec:carrier.markdown-parser refines spec:carrier.markdown-authoring · declared
  • spec:carrier.markdown-parser.bounded-parity refines spec:carrier.markdown-parser · declared
  • spec:carrier.markdown-parser.bounded-parity verifies spec:carrier.markdown-parser · declared
  • impl:protocol.markdown-parser satisfies spec:carrier.markdown-parser · anchored
  • impl:protocol.static-reification satisfies spec:carrier.markdown-parser · anchored
  • test:protocol.markdown-parser verifies spec:carrier.markdown-parser · anchored
  • test:protocol.markdown-parser.bounded-parity verifies spec:carrier.markdown-parser.bounded-parity · anchored
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.

Decisions

No decision record named.

Runtime
  • 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-parser · reifies Markdown Specs and Packs through one carrier boundary · src/extract/markdown.ts:37

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

    Uses

    None.

  • impl:protocol.static-reification · reifies authored carriers from the AST and never evaluates them · src/extract/reify.ts:2217

    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-parser
The diagram as text
  • spec:carrier.envelope-contract: The Markdown envelope is explicit and bounded
  • 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-pack-authoring: A Pack has a Markdown manifest carrier
  • spec:carrier.markdown-parser: The Markdown parser reifies the ruled subset
  • spec:carrier.markdown-parser.bounded-parity: One finding class is shared while the carriers' outcomes stay their own
  • spec:validation.duplicate-ids: Duplicate carrier IDs are excluded loudly
  • spec:carrier.markdown-parser constrainedBy spec:carrier.inline-code-spans · declared
  • spec:carrier.markdown-parser dependsOn spec:carrier.envelope-contract · declared
  • spec:carrier.markdown-parser dependsOn spec:carrier.markdown-body-grammar · declared
  • spec:carrier.markdown-parser refines spec:carrier.markdown-authoring · declared
  • spec:carrier.markdown-authoring dependsOn spec:carrier.markdown-parser · declared
  • spec:carrier.markdown-pack-authoring dependsOn spec:carrier.markdown-parser · declared
  • spec:validation.duplicate-ids dependsOn spec:carrier.markdown-parser · declared — duplicate exclusion includes the default Markdown carrier
  • spec:carrier.markdown-parser.bounded-parity refines spec:carrier.markdown-parser · declared
  • spec:carrier.markdown-parser.bounded-parity verifies spec:carrier.markdown-parser · declared
Mermaid source

Copyable source; the Studio draws static SVG.

Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.

Rests on

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 · outgoingInline code is content, never markup
spec:carrier.inline-code-spans · resolves
declaredNoneNone
dependsOn · outgoingThe Markdown envelope is explicit and bounded
spec:carrier.envelope-contract · resolves
declaredNoneNone
dependsOn · outgoingThe Markdown body accepts one closed form per section
spec:carrier.markdown-body-grammar · resolves
declaredNoneNone
refines · outgoingMarkdown authoring enters the one graph
spec:carrier.markdown-authoring · resolves
declaredNoneNone
dependsOn · incomingMarkdown authoring enters the one graph
spec:carrier.markdown-authoring · resolves
declaredNoneNone
dependsOn · incomingA Pack has a Markdown manifest carrier
spec:carrier.markdown-pack-authoring · resolves
declaredNoneNone
dependsOn · incomingDuplicate carrier IDs are excluded loudly
spec:validation.duplicate-ids · resolves
declaredduplicate exclusion includes the default Markdown carrierNone
refines · incomingOne finding class is shared while the carriers' outcomes stay their own
spec:carrier.markdown-parser.bounded-parity · resolves
declaredNoneNone
verifies · incomingOne finding class is shared while the carriers' outcomes stay their own
spec:carrier.markdown-parser.bounded-parity · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.markdown-parser · reifies Markdown Specs and Packs through one carrier boundary · src/extract/markdown.ts:37 · role extractor · component component:protocol.extract · layer application · context protocol
  • impl:protocol.static-reification · reifies authored carriers from the AST and never evaluates them · src/extract/reify.ts:2217 · role extractor · component component:protocol.extract · layer application · context protocol

Design reference: none

Verifier binding: present

  • spec:carrier.markdown-parser.bounded-parity · One finding class is shared while the carriers' outcomes stay their own · declared · specs/carrier/markdown-parser.bounded-parity.sdp.md · example enabled
  • test:protocol.markdown-parser · Markdown reifier tests verify the ruled parser · anchored · test/markdown-reifier.test.ts:91 · test anchor

Expected-outcome oracle: none

Runtime observation: not tracked.

Run results: not recorded in the graph.

Findings

None.

Composing (0)

Composing needs the script.