Spec Studio

Markdown and Gherkin twins derive equal graphs and contracts

spec:carrier.gherkin-authoring.contract-parityExample / Scenario · storyready floor ready

Packs: pack:self-hosting-v1

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

Findings: no errors, no warnings

specs/carrier/gherkin-authoring.contract-parity.sdp.md

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

Intent
outcome
Prove the Gherkin carrier derives the same graph and generated contract semantics as its Markdown twin.
Behavior

Examples

Given the Gherkin fixture corpus {probe: "parity"}
When the fixture corpus is extracted and validated
Then extraction reports {findingCount: 0} findings
Then the graph for {parityLeft: "twin.sdp.md"} equals the graph for {parityRight: "twin.sdp.gherkin"}
Then the contracts for {parityLeft: "twin.sdp.md"} equal the contracts for {parityRight: "twin.sdp.gherkin"}
Verification

Verifier bindings

  • test:protocol.gherkin-authoring.contract-parity · the contract-parity point verifies the Gherkin carrier contract · anchored · test anchor binding present · test/self-hosting-carrier-gherkin.test.ts:388

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

    Test anchors: test:protocol.gherkin-authoring.authored-fact-refused, test:protocol.gherkin-authoring.contract-parity, test:protocol.gherkin-authoring.description-location-refused, test:protocol.gherkin-authoring.duplicate-surface-refused, test:protocol.gherkin-authoring.example-space-extraction, test:protocol.gherkin-authoring.malformed-relation-refused, test:protocol.gherkin-authoring.missing-id-refused, test:protocol.gherkin-authoring.multi-finding-bounded, test:protocol.gherkin-authoring.parent-child-extraction, test:protocol.gherkin-authoring.step-less-scenario-refused, test:protocol.gherkin-authoring.unbound-ready-refused, test:protocol.gherkin-authoring.unknown-tag-refused, test:protocol.gherkin-authoring.unsupported-construct-refused. Specs verified by those bindings: spec:carrier.gherkin-authoring, spec:carrier.gherkin-authoring.authored-fact-refused, spec:carrier.gherkin-authoring.contract-parity, spec:carrier.gherkin-authoring.description-location-refused, spec:carrier.gherkin-authoring.duplicate-surface-refused, spec:carrier.gherkin-authoring.example-space-extraction, spec:carrier.gherkin-authoring.malformed-relation-refused, spec:carrier.gherkin-authoring.missing-id-refused, spec:carrier.gherkin-authoring.multi-finding-bounded, spec:carrier.gherkin-authoring.parent-child-extraction, spec:carrier.gherkin-authoring.step-less-scenario-refused, spec:carrier.gherkin-authoring.unbound-ready-refused, spec:carrier.gherkin-authoring.unknown-tag-refused, spec:carrier.gherkin-authoring.unsupported-construct-refused, spec:validation.kind-evidence.

    Run 1: external run evidence from vitest 4.1.10

    Build: CI 380 · Branch: feature/roadmap-and-slices-v0 · Commit: 34909918bf0be0e849959644401797191cae379f · Start: 2026-10-22T17:40:31.456Z · Stop: 2026-10-22T17:42:16.171Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldAn authored delivery fact lookalike is refused (spec:carrier.gherkin-authoring.authored-fact-refused)passed8.77 ms
    executes the bound example against a fresh worldMarkdown and Gherkin twins derive equal graphs and contracts (spec:carrier.gherkin-authoring.contract-parity)passed25.13 ms
    executes the bound example against a fresh worldDuplicate Markdown and Gherkin surfaces are both excluded (spec:carrier.gherkin-authoring.duplicate-surface-refused)passed2.76 ms
    executes the bound example against a fresh worldThe pseudo-scenario supplies example space without a node (spec:carrier.gherkin-authoring.example-space-extraction)passed1.66 ms
    executes the bound example against a fresh worldA malformed relation target is refused (spec:carrier.gherkin-authoring.malformed-relation-refused)passed1.32 ms
    executes the bound example against a fresh worldA Feature without identity is refused (spec:carrier.gherkin-authoring.missing-id-refused)passed1.16 ms
    executes the bound example against a fresh worldA Feature and Scenario enter the graph as parent and child (spec:carrier.gherkin-authoring.parent-child-extraction)passed1.84 ms
    executes the bound example against a fresh worldA Gherkin example with an unbound used slot fails its stated readiness floor (spec:carrier.gherkin-authoring.unbound-ready-refused)passed5.39 ms
    executes the bound example against a fresh worldA graph-aware tag near miss is refused (spec:carrier.gherkin-authoring.unknown-tag-refused)passed2 ms
    executes the bound example against a fresh worldA Scenario Outline is refused (spec:carrier.gherkin-authoring.unsupported-construct-refused)passed1.89 ms
    executes the bound example against a fresh worldA bad description key reports its physical source line (spec:carrier.gherkin-authoring.description-location-refused)passed1.28 ms
    executes the bound example against a fresh worldA step-less Scenario is refused at its Scenario line (spec:carrier.gherkin-authoring.step-less-scenario-refused)passed1.05 ms
    executes the bound example against a fresh worldMultiple findings exclude one carrier and keep a healthy sibling (spec:carrier.gherkin-authoring.multi-finding-bounded)passed2.56 ms
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.gherkin-authoring.contract-parity
The diagram as text
  • spec:carrier.gherkin-authoring.contract-parity: Markdown and Gherkin twins derive equal graphs and contracts · declared Spec
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph · declared Spec
  • test:protocol.gherkin-authoring.contract-parity: the contract-parity point verifies the Gherkin carrier contract · anchored test binding · binding present · test/self-hosting-carrier-gherkin.test.ts:388
  • spec:carrier.gherkin-authoring.contract-parity refines spec:carrier.gherkin-authoring · declared
  • spec:carrier.gherkin-authoring.contract-parity verifies spec:carrier.gherkin-authoring · declared
  • test:protocol.gherkin-authoring.contract-parity verifies spec:carrier.gherkin-authoring.contract-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

No implementation neighborhood recorded.

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.gherkin-authoring.contract-parity
  • E2: verifies · declared
The diagram as text
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph
  • spec:carrier.gherkin-authoring.contract-parity: Markdown and Gherkin twins derive equal graphs and contracts
  • spec:carrier.gherkin-authoring.contract-parity refines spec:carrier.gherkin-authoring · declared
  • spec:carrier.gherkin-authoring.contract-parity verifies spec:carrier.gherkin-authoring · 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

No Spec rests on this Spec.

Relations

Relation and directionOther endClaimReasonExercised keys
refines · outgoingGherkin authoring enters the one graph
spec:carrier.gherkin-authoring · resolves
declaredNoneNone
verifies · outgoingGherkin authoring enters the one graph
spec:carrier.gherkin-authoring · resolves
declaredNoneNone

Bindings

Implementation binding: none

Design reference: none

Verifier binding: present

  • test:protocol.gherkin-authoring.contract-parity · the contract-parity point verifies the Gherkin carrier contract · anchored · test/self-hosting-carrier-gherkin.test.ts:388 · 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.