# Encounter polish validation 6 October 2026. Requested implementation complete; automated/local network verification passed. Human balance, feel and hardware performance acceptance remain pending. ## Delivered scope - Crawler with 14 body/limb parts and independent head/body hitboxes; head-adjacent pooled enemy health bars; confirmed impact-based world damage numbers with gold/bold critical styling. - Crimson elites, separate amber charge cues, textured synchronized dissolve with clipped shadows and frozen poses; Wraith aiming separated from lower-body travel. - Host travelling projectiles with swept collision, limited steering, captured damage and a 64-slot reusable visual/simulation pool. - Bounded sight/hearing, frozen last-known observations, fading memory/search, reachable angle/flank reservations and explicit melee closing opportunities. - Preserved arena plus 40x36m courtyard, two broad entrances, reactor, cover routes and raised two-exit flank; distinct second layout and separate normal/large navigation bakes. - Five asset-backed weapons, pre-run selection, deterministic host shotgun spread/aggregation, falloff, effective stat recomputation and preserved ammo/cadence/reload progress. - All 25 upgrades, shared cores/private locked drafts, rarity/pity, bounded bleed and secondary effects, sequential named ability charges and authored casting restrictions. - Host run lifecycle, synchronized NGO travel, checkpoint recovery, stage/co-op scaling snapshots, stage HUD/exit, once-only all-down results, immutable client caching/acknowledgement and clean subsequent runs. - Versioned local vertical FOV/sensitivity with live preview, fine numeric controls, custom slider/dropdown styles, input blocking and preserved ADS ratios. - Bounded tuning telemetry: weapon accuracy/applied damage, core tiers, offered/selected upgrades, stage durations/outcomes and damage causes. Permanent unlock progression and the plan's explicitly optional expansion ideas remain later work. Existing package/editor pins, player hosting and service policies are preserved. Assembly references were added to already-installed Netcode/Collections for tests and Multiplayer Tools 2.2.12 for development latency diagnostics; no package installation or upgrade occurred. ## Automated checks **196 passed, zero failed**, Unity EditMode. Final report: `TestResults/encounter-final-recovery-wire.xml` / `.txt`. Coverage includes genuine damage-result buffer serialization, finite impact fallback, timer/ammo preservation, charge capacity/recharge/refunds and overlap policy, catalogue/rank/proc rules, private locked rewards and duplicates, perception expiry/stale evidence, swept nearest-cover collision, elite palette preservation during charge, clear/wipe ordering, immutable bounded telemetry, spawn identity dedupe and bounded roster recovery. Observed initial missing-feature failures and a Catalyst ready-deadline compatibility regression are retained in earlier reports. The corrected suites passed before delivery. ## Editor and visual checks - Connected ProjectI on Unity 6000.6.4f1; preserved clean saved PrototypeArena and all pre-existing user/Wraith content. - Scoped builders authored both layouts through Editor APIs and validated complete courtyard/raised-route paths for normal and large agents. - Local host crawler spawn was alive, on NavMesh and had independent head/body volumes. Lethal damage disabled all gameplay colliders immediately while renderers remained for dissolve; dead actor subsequently despawned. - Live bolt launch left HP115 unchanged. In the cover fixture, the bolt later became inactive and HP stayed115; the focused physics test proves nearest-solid swept collision. - StageClear `DamageServer(100)` returned zero and HP stayed115. - Settings blocked input with `Time.timeScale == 1`; exact sensitivity1.37 previewed successfully and original1.00 was restored. Sliders, numeric controls and all five dropdown choices were visually inspected at 1280 × 720. - Crimson textured Wraith and crawler were inspected in the courtyard. Palette/charge regression verifies charging does not recolour armour. Screenshots: `Assets/TestResults/crawler-crimson-wraith-final.png`, `settings-controls-final.png`, `weapon-menu-final.png`, `weapon-dropdown-final.png` (ignored generated QA artifacts). ## Matching Windows players Final Windows build: **Succeeded, zero errors, eight retained warnings**, 19.59 seconds. Artifact: `Builds/Prototype/ProjectI.exe`; build report: `Builds/Prototype/build-result.txt`. Earlier full rebuilds retained519 template/development warnings; the latest incremental build retains eight. The build includes both registered layouts. **13 full-run phases passed** across two/four players with 75 ms configured delay per endpoint, 15 ms jitter and 1% packet loss using the installed Network Simulator. Simulator availability/configuration was asserted on connected peers. Twenty retained client RTT samples ranged 301–355 ms (mean 332.05 ms); configured delay is not an RTT claim. Evidence: `TestResults/encounter-polish-f1f85e39fafa482ab962a2eea96f7dcd/result.json`, per-phase snapshots and four logs. No cleanup errors or runtime exceptions found in these final logs. Checks cover authoritative weapon selection, genuine ability charge consumption, an exact 40 direct / 6 bleed budget and expiry, private locked choices/reopen stability, Stage1→2→3 loading, preserved loadouts/upgrades, actual spawned-enemy scaling, checkpoint recovery, old-effect cleanup,42 unique kills, immutable cached defeat results/telemetry, host departure and clean rehosting/new runs. Diagnostic stage clear and injected ranks are explicitly documented in `ENCOUNTER_POLISH_ACCEPTANCE.md`; this is not a human combat completion claim. **Three additional genuine weapon phases passed**, host hand cannon and remote shotgun under the same simulation. Each spent one round, confirmed enemy damage and recorded one accepted/one successful shot. Both peers cached matching 54 applied damage per weapon. Evidence: `TestResults/weapon-rpc-05e95d056307493f971465d5e3a32b95/result.json`; no runtime exceptions or cleanup errors. The retained scratch harness is `TestResults/Test-WeaponRpc.ps1`. ## Failures investigated and resolved - Initial delayed four-player rehost: NGO had four players, but host SDK projection had three after a pinned LobbyPatcher invalid-index exception. Three advisors independently chose bounded supported `ISession.RefreshAsync()` recovery, preserving strict count assertions. Host refresh now waits two seconds, allows one request in flight and at most two attempts per stable network roster, with five-second backoff and session-generation guards. The final unchanged simultaneous-join scenario passed; three full-snapshot refreshes were exercised. Earlier failure evidence: `TestResults/encounter-polish-2bc63350a8df45e5b8a77d7e294b091e/`. The SDK's underlying event-order cause was not established and its package was not patched/upgraded. - NGO recycles object IDs after 120 seconds by default. Kill/loot dedupe now uses monotonic enemy spawn identity, while live lookup retains NGO IDs. Recycled-ID regression passed. - The first separate live-shot fixture teleported two players onto the same point and they physically displaced each other. The fixture now uses separate positions; production movement rules were not changed for that failure. - An early Editor host pass was interrupted by concurrent source imports/domain reload. Clean frozen-source Play Mode initialization passed; no hot reload stability claim. ## Measured weapon cycles Actual state-machine body-damage cycles with immediate magazine reload, all pellets landing, no critical/falloff/upgrades: | Weapon | Cycle | Body DPS | | --- | ---: | ---: | | Carbine |6.633s |90.45 | | Hand cannon |5.300s |90.57 | | Shotgun |6.400s |90.00 | | SMG |5.150s |76.89 | | Marksman |5.929s |80.96 | Evidence: `TestResults/weapon-cycle-measurement.txt`. These differ from the plan's simplified formula because reload starts after the last shot; they do not prove balance, hit rate, weak-point TTK or crowd utility. ## Remaining acceptance Human two/four-player play on separate networks; actual mouse/keyboard feel and ADS handling; dodgeability and muzzle alignment; hidden-route/flank quality and foot sliding; long capped encounters with rare/legendary combinations; all dissolve/shadow views; additional resolutions/aspect ratios; representative four-player CPU/GPU/network profiling. Select target hardware before setting performance budgets. Use the emitted tuning telemetry rather than declaring the initial numbers balanced. Changes remain in the existing `prototype-foundation` checkout for review; no commit, merge or push was performed. ## User readability revision — 6 October 2026 Charge presentation now emits directly on mesh surfaces within0.16m of the animated muzzle. The old local-scale orb inherited100x bone scale and could become18m wide; it has been removed from all four enemy prefabs. Muzzle glow uses shared shader/property-block data and preserves textured/elite armour. Live screenshot: `Assets/TestResults/muzzle-glow-live.png`. Named framed bars use white outlined text, red remaining health, grey recent damage, a near-black empty track and a thin light border. A bounded512-hit history records each replicated health loss (including teammates), with independent expiry. The Inspector control on **Session Interface / Prototype Combat Hud / Enemy Health Bars / Enemy Damage Trail Seconds** defaults to0.5s; it can be changed live from0–5s, and0 disables grey damage. Health changes are observed even while an enemy is offscreen; normal visibility/occlusion policy remains. Regression suite **198/198 passed** (`TestResults/muzzle-name-health-trail.xml`). Live loss80→60 verified remaining fill75%; after expiry, the grey fill also returned to75%. Shader emission and screenshot-style name/border/background were inspected in Play Mode. No runtime console errors or style warnings observed. Gameplay/network logic remains as validated above except the presentation-only health-change event. Revision build: supported Editor compiler/build pipeline completed successfully. See Builds/Prototype/build-result.txt for the latest exact counts. The first CLI-dispatched build logged a tool dispatcher timeout while continuing to succeed; the direct Editor-tool rebuild avoids that timeout. Existing optional Pipeline runtime warning is retained. Latest readability build confirmed: Succeeded, zero errors/one optional Pipeline warning,6.84seconds (6 October2026). ## Spawn exploration and ranged facing revision — 6 October 2026 Default enemies now enter Explore with a frozen host hint toward the nearest reachable living player. Perception evidence remains separate; unseen spawns cannot shoot based on the hint. Explore also handles last-known/heard positions after sight loss. The20s spawn-hint duration,720deg/s ranged turn speed and8-degree firing tolerance are authored on EnemyDefinition. Existing custom behaviors retain their AcquireTarget entry and an existing custom Explore state is preserved. Ranged NavMesh rotation is disabled on the host. Body yaw instead follows the known target, retaining the firing target during windup, with existing NetworkTransform replication. Without perception evidence, exploration faces its path to inspect the search route. Both windup eligibility and projectile launch require forward alignment as well as the existing life/range/cover checks. - Red regressions:198 passed/3 expected failures for missing Explore, frozen hint and facing rules (`TestResults/enemy-explore-facing-red.xml`). Final suite: **201 passed/0 failed** (`TestResults/enemy-explore-facing-green.xml`). - Live local host: ranged spawn29m away began Explore without a perception target, NavMesh rotation disabled; travelled17.10m in8s, acquired sight, reached Recover and demonstrated sideways movement. Minimum sampled facing dot during movement was0.9463, including acquisition/turning frames; forced backward windup was rejected. No claim of instantaneous rotation is made (`TestResults/enemy-explore-facing-live.txt`). - Frozen-hint live check: player moved fromz23 toz0 immediately after spawning unseen melee/ranged atz52. After2s both remained Explore without a target, travelled6.12m/6.79m respectively, and retained destinationz23 (`TestResults/enemy-explore-frozen-live.txt`). - Focused independent review passed after fixing no-evidence search facing and preserving the custom behavior entry. No runtime console errors. Local diagnostic host shut down; Play Mode stopped; authored scene remained clean. - Windows rebuild **Succeeded, zero errors/519 warnings,23.21s** (`Builds/Prototype/build-result.txt`). Retained warnings include optional Pipeline configuration, development symbols and template/debug compute-shader variants. Managed gameplay assembly rebuilt with this revision. No navigation/package/scene changes. Remote-client acceptance and human strafe/animation feel remain pending for this AI revision; the earlier multi-peer full-run evidence above predates this change. ## Mandatory choices, disappearing cores and portal travel — 6 October 2026 At stage completion, every participant's pending rewards open automatically. Card selection is a preview; Next submits one authoritative choice, waits for acknowledgment and advances to the next locked offer. No bank/close/defer/ready/reopen controls remain. Exhausted offers use Next without granting an upgrade. The final Next closes the panel and releases its input block. Choices cannot be opened during active combat. The null-offer bug was reproduced in the live Editor: JsonUtility sends a null nested Offer as `{RewardId:0,Cards:[],Exhausted:false}`. PrivateRunState now includes HasOffer and clears absent offers before UI refresh. This avoids the old empty/exhausted-looking screen and permits automatic opening and final cleanup. Genuine exhausted offers retain their real ID. Core pickup deactivates the shared visual before publishing personal entitlements. Raycast checks ignore player-owned colliders regardless of child layer and still block on world geometry. The reproduced default-layer child collider previously left one core visible with no new reward; the corrected live fixture collected two cores, left zero visuals and queued two rewards. Team ownership remains one personal reward per captured connected participant. The existing scene portal remains grey while anyone has pending choices, turns green when all finish and turns amber during travel. Server accepted positions validate a fresh entry; one living participant entering takes everyone through the existing synchronized scene loader. Completion alone cannot advance, and standing inside before activation requires exit/reentry. Ready/defer authority was removed. Checkpoint walking is enabled independently from combat, which stays blocked. Automated verification: - Expected red runs retained: `TestResults/stage-reward-portal-red.xml` (201 passed/3 failures) and `stage-reward-null-offer-red.xml` (205 passed/1 failure). - Final EditMode **207/207**, zero failures (`TestResults/stage-reward-portal-final.xml`): pending/membership/life/position/time portal guards, one transition, checkpoint movement, preview/double-confirm/new-offer reset, exhausted Next and null/real-exhausted wire states. - Independent focused UI, authority/lifecycle and offer-wire reviews passed. PowerShell acceptance script parses successfully. Editor verification: actual rendered card/Next callbacks previewed without spending, double Next consumed exactly one of two choices, the second offer required a new selection and final Next hid the panel with null offer. Already-inside completion did not travel; exit/reentry moved to Stage2. Screenshot: `Assets/TestResults/upgrade-next-sequence.png`; observations: `TestResults/stage-reward-portal-live.txt`. The direct offline host retained the separate session-menu input block; online rebuilt checks below verify global release. The later idle Editor Stage2 was allowed to spawn AI and subsequently defeated the unattended player. No runtime console/style errors were observed. Play Mode stopped and the authored PrototypeArena scene remained clean. Matching Windows build: **Succeeded, zero errors/nine retained warnings,18.01s** (`Builds/Prototype/build-result.txt`). Warnings are optional Pipeline configuration and existing development-symbol guidance. No package changes, scene rewrites or navigation rebakes. Rebuilt co-op acceptance: **15/15 phases passed** with two/four players,75ms delay per endpoint,15ms jitter and1% loss (`TestResults/encounter-polish-b935c973d3494198be391090a3a5073c/result.json`). Includes physical core visibility/removal on every peer with exactly one personal entitlement, draining all choices with one rank per normal confirmation, real absent-offer state and global input release after final Next, locked portal while teammates choose, no auto travel while the entrant waits inside, exit/reentry followed by synchronized Stage2/Stage3, preserved build/scaling/checkpoint resources, bounded effects,42 unique kills per full run, exact counted offer telemetry, cached defeat results, host-departure recovery and a clean rehost. Cleanup had no errors; one incomplete report read was retried. Initial built acceptance failures were fixture-only and retained: `encounter-polish-b549b68ebe1942399df08d6740004c28` compared a sorted inventory string numerically; `encounter-polish-6f7cb1edc871457bada610b69b6959d9` indexed an empty rank sum. Assertions now count ranks numerically and compare exactly one added rank (zero for exhausted offers); all-choice telemetry replaces the former one-choice-per-stage expectation. The game binary was unchanged between these test-script corrections and the final passing run. Human portal/choice/animation feel and separate-network acceptance remain pending; these scripted tests do not establish balance or external-network quality. ## Ranged holds, wave pressure and retained boss adds — 6 October 2026 Ranged actors alternate independently sampled1–2s movement and0.8–1.6s holds inside a visible, safe engagement band (ordinary defaults7.8–23.5m). Host deadlines sample once per decision; repeated state calls do not reroll or toggle twice. Holding stops navigation and reserves the occupied position while facing, charge and projectile launch continue. Lost sight, unsafe range, target change and lifecycle cleanup release/reset the cadence within the existing AI think cadence. Edit **Enemy Definition / Ranged Movement And Firing Pauses** for duration ranges/minimum range fraction. The director repeats20s buildup at2s/cap10,25s pressure at0.9s/cap16 and15s recovery at4s/cap5 with the default2.5s base interval. **Round Pressure / Pacing Beats** controls duration, base-interval multiplier and cap; **Maximum Wave Enemies** bounds waves to1–16; **Kills Before Boss** defaults40 and is captured on stage/reset. Caps/rate/goal/beat are replicated for diagnostics. Lower caps retain actors and pause reinforcements; stage start resets time, transitions replace deadlines and missed spawns never accumulate. Boss admission uses the fixed17-actor safety ceiling even if the author lowers the wave maximum while survivors remain. Forty unique nonboss kills (normal or elite) trigger one boss. The transition runs before ordinary spawning, keeps survivors, disables all further nonboss additions and retries boss placement once per second if geometry prevents placement. Boss defeat still completes the stage; living nonboss adds are removed at checkpoint cleanup without rewarding their despawn. The dead boss retains its dissolve period. Automated: expected red run207 passed/5 failures (`TestResults/encounter-pressure-holds-red.xml`), final **213/213**, zero failures (`TestResults/encounter-pressure-holds-final.xml`). Covers40-kill defaults/unique elite-inclusive threshold, dynamic caps, full-cap reserved boss admission, timing boundaries/repeat/fallbacks, and hold alternation/duplicate-tick/interruption. Focused pacing/lifecycle and ranged reviews passed; both updated PowerShell encounter scripts parse. The older `Test-Encounters.ps1` received40-kill/flat diagnostic pressure fixture updates but was not rerun for this revision. Editor: - Two ranged actors both moved and held, used different timing, fired during holds and maintained minimum held facing dot0.9999999. A hold was interrupted by a player moving within2m, immediately resuming navigation (`TestResults/ranged-hold-live.txt`). - Six-second compressed authored schedule exercised all3 beats, reached6 alive, then entered cap1 recovery with all6 survivors retained and no new spawn identities (`TestResults/encounter-pressure-live.txt`). Default60s timing is separately covered at boundaries by EditMode. - Full-cap fixture captured16 living wave identities/HP, lowered the live maximum to1, then supplied40 synthetic unique rule credits. Boss arrival yielded exactly1 boss plus the same16 survivors, total17. Ordinary spawn requests were rejected and no wave additions appeared over3s (`TestResults/boss-retained-adds-before.txt`, `boss-retained-adds-live.txt`). This is a population-boundary fixture; real kill counting is exercised by the rebuilt runs below. - Boss defeat entered StageClear, removed all living adds, awarded zero normal-kill credits for cleanup and queued exactly one boss reward. No runtime console warnings/errors observed. Diagnostic host shut down; Play Mode stopped; scene clean and authored default values restored (goal40/base2.5/wave ceiling16/three beats). Matching Windows build: **Succeeded, zero errors/520 retained warnings,36.94s** (`Builds/Prototype/build-result.txt`). Retained warnings include optional Pipeline configuration, development symbols and template/debug compute variants. No scene, navigation or package changes. Rebuilt acceptance **15/15 phases passed** for two/four players at75ms delay per endpoint,15ms jitter and1% loss (`TestResults/encounter-polish-48d9656a6801466ea04190cae6e48311/result.json`). Both cleared stages now require40 regular/elite deaths plus their boss:82 unique kills per full run. Preserved authoritative weapons/charges/effects, shared physical core disappearance, all mandatory choices, portal gating/reentry, synchronized scenes, inventory/scaling/checkpoint recovery, exact offer/kill telemetry, cached defeat/menu recovery and clean rehost. Cleanup errors:0. These full-run fixtures pause AI/spawning for deterministic combat and complement the live pacing/hold checks; they do not prove human stress or remote animation quality. Remaining: human pacing/standing/strafe feel, remote AI visual acceptance, stress with rare/legendary effects, separate-network play and profiling the16-wave-plus-boss ceiling on target hardware. Low-pressure periods reduce incoming pressure rather than guaranteeing an empty or quiet arena. ## Early-stage spawn reduction — 6 October 2026 All wave pressure intervals are multiplied by2 in stage1,1.6 in stage2 and1.3 in stage3. Stage4 onward uses the baseline schedule. The first spawn delay uses the same multiplier. **Early Stage Spawn Interval Multipliers** on PrototypeEncounterDirector is editable; array index0 corresponds to stage1, later stages fall back to1, and invalid/accelerating values normalize to1. Stage is captured on start/reset. The common pressure sampler serves automatic spawning, population admission and replicated diagnostics. Caps, beat durations,40-kill goal, boss retry and retained-add policy remain unchanged. Expected red suite213 passed/2 failed (`TestResults/early-stage-spawning-red.xml`); final **215/215 passed** (`early-stage-spawning-green.xml`). Checks every beat, taper to baseline, large stage indexes and authored/invalid overrides. Live local host stage-start/snapshot fixture confirmed (`TestResults/early-stage-spawning-live.txt`): stage1 initial delay2s and intervals4/1.8/8s; stage2 delay1.6s and intervals3.2/1.44/6.4s; stage3 delay1.3s and intervals2.6/1.17/5.2s; stage4 delay1s and intervals2/0.9/4s. Stage index and elapsed beat time were set diagnostically, rather than running full scene travel. No console warnings/errors observed; Play Mode stopped. Updated Windows build **Succeeded, zero errors/520 retained warnings,26.11s** (`Builds/Prototype/build-result.txt`). No scene/prefab/navigation/package changes. Existing15-phase delayed co-op evidence above predates this bounded rate-only reduction; full peer acceptance was not rerun. Human early-stage pacing remains an initial tuning check. ## Preferred ranged firing positions and six-unit movement — 6 October 2026 Ranged actors immediately hold good visible firing positions for4–7s, occasionally moving for0.4–0.9s. Actual muzzle-to-target obstruction and muzzle overlap are checked for hold eligibility; facing/charge/fire continue while held. Close player approach does not invalidate the hold. Both ranged authored definitions were updated with supported Editor APIs, preserving unrelated values/GUIDs. Inspector controls: **Ranged Movement And Firing Pauses**, **Ranged Minimum Distance** (minimum6, normalized maximum20). Prior minimum holding-range fraction is hidden and no longer drives behavior. Ranged goals and all path segments validate clearance around remembered targets/frozen hints; twelve bounded ring/side candidates replace long automatic strafes and the unsafe direct-target fallback. The final sampled goal is recalculated/validated and submitted with SetPath, so a reused candidate path cannot substitute a different route. Exploration uses this same policy. When no safe route exists, the actor remains stationary rather than crossing the exclusion circle. Server ranged agents disable automatic transform movement. Every frame before AI throttling/early exits, proposed nextPosition displacement is clamped against all spawned living players' current accepted horizontal positions, then NavMesh-constrained output is checked again and synchronized to transform/nextPosition. An actor already inside6 because the player approached is not teleported out: inward motion is rejected, stationary/outward/tangential motion allowed. Actual positions are safety vetoes only; no hidden position refreshes memory, chooses a goal or grants fire permission. Ranged spawns include a1-unit spacing buffer; melee spawn distance behavior is preserved. Explicit diagnostic warps synchronize the agent and transform. Automated: **220/220 passed**, zero failures (`TestResults/ranged-positioning-final.xml`). New focused rules cover preferred timings, immediate hold/occasional movement, safe endpoints with an unsafe crossing chord, inside-radius approach/outward/tangent behavior and a second player's veto preserving the first constraint. Pacing and early-stage regression coverage also remains passing. Focused route/movement/perception source reviews found no blocking defects. Initial EditMode test invocation occurred while the user Editor was in Play Mode and produced no completed baseline report; verification was rerun after stopping Play Mode. Live Editor evidence: - Twelve-second actual transform observation: stationary fraction0.82755, occasional movement and firing during holds, minimum distance11.5911, maximum transform/nextPosition mismatch0, updatePosition=false (`TestResults/ranged-positioning-live.txt`). - Player approached to2.000001 units: hold preserved, actor not pushed out, forced inward navigation displacement rejected, sync mismatch0. Large12→4-unit overshoot stopped at6.005001 with sync mismatch0 (same file). - Existing central-ruin cover fixture on connected floor: initially hidden, travelled6.737m, minimum separation11.2437, reacquired sight and resumed hold (`TestResults/ranged-cover-spacing-live.txt`). Initial placement sampled an isolated low-cover roof (y1.25), causing no movement; that fixture is retained as `ranged-cover-spacing-roof-fixture.txt`, and floor connectivity was verified before the corrected run. - No runtime console warnings/errors. Diagnostic host shut down; Play Mode stopped; authored scene stayed clean. No navigation rebake or package changes. Matching Windows build **Succeeded, zero errors/520 retained warnings,30.48s** (`Builds/Prototype/build-result.txt`). Optional Pipeline, development-symbol and template/debug compute warnings remain. Rebuilt delayed two/four-player full-run acceptance **15/15 passed** (`TestResults/encounter-polish-17bf6a5114224350a4df1505d9445f8b/result.json`) with75ms per-endpoint delay,15ms jitter and1% loss. Includes40-kill stages/82 unique two-stage kills, authoritative builds/effects, ground-core cleanup, all choices, portal gating/travel, checkpoint recovery, exact telemetry, defeat/menu recovery and clean rehost. Full-run fixture pauses enemy AI for deterministic combat; live spacing/holding/cover evidence above covers active NPC behavior. Human feel, remote animation, avoidance/off-mesh edge views and safe-route-unavailable situations remain separate acceptance items.