Harden base progression and cleanup; validate finite physical resupply

This commit is contained in:
2026-09-19 10:39:39 +02:00
parent 40a474934c
commit 7c53b4bb81
377 changed files with 51882 additions and 92 deletions
+11 -1
View File
@@ -10,6 +10,16 @@ The installed native implementation establishes the defects:
The new `ERR_DiscoveryMarker` subclass changes only these authored local markers. It clears the insertion-assigned owner at the native creation boundary and marks itself nonremovable. Its label is scenario-authored rather than a player annotation, so its own creation and label updates use the native synchronous text path; unrelated player marker filtering and behavior remain unchanged. Label updates while closed retain model data for native recreation without creating duplicate markers.
`ERR_NativeDiscoveryMapProbe.Run()` is an opt-in WORKBENCH check, to invoke once after a real local fixture participant and native marker manager exist. It creates two owned hidden native marker widgets: the unchanged vanilla marker demonstrates the stale text and user-annotation eligibility; the successor marker demonstrates immediate label refresh and protected ownership. It then detaches/recreates its own widget and checks retained text and exact marker-count cleanup. No mission locations, discovery state, inventories, map menus or player input are altered. Invoke `Stop()` from fixture cleanup if interrupted. The probe has not been run by this agent; native compilation and the actual result remain pending centrally. `python3 tools/check.py` passed after these changes.
`ERR_NativeDiscoveryMapProbe.Run()` is an opt-in WORKBENCH check, to invoke once after a real local fixture participant and native marker manager exist. It creates two owned hidden native marker widgets: the unchanged vanilla marker demonstrates the stale text and user-annotation eligibility; the successor marker demonstrates immediate label refresh and protected ownership. It then detaches/recreates its own widget and checks retained text and exact marker-count cleanup. No mission locations, discovery state, inventories, map menus or player input are altered. Invoke `Stop()` from fixture cleanup if interrupted. [Archived 085442](evidence/native-2026-09-19-085442/report.json) now verifies this probe in each of two complete Core escape/restart rounds: 586 total assertions, zero engine or script/VM errors. In each round its eleven marker assertions exercise the actual hidden native layouts: vanilla stale-label/annotation eligibility, successor immediate refresh/protection, saved-label recreation and exact owned cleanup. The [raw log](evidence/native-2026-09-19-085442/console.log.txt) and [source manifest](evidence/native-2026-09-19-085442/source-sha256.json) bind those results to that snapshot; launch/stopped addon manifests and raw-log hashes match. No real map menu, drag/delete input or remote replication was exercised. Subsequent changes require their own current-source runtime qualification. `python3 tools/check.py` passed after the marker changes.
The audit also inspected native prison gate inheritance/context, stock `SCR_OpenStorageAction`, radio tuning phase/knowledge checks and native helicopter/result presentation. Source alone does not establish held-input reachability, collision clearance while walking through the gate, dragging stock in a real inventory window or manual boarding/flying. These remain ordinary-play tests; direct completion fixtures cannot substitute for them. A separate inherited-gate destruction/progression vulnerability was reported for follow-up, without changing gate health in this marker patch.
## Rough clue position correction
First-stage discovery previously hid only the marker label while retaining exact objective coordinates. It now shows the center of the containing 500 m square, labelled `Search area (500 m square)`. This is stable across refreshes and all clients; repeated observations cannot narrow the location by averaging randomized offsets. Identification moves the same marker to the exact rounded objective position and updates its label. An open map reactivates the marker for native visibility/position updates if the previous coarse position was culled. This is gameplay presentation, not concealment from clients inspecting replicated entities.
The actual coordinate policy passes positive, negative, boundary and exhaustive local range checks. The existing native marker fixture additionally checks coarse and exact coordinate storage on the same marker; that revised native run remains pending. This does not claim manual map interaction or multiplayer qualification.
Vanilla local-marker deletion removes only active membership. A culled objective can remain in the disabled list and later reappear. The successor now removes only its own local discovery-marker type from both lists and detaches that marker's native map-close/layer listeners on deletion; duplicate cleanup is safe and never reactivates or creates a widget. The native fixture now moves its owned marker into the actual disabled list before testing both-membership removal. Native verification of this extension is pending.
The [100619 integrated Core regression](evidence/native-2026-09-19-100619/report.json) now passes the revised native coordinate and disabled-list cleanup fixture in each of two complete rounds (612 total assertions, zero captured errors). Earlier pending statements describe the pre-run changes; manual map interaction remains separate.