Menu layouts and palette are up to date. ....... ---------------------------------------------------------------------- Ran 7 tests in 0.047s OK .... ---------------------------------------------------------------------- Ran 4 tests in 0.000s OK ....../usr/lib/python3.14/tempfile.py:538: ResourceWarning: Implicitly cleaning up _warnings.warn(self.warn_message, ResourceWarning) .......... ---------------------------------------------------------------------- Ran 16 tests in 0.142s OK PASS: authoritative kills/deaths, duplicate-event protection, friendly kills, suicide, GM and vehicle exclusions, down/recovery edges, disconnected escapees and terminal gates PASS: production roster reconciliation preserves disconnected names and reconnect counters, refuses connection-ID inheritance, freezes records and bounds retained participants PASS: held/tapped AI horn limits, half-second pulses, 30-second cooldown, clock reset, player/passenger/aircraft/replica exclusion and ended mission cleanup PASS: telemetry outcomes, exactly-once finish, opt-out gate, stale callbacks, HTTP status handling and bounded retry PASS: durable installation credential, restart/endpoint/identity isolation, write failure, corruption, bounded retention and disabled-send gates PASS: running dedicated configuration, automatic server config/lobby name, explicit override, startup absence, rename and payload bound PASS: map/server/mission/event/outcome validation, bounded counters, stale delivery exclusion, current-round refresh and unavailable recovery PASS: deployment init waits for mode, runs once, cancels on deletion/world change and bounds retries; respawn RPC registration stays immediate PASS: native chat retained on both peers, nested ownership detached, absent chat supplied by replicated fallback, authored mission chat preserved PASS: configurable independent restarts, idle clock reset and live setting changes; last disconnect, pending admission/spectator population, five-hour boundary, repeated empty rounds, preparation, authority and duplicate-end guards PASS: faction aircraft profiles provide 12+ cargo capacity; FIA/ION crew comes only from the selected faction PASS: fleet space is required before pickup registration; dispatch rechecks/replaces only the secondary within the original 48-candidate footprint budget Policy-only arrival from 90 m offset / 150 m height at 15 Hz: original 65.60s, rescue 32.20s Policy-only arrival from 90 m offset / 150 m height at 30 Hz: original 65.73s, rescue 32.30s Policy-only arrival from 90 m offset / 150 m height at 60 Hz: original 65.72s, rescue 32.33s Policy-only arrival from 90 m offset / 150 m height at 120 Hz: original 65.72s, rescue 32.33s PASS: faster rescue descent, continuous near-ground braking, alignment gate, unchanged recovery/escort/default profile, and bounded settling at 15/30/60/120 Hz PASS: split-fleet boarding, escort rejection, lost transport failure and both transports airborne for thirty seconds PASS: actual nearest usable registered-fleet selection, patient reservation priority, independent ranges, audited benches/skids and captured-aircraft handshake guards PASS: production Cessna boarding requires exact observed occupancy, activates before requesting, caps retries at three with 5s spacing, and preserves transition, ownership, health and seat restrictions; engine behavior is faked PASS: traffic distance/grace, all-observer veto, player claims, foreign custody, bounded spawn cadence, failure/stall retention and shutdown preserve nearby/claimed entities PASS: actual observer collection includes spectator targets and controlled bodies; missing views/controllers and open editor cameras veto spawn/cleanup PASS: civilian traffic defaults to three; menu command resolves to persisted 0..6 setting with zero disabling new cars PASS: bounded exit-road selection can turn along a coastline when the opposite road is unavailable; no-route case is withheld PASS: managed traffic pins both native garbage entries; release/retirement removes only those pins, including partial creation PASS: native garage families only; rubble/furniture/military garages rejected; oversized and invalid vehicle bounds rejected PASS: bodies and spectator targets are collected; unknown, nonfinite and editor views veto spawning/cleanup; no connected players yields an empty known view PASS: permanent entry/movement/occupancy claims; far hidden grace cleanup; proximity/visibility/unknown-view resets; one staged operation per update, no same-frame catch-up, stop and client guards PASS: saved garage menu settings configure the round once; unit conversion and cleanup radius scale correctly; count/chance zero disable startup; clients and stopped rounds do no work PASS: exhausted/blocked opening keeps configured radius; distant objective fallback rejected; bounds, player clearance, separation, force cap and retry delay retained PASS: separated rear vehicle approaches, opposite infantry sectors, radio-gated ownership, failed-order preservation, visual cover or bounded supported reconnaissance, bounded dismount/search/regroup and loss cleanup PASS: production dismount/boarding allocation, all crew allowances, waypoint ownership, one-time vehicle detach/restore and capture/teardown guards PASS: covering support requires the original conscious turret gunner, valid mounted driver, live crew and delivered assignment PASS: alternate positions exclude failed and occupied stages, roll back on failed planning/allocation, and preserve the total time budget PASS: blocked crew deadline survives combat interruptions, defers unsafe exits, resets after recovery; failed stages survive assignments with bounded expiry PASS: native-callback cleanup, bounded retries and budget, pending quarantine, objective/ownership/lifecycle protection, no evidence retirement or forced entity deletion PASS: radio intel boundary, exclusions, preparation cap, next-round configuration, sticky unlock, redirection/evidence, fixed retention, automatic recovery and lifecycle guards PASS: actual terrain refusal reasons, counted summaries, site/attempt/time context, 30-second rate limit and per-site reset PASS: actual low/negative dry terrain, height-correct shallow/lake/ocean/interior water refusal and downstream startup dry-ground gates PASS: failure-only menu, repeated-frame/dialog focus, pause fallback, exact error, Esc routing, single local exit, stale/recovered mode guards and listener cleanup; native rendering unverified PASS: only original fit loaded healthy uncaptured gunners stay mounted; driver can leave; infantry readiness excludes the retained gunner but regroup requires all survivors PASS: actual HQ allocator selects reachable reports, distinct cover/flanks, simultaneous fronts, bounded reservations and failed-radio/placement rollback PASS: shared own-force attack spacing, own-group refresh, exact release, expiry/deletion, finite capacity and fresh confirmed sighting-only flank permission PASS: actual convoy foot transport detachment is idempotent; regroup restores only its live friendly uncaptured original truck PASS: opposing native flank orders are transactional; arrived teams sweep twice, travelling/boarding teams retain orders, failed redirects retry and replayed contacts are ignored PASS: expired-report approach, arrival-only search, completion, newer/older/replayed reports, visual priority, interrupted search and bounded travel PASS: drone cooldown, capacity, freshness, replay, bounded retries, round cap, stop, optional API and radio boundaries PASS: production camera cone/range rejects behind-camera and distant actors; control directions, damping and limits PASS: production drone radio queue rejects wrong phase/authority/group, busy or unconscious radios and absent routes; snapshots only eligible observations PASS: target equipment counts as character contact; unrelated blockers and cyclic hierarchies stay blocked PASS: burial requires a conscious current player, actual held shovel, dead nearby unobstructed corpse and no vehicle; authority and duplicate deletion guards preserve player/tool PASS: nearest reported idle team, blocked teams, guards, active/pending orders, combat, radio routes, stale status and distance limit PASS: six editor listeners transferred idempotently, unrelated handlers retained, authority guard and lifecycle ordering PASS: takeover reconnect creates only missing managers, restores native roles, never grants non-admin access, skips stale/disconnected/client states PASS: Game Master button becomes enabled on native permission arrival and disabled on revocation; no permission bypass PASS: native creation called once per editor; pending/duplicate ownership waits, host works, retry is bounded and stale-world callbacks cannot create editors PASS: catalog-independent cleanup removes original subscriptions once, handles never-initialized/preload items, preserves live validation and opted-out/editor behavior PASS: shared config transaction rejects client writes, preserves first-save/prior/fallback state across open, write, backup, partial-copy, readback and mismatch failures PASS: actual Save/Commit preserves semantically valid backup across unrelated menu edits and repairs; unknown fields/default sections retained; actual terrain parser; other parsers, catalog and disk doubled .....TTS request rejected: authentication failed (403) TTS request completed (200) ....TTS request completed (200) TTS request completed (200) .. ---------------------------------------------------------------------- Ran 11 tests in 1.068s OK PASS: all 37 fixed messages have validated exact audio, native graph identities and source-bundle inclusion PASS: production incremental decoder preserves binary data, bounds each slice, yields on elapsed time and rejects malformed or oversized payloads PASS: production speech transfer checks order, exact part sizes and stable bounded totals without changing audio PASS: production client callbacks only queue; shared updates prepare one bounded slice, preserve bytes, handle file failures and cancel safely before playback PASS: production soldier timeout preserves queued/completed preparation, expires stalled requests and removes stopped graphs only once PASS: actual welcome tick waits for URL/readiness/server permit, preserves local once-only state across worlds and refuses stopped callbacks PASS: account greeting survives client/controller/round changes; owner validation, delayed readiness, idempotent retry, stale replies and bounded ledger PASS: original body/equipment retained past old timeout; expiry, death, canonical account/body, occupied controller, failed handoff, missing/dead/expired body replacement and extraction/duplicate-audit guards frame_ms=33.3333 buffered_step_variation=0.0336441 baseline=1.32469 frame_ms=16.6667 buffered_step_variation=0.0660537 baseline=0.822226 frame_ms=6.94444 buffered_step_variation=0.0253502 baseline=0.427864 PASS: actual view buffer validates samples, follows position/roll/FOV, rejects stale/foreign/reordered data, buffers jitter without drift, bounds memory and expires gaps PASS: actual relay rejects noncanonical sources, live/foreign/stale viewers, invalid/replayed/fast packets; bounds leases and owner-only target delivery PASS: production scope sampling preserves ordinary views, selects active ADS only, carries zoom/zeroing/illumination and rejects mismatched/unstreamed optics; native APIs doubled PASS: native head/helmet fade is local, target-scoped, restored on exit/switch and does not overwrite a later camera owner PASS: actual orbit branch rotates and zooms without a target; anchor tracking, bounds, collision and menu gating; corpse/vehicle orbit and living player-view fallback preserved PASS: production TTS settings/test/enable/failure/disable/timeout flows preserve fallback, secrets, authorization, saved state and late-callback cancellation PASS: TTS admin authorization, limits, case preservation and menu control contract PASS: actual atlas preparation shows disclosed markers on overview, regional and detail sheets; cover hidden; overlay matches map rectangle above print for square/wide/tall terrains PASS: actual objective overlay lifecycle preserves separate ownership, late readiness/reopen, data refresh, pan/zoom/culling, supported sibling/shared-frame parents, coordinate offsets, native task-clear isolation and terminal cleanup; native rendering remains unverified PASS: actual map element initializes each widget, retries missing widgets, updates position and changes only stale text/icon data; no native image-load claim PASS: all atlas identifiers, including the quoted question mark, match the generator PASS: actual native fixture root/config ownership and idempotent cleanup preserve foreign map, selector excludes ordinary route, fixed budgets/screenshots/UGC boundaries retained; native operations not executed PASS: actual full Inspect rejects canvas parenting, wrong active container/canvas, omitted origin offset, wrong rendered box and stale coordinates; differing origins and DPI accepted PASS: actual long-warning phases retain visible label through1500ms checkpoint then restore radio before close; synthetic marker separated from unmoved player PASS: actual Center keeps marker offset within large and small native viewports at both fixture zooms without altering disclosed coordinates PASS: missing, child-only, malformed, zero and duplicate prefab root IDs rejected PASS: delayed scene/inventory arrival, deferred preload, identity checks, stale replies, timeout and observer cleanup PASS: loading protection restores only its own damage change, rejects invalid admission actors, and tolerates repeat/deleted cleanup PASS: actual inventory manifest, delayed/missing/wrong-owner item links, finite cap, consumed-stock refresh and preload ordering PASS: spawn scene remains held through final acknowledgement and nearby use; leaving, reassignment, disconnect and teardown release it PASS: production prison AI hold/release, repeat activation, authority/faction/player exclusion, dead actor and stop cleanup PASS: actual protected/capped damage plus exact-actor terminal fixture bypass through delayed native damage, fail-closed ownership and untouched ordinary actor; no native claim PASS: actual full planner selection/commit body, 360 equivalence scenarios, orders/reservations/cooldowns identical; one128-unit scan vs >10000 repeated unit visits; no FPS claim /tmp/err-policy-47tb2b7p/check.cpp: In member function ‘void Controller::ERR_UpdateObserverClient()’: /tmp/err-policy-47tb2b7p/check.cpp:99:21: error: ‘GetTickCount’ is not a member of ‘System’ 99 | int now = System::GetTickCount(); | ^~~~~~~~~~~~ /tmp/err-policy-47tb2b7p/check.cpp:103:7: error: ‘m_ERRPendingRecoveryStatus’ was not declared in this scope; did you mean ‘m_ERRShownRecoveryStatus’? 103 | if (m_ERRPendingRecoveryStatus != recovery || now < m_ERRRecoveryStatusSince) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ | m_ERRShownRecoveryStatus /tmp/err-policy-47tb2b7p/check.cpp:103:55: error: ‘m_ERRRecoveryStatusSince’ was not declared in this scope; did you mean ‘m_ERRRecoveryDeadline’? 103 | if (m_ERRPendingRecoveryStatus != recovery || now < m_ERRRecoveryStatusSince) | ^~~~~~~~~~~~~~~~~~~~~~~~ | m_ERRRecoveryDeadline /tmp/err-policy-47tb2b7p/check.cpp:108:72: error: ‘m_ERRRecoveryStatusSince’ was not declared in this scope; did you mean ‘m_ERRRecoveryDeadline’? 108 | if (!contextChanged && m_ERRShownRecoveryStatus != recovery && now - m_ERRRecoveryStatusSince < 3000) return; | ^~~~~~~~~~~~~~~~~~~~~~~~ | m_ERRRecoveryDeadline /tmp/err-policy-47tb2b7p/check.cpp:115:26: error: no matching function for call to ‘SCR_HintManagerComponent::ShowCustom(string&, const char [11], int, bool&)’ 115 | if (!hints->ShowCustom(message, "Spectating", 12, m_ERRObserverReady)) return; | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ • there is 1 candidate • candidate 1: ‘bool SCR_HintManagerComponent::ShowCustom(string, string, int)’ /tmp/err-policy-47tb2b7p/check.cpp:26:144: 26 | struct SCR_HintManagerComponent{int attempts=0;static SCR_HintManagerComponent*GetInstance(){static SCR_HintManagerComponent h;return &h;}bool ShowCustom(string,string,int){attempts++;return true;}}; | ^~~~~~~~~~ • candidate expects 3 arguments, 4 provided /tmp/err-policy-47tb2b7p/check.cpp: In member function ‘void Controller::ERR_CloseObserverCamera()’: /tmp/err-policy-47tb2b7p/check.cpp:149:3: error: ‘m_ERRPendingRecoveryStatus’ was not declared in this scope; did you mean ‘m_ERRShownRecoveryStatus’? 149 | m_ERRPendingRecoveryStatus = ""; | ^~~~~~~~~~~~~~~~~~~~~~~~~~ | m_ERRShownRecoveryStatus /tmp/err-policy-47tb2b7p/check.cpp:150:3: error: ‘m_ERRRecoveryStatusSince’ was not declared in this scope; did you mean ‘m_ERRRecoveryDeadline’? 150 | m_ERRRecoveryStatusSince = 0; | ^~~~~~~~~~~~~~~~~~~~~~~~ | m_ERRRecoveryDeadline Traceback (most recent call last): File "/home/jakub/devel/escapistsrereintroduced/tests/test_observer_ownership.py", line 23, in run(r'''#include ~~~^^^^^^^^^^^^^^^^^^^^^^^ #include ^^^^^^^^^^^^^^ ...<120 lines>... } ^ ''') ^^^^ File "/home/jakub/devel/escapistsrereintroduced/tests/policy_harness.py", line 13, in run subprocess.run(['g++','-std=c++17','-Wall','-Werror',str(p/'check.cpp'),'-o',str(p/'check')],check=True) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.14/subprocess.py", line 578, in run raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) subprocess.CalledProcessError: Command '['g++', '-std=c++17', '-Wall', '-Werror', '/tmp/err-policy-47tb2b7p/check.cpp', '-o', '/tmp/err-policy-47tb2b7p/check']' returned non-zero exit status 1. PASS: 48 prefabs have unique saved root entity IDs Traceback (most recent call last): File "/home/jakub/devel/escapistsrereintroduced/tools/check.py", line 149, in if __name__=='__main__':check() ~~~~~^^ File "/home/jakub/devel/escapistsrereintroduced/tools/check.py", line 79, in check subprocess.run([sys.executable,str(ROOT/'tests/test_observer_ownership.py')],check=True) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.14/subprocess.py", line 578, in run raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) subprocess.CalledProcessError: Command '['/usr/bin/python3', '/home/jakub/devel/escapistsrereintroduced/tests/test_observer_ownership.py']' returned non-zero exit status 1.