test: Campaign LA finish LA2 probe and idle gates

Prove idle play remains passive and live until cancellation, then converges through one truthful status teardown. Keep probe mode string-only so numeric enum aliases cannot expand the pinned v1 contract, and record the Windows/WSL gates.
This commit is contained in:
Erik 2026-08-14 16:49:51 +02:00
parent c601942467
commit 000ea979d5
5 changed files with 243 additions and 38 deletions

View file

@ -167,9 +167,11 @@ internal sealed class HeadlessBotPolicyDescriptor
/// The pinned launch-contract schema defines exactly two states for a
/// session — ABSENT (mapped to <see langword="null"/>, meaning "play") or
/// the literal string <c>"probe"</c> — so <see cref="Probe"/> is the only
/// member; there is no explicit "play" spelling.
/// member; there is no explicit "play" spelling. This deliberately uses
/// <see cref="HeadlessConfigurationLoader"/>'s global camel-case,
/// string-only enum converter; a per-enum converter with its default options
/// would accidentally accept numeric <c>0</c> as a second probe spelling.
/// </summary>
[JsonConverter(typeof(JsonStringEnumConverter<HeadlessSessionMode>))]
internal enum HeadlessSessionMode
{
Probe,