Spec Studio

Duplicate Markdown and Gherkin surfaces are both excluded

spec:carrier.gherkin-authoring.duplicate-surface-refusedExample / 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.duplicate-surface-refused.sdp.md

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

Intent
outcome
Prove one canonical surface per Spec ID by excluding every duplicate site and its edges while preserving healthy siblings.
Behavior

Examples

Given the Gherkin fixture corpus {probe: "duplicate-surface"}
When the fixture corpus is extracted and validated
Then extraction reports {findingCount: 2} findings
Then the report contains finding {findingId: "extract/duplicate-id"}
Then the graph omits the Spec {absentId: "spec:fixture.surface-duplicate"}
Then no graph edge names the absent Spec {absentId: "spec:fixture.surface-duplicate"}
Then the graph contains the Spec {specId: "spec:fixture.surface-sibling"} with kind {specKind: "example"}
Verification

Verifier bindings

  • test:protocol.gherkin-authoring.duplicate-surface-refused · the duplicate-surface-refused point verifies the Gherkin carrier contract · anchored · test anchor binding present · test/self-hosting-carrier-gherkin.test.ts:396

    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 391 · Branch: cursor/media-plan-and-articles-09b1 · Commit: 076cd4f1f85640d8236e5cca1bffffa68ab79a33 · Start: 2026-10-31T15:32:20.471Z · Stop: 2026-10-31T15:34:02.073Z

    NameSuiteResultDuration
    executes the bound example against a fresh worldAn authored delivery fact lookalike is refused (spec:carrier.gherkin-authoring.authored-fact-refused)passed9.67 ms
    executes the bound example against a fresh worldMarkdown and Gherkin twins derive equal graphs and contracts (spec:carrier.gherkin-authoring.contract-parity)passed34.78 ms
    executes the bound example against a fresh worldDuplicate Markdown and Gherkin surfaces are both excluded (spec:carrier.gherkin-authoring.duplicate-surface-refused)passed4.09 ms
    executes the bound example against a fresh worldThe pseudo-scenario supplies example space without a node (spec:carrier.gherkin-authoring.example-space-extraction)passed2.35 ms
    executes the bound example against a fresh worldA malformed relation target is refused (spec:carrier.gherkin-authoring.malformed-relation-refused)passed1.84 ms
    executes the bound example against a fresh worldA Feature without identity is refused (spec:carrier.gherkin-authoring.missing-id-refused)passed1.67 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)passed5.39 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)passed6.57 ms
    executes the bound example against a fresh worldA graph-aware tag near miss is refused (spec:carrier.gherkin-authoring.unknown-tag-refused)passed2.39 ms
    executes the bound example against a fresh worldA Scenario Outline is refused (spec:carrier.gherkin-authoring.unsupported-construct-refused)passed2.26 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.57 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.37 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)passed6.35 ms
Design view

Requirement drawing

  • Satisfying or referencing units: no recorded binding.
Requirement drawing for spec:carrier.gherkin-authoring.duplicate-surface-refused
The diagram as text
  • spec:carrier.gherkin-authoring.duplicate-surface-refused: Duplicate Markdown and Gherkin surfaces are both excluded · declared Spec
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph · declared Spec
  • test:protocol.gherkin-authoring.duplicate-surface-refused: the duplicate-surface-refused point verifies the Gherkin carrier contract · anchored test binding · binding present · test/self-hosting-carrier-gherkin.test.ts:396
  • spec:carrier.gherkin-authoring.duplicate-surface-refused refines spec:carrier.gherkin-authoring · declared
  • spec:carrier.gherkin-authoring.duplicate-surface-refused verifies spec:carrier.gherkin-authoring · declared
  • test:protocol.gherkin-authoring.duplicate-surface-refused verifies spec:carrier.gherkin-authoring.duplicate-surface-refused · 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.duplicate-surface-refused
  • E2: verifies · declared
The diagram as text
  • spec:carrier.gherkin-authoring: Gherkin authoring enters the one graph
  • spec:carrier.gherkin-authoring.duplicate-surface-refused: Duplicate Markdown and Gherkin surfaces are both excluded
  • spec:carrier.gherkin-authoring.duplicate-surface-refused refines spec:carrier.gherkin-authoring · declared
  • spec:carrier.gherkin-authoring.duplicate-surface-refused 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.duplicate-surface-refused · the duplicate-surface-refused point verifies the Gherkin carrier contract · anchored · test/self-hosting-carrier-gherkin.test.ts:396 · 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.