# C1-003 Status status: done task: build_shared_case_runner gate: G1 updated: 2026-08-23 America/New_York C1-003 adds a shared TypeScript case runner for desktop and WASM adapters. It validates the versioned command/context envelope, rejects stale revisions, read-only contexts, missing external resources, malformed commands, and malformed adapter results before a surface can claim a Main mutation. Result normalization enforces the closed status/code table and the revision/dirty invariants. Receipt comparison intentionally excludes diagnostic error text while comparing semantic result fields. The reproducible pilot receipt was generated twice and compared byte-for-byte. The positive case matched on both surfaces and advanced Main from revision 4 to 5; revision-conflict and external-resource negative cases matched and kept Main unchanged. The focused runner test passed 5/5 assertions. Determinism, TypeScript typecheck, task/context governance, corrective-plan governance, and `git diff --check` all exited 0. Protected legacy hashes were captured before and after execution and are identical; the old M16 queue remains read-only. Evidence and manifest: `tests/golden/corrective/C1-003/`. Next corrective task: `C2-001`.