acdream/tests/AcDream.Headless.Tests
Erik 2bff44a9fa fix: launcher-started headless sessions and character refresh never ran at all
The launcher spawned the headless host as

    acdream-headless --config <path>

but HeadlessCommandLine.Parse reads arguments[0] as the COMMAND and accepts
only "validate" or "run". So every launcher-started headless session and every
"Refresh characters" died on its first instruction with

    Invalid command. Run --help for usage.        (exit 64)

The user's own cache shows it six times over two days. It was invisible because
the failure is an exit code in a status file, not something the UI says out
loud — which is how it survived a whole campaign whose gates exercised the
headless host through its CLI directly, never through the launcher's spec.

The graphical host takes a bare "--session-config" and has no command word;
this sibling call was written to match it. Both headless call sites now pass
"run" first. A probe is an ordinary "run" whose session config carries
mode: "probe" — the difference is in the document, not the command line, so
one fix repairs refresh and headless play together.

LauncherHeadlessCommandLineContractTests is the connection that was missing:
it takes the argument vector the launcher will really use and hands it to the
parser the host will really use, for probe and for headless play, and pins that
the graphical arguments are deliberately NOT a headless command line. The two
sides cannot drift again without failing here. Headless.Tests already
referenced both assemblies, so this needed no new coupling.

Also LU7, at the user's direction: a selected character now offers only Play
and Headless. Choosing a character means choosing to play AS that character, so
"Character select" — which deliberately picks no character — belongs to the
account page alone, where it already lives. The per-character GuiSelect command
and its capability are removed rather than left as dead surface.

Full solution 14,374 passed, 0 failed under the release-gate filter.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:33:51 +02:00
..
AcDream.Headless.Tests.csproj build: make release restore reproducible 2026-08-18 10:29:00 +02:00
HeadlessBotPolicyTests.cs test: Campaign LA finish LA2 probe and idle gates 2026-08-14 16:49:51 +02:00
HeadlessCharacterOptionsSeederTests.cs feat(headless): Campaign OP slice OP7 — declared characterOptions with seed-diff sends 2026-08-11 02:45:08 +02:00
HeadlessCharacterOptionsSeederWiringTests.cs feat(headless): Campaign OP slice OP7 — declared characterOptions with seed-diff sends 2026-08-11 02:45:08 +02:00
HeadlessCollisionNeighborhoodServiceWindowTests.cs feat(physics): C4 route 4b-1 — remote placement infrastructure (dormant) 2026-08-04 04:08:19 +02:00
HeadlessConfigurationLoaderTests.cs fix(launcher): Campaign LA close LA2 review findings 2026-08-14 17:20:02 +02:00
HeadlessCredentialResolverTests.cs test: make prerequisite lanes fail honestly 2026-08-18 12:09:41 +02:00
HeadlessDependencyBoundaryTests.cs feat(headless): establish portable Linux host boundary 2026-07-27 01:10:45 +02:00
HeadlessEntryPointTests.cs wip: Campaign LA LA2 probe mode + idle policy — INCOMPLETE, stopped mid-task 2026-08-14 16:33:00 +02:00
HeadlessPathSetTests.cs feat(headless): complete portable single-session host 2026-07-27 07:36:53 +02:00
HeadlessPluginSessionTests.cs test: replace final fixed-delay oracles 2026-08-18 13:12:26 +02:00
HeadlessProcessContentOwnerTests.cs test(headless): enforce 30-root K4 endurance 2026-07-27 11:02:44 +02:00
HeadlessProcessResourceEnvelopeTests.cs test: replace campaign labels with behavior names 2026-08-18 12:25:00 +02:00
HeadlessProcessSchedulerTests.cs fix(headless): #368 — one dedicated update thread owns the session lifecycle; the scheduler loop no longer migrates across Task.Delay resumptions 2026-08-10 18:21:35 +02:00
HeadlessSessionEventRouteRetryPendingTests.cs docs: Campaign LA — pinned launch-contract schema COMMITTED into plan LA1 2026-08-14 16:04:32 +02:00
HeadlessSessionHostTests.cs fix(app,headless): Campaign CC slice CC4 re-review round — R1 arbiter + R2-R4 2026-08-15 19:04:04 +02:00
HeadlessSessionIsolationTests.cs fix(runtime): give the no-window host a post-merge canonical cell commit (D1, AD-60/AD-64, AP-146/#320) 2026-08-05 22:36:31 +02:00
HeadlessStaticStateAuditTests.cs fix(chat): consolidated-review fixes — retail /help Detail extraction, seam wiring test 2026-08-10 16:22:36 +02:00
LauncherHeadlessCommandLineContractTests.cs fix: launcher-started headless sessions and character refresh never ran at all 2026-08-19 20:33:51 +02:00
packages.neutral.lock.json build: make release restore reproducible 2026-08-18 10:29:00 +02:00
SessionConfigurationSharedFixtureTests.cs fix(plugins): close LA5 host lifecycle review 2026-08-14 19:05:13 +02:00