The wrong controller could finish a valid game
Pulse Court had a strict smoke path that loaded policy metadata and then ran a scripted controller. It could produce a completed game without establishing that the requested network had chosen the actions. A successful load and a plausible replay were individually true observations with a missing connection between them.
The project is a native arena simulation with a policy runtime, a headless runner, and replay verification. A smoke run is meant to establish that these pieces work together before stronger evaluation. If the runner quietly substitutes a different controller, it can pass while failing its central purpose. The repair had to make controller identity observable throughout execution.
Keep preview, strict, and scripted modes explicit
The repaired runner retains a loaded strict policy for execution and makes scripted smoke an explicit choice. Missing strict inputs fail before session evidence is created. That prevents a fallback game from being mistaken for a run of the requested artifact.
There is a separate compatibility boundary. The September preview used ruleset 2, while the strict policy contract expected ruleset 4. A manifest passing its schema checks could not make those simulation rules compatible. The strict loader rejected that mismatch, so the six-game execution evidence comes from an explicitly non-certified preview using a synthetic, untrained development policy.
This is a useful division of responsibilities. Schema validation asks whether an artifact is well formed. Compatibility asks whether its assumptions match the runtime. Execution asks whether it actually controls behavior. None of those checks establishes that its behavior is good. Keeping the modes explicit makes a failure at one boundary visible without borrowing credibility from another.
A counter needs a behavioral cross-check
The original v2 preview recorded 9,483 native network decisions across six games, exercising both seats. Six explicitly scripted control games recorded zero network decisions. All six preview replays passed verification. These numbers demonstrate the exercised paths and preserved execution, not learned playing strength.
The decision counter is tied to fresh PolicyController decisions. A separate regression check reconstructs the bot inputs and state hashes with an independent controller and simulation, matches the recorded count, and checks that the network's input stream differs from the scripted stream. That last comparison matters: a counter increment in the wrong place could otherwise report inference while gameplay still follows a fallback.
The checks therefore connect several observations. The requested mode selects the controller, the controller produces inputs, the inputs enter the recorded game, and replay verification checks the resulting state progression. A log line saying model loaded covers only the beginning of that chain.
Synthetic policy execution, with replay evidence
This untrained development policy exercises native inference and replay integrity. It is not certified, and these diagnostics do not establish learned strength, human performance or inference latency.
| Check | Recorded result |
|---|---|
| Release regression suites | 4 passed |
| Debug regression suites | 4 passed |
| Synthetic preview replays verified | 6 / 6 |
| Native network decisions in preview | 9,483 |
| Scripted control | 6 games, 0 network decisions |
| Missing strict policy inputs | Rejected |
| Evidence created after strict failure | None |
The included native replay has 5,720 ticks and 478 network decisions. It was selected for its small file size, and the synthetic policy lost. Strict trained-policy play, certification and graphical acceptance remain outside this checkpoint.
September 20, 2026: local replay admission repair
Source 596d1f5 checks the exact replay size before allocating tick storage, rejects trailing bytes and preserves the destination on failure. The owning project passed 4/4 suites in each of Release and Debug plus 14 native checks. A separate verification passed 4/4 Release suites and seven native cases.
The repair is locally committed and unpushed. These structural checks establish no physics validation, ruleset-v4 certification, graphical acceptance or learned strength. The historical preview above is unchanged.
The packaged replay is a loss
The included preview replay contains 5,720 ticks and 478 network decisions. The synthetic policy lost. It was selected because it was the smallest replay to package, while the full six-game results remain available in the evidence JSON.
For this question, the loss is compatible with success. The objective was to verify native policy execution and replay integrity. An untrained fixture can exercise that path without being a capable player. Using its game outcome as a strength metric would change the experiment after the fact.
The artifact also has a practical advantage: replay verification does not require the policy bundle. Once the actions have been recorded, the simulator can check their consequences independently of another inference pass. That helps distinguish a problem in choosing actions from a problem in reproducing their effects.
September 20 update: repairing the compatibility boundary
A September 20 synthetic audit exposed why the strict loader rejects a ruleset mismatch. The same core velocity produces different network inputs under the two rulesets, and body contact loses ownership information in the older runtime. All 648 decoded action and seat-mirroring cases matched, but matching actions did not make the observed game equivalent. No trained policy was loaded for this audit.
A later local v4 migration fixes the simulation and observation semantics together and removes the lossy compatibility shim. It matches the reference across 34 synthetic fixtures and 78 snapshots, with separate native-adapter tests using generated untrained policies. Strict deployment still stays disabled: matching these contracts does not bind a trained artifact to accepted certification evidence. The old v2 replay remains verifiable through a separate frozen core.
Keep identity attached until the run is closed
Fixing the ruleset leaves another question: which compiled simulator did the evaluator actually use? A filename in a report cannot answer that on its own. The September 21 integration checks a pinned build receipt, source, configuration and DLL, then gives the environment the same protected library object. Its Windows file handle stays open through native teardown and the final identity check.
The difficult case is a failed close. If native destruction raises, releasing protection would assume that the native state had stopped using the library. The wrapper instead keeps ownership until the process exits and withholds completed identity. The producer requires that completed record before writing a report. This turns an uncertain cleanup into an explicit failure rather than a convincing-looking result.
The retained 62 software test methods exercise the wrapper, both evaluator paths and report rejection, with synthetic native and ML dependencies. A separate native probe called five getters to inspect the DLL's build identity and ABI. It did not create an environment or evaluate a policy. Historical training-DLL identity is still unbound, so this repair supplies a prospective evaluation contract without retroactively certifying old checkpoints.
Pin the inputs
Require an explicit build receipt, independently supplied receipt hash, DLL, source and configuration.
Keep the same library
The environment uses the protected loaded library. A Windows file handle prevents writing or replacing its file during that lifetime.
Complete teardown
Destroy native state, check identity again, then release protection. Uncertain destruction retains ownership and produces no completed identity.
Require completed evidence
The evaluator reads identity after close. The report producer rejects missing or mismatched evidence before writing its result.
Use a smoke test to prove its own contract
Release and Debug regression suites passed, and missing strict inputs returned an error without creating session evidence. Those are meaningful checks for the repair. They do not complete trained-policy certification, deployment parity, inference-latency measurement, graphical acceptance, or a human challenge.
The lesson I would carry into another agent system is to trace the selected artifact into the behavior that matters. A model name in configuration can be correct while a fallback handles the request. A tool can initialize without supplying the action an agent eventually takes. Useful runtime evidence records the actual path and gives a verifier something stronger than an initialization message.
Pulse Court's result is now intentionally modest and inspectable: the synthetic preview exercised native network decisions, the scripted control did not, and the recorded preview games verified. That is a solid boundary to build on precisely because it does not pretend to answer the separate question of whether the policy can play well.
Sources & further reading
- Runtime evidence and replay scope
Synthetic preview, explicit scripted control, compatibility limits, and replay instructions.
- Ruleset comparison
Dated synthetic observation, physics, touch and replay checks. No simulator migration or trained-policy certification.
- Local v4 integration checks
Later simulator, adapter and historical-replay checks. Local, unmerged source; no trained-policy certification.
- Prospective runtime identity checks
Retained software checks and a five-getter native probe. Historical training remains unbound; no policy evaluation.
- Commands and per-game results
Recorded modes, decisions, exit codes, hashes, and replay verification.