From f36632acccb67f55726fc36f2d93aea7d4df7755 Mon Sep 17 00:00:00 2001 From: Quintine <15965533+Quintine@users.noreply.github.com> Date: Wed, 7 Oct 2026 22:39:43 +1100 Subject: [PATCH] Count the Advanced CHOAM Auditor in the expected Traitor deck tools/sample-custody.ts built its expected Traitor deck from the printed leaders only, but Advanced CHOAM adds its printed extra Auditor disc during setup, so every fresh Advanced all-expansion sample failed at setup with 'physical traitor custody'. The expectation now includes the Auditor for Advanced CHOAM seats; the resumed saved positions were unaffected because the resume path recomputes the inventory from the game. With the fix a fresh --profile combined-homeworld-nexus --rules both --players all run completes 2/4 (both Advanced). The two Basic samples stop at phase 6 on 'Odd-force Basic Occupy awaits the preserved publisher casualty-rounding ruling', one of the three other unresolved questions recorded in the capture resumption note, not on the five implemented rulings. tests/sample-custody.test.ts (11 cases) and the faction-games suite pass; types and lint are green. --- docs/IMPLEMENTATION_STATUS.md | 15 +++++++++++++++ tools/sample-custody.ts | 13 +++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md index b99be487..def4b72d 100644 --- a/docs/IMPLEMENTATION_STATUS.md +++ b/docs/IMPLEMENTATION_STATUS.md @@ -38,6 +38,21 @@ on the five implemented rulings: No capture was reset, force-completed or bypassed, and no guard was weakened. The resumed runs are saved-position continuations, not fresh re-runs. +### Fresh `combined-homeworld-nexus` run and the Auditor custody fix + +A fresh `--profile combined-homeworld-nexus --rules both --players all` run +exposed a harness gap rather than a product defect: `tools/sample-custody.ts` +built its expected Traitor deck from the printed leaders only, while Advanced +CHOAM adds its printed extra **Auditor** disc during setup, so every fresh +Advanced all-expansion sample failed at setup with `physical traitor custody`. +The expectation now includes the Auditor for Advanced CHOAM seats. + +With that fixed the fresh run completes **2/4** (both Advanced: 6-seat winner +ixians, 5-seat winner ecaz + ixians). The two Basic samples stop at phase 6 on +`Odd-force Basic Occupy awaits the preserved publisher casualty-rounding +ruling` — the same third-party question listed above, not the implemented +rulings. `tests/sample-custody.test.ts` (11 cases) still passes. + ## 7 October 2026 — five pending user rulings implemented The user resolved five recorded rule questions; each is indexed in diff --git a/tools/sample-custody.ts b/tools/sample-custody.ts index bb44a681..b4d1b80e 100644 --- a/tools/sample-custody.ts +++ b/tools/sample-custody.ts @@ -1,5 +1,5 @@ import assert from 'node:assert/strict'; -import { leaders, treacheryDeck } from '../game/cards'; +import { createAuditorLeader, leaders, treacheryDeck } from '../game/cards'; import type { Game } from '../game/engine'; import { richeseCards } from '../game/richese-cards'; import { ecazTreacheryCards } from '../game/ecaz-cards'; @@ -29,7 +29,16 @@ export function sampleInventory(game: Game) { !game.moritaniAssassinatePreview ? null : traitorDeck( - game.players.map((player) => ({ leaders: leaders(player.faction) })), + game.players.map((player) => ({ + // Advanced CHOAM adds its printed extra Auditor disc during setup, so + // its Traitor Card is part of the physical deck. + leaders: [ + ...leaders(player.faction), + ...(game.advanced && player.faction === 'choam' + ? [createAuditorLeader()] + : []), + ], + })), game.expansions.includes('ix'), ).sort(), };