acdream/tests/AcDream.Runtime.Tests
Erik ab79b91f1b fix(headless): FA6 — name-match the Recruit bot instead of nearest-any-player
The second live gate run exposed a real environmental hazard: this shared
ACE dev instance has a THIRD player character online (+Je, guid
0x50000001), and after @teleallto it ended up nearer to the Leader bot than
the actual Recruit bot (+Horan, 0x5000000B). RuntimeFriendlyTargetQuery.
FindClosestOtherPlayer — "nearest ANY other player" — picked +Je, and the
fellowship recruit sent to it obviously never completed (confirmed live:
WaitRecruited/WaitForRecruit both timed out, both bots quarantined and
gracefully logged out cleanly).

RuntimeFriendlyTargetQuery.FindPlayerByName resolves the nearest player
whose streamed name matches exactly, with 3 new conformance tests
(preferring the named player over a closer stranger, returning null when
absent, and case-sensitivity/hidden/no-draw/self rejection).

FellowshipAllegianceGateCoordinator (AcDream.Headless.Policies) is a small
same-process, no-locking (single update thread) carrier for the Recruit
bot's own discovered character name — set by its own HeadlessSessionHost
the instant CharacterList selection resolves it, which IS D8's "discover it
live" mechanism, not a hard-coded value. Constructed once per
HeadlessProcessHost and threaded through HeadlessBotPolicyFactory.Create
into the Leader policy, which now name-matches instead of taking whichever
player entity happens to be closest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-12 09:53:46 +02:00
..
Entities fix(review): close the C5b architecture-review findings (D2/D3/D4, L1-L5, S1) 2026-08-05 22:08:46 +02:00
Gameplay fix(headless): FA6 — name-match the Recruit bot instead of nearest-any-player 2026-08-12 09:53:46 +02:00
Physics fix(vendor): evidence-based pass — max-first stack ceiling; the local player resolves never-animated MoveTo targets 2026-08-08 17:17:04 +02:00
Platform feat(linux): add graphical platform services 2026-07-27 11:54:59 +02:00
Session fix(net,runtime): FA2 fix-round SHOULD-FIX -- fellowship mechanism parity, lookup reuse, router test, checkpoint defaults 2026-08-12 02:17:56 +02:00
Support refactor(runtime): unify generation reset for direct hosts 2026-07-27 00:43:26 +02:00
World fix(streaming): derive the portal reveal window from the live streaming radii (#280) 2026-08-05 23:54:59 +02:00
AcDream.Runtime.Tests.csproj arch(runtime): establish presentation-independent boundary 2026-07-25 17:33:11 +02:00
GameRuntimeContractTests.cs fix(net,runtime): FA2 fix-round SHOULD-FIX -- fellowship mechanism parity, lookup reuse, router test, checkpoint defaults 2026-08-12 02:17:56 +02:00
GameRuntimeTests.cs fix(net,runtime): FA2 fix-round MUST-FIX -- allegiance clears at reset, 0x027C stops seeding 2026-08-12 02:17:04 +02:00
NoWindowGameRuntimeHostTests.cs fix(chat): CH1 review fixes — sbb-idiom channel catch-all, command-output typing 2026-08-09 16:03:13 +02:00
RuntimeDependencyBoundaryTests.cs feat(headless): establish portable Linux host boundary 2026-07-27 01:10:45 +02:00
RuntimeGenerationResetTests.cs fix(net,runtime): FA2 fix-round MUST-FIX -- allegiance clears at reset, 0x027C stops seeding 2026-08-12 02:17:04 +02:00
RuntimeSimulationFixtureHostTests.cs refactor(runtime): unify generation reset for direct hosts 2026-07-27 00:43:26 +02:00