Advance standalone admission, finite artillery and native validation

This commit is contained in:
2026-09-19 09:02:31 +02:00
parent af5146a317
commit 40a474934c
532 changed files with 56456 additions and 199 deletions
+3 -3
View File
@@ -21,7 +21,7 @@ An already committed native movement is not rolled back if conditions subsequent
The mode adapter owns Tick/Stop/roster subscriptions and replicates only the current extraction-aircraft reference for client action presentation. Roster events run cleanup even when the ordinary mission tick returns early on an empty server. PREPARING roster callbacks are no-ops and cannot permanently stop the service. Terminal/explicit Stop latches before notifying subscribers, releases owned tickets and removes subscriptions. No new persistent settings, public entity-selection RPC, automatic spawning or original Escapists resource is introduced.
## Merge and checks
## Integration and checks
New production files:
@@ -30,7 +30,7 @@ New production files:
- `addons/core/Scripts/Game/ERR/ERR_CasualtyLoadingGameMode.c`
- `addons/core/Scripts/Game/ERR/ERR_LoadCasualtyAction.c`
Copy this document and `tests/test_casualty_loading_policy.py`, then apply `casualty-production-integration.patch` for `Prisoner.et` and `tools/check.py`. No existing GameMode source or native probe is replaced. The action reuses the existing Prisoner resource identity; new nested action/UI component IDs are successor-authored.
The successor Prisoner prefab owns the action and `tools/check.py` includes the casualty policy regression. The action reuses the existing Prisoner resource identity; new nested action/UI component IDs are successor-authored.
Offline checks execute production timing/range/aircraft-motion policy bodies and the complete repository suite. Native work must inspect the real spawned action and inherited medicine actions, show strict rejection for nonparticipants/old bodies/wrong phase, then exercise genuine two-player authorization and physical movement. Test cancellation during action progress, recovery during progress, duplicate callers, last-seat contention, native refusal, loss of replication visibility, delayed/reordered/expired handshake, disconnect/reconnect, aircraft loss and terminal transition. Confirm native seat reservation cleanup and actual single occupancy. Do not count synthetic fixture roster identities as proof of remote controller ownership.
@@ -40,7 +40,7 @@ Offline checks execute production timing/range/aircraft-motion policy bodies and
The fixture deliberately advances legal mission phases to reach extraction; it does not claim a completed radio objective. It checks a fresh settling window, native external bench reservations, a physical successor wall blocking sight, the real action's completion boundary, duplicate requests, actual player occupancy, reservation release, preserved target identity and idempotent Stop. It does not simulate holding action input, remote packet timing or Stop during an in-flight command. It retains inherited medical-action presence. On completion the normal test reset ends the round; cleanup deletes only the helper/obstacle and releases fixture-owned reservations, with no forced recovery, seated-player teleport, body deletion or unrelated health restoration.
The WORKBENCH mode override routes owner callbacks to the helper adapter only during this explicit case. Add the new fixture source, then use `casualty-service-base-snippets.md` for parent-owned smoke/runner integration. [075514](evidence/native-2026-09-19-075514/report.json) completes this local fixture with 87 passing assertions and zero engine or script/VM errors. The production one-shot initial placement lets the original aircraft settle naturally; separate raised, tilted and moving aircraft are rejected. A single actual native damage request incapacitates the controlled player, then the real action completion boundary and owner-controller handshake load that living body into the selected child bench exactly once. External reservations and physical obstruction reject requests; successful loading releases the reservation, retains player identity and survives idempotent Stop without another completion.
The WORKBENCH mode override routes owner callbacks to the helper adapter only during this explicit case. Core smoke and the hidden runner expose the opt-in `casualty-service` case. [075514](evidence/native-2026-09-19-075514/report.json) completes this local fixture with 87 passing assertions and zero engine or script/VM errors. The production one-shot initial placement lets the original aircraft settle naturally; separate raised, tilted and moving aircraft are rejected. A single actual native damage request incapacitates the controlled player, then the real action completion boundary and owner-controller handshake load that living body into the selected child bench exactly once. External reservations and physical obstruction reject requests; successful loading releases the reservation, retains player identity and survives idempotent Stop without another completion.
The real local controller takes the server/local fast path; this does not exercise remote Owner/Server RPC transit. Only the helper membership is adapted, and action completion is invoked directly rather than holding input for five seconds. The fixture requests its own reset after loading, without a complete radio-to-extraction playthrough. Real two-player input, latency/reordering, disconnect/death while pending, last-seat contention and entity-removal cleanup remain separate requirements. Earlier contact and damage-fixture failures are preserved in the validation log.