Spec Studio

The Markdown envelope is explicit and bounded

spec:carrier.envelope-contractContract · featureready floor ready

Changed since the base graph base b5e0a8b: behavior.rules[7]; rule.reservedProperties

Base input: schema 0.12.0, 456 Specs.

Packs: pack:self-hosting-v1

Design: no design entries · no pinned declarations · 1 decision

Findings: no errors, no warnings

specs/carrier/envelope-contract.sdp.md

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

Intent
outcome
Make a Markdown Spec's identity and descriptors deterministic to reify.
Contract
rule line 20 · specs/carrier/envelope-contract.sdp.md:20
A Markdown Spec declares id, kind, altitude, readiness, and relations in bounded YAML frontmatter; its first H1 declares title.
rule line 21 · specs/carrier/envelope-contract.sdp.md:21
The envelope key set is closed and every one of its five keys is required: a key outside the set is refused rather than absorbed, and a missing key refuses the document rather than being defaulted.
rule line 22 · specs/carrier/envelope-contract.sdp.md:22
Each relation type takes one target or a list; its target forms follow spec:model.relation-reasons, and an example's declared verifies may carry exercises under spec:model.rule-keys.
rule line 23 · specs/carrier/envelope-contract.sdp.md:23
relations: {} is written explicitly when the logical relation set is empty — honest carrier syntax, not a new logical requirement: the physical key catches a truncated envelope at reification while the model itself stays relation-optional.
rule.reservedProperties line 24 · specs/carrier/envelope-contract.sdp.md:24
A derived name is never authorable in the envelope: a delivery-fact or graph-field key (implemented, has-verifier, hasVerifier, observed, claim, deliveryFacts, nodeType, specKind, satisfies, verifies, belongsTo or models) is refused as extract/reserved-property, because delivery facts are derived and never authored; title is refused as extract/invalid-frontmatter, and any other unknown envelope key as extract/unrecognized-property. Delivery-fact names and deliveryFacts are compared case-insensitively; underscore forms are not delivery-fact names.

no example exercises it

rule line 25 · specs/carrier/envelope-contract.sdp.md:25
The Protocol owns the envelope grammar and the parser policy while the pinned YAML library stays a swappable representation behind that contract, so an unsupported YAML construct is refused within explicit byte bounds on the carrier and its frontmatter rather than silently becoming carrier semantics.
rule line 26 · specs/carrier/envelope-contract.sdp.md:26
The bounds are 256 KiB per carrier, 32 KiB of frontmatter, 16 KiB per scalar, 2,000 YAML nodes, and a nesting depth of 16; YAML anchor (&name) and alias (*name) syntax and explicit YAML tags (!tag) are refused at any size.
rule line 27 · specs/carrier/envelope-contract.sdp.md:27
The frontmatter opens at byte zero with an exact --- line and closes at the next exact --- line; a byte-order mark, a ... line in the frontmatter, a further exact --- line in the body, or mixed LF and CRLF newlines refuses the carrier. A lone CR, U+2028 or U+2029 anywhere in the carrier refuses it at that physical line, under spec:carrier.markdown-authoring#rule.lineEndings.

7 unkeyed rules.

Verification

Verifier bindings

  • test:protocol.envelope-contract · frontmatter contract tests verify the Markdown envelope · anchored · test anchor binding present · test/markdown-reifier.test.ts:97

    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
Design view

Requirement drawing

  • Declared verifying examples: no declared verifying example.
Requirement drawing for spec:carrier.envelope-contract
The diagram as text
  • spec:carrier.envelope-contract: The Markdown envelope is explicit and bounded · declared Spec
  • spec:decisions.envelope-grammar-posture: The Protocol owns the envelope grammar · declared Spec
  • spec:carrier.markdown-authoring: Markdown authoring enters the one graph · declared Spec
  • impl:protocol.envelope-contract: parses the bounded Markdown frontmatter envelope · anchored code · src/extract/markdown-frontmatter.ts:33
  • impl:protocol.markdown-yaml-policy: bounded YAML scalars and relation-target forms · anchored code · src/extract/markdown-yaml-policy.ts:20
  • test:protocol.envelope-contract: frontmatter contract tests verify the Markdown envelope · anchored test binding · binding present · test/markdown-reifier.test.ts:97
  • spec:carrier.envelope-contract refines spec:carrier.markdown-authoring · declared
  • spec:decisions.envelope-grammar-posture refines spec:carrier.envelope-contract · declared
  • impl:protocol.envelope-contract satisfies spec:carrier.envelope-contract · anchored
  • impl:protocol.markdown-yaml-policy satisfies spec:carrier.envelope-contract · anchored
  • test:protocol.envelope-contract verifies spec:carrier.envelope-contract · 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

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.envelope-contract · parses the bounded Markdown frontmatter envelope · src/extract/markdown-frontmatter.ts:33

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

    Uses

    None.

  • impl:protocol.markdown-yaml-policy · bounded YAML scalars and relation-target forms · src/extract/markdown-yaml-policy.ts:20

    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.envelope-contract
The diagram as text
  • spec:carrier.envelope-contract: The Markdown envelope is explicit and bounded
  • spec:carrier.markdown-authoring: Markdown authoring enters the one graph
  • spec:carrier.markdown-parser: The Markdown parser reifies the ruled subset
  • spec:decisions.envelope-grammar-posture: The Protocol owns the envelope grammar
  • spec:model.relation-reasons: An authored relation may carry its reason
  • spec:model.rule-keys: A rule or flow entry may carry a key that addresses it
  • spec:validation.authored-honesty: Machine truth is never authored
  • spec:carrier.envelope-contract constrainedBy spec:validation.authored-honesty · declared
  • spec:carrier.envelope-contract decidedBy spec:decisions.envelope-grammar-posture · declared
  • spec:carrier.envelope-contract dependsOn spec:model.relation-reasons · declared
  • spec:carrier.envelope-contract dependsOn spec:model.rule-keys · declared
  • spec:carrier.envelope-contract refines spec:carrier.markdown-authoring · declared
  • spec:carrier.markdown-parser dependsOn spec:carrier.envelope-contract · declared
  • spec:decisions.envelope-grammar-posture refines spec:carrier.envelope-contract · 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

Distance 9

Relations

Relation and directionOther endClaimReasonExercised keys
constrainedBy · outgoingMachine truth is never authored
spec:validation.authored-honesty · resolves
declaredNoneNone
decidedBy · outgoingThe Protocol owns the envelope grammar
spec:decisions.envelope-grammar-posture · resolves
declaredNoneNone
dependsOn · outgoingAn authored relation may carry its reason
spec:model.relation-reasons · resolves
declaredNoneNone
dependsOn · outgoingA rule or flow entry may carry a key that addresses it
spec:model.rule-keys · resolves
declaredNoneNone
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
refines · incomingThe Protocol owns the envelope grammar
spec:decisions.envelope-grammar-posture · resolves
declaredNoneNone

Bindings

Implementation binding: present

  • impl:protocol.envelope-contract · parses the bounded Markdown frontmatter envelope · src/extract/markdown-frontmatter.ts:33 · role codec · component component:protocol.extract · layer application · context protocol
  • impl:protocol.markdown-yaml-policy · bounded YAML scalars and relation-target forms · src/extract/markdown-yaml-policy.ts:20 · role codec · component component:protocol.extract · layer application · context protocol

Design reference: none

Verifier binding: present

  • test:protocol.envelope-contract · frontmatter contract tests verify the Markdown envelope · anchored · test/markdown-reifier.test.ts:97 · 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.