2.6 KiB
Local admission lifecycle probe
Select --project core --smoke local-admission after integrating the runner choice and BaseSmoke case 1700. The new file is entirely WORKBENCH-only and requires -errBaseSmoke 1 -errSmokeOutcome local-admission plus server authority. It starts only after the real native standalone controller has its controlled prisoner and spent roster life. No additional player entity, backend identity, account, permission or native connection is created.
The probe captures the exact existing roster object, key, controlled body and participant count. It explicitly replays OnPlayerAuditSuccess_S twice for that already admitted controller, then waits 1.5 seconds and verifies that no new roster event, actor, life, request, retry or reservation appeared. This is callback replay in the native runtime, not evidence that another backend audit occurred.
Separate disposable helpers use the actual current controller/mode with the already-selected non-null round key. They verify that a late opaque alternate input does not replace the key, unrelated disconnect arguments do not close the helper, a matching disconnect argument latches failure, Stop cannot reopen it, and a null controller argument before selection cannot later repair itself. These are method-level fault injections: no genuine network disconnect or replacement controller is claimed.
Finally, an invalid controller argument is submitted to the existing live helper. The existing production context guard must close admissions and perform the real defeat transition with its specific reason. The callback checks the original spent life and controlled actor remain bound after synchronous service teardown. Completion is emitted only after these checks, not merely on receiving a terminal event. No state is restored to reopen the failed round.
The WORKBENCH path can already have its established editor fixture identity. This probe therefore does not prove ordinary UUID generation, entropy, authentication or remote reconnect. Actual ordinary Core and companion admission are separate previously recorded runs. Listen/Dedicated helper pass-through remains covered by tests/test_local_admission.py with explicitly substituted native context; this standalone probe neither changes native session mode nor manufactures multiplayer evidence.
Run existing local-admission policy tests and repository checks before native compilation. Then run the new bounded scenario, retaining complete raw logs and source-manifest evidence. Required untested acceptance remains genuine two-client lifecycle/authentication, real disconnect/reconnect and an ordinary new-round reset.