# Six-base-faction Advanced readiness audit Read-only runtime audit, 7 September 2026. Scope is classic GF9 Advanced with any valid selection of the six original factions, two through six players, **no expansion and no optional module**. This document does not enable a mode or certify complete rules compliance. It reads the full active goal and preserves its wider twelve-faction scope. ## Finding The unconditional Advanced start gate in `game/engine.ts:1500` remains justified by **base-only** missing rules and unresolved behavior. Expansion work is not the only reason for that gate. Most distinct Advanced faction mechanisms already have substantial engine, controls and focused-test support; rebuilding them would waste useful work. The next work should close the named base gaps below, independently review the existing mechanisms, and then run authentic Advanced setup and full games before enabling the mode. Runtime was frozen for a separate calibration during this audit. No runtime, test, package, live room, server, automation or gate was changed. Line references describe the files inspected at this checkpoint and can move after integration. ## Follow-up integration The coordinator subsequently implemented the two bounded findings concerning Fremen movement cancellation and the public Bene Gesserit setup AI prerequisite. The original finding table below is retained as the audit snapshot. See [FREMEN_MOVEMENT_KARAMA_RULES.md](FREMEN_MOVEMENT_KARAMA_RULES.md), the Fremen checkpoint in [IMPLEMENTATION_STATUS.md](IMPLEMENTATION_STATUS.md), and the new movement/setup/recovery tests for current evidence. Ordinary Guild cancellations, broader Truthtrance obligations, the named special-Karama interpretations and genuine Advanced start-to-finish verification remain open. This update does not remove the mode gate. ## Source-ordered setup follow-up The later implementation now provides the shared, strict offline initializer described in [ADVANCED_SETUP_TEST_SEAM.md](ADVANCED_SETUP_TEST_SEAM.md). New Basic and offline Advanced tables enforce prediction before private traitors, all traitor selections before force placement, Fremen before the Advanced advisor, and Treachery after every placement. Legacy saved setup continues without redealing. All 456 setup combinations pass. The old `tests/bots.test.ts` Basic-then-flip helper discussed below has been replaced: four profiles now complete registered games from genuine Advanced creation through the shared initializer. The older descriptions below remain the original audit snapshot. The larger [456-game Advanced study](AI_ADVANCED_SETUP_CALIBRATION_20260907.md) now also completes with 116,270 accepted actions and zero rejections or checked failures across all base rosters and player counts. Its selected invariants and 5,943 actual JSON continuations broaden the evidence; they do not resolve the named rules, strength-calibration or browser acceptance gaps. ## Concrete remaining behavior | Priority | Finding and evidence | Next edit or audit target | | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 1 | **Ordinary Karama cannot cancel Fremen movement.** `movementRange` at `game/engine.ts:3098` grants Fremen range two without a canceled-advantage state. The response union at `:415` and movement dispatcher at `:10232` have no corresponding Fremen movement response. `docs/IMPLEMENTATION_STATUS.md:341` independently records this remaining base cancellation. The publisher's Ix rulebook final Karama table explicitly reduces Fremen movement to one territory; see source discussion below. | Add an authoritative declared-movement continuation and distinct Fremen advantage cancellation, exact route/force custody, private legal cancel-card projection, actual player controls and all four bot policies. First settle the declaration/cancellation contract: an already committed illegal two-step move cannot simply occur, and a silently selected shorter destination would choose for the player. Do not disable city ornithopter movement merely because the faction is Fremen. Audit the interaction of the printed faction cancellation with an independently available ornithopter range. | | 1 | **Ordinary Guild rate and transport cancellation are absent.** `guildIncome` exists, but redirects income only after shipment commitment (`game/engine.ts:6630`, `:6840`, `:10139`). `ship`/`guildShip` validate and commit discount/transport without a separate response for the discount or cross-planet/return permission. `docs/GUILD_RATE_KARAMA_RULES.md` already supplies a primary-source contract and explicitly unresolved unaffordable declarations. | Implement separate discount, transport-permission and income responses around a normalized pending transport intent. Preserve the difference between Guild itself, its ally, independent Karama rate owner/beneficiary, and payment contributors. Do not treat a canceled income response as repricing. Follow the existing unanswered affordability question; no new answer was inferred here. | | 1 | **Truthtrance does not enforce all required current-turn commitments, and AI cannot answer arbitrary valid questions.** `game/reference.ts:1517–1525` expressly leaves shipment promises, broader action commitments, future card/power sequences and automatic freeform enforcement unfinished. `game/truthtrance.ts:314` forces an AI recipient of a freeform question to answer `unknown`, regardless of whether its answer is actually knowable. Current-battle structured claims and Ghola feasibility are real implemented work, not complete arbitrary-question support. | Expand structured official game facts/action obligations and deterministic legality restrictions beyond battle slots, keeping promised resources and impossibility semantics consistent across voluntary and opposing effects. Define an honest supported interaction for remaining natural-language questions rather than claiming recorded prose is server enforcement. Add human-to-AI question cases: a blanket `unknown` is an implementation limitation, not a rule granting AI different Truthtrance obligations. This is also a Basic compliance gap. | | 2 | **Advanced BG setup AI emits currently illegal actions.** `game/bots.ts:871` offers `advisorSetup` whenever BG has not placed. `game/engine.ts:9230` rejects it until seated Fremen has exactly ten reserves after placement. Other player candidates can eventually progress, but the emitted BG candidate itself is illegal during that legitimate wait. | Filter the public prerequisite before enumerating advisor placement. Test BG before and after Fremen in candidate ordering, all four profiles, with human or AI Fremen. Waiting must be represented without a stream of rejected setup submissions. | The first two rows are ordinary faction cancellations present even in Basic, and are therefore inherited by Advanced. A working Basic game loop is not evidence that all base advantages are complete. ## Explicit unresolved base interpretations These are actual recorded implementation choices, not missing expansion components. Resolve from authoritative sources where possible; do not silently turn the current tests into the rulebook. 1. **Unfunded auction recovery after losing Karama.** `recoverAuctionPayment` at `game/engine.ts:2894–2917` explicitly labels its recovery provisional. It restarts the same lot when no spice or usable Karama can back the winning bid. In Advanced this is reachable when Harkonnen's special exchange removes the only funding Karama, or a BG Worthless conversion is canceled. `tests/special-karama.test.ts:223` and `tests/bg-karama.test.ts:285` verify that software policy, including the provisional restart; they do not establish publisher authority for it. `game/reference.ts:1924` keeps the limitation visible. Audit what happens to the standing bid, turn, card custody and any explicit ally contribution before certifying this path. 2. **Guild special shipment-stop settlement.** `game/reference.ts:1925–1926` says stopped shipment consumes the ordinary shipment opportunity while preserving forces, spice, allied credit and any rate card, then explicitly calls these settlement details provisional. The separate ordinary Guild-rate audit notes that the brief publisher power does not settle all changed-price/refund/order cases. Existing focused stop tests show safe rollback and resumption of this implementation; they do not resolve the rule interpretation. Keep ordinary permission/rate cancellation distinct from this once-per-game special stop. 3. **Atreides special full-plan commitment order.** `prepareSpecialKaramaIntent` at `game/engine.ts:7325` requires a pre-plan `fullPlanOffer`, after ordinary preparation, then forces the target to commit first. `game/reference.ts:1920` explicitly identifies this as an implementation timing choice needing the remaining card-interaction audit. It is not evidence that full-plan prescience itself is absent. Verify Base Truthtrance, Voice, Ghola/preparation and ordinary prescience interruptions against publisher sequencing, then document the supported order and exceptions. The expansion No-Field full-plan guard at `:7348` is irrelevant to this base-only configuration. The broad Truthtrance language creates an engineering and guidance gap even if some natural-language enforcement requires a later user interpretation. It should not be disguised as an ambiguity that excuses all knowable structured questions. ## Implemented mechanisms to preserve and verify in integration | Requirement | Current authoritative evidence | What that evidence does and does not prove | | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Advanced setup | `start` at `game/engine.ts:1550` initializes Sardaukar/Fedaykin; `:1577` avoids Basic BG Polar Sink placement; `advisorSetup` at `:9224` waits for Fremen; `fremenSetup` at `:9255` accepts sector placements and typed `elitePlacements`. Setup UI at `components/game-table.tsx:1324–1410` exposes advisor and Fedaykin controls. | These branches exist behind the gate. The stale public ledger's blanket “Advanced faction setup” missing label is too coarse. The whole real Advanced start-to-setup path still needs acceptance. Fremen AI at `game/bots.ts:859` never supplies elite placements; leaving every Fedaykin in reserve is legal, but no strength claim follows. | | Storm, forecast, two spice piles, worm choices | `tests/advanced-phases.test.ts` covers forecasts, first-turn worm handling, two separate piles, per-pile Nexus/rides, additional worms, canceled protection, typed half losses and Weather Control. `game/reference.ts:1810` describes these as focused support. `tests/first-storm.test.ts` plus `docs/IMPLEMENTATION_STATUS.md:901` record the corrected printed storm meridian/player circles. | Do not redo the already corrected first-storm orientation based on the old coverage page. Verify interaction across actual multi-turn Advanced games, and visually inspect two-pile/forecast/worm controls and reloads. | | Spice support, elites, casualty options | `game/combat.ts`, `combatForces` at `game/engine.ts:1437`, `takeBattleLosses` at `:1475`, `tests/combat-karama.test.ts` and `tests/kwisatz.test.ts:237`. | Focused arithmetic and distinct cancellation tests exist, including Fremen support versus doubled elite strength and Sardaukar versus Fremen. Full games must preserve physical and typed force totals, one-elite-per-turn revival limits, actual support cost and survivor allocation. | | Atreides KH and revival | `tests/kwisatz.test.ts` covers seven battle losses, leader/Hero requirement, one territory, death/bonus distinction, explosion and traitor precedence, cancellation privacy, leader-cycle revival and Ghola. `tests/capture.test.ts:341` adds the all-native-captured revival edge. | KH is implemented; separate finished original KH component artwork and full browser control/recovery review remain open. The tests are selected scenarios, not all Advanced interactions. | | Harkonnen capture | `tests/capture.test.ts` covers optional/canceled capture, random eligible pool, private identity/execution state, one battle, traitor, release, death/revival cycles and JSON privacy. Engine post-battle capture branch is at `:5646`. | Do not conflate base captive handling with unresolved Richese Residual Poison/Assassination capture disclosure. Base capture's integrated post-battle continuation and browser inspection still need acceptance. | | BG advisors and Worthless conversion | `tests/advisors.test.ts` covers entry/intrusion, lock propagation, pre-shipment flips, advisor occupancy, movement, collection, city benefit, Atomics prohibition, storm/worm/explosion, setup and canceled flips. `tests/bg-karama.test.ts` covers charity, conversion, nested cancellation, commitments and payment. | The public coverage page still calling advisors simply unfinished is stale. Nested conversion and unfunded recovery remain a specific base issue. Test real setup, repeated turns and UI ownership rather than recreating the existing advisor system. | | Guild turn timing and special powers | `tests/advanced-guild.test.ts` covers early, delayed, last and in-between turns and their cancellation. `tests/special-karama.test.ts` covers Harkonnen exchange and Emperor revival. Fremen summoned-worm and Atreides full-plan tests exist elsewhere. | Their presence supports continued integration, not a blanket certification. Ordinary Guild cancellations and the recorded provisional special semantics remain distinct blockers. | | Increased stronghold income/victory | `tests/kwisatz.test.ts:237` checks stacked Advanced income; advisor tests exclude peaceful forces; `game/reference.ts:1835` explains contested storm strongholds, prediction and final-turn fallbacks. | Run targeted official scenario review plus full Advanced games across player counts and alliances. This bounded audit found no new specific victory defect; absence of a found defect is not completion proof. | ## Missing mode-level evidence and stale guidance `tests/bots.test.ts:160` is explicitly a test of implemented Advanced **subsystems**. It starts a Basic table at `:167`, completes Basic setup, flips `g.advanced = true` at `:188`, and injects elite reserves. It runs Hard and Brutal only. It is useful regression evidence but skips real Advanced setup, starting advisors/Fedaykin placement and Easy/Medium Advanced play. The final current checkpoint in `docs/IMPLEMENTATION_STATUS.md:28–45` records 1,418 registered rules/client/component tests, 113 persisted/API tests, TypeScript/lint/build and 312 Basic games with zero rejected candidates. The two 96-game studies and the two-through-six-player 120-game study are still Basic only; their successful results cannot certify Advanced. The earlier single worm-ride rejection is preserved as historical evidence in `docs/AI_PLAYER_COUNTS_20260907.md`, followed by its successful final rerun. Before enabling the base Advanced gate, introduce an internal testable supported setup path that exercises the same initializer as production without weakening the public gate. Run the full matrix of player counts, relevant base-faction rosters and all four AI profiles, including all-human waiting, mixed ownership and alliances. Record every rejected candidate, stalls and complete traces with stable source fingerprints. Ensure targeted interactions actually occur; random completed games alone may never invoke a held special Karama or captive. Browser evidence in `docs/VISUAL_PLAYTEST.md` explicitly distinguishes isolated Advanced/expansion fixtures from complete games. It does not demonstrate a complete Advanced base game from lobby through outcome. Required next acceptance includes actual Advanced setup, sealed spice support and elite casualty choices, KH inspection, captive ownership/execution, advisor conversion and Guild out-of-order actions, two spice piles and private forecast. Test refresh and server restart with representative pending private choices. Desktop and mobile must both show usable controls and correct waiting ownership. `app/rules/coverage/page.tsx:29–72` has stale coarse rows for Advanced setup/advisors, first-storm orientation and some already implemented powers; its expansion and portrait rows are also outdated. `game/reference.ts` has much more precise boundaries but remains a partial reference. Consolidate coverage into one traceable source with separate implementation, player-control, AI, documentation and verification states per rule. Updating the stale rows is useful maintenance, but does not remove any runtime blocker above. ## Expansion issues which must not block this isolated readiness decision For a no-expansion/no-module game, none of the following exists: Richese cache cards/No-Fields, CHOAM Worthless powers/Auditor, Ix forces/mobile stronghold/Poison Tooth/Sandtrout, Tleilaxu Face Dancers/gholas, Ecaz ambassadors/Duke, Moritani terror, or leader skills/stronghold cards/homeworlds/Nexus cards/discoveries/tech tokens. Their missing behavior remains required by the overall goal, but does not itself prevent a genuinely completed six-base-faction Advanced mode from being enabled later. In particular, Stone/Poison Tooth choice ordering, mixed No-Field battles, Residual Poison secret-captive disclosure, Ornithopter-card/Hajr/advisor composition, and foreign-ghola acquisition are **not** base Advanced blockers. Base city ornithopters, base Ghola card and ordinary Harkonnen capture are separate, relevant mechanisms. Do not hold an otherwise completed base mode for unrelated faction art or copy the expansion guards into it. ## Source basis and limits The active goal specifies the GF9 2019 base rulebook, official errata and official FAQs; later applicable official corrections take precedence. This audit read publisher-authored local extracts `/tmp/dune-rules/base.txt` (matching `base.pdf`) and `/tmp/dune-rules/ix-official-mirror.txt` for the base-faction Karama reference. Base printed pages 13–19 describe Advanced phases/combat and faction advantages. The Ix reference's printed final page explicitly lists the **base** Fremen movement and Guild half-price/transport cancellations; referring to that clarification does not require enabling the Ix expansion at the table. Primary provenance: [GF9 base rulebook](https://www.gf9games.com/dunegame/wp-content/uploads/Dune-Rulebook.pdf), [GF9 Ixians & Tleilaxu rulebook](https://www.gf9games.com/dunegame/wp-content/uploads/2020/09/IxianAndTleilaxuRulebook.pdf), [GF9 November 2020 FAQ](https://www.gf9games.com/dune/wp-content/uploads/2020/11/Dune-FAQ-Nov-2020.pdf). The November FAQ's Guild distinctions and precedence over April are already examined in `docs/GUILD_RATE_KARAMA_RULES.md`; Truthtrance provenance is recorded at `docs/IMPLEMENTATION_STATUS.md:686–711`. This audit did not claim a newly retrieved FAQ binary or independently settle the unanswered interpretations. No tournament, community, house or other-edition rule was adopted. Recommended immediate sequence: fix the public BG setup candidate prerequisite; independently audit and implement Fremen movement cancellation; finish the normalized Guild cancellation contract when its material outcome is resolved; audit the named base special-Karama and Truthtrance gaps; then exercise authentic Advanced setup/full-game/browser recovery and revise the mode's complete checklist before changing the gate.