Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
@@ -0,0 +1,141 @@
{
"verdict": "PASS for current-source scripted native active-end/restart lifecycle. Strict native report remains failed due to13 retained known engine error rows. No production change proposed.",
"evidence": "/home/jakub/devel/escapistsrereintroduced/docs/evidence/native-2026-10-03-active-restart-current",
"raw_session": "/tmp/erri-native-end-active-0011/logs/logs_2026-10-03_00-14-45",
"report_recomputed_exact": true,
"assertions_passed": 21,
"smoke_completions": 2,
"script_or_runtime_failures": [],
"engine_error_count": 13,
"engine_errors_match_reroll_after_timestamp_removal": true,
"missing_end_screen": [],
"strict_native_clean": false,
"round_evidence": {
"instances": [
"round=1 preparing=0 at00:15:34.384",
"round=2 preparing=0 at00:16:32.909"
],
"completed": [
"round1 at00:15:46.915",
"round2 at00:16:45.278"
],
"assertion_occurrences": {
"fresh mode resets native-end guard, phase, service ownership and extraction result": 2,
"native end starts from actual prepared active mission": 2,
"successor terminal phase and services close exactly once": 2,
"production tick, local observer binding and queued preparation callbacks are removed before reload": 2,
"stale callback bodies and repeated shutdown perform no new work": 2,
"native result and successor terminal state persist until vanilla reload": 2,
"second instance reads only first completed round marker": 1,
"second independently initialized instance removes its own marker": 1
},
"semantics": "Each instance calls actual inherited EndGameMode only after Phase PRISON, Active and nonempty prepared Sites. Immediate assertions require POSTGAME and exact same supplied endData; stopped services and terminal phase exactly once; extraction remains WAITING with zero escaped identities.1250ms observation verifies removed callbacks and direct stale callback bodies remain inert. First completed marker is consumed by independently initialized second mode, which verifies fresh guards and removes it.",
"marker_paths_absent": {
"/tmp/erri-native-end-active-0011/erri-native-end-round.json": {
"exists": false,
"symlink": false
},
"/tmp/erri-native-end-active-0011/erri-native-end-round.json.tmp": {
"exists": false,
"symlink": false
},
"/tmp/erri-native-end-active-0011/erri-native-end-round.json.bak": {
"exists": false,
"symlink": false
},
"/tmp/erri-native-end-active-0011/profile/erri-native-end-round.json": {
"exists": false,
"symlink": false
},
"/tmp/erri-native-end-active-0011/profile/erri-native-end-round.json.tmp": {
"exists": false,
"symlink": false
},
"/tmp/erri-native-end-active-0011/profile/erri-native-end-round.json.bak": {
"exists": false,
"symlink": false
}
}
},
"source_seals": {
"authored_files": 420,
"launch_end_current_inventory_and_hashes_equal": true,
"manifest_sha256": "8e9dc7df30cfc1da5e5c29b0015c2943b30ff88be49c43d39dd723bbbe846e48",
"raw_console_sha256": "9c233b09ca11c993cafcd492fc53722c60bf06b28eede5d4dda743f19d64053c",
"archive_raw_file_equal": {
"external-addons-inputs.json.txt": true,
"console.log.txt": true,
"script.log.txt": true,
"error.log.txt": true,
"rereintroduced-hq.log.txt": true,
"headless-launch.log.txt": true,
"runner.json.txt": true,
"launch-source-sha256.json": true,
"launch-source.json": true
},
"prelaunch_bounded_review_hashes_unchanged": true,
"previous_reroll_manifest_delta": {
"addons/core/Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverPresentation.c": {
"reroll": "7170adbf39bffad5ee3575ed87ca0d7d6e234da1300f3797176bb4aa89901934",
"active_restart": "d66a29a44e999cc3f2e56ba9c3c6bc936c027747312e08778ce301c1837f2112"
}
},
"historical292_suite_recorded_input_differences_now": {
"addons/core/Scripts/Game/ERR/00_Core/ERR_TerrainTakeoverPresentation.c": {
"suite": "7170adbf39bffad5ee3575ed87ca0d7d6e234da1300f3797176bb4aa89901934",
"current": "d66a29a44e999cc3f2e56ba9c3c6bc936c027747312e08778ce301c1837f2112"
},
"tests/test_terrain_presentation.py": {
"suite": "e111f9c013e37011f1852ac54476657dfd0ba3bf2ad970e7201eb1c7b55a2793",
"current": "05f070c5730a9f7f0aae9487a313342785a42682c9beebc3b10cac270b514f18"
},
"docs/original-feature-coverage.json": {
"suite": "8713e645489135676ab1c1ba119598accd98aee66095da73ddbdb40a4e804f28",
"current": "fa260dc8f7ef94e327c9d0f6a888070c608a19f75384bbefd335915383cbfaa4"
},
"docs/original-feature-coverage.md": {
"suite": "96f6429e26759af0c35d971e80c7ea5f7d6cf5933de05c27ba7aff23c882812d",
"current": "8386a0f56e11041915ec023a078dce627be5bb3732bf148b7d9955f19342cacc"
},
"docs/current-status.md": {
"suite": "4cbe6826efddcf5a7fb590a8a202d21f2767cb70929ec40d82a5b9cd8221d284",
"current": "198c17d38543225c6a8731783e6d75df114752acd9c6f5e7e849b2db20427436"
},
"docs/terrain-takeover.md": {
"suite": "3744d7aa5d7f6e6be3c4a028ceee87621665538cc4c815fe87e1dade5c561320",
"current": "3504c5bcf820adcdfc4640f90ec2ea4347ac96b4b425d11658b2868c21bd5db1"
}
},
"scope": "Stable exact420 source within this run. It is NOT byte-identical to the preceding reroll source or prior292-suite inputs because the concurrent terrain presentation file changed. No new offline suite claim."
},
"runner_seals": {
"result": "smoke-completed",
"cleanup_confirmed": true,
"cleanup_errors": [],
"orphan_candidates": [],
"external_unchanged": true,
"external_count": 7,
"source_unchanged_after_run": true,
"duration_seconds": 128.454,
"scope": "Cleanup and installed external stability are sealed runner observations, independently matched to the archived raw runner; no new process manipulation or huge installed-input rehash."
},
"limitations": [
"Fully prepared PRISON round; no unlocked field logistics, physical intercept, active mounted/mortar transfer or engineer mine job is arranged.",
"Does not qualify native-end-preparing, outstanding preload completion or arbitrary native asynchronous callbacks.",
"Local Workbench only, with native inherited restart; no remote multiplayer/JIP, human escape, FPS or release claim.",
"No rendered end-screen visual assessment; missing-end-screen log errors are absent."
],
"review_actions": {
"native_launch": false,
"compiler_or_tests": false,
"target_or_original_writes": false,
"only_output": "/tmp/erri-round-review-0011/native-review.json"
},
"review_hashes": {
"/home/jakub/devel/escapistsrereintroduced/docs/evidence/native-2026-10-03-active-restart-current/report.json": "4713ecf4533394f97848e0f11dfb1091469c551c8507f72bc4e83e96d821cda3",
"/home/jakub/devel/escapistsrereintroduced/docs/evidence/native-2026-10-03-active-restart-current/runner.json.txt": "ef0ae802bf62a8474211200928eb500f43ffba84b7ec57106c7592529ce4d7a8",
"/home/jakub/devel/escapistsrereintroduced/docs/evidence/native-2026-10-03-active-restart-current/launch-source.json": "68ac93bd482c8d563ceb86a9cd72842170c336a3e72f23f013453267a6f2d33a",
"/home/jakub/devel/escapistsrereintroduced/docs/evidence/native-2026-10-03-active-restart-current/source-sha256.json": "8e9dc7df30cfc1da5e5c29b0015c2943b30ff88be49c43d39dd723bbbe846e48",
"/tmp/erri-round-review-0011/review.json": "8a7465c60e78c59d06fb91d9f1a58b9a17b06f67e10cb9a89981e9b279d0a8d6"
}
}
@@ -0,0 +1,80 @@
{
"verdict": "No demonstrated stale-round, double-cleanup or restart bug within the bounded reviewed scope. No patch proposed.",
"reviewed_invariants": [
"OnGameModeEnd latches m_NativeEndHandled before local shutdown, phase listeners and StopServices; duplicate and reentrant end callbacks cannot forward super twice.",
"External end marks unfinished server phase DEFEAT, preserves supplied native endData, publishes actual escape accounting without creating extraction success; existing successor terminal reason/result is left intact.",
"StopServices latches m_Stopped before Command.Stop and OnStop listeners, removes queued preparation/tick/binder, clears force caches and deletes owned AI groups once. Destructor repeats guarded shutdown without restarting gameplay.",
"StartScenario and ServerTick independently refuse stale post-stop work; BindLocalObserver also refuses stopped or ended ownership.",
"New GameMode instance owns fresh nonstatic roster, services, phase and end guards; vanilla superclass owns RestartSession. Native fixture checks actual second initialized mode rather than resetting old instance fields.",
"HQ late resupply cleanup polling intentionally survives normal command tick shutdown only while exact HQ remains current mode.Command; it cancels itself before identity guards and cannot transfer polling ownership to the next round."
],
"existing_offline_coverage": "Read tests/test_native_end_lifecycle.py actual-method guards, every unfinished phase, existing terminals, client end, reentrant listeners, repeated stop and stale preparation; tests/test_native_end_runner.py restricts selector/Core/two rounds/minimum120s and refuses pre-existing marker files/symlinks. Tests were not rerun.",
"prior_native_evidence": {
"active": "docs/evidence/native-2026-09-19-134044-native-end-active",
"preparing": "docs/evidence/native-2026-09-19-133847-native-end-preparing",
"each_assertions": 21,
"each_completions": 2,
"fixture_current_hash_matches_historical": true,
"historical_game_mode_sha256": "a9096da01d9098a09aa1a2300d528cd4910f02b1a83d705ab41e1c04e8dd032e",
"current_game_mode_sha256": "89a29c03ba225acbbb9fa3c58a721aced91a77bc0c77046d697005a6d7c48bb9",
"qualification": "Historical source used previous multi-addon paths; current GameMode changed, so old result is not current-source qualification."
},
"recommended_existing_run": {
"arguments": [
"python3",
"/home/jakub/devel/escapistsrereintroduced/tools/headless_workbench.py",
"--project",
"core",
"--smoke",
"native-end-active",
"--rounds",
"2",
"--timeout",
"240",
"--compat",
"/tmp/erri-headless-compat",
"--profile",
"/tmp/erri-native-end-active-0011",
"--external-addons",
"/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons"
],
"execute_by_reviewer": false,
"preconditions": [
"Host-visible idle check, existing prefix lock and isolated muted hidden workflow.",
"Fresh profile; marker erri-native-end-round.json and .tmp/.bak must not exist, including broken links.",
"Seal source before run and retain all engine errors/cleanup/source bindings."
],
"reason": "Exercises current prepared service graph through direct inherited EndGameMode and actual vanilla restart, distinct from normal successor Transition victory. Active chosen over preparing because it includes prepared mission services.",
"fixed_fixture_limits": "45-second observation deadline per initialized instance; native auto-reload must be at least2s; observes1250ms after end. Runner240s includes startup/restart; it does not relax those internal assertions.",
"expected_scope": "Two completions and historical21 assertions are expected from unchanged fixture but must be derived from actual new log, not assumed."
},
"limits": [
"Active fixture ends in PRISON, so it does not prove teardown of an in-flight mortar/courier/intercept operation.",
"Preparing fixture ends before queued StartScenario; it does not arrange a pending native preload.",
"This review does not establish real multiplayer/JIP behavior, all native callbacks, visual readability or performance.",
"No broader player admission, extraction or observer audit was repeated."
],
"sha256": {
"addons/core/Scripts/Game/ERR/00_Core/ERR_GameMode.c": "89a29c03ba225acbbb9fa3c58a721aced91a77bc0c77046d697005a6d7c48bb9",
"addons/core/Scripts/Game/ERR/00_Core/ERR_NativeEndProbe.c": "2dec80c7e247ec5c257407f95d9d5edd42fe0cc44d6af9f724f6ebd10d8a355f",
"addons/core/Scripts/Game/ERR/00_Core/ERR_NativeBaseSmoke.c": "e811e985048e07365569acde6b5f045d57e9bbf13927f85b74e6e347fd2ef571",
"addons/core/Scripts/Game/ERR/00_Core/ERR_SiteService.c": "210646e679056f4a46ef454a5abe15bd42d48349aa376ccfbb6b3b2ebeac6812",
"addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c": "5d66c53baf8762e76ae59e28721edaa348014af6d988d42891d9a84a6cf44969",
"addons/core/Scripts/Game/ERR/20_Intel/ERR_IntelService.c": "2911325c79a7a372628b18ffa0e110d11919ce2c2cd7b19277bfd608fdb03dfc",
"tests/test_native_end_lifecycle.py": "8b187723c9039e68e3e590c812c91dcffe1e5917d4e450ed798dc177888fda7a",
"tests/test_native_end_runner.py": "aed94be9b370a412937303cc5b66f0151c2cd64c3e1358f983f9ea53eb0d1057",
"tools/headless_workbench.py": "57f472b7a7642f35e6c2f0e2546631ee941a6f1ea6a5f85365ef59042d674264"
},
"sdk_evidence": {
"path": "/tmp/erri-vanilla-stock/scripts/Game/GameMode/SCR_BaseGameMode.c",
"lines": "694-717,781-789",
"claim": "Superclass publishes native end invoker then schedules RestartSession according to GetAutoReloadDelay; RestartSession requests native scenario restart."
},
"actions": {
"target_writes": false,
"original_writes": false,
"native_launch": false,
"tests_run": false,
"scratch_output": "/tmp/erri-round-review-0011/review.json"
}
}