Portable testbed 0.1

Make the same promise. Prove the same behavior.

One neutral suite tests TypeScript, Rust, plugins, desktop services, and future implementations through a process boundary. Products keep their own architecture; users get comparable evidence.

The black-box boundary

The spec asks. Your implementation answers.

Each scenario starts a fresh adapter process. Only stable facts cross the boundary; generated IDs, database keys, and wall-clock timing stay inside.

What the testbed separates

Owned by the specification

The question and the oracle

Draft 2020-12 schemas define neutral fixtures, run requests, adapter descriptions, transcripts, and evidence. Every expected transcript lives beside its scenario.

Owned by the implementation

The behavior under test

An adapter drives public collection, bridge, provider, runtime, and store boundaries. It reduces observations to stable facts; it does not reimplement the feature.

Owned by neither

Authority

Passing proves behavior, not permission. A transcript cannot grant access, register a provider, publish an event, or authorize a side effect.

15 scenarios · 3 rings

The portable inventory

Small scenarios isolate failures. Application scenarios then repeat the critical paths with real product contracts and providers.

01

Contract

One contract, one implementing type, one record, two consumers.

1
02

Interop

Live sources, consumers, callers, and providers cross an authorization boundary.

11

Fresh process per scenario

Run it from any language

The runner launches an executable directly—never through a shell—and validates both sides of every exchange before comparing observations.

Install and verify

terminal
npm install --save-dev @callumalpass/mdbase-testbed

npx mdbase-testbed validate
npx mdbase-testbed run \
  --adapter ./scripts/testbed-adapter.mjs \
  --evidence ./conformance/testbed-evidence.json

Implement two commands

adapter protocol
your-adapter describe
# writes one adapter-description JSON document

your-adapter run
# reads one scenario request from stdin
# writes one observable transcript to stdout

Evidence is precise—and deliberately limited

A passing run can emit a machine-readable evidence document containing the implementation identity, scenario IDs, profile names, and canonical transcript digests. Attach it to a conformance claim to make the tested behavior reproducible.

Supplemental evidence, not a blanket badge

A complete profile claim still runs every normative conformance test for that profile. The testbed adds cross-language behavioral evidence; it does not silently widen the claim.