PR1: Standardize emulator reset() contract + conformance test - #1
Merged
Conversation
Establishes the emulator contract (constructor/start/stop/reset) that the launcher, probe, and forthcoming control plane rely on: - Add reset() to the 6 services that lacked it (cassandra, kafka, mysql, rabbitmq, elasticsearch, supabase). State init moved into reset() and called from the constructor; behavior-preserving (verified via each service's real-driver test suite + live round-trips). - Add test/conformance.test.ts: asserts valid manifests, unique ports, *Server class export, and start/stop/reset across the whole catalog, plus a live boot/health/reset smoke test for a representative sample. - Document the contract in CONTRIBUTING.md + SKILL.md; add CHANGELOG.md. - Add PLAN.md (10-PR roadmap) and SKILL.md (implementation guide). Full suite: 252 files / 5466 tests, green on 3 consecutive runs.
This was referenced Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tier 1 — PR 1 of 4 (control plane foundation)
First PR toward the control plane (see PLAN.md). Establishes the emulator contract every service must follow so the launcher, probe, and forthcoming control-plane server can introspect and reset any emulator uniformly.
What changed
reset()across the catalog. Audited all 250 services; 6 networked emulators lacked areset()method — added it tocassandra,kafka,mysql,rabbitmq,elasticsearch, andsupabase. State initialization moved intoreset()and called from the constructor, so state init and reset can never drift. Behavior-preserving — only refactors where state is initialized.test/conformance.test.ts). Across the whole catalog it asserts:src/server.jsexporting a*Serverclass,start(),stop(), andreset(),/health→reset()smoke test for a representative sample (stripe, openai, s3, sendgrid, elasticsearch, supabase, pinecone, github).CONTRIBUTING.mdnow documents the full contract (reset()required; all state initialized inreset()) and the PR checklist references the conformance test. AddedCHANGELOG.md. AddedPLAN.md(10-PR roadmap) andSKILL.md(implementation guide for agents).Why
A reliable
reset()is the prerequisite for per-test isolation and for the control plane (PR 2) to wipe state between test cases without restarting containers. The conformance test prevents convention drift as the catalog grows (theapigateway-stub class of problem).Verification
SELECT 1, kafkalistTopics, rabbitmqassertQueue, cassandrasystem.local.Contract (now documented)
Part of: Tier 1 control plane. Next: PR 2 (control-plane HTTP server).