Menu layouts and palette are up to date. ....... ---------------------------------------------------------------------- Ran 7 tests in 0.052s OK .... ---------------------------------------------------------------------- Ran 4 tests in 0.001s OK ....../usr/lib/python3.14/tempfile.py:538: ResourceWarning: Implicitly cleaning up _warnings.warn(self.warn_message, ResourceWarning) .......... ---------------------------------------------------------------------- Ran 16 tests in 0.134s 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) .E..E. ====================================================================== ERROR: test_large_cached_audio_downloads_in_bounded_parts (__main__.WelcomeTests.test_large_cached_audio_downloads_in_bounded_parts) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/jakub/devel/escapistsrereintroduced/tests/test_welcome_voice.py", line 108, in test_large_cached_audio_downloads_in_bounded_parts server = tool.ThreadingHTTPServer(('127.0.0.1', 0), tool.handler_for(audio, cache)) File "/usr/lib/python3.14/socketserver.py", line 453, in __init__ self.socket = socket.socket(self.address_family, ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ self.socket_type) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.14/socket.py", line 236, in __init__ _socket.socket.__init__(self, family, type, proto, fileno) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 1] Operation not permitted ====================================================================== ERROR: test_real_chunked_http_generation_and_playback (__main__.WelcomeTests.test_real_chunked_http_generation_and_playback) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/jakub/devel/escapistsrereintroduced/tests/test_welcome_voice.py", line 180, in test_real_chunked_http_generation_and_playback server = tool.ThreadingHTTPServer(('127.0.0.1', 0), tool.handler_for(clip(), cache)) File "/usr/lib/python3.14/socketserver.py", line 453, in __init__ self.socket = socket.socket(self.address_family, ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ self.socket_type) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.14/socket.py", line 236, in __init__ _socket.socket.__init__(self, family, type, proto, fileno) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 1] Operation not permitted ---------------------------------------------------------------------- Ran 11 tests in 0.014s FAILED (errors=2) 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 53, in check subprocess.run([sys.executable,str(ROOT/'tests/test_welcome_voice.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_welcome_voice.py']' returned non-zero exit status 1.