Files
Dune/game/reference.ts
T

6753 lines
968 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { STRONGHOLD_CARDS } from './stronghold-cards';
import { FACTION_RULES } from './faction-reference';
import { FACTIONS, PHASES } from './catalog';
import { RICHESE_CARD_DEFINITIONS } from './richese-cards';
import { HOMEWORLD_CARDS } from './homeworld-cards';
import { NEXUS_CARD_REFERENCE } from './nexus-card-reference';
import { LEADER_SKILL_CARDS } from './leader-skill-cards';
import { KWISATZ_RULES } from './kwisatz-display';
export const RULE_CHECKLIST_AREAS = [
'Implementation',
'Player controls',
'AI',
'Documentation',
'Verification',
] as const;
export type RuleChecklistItem = {
area: (typeof RULE_CHECKLIST_AREAS)[number];
status: 'Implemented' | 'Partial' | 'Planned';
detail: string;
/** Repository evidence for this bounded development checkpoint. */
evidence?: string[];
};
export type RuleTopic = {
id: string;
title: string;
category:
| 'Getting started'
| 'Turn phases'
| 'Cards'
| 'Factions'
| 'Advanced & expansions';
coverage: 'Implemented' | 'Partial' | 'Planned';
/** Development progress is separate from the scope of verified rules coverage. */
developmentStage?: 'Missing' | 'Prototyped' | 'Integrated' | 'Verified' | 'Polished';
summary: string;
searchText?: string;
steps: string[];
example?: string;
related?: string[];
checklist?: RuleChecklistItem[];
};
export const PHASE_HELP = [
'Complete the table’s storm dials or card reveal. After the distance is revealed, play any storm cards and confirm movement.',
'Reveal a spice blow, resolve worms and card responses, then finish any Nexus and Fremen rides.',
'Claim charity once if below two spice. Advanced Bene Gesserit receives two regardless of wealth. New Advanced phases follow the First Player counterclockwise: claim if eligible, then finish your Charity turn. Basic and older unstamped phases retain concurrent readiness.',
'Bid or pass in turn. New ordinary lots allow ten seconds per bidder while native decisions hold the clock. A winning bidder chooses how to pay before income and bonus-card responses resolve.',
'Return eligible forces and leaders from the tanks to your reserves. New Advanced Revival phases begin from the First Player counterclockwise; Sapho may change unfinished positions. Finish your own force and leader choices before the next player acts. Basic and already-opened older phases retain their current readiness timing.',
'Ship before moving. Select a destination sector and, for a move, the forces leaving one territory.',
'Choose a battle, resolve faction powers, seal plans, decide traitors, then choose which winning cards to keep.',
'Forces collect spice in their own sector. Review the results, then continue to Mentat Pause.',
'Bribes become available and the table checks victory. If nobody wins, the next turn begins.',
];
export const HELP = {
truthBattle:
'A Yes or No battle answer restricts only the stated condition. Your other plan elements may change. Earlier Truthtrance, Voice and prescience must also be satisfied. Available Ghola revivals can prepare a required leader or support income. Complete the private preparation and its response before sealing; an impossible promise is released after the pending power response resolves.',
ixTechnology:
'Ixians privately choose a starting card before the rest are shuffled and dealt. Before bidding, inspect one extra card and return one to the top or bottom, then shuffle the auction pool. Advanced Ixians can swap one upcoming card with a hand card before Atreides looks, once per round. An ally may replace the card it just purchased with the deck’s top card. Each bidding advantage has its own Karama response before the effect; canceled inspection reveals nothing.',
mobileStronghold:
'The Hidden Mobile Stronghold is a separate stronghold whose occupants survive storms and worms. It cannot relocate into, out of or through the storm; battles wait while its pointing sector is in storm. After the first storm, Ixians place it at a non-stronghold sector. While Ixian forces occupy it, they may relocate it up to three territories before later storm dials or reveals. Declare the sector route to collect spice along it. Other factions enter by movement through the pointing sector; only Ixians ship directly inside, with Bene Gesserit accompaniment allowed. It counts toward victory for its controller. Further movement and collection interaction audits are pending.',
ixTransport:
'A selected cyborg lets its movement group travel two territories; a cyborg left behind does not. Ornithopters allow three. Cyborgs collect three spice each and cost three to revive; suboids collect normally and cost two. Choose either type for the free revival.',
ixForces:
'Suboids always dial one-half strength and cannot receive spice support. Cyborgs count two in basic play; in advanced play they need one spice each for strength two and otherwise count one. After losses, surviving suboids may replace cyborgs lost in that battle, one for one.',
tleilaxuSpecial:
'Once per game during Revival, Tleilaxu may spend a real Karama to prevent any one player’s remaining force and leader revivals, before a request or at its normal revival decision. Completed returns and payments stay unchanged. Provisional scope includes Ghola during this Revival and expires with the phase; Emperor special Karama remains protected. Low-Homeworld overlap and wider interactions remain unfinished.',
techTokens:
'Tech tokens are public industries. Their income is paid once at the end of the matching phase, in an amount equal to the owner’s token count. A battle winner takes one from the loser. All three must belong to one player to count as a stronghold.',
summonedWorm:
'Fremen’s special Karama summons a worm in sand once per game during Spice Blow and Nexus. Resolve destruction and protection immediately, then resume the spice blow. The worm causes a Nexus at the end of that blow, followed by Fremen rides. Calling the worm does not draw or discard a spice card.',
choamWorthless:
'Kulon adds one territory of movement range on CHOAM’s turn. La La La prevents free force revival. Baliset blocks movement into a CHOAM-occupied territory, not shipment. Trip to Gamont returns another player’s force during Mentat. Jubba Cloak protects one territory from a moving storm. In the selectable Kull preview, Kull Wahad intercepts a Karama attempt; only successful settlement activates the phase ban. A distinct counter may prevent it. Canceled Worthless costs remain held.',
choamCombat:
'CHOAM may reserve spice for an ally’s advanced battle support. The ally chooses the payment split when sealing. A traitor victory costs the winner no support; any revealed traitor prevents CHOAM force-payment income.',
fullPlan:
'Atreides may spend its Advanced special Karama once per game after preparation and before public reveal, even after declining the first offer or one plan sealing. A sealed target is read immediately; an unsealed target commits first. Existing sealed plans cannot change. Only Atreides receives the private inspection; no confirmation. Both seals reveal immediately. The provisional No-Field distinction permits this separate special power while ordinary dial Prescience stays barred; private reading does not materialize its token.',
guildShipment:
'The Guild may spend its special Karama once per game to stop a declared off-planet shipment before payment or arrival. The shipper keeps its forces and spice and may still move. Fremen’s southern reinforcements are on-planet.',
specialKarama:
'A faction’s special Karama consumes a Karama card and may be used once per game in its permitted phase. This does not prevent later ordinary Karama uses.',
handExchange:
'Choose exactly as many cards to return as you took. You may include newly acquired cards. The game resumes the suspended auction step after your return.',
spice:
'Your available spice pays for bids, shipments and revivals. Ally pledges and deferred bribes are tracked separately.',
sector:
'The storm covers one numbered sector. Choose the exact sector where your forces arrive; collection also uses sectors.',
reserves:
'Forces outside the board. Shipment brings reserves onto Dune; revival returns dead forces here first.',
tanks:
'Dead forces and leaders wait in the Tleilaxu Tanks until an eligible revival returns them to play.',
dial: 'Commit forces to a battle. In the basic game, each force dialed contributes one strength. The winner loses the forces dialed; the loser loses its army.',
leader:
'Choose an available leader or Cheap Hero. A surviving leader used in another territory this turn is unavailable. Harkonnen can use a captive once; its original faction cannot use it while captured.',
weapon:
'Projectile weapons defeat an unshielded leader; poison defeats a leader without a snooper. A lasgun and any played shield cause an explosion unless traitors override the battle.',
defense:
'A shield protects against projectiles. A snooper protects against poison. One card cannot occupy both battle slots.',
response:
'The table pauses before this power resolves. Other factions can use a legal Karama cancellation; everyone can allow the power.',
ally: 'Set aside spice for an ally’s bids or shipments. You may reclaim unused funds, but a current winning bid must remain funded.',
prescience:
'Only the requested element becomes fixed. Other plan elements stay private until reveal. Low Salusa prohibits free Sardaukar revival, including Ghola; other legal Ghola choices remain available.',
};
const phaseDetails = [
[
'The storm begins in sector 1. Player circles stay at sectors 2, 5, 8, 11, 14 and 17, including at smaller tables. After movement, the next occupied circle approached counterclockwise acts first.',
'On the first turn, the players nearest the start on its two sides each secretly dial zero through twenty. Add both dials to move the storm. Later basic turns use the two players who last used the battle wheels, with dials one through three. If no battle intervened, the previous storm dialers continue. Both dials stay hidden until both are submitted.',
'After revelation, everyone has a chance to play Weather Control or Family Atomics. A card change clears previous confirmations.',
'Confirm movement to let the storm advance once everyone is ready.',
'Every new Advanced turn after the first reveals a random Storm Deck card, one through six, even without Fremen. First-turn dials are unchanged. Native Fremen keeps its private forecast; without Fremen nobody receives one. An already recorded saved Storm finishes its existing dial or card protocol without a reroll.',
],
[
'Everyone confirms the draw. A new blow remains open for Harvester before the table accepts it.',
'Worm protection decisions resolve before the Nexus. Alliances change only once the spice response window is finished.',
'After the Nexus, Fremen choose whether to ride. Select forces from the worm territory and a legal destination.',
'The advanced game resolves two separate spice blows. Finish the first blow’s Nexus and rides before revealing the second. Each blow has its own Harvester window.',
],
[
'If CHOAM is present, first resolve its income response. CHOAM then pays other factions’ charity; if its income was canceled, charity comes from the bank. Use Claim charity when eligible to bring ordinary available spice to two.',
'New Advanced Charity follows the First Player counterclockwise. Only the current player may claim or finish; a claim and any cancellation response finish before the player chooses Finish Charity turn. You may finish without claiming. Waiting and completed seats cannot take another Charity turn.',
'Basic and already-opened older unstamped Advanced Charity keep concurrent readiness. Mark yourself ready after making your choice. New Truthtrance answers do not reopen completed ordered turns. Owned Sapho changes only remaining Charity order; an accepted current claim provisionally protects that turn before the reordered tail.',
],
[
'Before each auction, resolve the Atreides foresight response. The card stays hidden until that response is allowed. Cancellation affects this card only.',
'The highlighted player may raise the bid or pass. A new high bid clears previous passes.',
'New ordinary lots give the current bidder ten seconds once bidding is ready. Silence becomes a native pass; if passing would break a binding Truthtrance answer, the online convention submits only its required legal bid. Native decisions hold remaining time. Administrative controls re-arm the clock after resumption. Old open unstamped lots retain their saved protocol.',
'Holding Karama permits a bid above your available spice. If outbid, keep the card. A winning bid above your funds requires Karama.',
'After everyone else passes, the winner chooses spice payment or Karama. The table then resolves applicable Emperor-income and Harkonnen-bonus responses.',
'In the fresh local ixian-betrayal preview, native Ixian Bidding inspection and Advanced Technology first finish their original Karama responses, then pause for neutral Nexus acknowledgements before their effects. A legal rival Use prevents only the current attempt; all required passes allow it. See Ixian Nexus Betrayal for both alternatives, private-card limits and the unchanged public release gate.',
'In Homeworld development tables with Emperor, the last completed auction opens End of Bidding. High Kaitain paid discards and CHOAM closing sales or trades may occur in either order. Finish your opportunity when ready; another card action clears readiness before the phase advances.',
],
[
'Choose the number of forces to revive. The server tracks the free allowance and the phase limit across multiple requests.',
'In the base game, Fremen can take their available free force revivals but cannot buy normal force revivals. When the Tleilaxu faction is in the game, Fremen may also pay for normal returns within the current limit. The limit remains three unless Tleilaxu permits five; merely enabling the Ix expansion does not grant this exception. Emperor-funded extras and Ghola use separate rules.',
'An allied Fremen player can grant three free force revivals during this phase.',
'Use the leader selector to choose a dead leader. Revival cycles determine whether it is eligible; strength determines its normal cost.',
'Ecaz ordinary revival uses a provisional native-identity cohort: five actual Tanks including Duke, or no available native leaders, opens it. Remaining native returns stay legal after another native dies again. Late first deaths do not need to match a global death count; Duke remains independently revivable outside the five native discs.',
'In development Ecaz fixtures, finishing Revival opens Ambassador placement after any CHOAM closing market. See Ecaz Ambassadors for the supported placement controls and remaining effects. Supported expansion starts are available as unfinished previews.',
],
[
'At the start of this phase, resolve the Atreides spice foresight response. If allowed, Atreides privately inspects the next card, including when using double spice blow.',
'Select a destination and sector. Ship from reserves before making a force move.',
'Native Guild cross/return permission has a separate unpaid response before native price. Preventing it preserves legal ordinary shipment or movement and does not remove half price. The conservative provisional denied scope is that original shipment opportunity; signed Cunning second opportunity is distinct. Native rate cancellation keeps the same paid units and approved funding, or releases an unaffordable attempt for a full-price replacement. Free Smuggler counters stay free; own/allied No-Field bills one marker. Immune Junction and independent card prices remain separate sources.',
'For movement, select the source forces. Enable Combine sectors to include several groups from the same territory.',
'A Fremen move using the two-territory advantage has a Karama response. Cancellation leaves the forces in place and limits this move to one territory; city ornithopters and a later extra move keep their normal rules.',
'Guild transport moves one exact physical group across the planet or returns it to reserves. Permission and price are separate counter opportunities; common world-to-foreign-world shipment does not require Guild cross/return privilege. Purchased half price grants no new route. Ordinary movement still checks range, storm and stronghold occupancy.',
'You may pass through an ally’s territory on a legal route that ends elsewhere. Ordinary physical reserve shipments in both modes may enter allied territory before movement, then depart during that turn. Storm and stronghold capacity remain binding. Basic visibly labels its provisional no-exit policy: excess new visitors still present go to Tanks. Advanced follows supplied p15: all the ending player’s shared forces go to Tanks, including old forces, subject to advisor/Polar/Ecaz exemptions. Neither grants an extra move. Concealed No-Fields and optional arrivals remain separate.',
'Ecaz and its reciprocal ally may share territories and count as one faction toward stronghold capacity, without extra movement or storm/Homeworld exceptions. Their three-joint-stronghold victory and desert allocation are connected. Fremen/Ecaz cooccupation permits the Fremen special win in Sietch Tabr in Basic; supplied Advanced p32 permits both Tabr and Habbanya Sietch. Other victory conditions and exceptional combined interactions remain separate.',
'A restored pending physical shipment is checked again before forces or spice are committed. If its saved turn, force allocation, destination, price or authorized contribution no longer matches the table, it is rejected without changing the saved declaration.',
'Finish shipment and movement explicitly. Any Bene Gesserit free-shipment decision and its response must finish first.',
'In Advanced, finishing your turn sends your own fighters in territories shared with your ally to Tanks, even if your ally acts later or the alliance formed this turn. Polar Sink, Bene Gesserit advisor coexistence in either direction and native Ecaz peaceful coexistence are exempt. The finish warning names affected territories without revealing concealed forces. Loss is mandatory, not a separate confirmation; finishing remains legal if you cannot escape.',
'Basic keeps its existing later-player separation deadline and same-turn alliance exemption for old co-occupation; these do not waive a new temporary shipment’s departure obligation. Advisors have no new Basic exemption. Homeworlds keep their separate allied-entry restrictions.',
'Advanced Guild may choose when to take its complete shipment-and-movement turn. The table offers a choice before another player starts. Guild cannot interrupt a turn already underway.',
],
[
'The current aggressor selects a territory and opponent.',
'Bene Gesserit chooses or declines Voice, then Atreides chooses or declines prescience. Each used power has a Karama response window.',
'The opponent commits only the requested prescience element. Both combatants then independently seal their full plans.',
'After revelation, each eligible player chooses whether to reveal a traitor. Harkonnen may support an ally.',
'When the revealed dial and support permit only one winning casualty allocation, it settles automatically. Multiple legal allocations still ask the winner to choose. Optional card retention and faction responses remain separate.',
'A winner with played cards chooses which to discard before the next battle or collection.',
],
[
'Ordinary collection resolves automatically when this phase begins. If Ecaz and its ally both collect from a desert territory, their shared pool waits for allocation.',
'Only forces in the sector containing spice collect it. Remaining spice stays on the board.',
'In the advanced game, an occupant receives two additional spice for Arrakeen, two for Carthag and one for Tuek’s Sietch. These payments stack and are separate from spice gathered by forces.',
'For each shared desert pool, Ecaz can propose a split. The other ally may accept or counter; either decision owner may instead choose an equal split, with any odd spice going to Ecaz’s ally. Proposals remain private to the pair until settlement. The table cannot advance until every pool is allocated.',
'Advanced Ecaz Collection gives both allies their full bank income in co-occupied Arrakeen, Carthag and Tuek’s Sietch. Karama prevents only Ecaz’s income from those shared strongholds; the ally’s income, Ecaz’s other stronghold income and desert allocation remain unchanged.',
'Review the table chronicle and your spice, then mark yourself ready.',
],
[
'Deferred bribes become available when Mentat begins. At CHOAM tables, victory waits until Mentat actions, the closing market and a final Trip to Gamont opportunity finish. Other tables currently check victory on entering the phase.',
'A single faction needs three strongholds; an alliance or a player in a two-player game needs four. A stronghold still occupied by opponents under storm does not count toward victory.',
'On the final turn, check normal wins, then the Fremen special condition, then Guild. Without Guild, Fremen wins; without either faction, the highest individual stronghold count wins, including ties.',
'If play continues, mark yourself ready to start the next turn.',
],
];
const phaseIds = [
'storm',
'spice-blow',
'charity',
'bidding',
'revival',
'movement',
'battle',
'collection',
'mentat',
];
export const phaseRuleId = (phase: number) => phaseIds[phase] ?? 'setup';
export const RULE_TOPICS: RuleTopic[] = [
{
id: 'implementation-checklist',
title: 'Rules implementation checklist',
category: 'Getting started',
coverage: 'Partial',
summary:
'Track implementation, player controls, AI, documentation and verification separately for each reviewed feature.',
steps: [
'The linked topics contain a five-part checklist. Implemented describes only the stated feature boundary; Partial identifies remaining work. Planned means that facet is not complete: for Verification it means evidence is still pending, not that a connected preview is inactive.',
'Verification entries identify focused regression suites. Passing those checks does not certify every interaction, browser journey or complete expansion game.',
'Development stages distinguish Missing functions, working Prototypes, Integrated functions, Verified behavior and Polished presentation. A prototype stage does not certify complete rules coverage; check the stated limits and evidence.',
'This checklist is being extended across the rules. Features without a checklist still have a topic-level coverage label and are not implicitly complete.',
'Choose Rules → Advanced preview when creating a room, or as host in the lobby. After everyone is ready, choose Begin Advanced preview. This unfinished mode supports selected expansion factions and supported optional Tech Tokens (3+ players) and Stronghold Cards; combination limits remain. Preview access does not certify complete rules compliance.',
],
related: [
'setup',
'interactive-introduction',
'storm-cards',
'draw-piles',
'hand-browsing',
'kwisatz-haderach',
'truthtrance-spice',
'ecaz-ambassadors',
'richese-cards',
'nexus-richese-betrayal',
'nexus-ixian-betrayal',
'richese-acquisition',
'richese-gift',
'distrans-transfer',
'nullentropy-search',
'richese-no-field',
'automatic-casualties',
'fremen-movement-karama',
'automatic-responses',
'automatic-decisions',
'ai-pacing',
'table-sounds',
'seat-handover',
'seat-ai-permission',
'ecaz-modules',
'discoveries',
'homeworlds',
'advanced-combat',
],
},
{
id: 'faction-sheets',
title: 'Inspect public faction sheets',
category: 'Getting started', coverage: 'Partial', developmentStage: 'Prototyped',
summary: 'Open a faction’s powers and alliance guidance beside the table, or browse all twelve factions here.',
steps: [
'Choose Inspect faction beneath any player. Every faction sheet is public; opening one does not reveal that player’s cards, spice, leaders, cache or hidden tokens.',
'The sheet begins in your table’s Basic or Advanced mode. Include Advanced powers previews the other mode without changing table rules. Advanced powers appear after the Basic powers they extend.',
'Read the enlarged sheet, scroll with the keyboard and follow internal faction links for detailed timing and exceptions. Close or Escape returns to the table. Inspection remains available while a game action is pending.',
'The gallery includes all twelve factions. Changing its faction starts with Basic guidance. It is a reference, not a faction selection or a change to a saved game.',
'The sheets share their text with the internal faction reference. Remaining powers, unresolved interactions and development-only availability stay explicit; this prototype does not certify complete faction text or rules compliance.',
],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Public faction identity and rules mode select shared guidance and bundled artwork, with no game action or private state.', evidence: ['game/faction-reference.ts', 'components/faction-inspector.tsx'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Every table player has an inspector; the internal gallery offers all twelve factions, Advanced preview, scrolling and close controls.', evidence: ['components/game-table.tsx', 'components/rules-reference.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Static inspection introduces no AI decision. Existing legal participation remains; full strategy work waits for feature completion.' },
{ area: 'Documentation', status: 'Partial', detail: 'Shared guidance covers existing faction powers and names remaining boundaries. Full printed-text and combined-rule verification remain open.', evidence: ['docs/FACTION_SHEETS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused rendering checks all identities, mode separation, shared reference and public inspector controls; browser and final acceptance have separate evidence.', evidence: ['tests/faction-inspector.test.tsx'] },
],
related: ['force-counters', 'privacy', ...FACTIONS.map(house => `faction-${house.id}`)],
},
{
id: 'interactive-introduction',
title: 'Interactive introduction',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Practice storm dials, spice blows, alliances, charity, bidding, revival, shipping, movement, sealed battle plans, Traitor calls and spice collection before joining a table.',
steps: [
'Choose Learn to play in the lobby or at the top of this reference. Thirteen lessons introduce table information, storm dials, spice blows, ordinary Nexus alliances, charity, bidding, revival, shipping budgets, movement, battle choices, Traitor calls, collection and saved-seat recovery.',
'The eleven practice positions are separate Basic examples. Compare movement range with city access, storm and stronghold limits; reveal a matching Traitor or decline after both plans appear. Bidding, shipping, combat and collection use the same rule calculations as live games.',
'Storm practice separates your sealed dial, both revealed dials and movement. Compare first-turn 0–20 and later Basic 1–3 ranges, counterclockwise wrapping, exposed sand, sheltered forces and lost spice. Spice Blow compares accumulation, storm loss, later Shai-Hulud and ignored first-turn worms; finish the replacement blow before opening the Nexus.',
'Bidding lets you raise, pass and re-enter while the card remains for sale. Only the winner pays; a purchased card stays private. Try a full hand or opponents who all pass, then restart the example.',
'Charity compares zero, one and two-or-more spice. Revival compares three factions’ free allowances, cumulative force returns, shared spending and leader eligibility across first-death, surviving and repeat-death rosters. Force and leader returns remain separately limited.',
'At the Nexus, offer an alliance or accept the Emperor’s offer. An unanswered offer does not form an alliance. Break it or finish the Nexus, then compare three versus four shared strongholds at a later Mentat Pause. Changing practice options restarts that example.',
'The opponent uses a fixed teaching plan, revealed only after you seal yours. Try another plan to compare a Shield with a Snooper, or a low dial with the aggressor’s winning tie. This is an exercise, not an AI match.',
'Lesson progress stays in this browser, including a revealed plan. No room, multiplayer action or saved-seat credential is created or read. If browser storage is unavailable, practice still works for the current visit.',
'Faction lessons, Advanced combat, alliance powers, broader storm exceptions and expansions remain outside this introduction. The full reference and phase guidance explain more; existing mode gates still apply.',
],
related: ['setup', 'storm', 'spice-blow', 'alliance-funding', 'charity', 'revival', 'bidding', 'movement', 'battle', 'collection', 'privacy', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Thirteen lessons and eleven interactive Basic examples reuse production storm/exposure/spice, alliance/victory, charity/revival, bidding, shipment, map/occupancy, combat and collection calculations. The complete teaching curriculum remains unfinished.', evidence: ['game/introduction.ts', 'game/introduction-movement.ts', 'game/introduction-bidding.ts', 'game/introduction-alliance.ts', 'game/nexus-alliance.ts', 'game/introduction-resources.ts', 'game/introduction-opening.ts', 'game/disaster-rules.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Separate storm sealing/reveal/movement, four spice scenarios and first-turn skip/Nexus timing, charity claims, cumulative free/paid force returns, eligible leader revival and inspection, alliance offer/accept/withdraw/break and later victory, bid/pass, full-hand and all-pass choices, lesson navigation, keyboard force sliders and battle wheel, card inspectors, seal/reveal, retry and browser-local continuation are connected.', evidence: ['components/introduction.tsx', 'components/introduction-practice.tsx', 'components/introduction-bidding.tsx', 'components/introduction-alliance.tsx', 'components/introduction-resources.tsx', 'components/introduction-opening.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Fixed alliance responses, bidding scripts and an opponent battle plan provide reproducible teaching examples. The introduction is not an AI game and does not demonstrate opponent strategy or calibration.' },
{ area: 'Documentation', status: 'Partial', detail: 'Internal links connect each lesson to existing rules; the setup and saved-seat guidance distinguish practice from a live multiplayer game.', evidence: ['docs/INTERACTIVE_INTRODUCTION.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused checks compare all 24 offered storm dials and four spice scenarios with real engine actions, preserve v5 lesson identities, and compare resource payments, allowances and leader custody with engine actions, validate paid-save continuation and prior lesson migration, and cover alliance consent/break and later victory across 24 engine comparisons, bidding/re-entry against the live engine, full hands, payment/card custody, pricing, all offered plans, weapon survival, ties, losses, collection limits, 96 movement comparisons against the engine, single/mutual/declined Traitor calls and saved-choice migration/validation. This does not certify all rules or the complete learning journey.', evidence: ['tests/introduction.test.ts', 'tests/introduction-practice.test.ts', 'tests/introduction-bidding.test.ts', 'tests/introduction-alliance.test.ts', 'tests/nexus-alliance.test.ts', 'tests/introduction-resources.test.ts', 'tests/introduction-resources-migration.test.ts', 'tests/introduction-opening.test.ts'] },
],
},
{
id: 'bribes',
title: 'Public deals and bribes',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Record a public agreement with other humans, or pay a non-allied faction a bribe collected at the next Mentat opening.',
steps: [
'Open Bribes beneath the table. Choose a non-allied faction and a positive whole amount, then use the named Pay button. The amount is public and leaves your supply immediately. A message or promise alone does not pay spice.',
'The recipient keeps paid spice separately until the next Mentat opening. A payment after the current opening waits for next turn’s opening. Your incoming bribes are shown separately from your spendable supply; they cannot fund bids, shipments or another bribe yet.',
'You may pay out of turn when no decision or response is pending, including during Mentat after opening collection. You cannot bribe yourself or your ally, or while Inflation shows Double. Emperor gifts to allies use their own power controls.',
'Your payment limit excludes reserved spending and preserves binding Truthtrance answers. If an alliance, pending decision or available supply changes, recheck the recipient and amount. A rejected payment does not change the game.',
'A qualifying Bureaucrat may divert two spice to the Bank without reducing the payer’s cost. The remainder stays deferred. Unsupported combinations remain unavailable and do not imply an official rule prohibition.',
'In Public deals, propose written terms to one or more human seats. Every pair of participants must be nonallied when the offer is made and accepted, a provisional interpretation. Every recipient must accept; any recipient can decline, and the proposer can withdraw the outstanding offer. Any party may request release; all must agree. The record remains active until mutually released, even when players consider it fulfilled.',
'A deal may include one immediate spice payment between two participants. The last acceptance invokes the normal bribe action: the payer loses the gross amount immediately, Bureaucrat may divert two, and the recipient collects the remaining share at the next Mentat opening. Nothing is reserved before acceptance, and an unavailable payment leaves the offer open.',
'Players must honor legal deal terms; an impossible part is void. The game does not interpret or enforce free-text promises or determine impossibility. Free text alone pays no spice. Deals must not transfer cards, leaders, forces or faction advantages or contradict the rules.',
'Minimal AI follows supported Truthtrance ordinary-payment answers and their legal guides. AI deal negotiation and automatic enforcement of prose remain unfinished.',
],
related: ['table-discussion', 'alliance-funding', 'card-truthtrance', 'privacy'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Public two-to-six-human offer, unanimous consent and mutual release are recorded. An optional immediate payment executes through the native bribe action upon final acceptance; prose compliance remains player managed. Bribe escrow and Bureaucrat continuation remain native. Complete negotiation and all module combinations remain open.', evidence: ['game/public-deals.ts', 'game/bribe-options.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Public deal proposals, responses and mutual release, named bribe recipient, amount, explicit payment, deferred incoming supply and current availability guidance.', evidence: ['components/public-deals.tsx', 'components/bribes.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Passive receipt/collection and existing Bureaucrat responses work. Strategic bribe initiation and negotiation wait for feature completion.' },
{ area: 'Documentation', status: 'Partial', detail: 'Public deal consent, player-managed terms, payment, escrow, restrictions and remaining boundaries are recorded.', evidence: ['docs/PUBLIC_DEALS.md', 'docs/BRIBE_CONTROLS.md', 'docs/MENTAT_BRIBES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Public deal consent, release, immediate native payments, pending decisions and authenticated visibility have focused coverage, including multiparty and legacy records. Original late Mentat/next-turn receipt journeys supplement existing bribe projection, budgets and Bureaucrat coverage. Full integrated acceptance remains open.', evidence: ['tests/public-deals.test.ts', 'tests/public-deals-engine.test.ts', 'tests/public-deals-multiparty-engine.test.ts', 'tests/public-deals-payment-engine.test.ts', 'tests/public-deals-controls.test.tsx', 'tests/public-deals-http.test.ts', 'tests/public-deals-multiparty-http.test.ts', 'tests/public-deals-payment-http.test.ts', 'tests/mentat-bribes-runtime.test.ts', 'tests/bribe-controls.test.tsx', 'tests/bribe-controls-http.test.ts'] },
],
},
{
id: 'table-discussion',
title: 'Table discussion and private messages',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Discuss plans publicly or privately with another human seat, with saved history and exact message retries.',
steps: [
'Open Table discussion beneath the board. Choose Everyone at the table or a named human seat before sending. The server supplies your sender identity; messages are plain text, up to 1,000 characters.',
'Public messages can be read by everyone who joins this room. Private messages can be read only by the two addressed seats. Recovery or handover gives a seat’s next controller its message history and revokes the old credential.',
'Messages are available while game decisions are pending and do not change their state. Use the game controls to carry out agreed actions; typing a message does not transfer spice, form an alliance or make a Truthtrance commitment.',
'If sending is uncertain, Retry exact message confirms the original request without sending a duplicate. Refresh restores pending sends. Discarding retry details cannot undo a message already sent.',
'Load older messages to browse saved history. Return to latest messages resumes live updates. The panel shows no private-activity counts to other seats.',
'Human owners using AI control can still talk. Permanent AI opponents do not read or answer messages yet; AI negotiation waits until the game features are complete.',
],
related: ['privacy', 'alliance-funding', 'card-truthtrance', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Separate durable message storage supports public/direct conversation, private pagination, session-fenced reads/writes and exact retries without changing game state.', evidence: ['db/table-talk.ts', 'lib/table-talk.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Named conversation selection, plain-text messages, saved retries and older history are connected. Full notification, accessibility and visual acceptance remain open.', evidence: ['components/table-talk.tsx'] },
{ area: 'AI', status: 'Planned', detail: 'Human controllers can communicate while AI operates their seat. Automated message understanding and negotiation are deferred until non-AI feature completion.' },
{ area: 'Documentation', status: 'Implemented', detail: 'Audience, seat inheritance, saved retries and the distinction between discussion and game actions are explained.', evidence: ['docs/TABLE_DISCUSSION.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Production SQL and HTTP cases cover audience, cursor privacy, exact retries, token rotation, saved-kit recovery and unchanged sealed setup. Full browser/network and multiplayer acceptance remain open.', evidence: ['tests/table-talk-recovery.test.ts', 'tests/table-talk-http.test.ts', 'tests/table-talk-client.test.ts'] },
],
},
{
id: 'table-sounds',
title: 'Sound effects',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Optional short cues for phase changes and automatic actions, with local mute and volume controls.',
steps: [
'Open Sound effects in the table header to enable or mute audio, change its volume or test a sample. Sound starts off. Preferences stay in this browser and are shared by its tabs.',
'One short tone marks a new automatic action notice. Two tones mark a phase, turn or game-status change. Several updates arriving together produce at most one cue.',
'Sound and automatic visual notices have separate controls. Muting sound does not hide notices or change AI pacing.',
'Refresh restores your preference without replaying old events. Click or press a key to allow future sounds after refresh. Background tabs stay silent and do not queue old sounds.',
'Volume zero is silent and disables Test sound. Muting stops current tones. If audio is unavailable, play continues normally; cues never reveal concealed cards or decisions.',
],
related: ['automatic-casualties', 'ai-pacing', 'privacy', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Local synthesized phase and tagged automatic-action cues are connected; broader event coverage and final sound design remain unfinished.' },
{ area: 'Player controls', status: 'Implemented', detail: 'Mute, keyboard volume, test sample and refresh-persistent browser preferences.' },
{ area: 'AI', status: 'Implemented', detail: 'Existing projected human and AI updates share the same cosmetic cues without changing legal actions or pacing.' },
{ area: 'Documentation', status: 'Implemented', detail: 'This guide explains preferences, browser activation, background silence and unavailable audio.' },
{ area: 'Verification', status: 'Partial', detail: 'Focused cursor/audio checks and browser preference controls; physical output and broader browser acceptance remain open.', evidence: ['tests/table-sound.test.tsx'] },
],
},
{
id: 'seat-ai-permission',
title: 'Let a player start AI for your seat',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Authorize one named human player to start your chosen AI once while keeping your seat and private information.',
steps: [
'After the game starts, open Let a player start AI for your seat below the table. Choose another human and a difficulty, then grant permission. It expires after 24 hours and can be used even while you are online.',
'The named player can start only the authorized difficulty. They do not receive your hand, seat credentials or recovery kit. Public history records who activated AI.',
'You can replace or revoke unused permission. Changing your own AI control or recovering or transferring either seat invalidates unused permission. Take back control stops future AI decisions, but completed choices remain.',
'An uncertain permission request stays in this tab for exact retry, including after refresh. Retrying cannot renew consent or activate AI twice. Discarding a retry record cannot cancel an operation that reached the server.',
'Host status and disconnection alone never grant permission. A lost unprepared seat and unattended server recovery remain outside this feature.',
],
related: ['privacy', 'ai-players', 'ai-pacing', 'seat-handover', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'One-use, fixed-profile permission with expiry, both credential fences, atomic activation and owner takeback invalidation.' },
{ area: 'Player controls', status: 'Implemented', detail: 'Named owner consent/replacement/revocation and delegate activation; exact tab-scoped retry continuation.' },
{ area: 'AI', status: 'Implemented', detail: 'Uses the existing legal private-view autopilot and saved 1.5-second pacing; no strategy changes.' },
{ area: 'Documentation', status: 'Implemented', detail: 'Explains consent, expiry, retained ownership, private-information boundaries and uncertain replies.' },
{ area: 'Verification', status: 'Partial', detail: 'Focused SQLite races, recovery, HTTP privacy and browser controls; broader network-failure acceptance remains open.', evidence: ['tests/seat-ai-delegation-client.test.ts', 'tests/seat-ai-delegation-recovery.test.ts', 'tests/seat-ai-delegation-http.test.ts'] },
],
},
{
id: 'seat-handover',
title: 'Pass a seat to another player',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'A current human owner can offer their own seat through a private one-time kit without changing the faction or game progress.',
steps: [
'Open Pass your seat to another player below the table and create a private handover. Send the complete kit only to your intended recipient. It expires after 24 hours; play can continue until acceptance.',
'The recipient chooses Accept a seat handover on the home page and confirms the room and seat. Acceptance preserves private cards, resources, decisions and AI-control settings. It revokes the previous owner’s browser sessions and recovery kits. The recipient should protect their seat with a new recovery kit.',
'An owner may cancel or replace an offer. A confirmed replacement invalidates the old kit. Recovering the issuing seat also invalidates its pending offer. A browser already controlling another seat in that room must use a separate browser profile.',
'Keep the tab open after an uncertain result and retry the same request. Private retry details survive refresh in that tab. They are removed after both acceptance and the new browser session are confirmed. Closing the tab or abandoning its details can lose access to a completed transfer.',
'Host status and inactivity do not authorize taking another player’s seat. Broader disconnected-seat and hosted acceptance remains unfinished.',
],
related: ['privacy', 'ai-players', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Bounded voluntary owner issue/cancel/replace and one-time recipient claim with persistent private custody and exact retry receipts.' },
{ area: 'Player controls', status: 'Implemented', detail: 'Private owner kit controls and a separate recipient acceptance/retry screen, including refresh continuation and deliberate abandonment.' },
{ area: 'AI', status: 'Implemented', detail: 'Transfer preserves the human seat’s existing autopilot setting; bots cannot issue or claim someone else’s handover.' },
{ area: 'Documentation', status: 'Implemented', detail: 'This guide explains expiry, revoked access, retry proof and the need for a new owner recovery kit.' },
{ area: 'Verification', status: 'Partial', detail: 'Focused private state, custody, concurrency, HTTP and browser checks. Complete network-failure acceptance remains open.', evidence: ['tests/seat-handover-client.test.ts', 'tests/seat-handover-store.test.ts', 'tests/seat-handover-http.test.ts'] },
],
},
{
id: 'richese-cards',
title: 'Richese card collection',
category: 'Cards',
coverage: 'Partial',
summary:
'Inspect ten Richese cards and review the implemented auction flow. Supported Richese starts are unfinished previews; complete rules and acceptance remain open.',
steps: [
'Richese begins with one of each of these ten cards in a separate cache. These cached cards are not part of its hand and are not initially shuffled into the ordinary Treachery deck.',
'This public reference shows printed identities, not the contents of any player’s current cache or hand. Open an inspector for the full original gameplay explanation. Inspection never plays, acquires or discards a card.',
'When a Richese card is discarded, it enters the normal discard pile rather than returning to the cache. Removing an unsold card from the game is a different outcome. Discard contents remain private except when a card effect authorizes inspection.',
'Nullentropy Box grants its user a private discard search for two spice, excluding any Nullentropy Box. It does not draw from the deck. After the search, shuffle the remaining discard pile and discard the Box on top.',
'The collection belongs to Richese in both Basic and Advanced play. Advanced Black Market and special Karama acquisition add ways to obtain cards; they do not change these ten physical identities.',
'Development tables support the cache auction first or last, with Once Around or Silent bidding. Advanced Black Market offers a hand card using normal, Once Around or Silent bidding; other players may buy it, and an unbid or canceled offer returns to the seller.',
'The controls show the card only to entitled viewers, accept a public Black Market claim, and let bidders choose their own and pledged ally spice. Silent bids remain private until all eligible players submit. A donor cannot reduce pledged funding during unfinished Silent bidding, and a Black Market card reserved for sale cannot be played elsewhere. Atreides inspection, applicable Harkonnen bonus draws and Ixian allied replacement follow the sale’s origin.',
'Other buyers pay Richese for a cache or Black Market sale. Richese buying its own cache card pays the Emperor or Bank. Under a visibly provisional paid-retention policy, a positive Black Market seller win likewise pays Emperor or Bank, retains the same held card without another hand slot, and counts as one sale. No self-refund or duplicate acquisition occurs. Only winning committed funding is collected; losing Silent bids spend nothing. Zero/unbid retention remains free and unsold. An unbid cache card may be kept for free only if the hand has room, or removed from the game.',
'The opt-in Richese Nexus Betrayal auction preview adds a neutral before-payment acknowledgement. A legal rival holder may veto a public self-cache purchase or send another buyer’s sale payment to the bank. See its separate guide and bounded verification evidence; normal hidden self-purchases and special-Karama acquisition are not connected triggers.',
'A bidder whose hand becomes full is automatically passed, or submits zero in an unfinished Silent lot, unless it is the Black Market seller retaining its already-held card. The same current hand rule governs eligibility, commitments and settlement. A full-hand owner’s unbid cache card is still removed automatically. If every ordinary hand is full, normal-pool preparation does not draw and lose unseen cards.',
'AI supports cache choices and all three offered bidding methods using its own projected information. It currently skips the optional Black Market prelude. A seller in an already offered Black Market lot passes or submits zero.',
'Karama may prevent the declared cache auction before the ordinary pool is drawn. Cancellation leaves the cache intact and restores its deducted ordinary lot; first/last position does not create another cache offer that round. The independent reduction for a completed Black Market sale remains, including provisional paid retention. An exhausted cache causes no cache deduction. The supplied Advanced source excludes Richese lots from Ixian Technology.',
'Juice of Sapho now supports bounded first/last Once Around, movement and remaining battle-choice ordering; see its timing guide for current limits. Richese’s Karama uses the existing generic handler, Distrans supports a separate private hand transfer, Nullentropy Box supports a paid private discard search, Ornithopter supports its two movement modes, and Residual Poison supports a random opposing leader death before leader commitment in development fixtures. Portable Snooper supports ordinary and late poison defense. Stone Burner supports a guarded weapon commitment and revealed leader-effect choice. Mirror Weapon copies opposing revealed attacks, with independent copy-first choices for Tooth and Stone in bounded CHOAM/Richese-deck classic-faction battles. A winning physical Mirror may be kept even after copying activated Tooth or Artillery under the user-selected interpretation, not a publisher clarification. Semuta Drug has a bounded clean public ordinary-discard preview; other discard producers and Sapho timing modes remain unfinished. This does not certify every Karama interaction. Supported Richese starts are unfinished previews. Each component guide identifies its currently available action. Independent continuation and persisted-room checks pass. Desktop checks confirmed all ten enlarged guides, direct topic links, Once Around payment and restored private Silent bidding. Mobile and full Richese-game verification remain unfinished.',
],
related: [
'choam-modules',
'faction-richese',
'richese-acquisition',
'nexus-richese-betrayal',
'richese-gift',
'nullentropy-search',
'juice-of-sapho',
'implementation-checklist',
'richese-no-field',
...RICHESE_CARD_DEFINITIONS.map(({ card }) => `card-${card.id}`),
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Original inventory, first/last cache and Advanced Black Market pipelines retain funding, secrecy and source effects. Provisional paid seller retention now keeps the same card/order, pays native Emperor/Bank income, permits full hands without another slot and counts one sale. One shared current-hand rule governs eligibility, automatic skips, commitments and settlement. Card combinations and complete-mode acceptance remain unfinished.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Readable inspectors and original offer/method/direction, declaration, claim, sealed bid, funding and disposition controls remain. A visible provisional paid-retention notice precedes positive seller bidding; an already-held full hand can enter a legal price. Three390px Normal, Once Around and Silent flows exercise real bid/counter/income and next native controls without errors or overflow. Wider card-effect and full-game acceptance remain unfinished.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles choose cache options and legal funded bids from their own projections, including offered Black Market lots. They currently decline the optional Black Market prelude. Card-effect strategies and complete Richese games remain unverified.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Each card has an original guide; auction controls, payment and privacy rules are explained here. Source ambiguities and card-effect interaction gaps are retained explicitly rather than filled with assumed rules.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Earlier inventory, mechanisms, AI, persisted-room and catalog evidence remains dated in the linked contracts. New real producers earn a full hand through cache/ordinary purchases, preserve private Silent offers, distinguish paid versus zero retention, and cover native cancellation, actual Banker legs, bare rules and Nexus source eligibility. Three mobile flows and four legal full-hand seller policies pass. Full modes, comprehensive assurance and deployed acceptance remain open.',
evidence: [
'tests/richese-self-purchase-rounds.test.ts',
'tests/richese-self-purchase-silent.test.ts',
'tests/fixture-richese-self-purchase-full-hand.ts',
'docs/RICHESE_AUCTION_RULES.md',
'tests/richese-cards.test.ts',
'tests/richese-card-presentation.test.ts',
'tests/richese-engine.test.ts',
'tests/richese-engine-review.test.ts',
'tests/richese-auction-review.test.ts',
'tests/richese-auction-recovery.test.ts',
'tests/richese-auction-bots.test.ts',
'tests/richese-auction.test.ts',
'tests/richese-funding.test.ts',
'tests/choam-richese-leaders.test.ts',
],
},
],
},
{
id: 'juice-of-sapho',
title: 'Juice of Sapho: changing order',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Choose an available order change or become aggressor in an unresolved battle, then discard Sapho. Fresh Richese battles include a provisional shared final opportunity; other timing modes remain unfinished.',
steps: [
'In a current Once Around auction, first or last can reorder remaining bidders while you have not yet bid. Earlier bids stay committed; a position you already hold is unavailable. You still get only one bidding opportunity and must outbid the current high bid to win.',
'In ordinary cyclic bidding or native Advanced normal Black Market, provisional first/last changes the current lot only, anchored at the live next bidder. Later circuits use that local cycle. Keep standing bids, allied funding and passes; a passed holder waits for a real raise, and the high bidder has no pending bid to reorder. Every purchase still requires a strict raise. Full effective-cycle no-ops cannot consume the card. The next lot uses its normal physical opener.',
'Discarding Sapho frees a hand slot. A full-hand holder can join a still-open lot through this order change. Once Around completed opportunities cannot repeat. A cyclic pass stays spent until a genuine raise reopens it; a finished lot cannot reopen.',
'The movement controls change complete shipment and movement turns at a boundary before the current player begins. First moves you ahead of the remaining unstarted turns, including after earlier players have fully finished. In Advanced, provisional first ordering retains an unspent Guild’s native next-boundary take/wait choice; Guild may still act ahead. An already granted current Guild turn cannot be displaced, and a Karama-locked privilege stays locked. Last stays after the Guild even if the Guild later chooses to wait.',
'At a clean boundary after another player has begun shipment and movement, an unstarted holder may provisionally reorder only later unstarted turns. First means first after that current actor finishes; last remains after Guild. In Basic or Advanced, the holder may also provisionally pause its own started turn and resume last, retaining already spent shipment and movement. Pending card, arrival, payment and shared movement preparations must finish first. Advanced Guild retains its next-boundary timing choice; Guild may voluntarily pause its own granted turn.',
'Between completed battles, choose first or last among remaining battle choosers. The priority lasts for the rest of the Battle phase. You still need a real unresolved battle. Others may choose battles against you before your own turn; last is not immunity. This scope changes the chooser, not each battle’s aggressor or tie advantage.',
'In a fresh Richese battle, use unreserved Sapho at a clean boundary before both combatants finish final battle actions, including after sealed plans and revealed declarations. Habbanya still precedes ordinary aggressor tie priority. Participants, plans, promises, weapon choices and votes do not swap or replay. Older battles retain their pre-plan opportunity.',
'When two or more players declared Truthtrance in a supported clean parent, each queued holder may continue or use their held Sapho to move their entire pending question group first or last. Physical storm order and each holder’s card order stay unchanged. Supported Basic Semuta claim/pass restores the same question queue. Clean ordinary auction lots also preserve their standing bid and remaining clock. Richese cache Once Around and Silent lots preserve their original bidding and funding; Black Market, other special auctions, battle and pending-parent combinations remain unfinished.',
'During a clean native Extortion payer decision, use Sapho to take your optional choice first/last among unanswered non-Moritani players. Earlier declines, collected bank5 and the one-payment3 limit remain. The next payer event changes even when that player stays next. You may decline instead of paying.',
'During ordered Advanced Charity, take your remaining turn first or last, then discard Sapho. An accepted current claim provisionally protects that actor while another holder reorders only later unstarted turns. At a clean boundary, the holder may pause its own claimed turn and resume last without repeating the claim or payment. Completed turns stay closed and physical First Player order is unchanged. Basic and older concurrent phases have no ordered scope.',
'During ordered Advanced Revival, take your unfinished opportunity first or last, then discard Sapho. If another player has started, provisional queued timing lets that player finish unchanged. At a clean boundary, you may instead pause your own started turn and resume last, retaining used allowances. Pending requests must finish first. Completed turns and already-held positions cannot be repeated. Basic and older concurrent Revival phases have no ordered scope.',
'Finish pending shipment, movement and card preparations and decisions before changing order. The exact Extortion payer window is a supported exception for its own order only. Your hand panel lists available choices. Reserved cards and positions you already hold cannot be selected.',
'Completed bids and turns stay completed. Storm order, committed funding and movement counters do not reset. Refreshing preserves the same remaining opportunities and any declared last position.',
'In the explicitly opted-in Semuta preview, clean Once Around, movement and ordered Charity/Revival discards pause after their queues reorder; a clean between-battles chooser discard pauses after changing battle priority but before the next chooser acts; an aggressor discard pauses after changing ordinary tie priority. Charity/Revival retain their current participant, claims or requests and allowances through Semuta claim/pass. Fresh late continuations also bind revealed choices and the public final revision; old continuation bytes remain unchanged. Every seat receives the same neutral offer. Claim or decline moves only the used card or leaves it discarded; each committed queue or unresolved battle continues once. Direct combined late claim/capture proof remains open.',
'Both combatants receive the same persistent final battle opportunity after original votes and native late defense, regardless of held cards or result. Finish explicitly; a Sapho priority change clears both finish marks with a fresh event. The second finish closes priority before Stone counts and outcome settlement. This shared online procedure, cyclic lot duration, queued movement and the own-turn pause are provisional conventions. Other phase ordering remains unfinished. Silent bids retain simultaneous timing and storm tie order.',
],
example:
'Atreides bids 2. Before taking its bid, the Emperor uses Sapho to go last. Richese bids 3, then the Emperor must bid at least 4 to win. Atreides does not receive another bid.',
related: [
'richese-cards',
'movement',
'faction-guild',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Finite Once Around, current-lot cyclic bidding, clean/queued movement and ordered Advanced Charity/Revival, remaining battle-choice and late aggressor modes are connected. Queued timing retains another started actor; a clean own started movement turn in either ruleset, or Charity/Revival turn in Advanced, may provisionally resume last. Native claims or requests/allowances and physical order remain through their Semuta disposal. Tail timing is visibly provisional. Other phases remain unfinished.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Owner-only first/last and unresolved-battle aggressor controls retain public priority. Queued movement and Charity/Revival name the started actor who finishes first, explain provisional tail ordering and sends only original action fields; afterCurrent is display metadata. Final battle/cyclic controls retain their existing scope. Older battles keep early timing.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four levels use the server-derived private options. Full Richese games and comparative timing strategy remain unverified.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Printed alternatives, implemented boundaries and unresolved timing distinctions are recorded separately.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'18 October Extortion:9-file115/115, types/lint/build and six original-action/rendered-table programmes pass. Public Basic/Advanced cache1, placed/revealed Terror, paid entry1, native Mentat placement-before-bank5 and an earlier decline use120/139 source actions. First/payment3 and last/payment3 or all-decline use2–4 continuations, preserving one payment and native token retirement/rotation. Four profiles make eight legal holder/payer proposals and complete. Pure replay/no-op/recovered reuse cases are separate. One deliberate-invalid-mode test cast was repaired; all checks then passed. Prior Guild, aggressor and cyclic evidence remains in linked feature docs. No browser clicks, visual/deployed, direct combined Semuta claim/capture, complete-mode or final-assurance acceptance',
evidence: [
'game/sapho-movement-order.ts',
'game/charity-order.ts',
'tests/sapho-charity-order.test.ts',
'tests/fixture-sapho-charity-order.ts',
'tests/sapho-charity-order-engine.test.ts',
'tests/sapho-charity-order-controls.test.tsx',
'game/revival-order.ts',
'tests/sapho-revival-order.test.ts',
'tests/fixture-sapho-revival-order.ts',
'tests/sapho-revival-order-engine.test.ts',
'tests/sapho-revival-order-controls.test.tsx',
'tests/sapho-movement-order.test.ts',
'tests/sapho-started-movement-controls.test.tsx',
'tests/fixture-sapho-started-movement.ts',
'tests/sapho-started-movement-engine.test.ts',
'game/sapho-extortion.ts',
'tests/sapho-extortion.test.ts',
'tests/fixture-sapho-extortion.ts',
'tests/sapho-extortion-engine.test.ts',
'docs/MORITANI_EXTORTION_RULES.md',
'tests/fixture-sapho-guild-first.ts',
'tests/sapho-guild-first-engine.test.ts',
'game/battle-outcome-window.ts',
'components/battle-outcome-window.tsx',
'tests/battle-outcome-window.test.ts',
'tests/battle-outcome-window-controls.test.tsx',
'tests/fixture-sapho-late-aggressor.ts',
'tests/sapho-late-aggressor-engine.test.ts',
'docs/SAPHO_AGGRESSOR.md',
'game/sapho-cyclic-auction.ts',
'components/juice-of-sapho.tsx',
'tests/sapho-cyclic-auction.test.ts',
'tests/fixture-sapho-cyclic-auction.ts',
'tests/sapho-cyclic-auction-engine.test.ts',
'docs/JUICE_OF_SAPHO_RUNTIME.md',
'tests/ordered-opportunity.test.ts',
'tests/juice-of-sapho-engine.test.ts',
'tests/juice-of-sapho-engine-review.test.ts',
'tests/juice-of-sapho-bots.test.ts',
'tests/juice-of-sapho-recovery.test.ts',
'tests/juice-of-sapho-boundary-recovery.test.ts',
'tests/sapho-battle-order.test.ts',
'tests/sapho-battle-order-bots.test.ts',
'tests/sapho-battle-order-controls.test.tsx',
'tests/sapho-battle-order-recovery.test.ts',
'tests/sapho-aggressor.test.ts',
'tests/sapho-aggressor-recovery.test.ts',
],
},
],
},
{
id: 'richese-acquisition',
title: 'Richese special Karama purchase',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Spend a held Karama once per game to buy one private cache card for three own spice. An eligible Emperor Nexus joint option proves and retains that price while spending both cards at native purchase commit.',
steps: [
'In advanced development tables, Richese can use its special Karama once per game. Select an available Karama in your hand and one eligible card from your own cache. The activating Karama is discarded; the chosen card enters your hand secretly.',
'This is a purchase for Richese itself. Pay three of your available spice to Emperor when present, otherwise the bank. The general Emperor purchase-income rule supplies this payment destination. An ally receives no Harkonnen bonus or Ixian replacement from this direct cache acquisition.',
'With Emperor absent, an actual unallied Emperor Nexus holder may use the private joint option after proving three own uncommitted spice. Original Karama and Nexus both spend at purchase commit, one exact cache card enters your hand and native once-use/capacity/reservations remain. No bank money, reimbursement, ally bonus or fake auction is created. The separate Betrayal preview may pause before those costs. This purchase composition is visibly provisional; ordinary paid use remains available.',
'A Karama cannot cancel the special purchase itself. Emperor income has a separate response: canceling that income does not undo the purchase or restore the spent special power.',
'The separate Richese Nexus Betrayal preview also pauses this intended private acquisition before its costs. A successful veto discards only the selected cache card; Karama, three spice and once-use remain unspent, including an intended joint Emperor Nexus. This order is explicitly provisional composition. Ordinary Karama immunity does not automatically grant Nexus immunity.',
'The private hand panel provides both card selectors and enlarged inspection. It shows the payment recipient and the server’s current availability reason. A reserved auction card cannot be taken from that lot. Spending pledged or already committed funds is not allowed.',
'Full-hand activation now has a visibly provisional exchange policy: spend the held Karama and acquire one cache card, leaving the final hand within its actual limit. This is not a publisher timing clarification or numerical user ruling. Buying the final cached card is legal under the resolved exhausted-cache auction rule; subsequent Bidding restores the ordinary pool. Reserved cards, over-limit hands and pending commitments remain ineligible.',
'All four AI profiles can choose the canonical Richese Karama when the projection allows it and enough spice remains. They leave other cache effects to future implementation and give pending responses, decisions and Truthtrance priority.',
'Richese ally gifts, Distrans transfer and Nullentropy Box search have their own hand-panel controls and rules topics. These are separate from special Karama purchase and retain their own capacity, timing and private-custody boundaries. Richese and supported Advanced combinations can start as unfinished previews; other combinations remain unavailable.',
],
related: [
'richese-cards',
'richese-gift',
'nullentropy-search',
'special-karama',
'nexus-richese-betrayal',
'card-richese-karama',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Original private acquisition, once-use and separate paid Emperor income remain. An eligible joint Emperor Nexus option retains three own uncommitted spice and spends both actual cards at native commit with strict source receipts. Full-hand/final-cache and enclosing continuation remain; no fake auction or income. Broader combinations stay open.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Original private activation/cache selectors retain ordinary Pay3 and add an eligible two-card joint button with visible provisional composition. Actual390px normal/full-hand/final-cache/joint and irrelevant-Nexus paid paths preserve native once-use and one acquisition without overflow/errors. Wider presentation acceptance remains open.',
},
{
area: 'AI',
status: 'Partial',
detail:
'Minimal profiles keep original canonical-Karama choice, conservative spice budget and pending-priority rules, attaching the legal projected joint option when eligible. Easy’s genuine source earns one seller spice to meet its unchanged budget; no money or strategy is invented. Full strategy/calibration stay unfinished.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Native purchase secrecy, fixed price, once-use and capacity remain explicit. Emperor Nexus joint retention is visibly provisional source composition, not special-power immunity or publisher clarification. Existing Kull producer excludes Richese; combined admission is not fabricated.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Current joint13-file union112/112, types/lint/build and twelve real API profiles pass across phases2/4/5, paid/joint, full hand, final cache and intersection; depletion reaches original ordinary Bidding. Four actual390px surfaces prove retained5 to5, full-hand4 to4/spice3, last-cache1 to0/turn9 and paid5 to2, both costs/one acquisition/once-use, no overflow/errors. Prior native paid evidence remains; full Richese/combination/assurance/deployed acceptance is open.',
evidence: [
'tests/richese-acquisition-bots.test.ts',
'tests/richese-acquisition.test.ts',
'tests/richese-acquisition-review.test.ts',
'tests/fixture-nexus-emperor-special.ts',
'tests/nexus-emperor-special-purchase.test.ts',
'tests/nexus-emperor-special-runtime.test.ts',
'game/nexus-emperor-purchase.ts',
'game/engine.ts',
'components/richese-special-karama.tsx',
'docs/RICHESE_ACQUISITION_RULES.md',
'docs/NEXUS_EMPEROR_RULES.md',
'tests/richese-auction-recovery.test.ts',
'tests/reference.test.ts',
],
},
],
},
{
id: 'richese-gift',
title: 'Richese allied card gift',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Give a Richese card already in your hand to your current ally when their hand has room.',
steps: [
'This Basic alliance ability lets Richese give one of its ten Richese card identities from its own hand to its current ally at any time. It does not take a card from the cache, charge spice, draw a bonus card or require an exchange. Giving a card is distinct from playing its effect.',
'In your private hand, open Give a Richese card to your ally. Inspect the available cards, choose one and press Give. The panel explains unavailable cards and hand-space or commitment restrictions. A pending gift shows its card only to the two allies; inspecting it never transfers it or answers a game decision.',
'Karama can cancel this alliance power before transfer. The gift card stays reserved in Richese’s hand while that response resolves. Cancellation leaves both hands unchanged; allowing the power transfers the card once. There is no separate recipient confirmation for this gift.',
'An ordinary decision, another response or a phase-opening window can be suspended while the gift resolves, then restored with its existing choices and passes. An active Truthtrance question must finish first. A newly received Karama may be used in a restored response that is still open, under the normal response rules.',
'You cannot give a card committed to a sealed plan, fixed prescience answer, unresolved played-card retention, unsold Black Market lot or accepted replacement. Gifts must preserve binding battle promises and enough resources for committed exchanges. Your ally must retain space for an unsettled auction commitment and the mandatory return from a Harkonnen hand exchange; completed plans and private inspection snapshots do not change when a gift arrives.',
'The server checks alliance, exact card ownership, capacity and commitments again before transfer. An obsolete pending gift aborts without a partial transfer and restores its interrupted flow. Unrelated players see the gift power, not its private card identity. A pending card cannot also be spent, exchanged or randomly extracted.',
'After a Karama cancellation, the same card may be offered again while it remains legal. Each new offer opens a fresh cancellation response. This is a provisional interpretation of the one-use cancellation and the gift’s any-time wording, not a specific published retry ruling.',
'All four AI profiles conservatively give only the canonical Richese Karama during Bidding to free a full hand when the ally’s public card count is lower and there is room. They do not inspect ally hand contents or infer an unknown need for a card. Pending responses, decisions and Truthtrance take priority.',
'All ten canonical Richese cards may be transferred when legal, and Karama has its existing card-effect handler. Distrans supports its separate card-transfer effect, Nullentropy Box supports paid private discard search, Ornithopter supports its two movement modes, and Residual Poison supports a random opposing leader death before leader commitment. Portable Snooper supports ordinary and late poison defense. Stone Burner supports a guarded weapon commitment and revealed leader-effect choice. Mirror Weapon copies an opposing revealed weapon in bounded CHOAM/Richese-deck classic-faction battles, with copy-first Tooth/Stone choices; physical-Mirror winner retention even after copied activated Tooth/Artillery is a user-selected interpretation. Juice of Sapho supports bounded Once Around and movement ordering. Semuta Drug has a bounded clean ordinary-discard preview; other discard producers and Sapho timing modes remain unfinished. Desktop gift transfer and fresh-tab pending recovery have been checked in a synthetic table. Mobile, broader interactions and full Richese-game acceptance remain pending; supported Richese starts are unfinished previews.',
],
related: [
'richese-cards',
'richese-acquisition',
'card-karama',
'alliance-funding',
'card-truthtrance',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Canonical hand-to-ally transfer, private reservation, Karama cancellation, suspended continuation restoration and commitment/capacity revalidation are integrated. Reoffering a canceled card is provisionally allowed with a fresh response; complete Richese interactions remain unfinished.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'The hand panel offers card selection, full inspection, unavailable reasons and one explicit Give control. Pending card details are limited to the two allies and standard response controls resolve the power. Desktop owner selection, automatic uncontested transfer and fresh-tab recovery of a contested gift have passed synthetic-table browser checks. Mobile acceptance remains pending.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles make a bounded canonical-Karama gift to free a full bidding hand using public ally counts and owner-only legal choices. They can retry a canceled gift when that same legal condition remains. Other card effects and broader gift strategy are unfinished.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'The Basic alliance source, transfer versus card use, private controls, nested continuation, commitments and cancellation-retry interpretation are explained separately. This does not certify all expansion rules.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Six pure custody, five engine, eight independent review, four all-profile AI and three persisted recovery tests pass. Engine cases cover all ten card identities in Basic and Advanced across nine phases; recovery includes competing requests and changed-alliance abort without hand replacement. The complete registered suites pass 1,230 rules/client and 93 persisted/API tests. Desktop transfer and fresh-tab pending recovery pass in a synthetic table. Mobile and complete Richese-game acceptance remain pending.',
evidence: [
'tests/richese-gift.test.ts',
'tests/richese-gift-engine.test.ts',
'tests/richese-gift-review.test.ts',
'tests/richese-gift-bots.test.ts',
'tests/richese-gift-recovery.test.ts',
],
},
],
},
{
id: 'distrans-transfer',
title: 'Distrans card transfer',
category: 'Cards',
coverage: 'Partial',
summary:
'Give another player a card from your hand, then discard Distrans.',
steps: [
'Any faction holding Distrans may use it. Choose another player whose hand has room and a different Treachery Card from your own hand. The recipient need not be your ally. Transfer that card intact, then discard Distrans into the ordinary discard pile.',
'Open the Distrans transfer panel in your hand, select the recipient and card, inspect either card, then press Give and discard Distrans. There is no spice payment, purchase bonus, recipient acknowledgement or faction-power Karama response. Other players see the played Distrans, not the transferred card identity.',
'The printed exception is during a bid. Provisionally, an untouched ordinary, Once Around or normal Black Market lot allows Distrans before its first bid or pass, and a Silent lot allows it before its first sealed submission. Opening or inspecting a lot does not start the bid; its card, eligibility and bidding order stay the same. Started lots remain guarded, while a completed purchase income response may allow use. Giving Distrans itself remains guarded.',
'Current hand space still controls bidding after a transfer. A full donor can free space; if the active bidder receives its final card, it must pass instead of raising. The existing auction skips full hands without adding a lot or resetting earlier passes.',
'Distrans resolves in one server action and keeps an existing response, decision or phase opening in place. Active Truthtrance retains priority. Both outgoing cards must be uncommitted; a sealed plan, fixed prescience answer, pending Richese gift or accepted replacement cannot lose its reserved card.',
'A transfer must preserve binding battle answers, compulsory discards and both sides of a pending Harkonnen hand exchange. The recipient must retain room for its mandatory incoming return. Optional proposals that become unavailable can still finish through their existing decline or no-effect path.',
'A different legal transfer can fill or free space for a pending Richese gift. The ordinary Distrans transfer resolves first, and the pending gift rechecks capacity before moving its own card. A canceled alliance gift does not automatically prevent using this separate card effect.',
'All four AI profiles use their own legal projected cards. They may give an allied Bene Gesserit or CHOAM a Worthless card, or share a duplicate ordinary weapon, defense or Karama to free a full hand. They do not inspect the recipient’s private cards and preserve existing decision priority.',
'The explicitly opted-in Semuta preview offers a neutral all-seat response to the public used Distrans after a completed private transfer, including before an ordinary bid starts. Completed Truthtrance costs also retain a standing ordinary bid through their Semuta window. The given card remains private and belongs to its recipient; only the used Distrans is claimable. Responses or decisions already in progress, unresolved bid and self-transfer rulings, full combined Richese games and ordinary expansion starts remain unfinished.',
],
related: [
'card-richese-distrans',
'richese-gift',
'richese-cards',
'card-truthtrance',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Synchronous two-card custody, private transfer, normal disposal, reservations and prospective checks are integrated. Provisional untouched ordinary and Richese special-lot windows admit use before the first bid, pass or sealed submission and recheck live bid capacity. Started lots, competing transactions and self-transfer retain their separate boundaries.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Recipient/card selectors, both inspectors, unavailable reasons and explicit give-and-discard controls are integrated. Persistent provisional pre-bid guidance and the actual hook-free submission are connected. Browser/mobile acceptance of this extension remains pending.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles make bounded useful transfers from entitled projections, preserve decision priority and cannot repeat a consumed physical card. Broader negotiation and complete expansion-game strategy remain unfinished.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'The ordinary card effect is explained separately from Richese alliance gifts, with its printed bid exception, exact disposal, private controls and unresolved interactions.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Pure timing/custody and focused native Basic/Advanced special-lot cases exercise real cache purchases, preserved auction order and action-leaf callbacks. A separate capacity supplement stages conserved cards before a real lot; it is not earned hand history. Full Richese games, stateful selectors, browser/mobile/deployed acceptance and final assurance remain due.',
evidence: [
'tests/distrans.test.ts',
'tests/distrans-engine.test.ts',
'game/distrans-timing.ts',
'tests/distrans-timing.test.ts',
'tests/fixture-distrans-prebid.ts',
'tests/distrans-prebid-engine.test.ts',
'tests/distrans-prebid-controls.test.ts',
'tests/fixture-distrans-richese-prebid.ts',
'tests/distrans-richese-prebid.test.ts',
'tests/distrans-richese-controls.test.ts',
'tests/distrans-black-market-prebid.test.ts',
'components/distrans-transfer-action.tsx',
'tests/distrans-engine-review.test.ts',
'tests/distrans-bots.test.ts',
'tests/distrans-recovery.test.ts',
],
},
],
},
{
id: 'portable-snooper',
title: 'Portable Snooper: ordinary or late poison defense',
category: 'Cards',
coverage: 'Partial',
summary:
'Choose it as your defense, or add it after revealing a plan with room for a late defense.',
steps: [
'Portable Snooper is a poison defense. Any faction holding the canonical card may select it in the normal defense slot. It protects against ordinary poison and Chemistry used as a weapon. It is not a shield; it does not stop projectiles, Lasgun, Artillery Strike or an activated Poison Tooth. Poison Blade still kills through its projectile attack.',
'After both battle plans are publicly revealed, open Portable Snooper in your hand to add it as a late defense. Your original plan must have a leader or Cheap Hero and no actual defense. A lone Worthless card in either slot permits this extra defense; a weapon plus Worthless, two Worthless cards or another two-card plan does not. There must be room within the two battle-card slots.',
'The Bene Gesserit Voice still applies. A prohibition on poison defense forbids Portable Snooper; a poison-weapon prohibition does not. Voice may name Portable Snooper specifically, leaving an ordinary Snooper distinct. When Voice compels this card or a poison defense and you can comply, satisfy the requirement in the original plan. You cannot omit it on the promise of adding it later.',
'Play the late defense before submitting your own traitor decision, after any current Truthtrance, response or Poison Tooth choice finishes. This application procedure uses the existing decision opportunity, regardless of either hand, and does not add a holder-only public window. Your submitted traitor decision closes your late opportunity; another combatant submitting first does not close it.',
'The original revealed plan remains unchanged. The public table shows Portable Snooper separately as added after reveal, with its own inspector. Prescience and structured Truthtrance claims about the original defense slot still refer to that original slot. Broader freeform promises remain broader than the structured slot model.',
'The played card stays reserved with your battle cards until normal cleanup. A losing player discards it; the general official FAQ permits a winner to retain it. Moritani alliance retention can apply when its ordinary conditions allow. Successful traitors and actual Lasgun–shield explosions keep their existing precedence. Portable adds no spice payment, bounty or automatic traitor call.',
'The saved battle event and physical reservation survive refresh and reconnect. Duplicate or stale play cannot add another defense or repeat cleanup. The card identity stays private before play; only its owner sees its availability. All four AI profiles use the ordinary defense slot and may add it late when public revealed effects show it saves their leader.',
],
related: [
'card-richese-portable-snooper',
'richese-cards',
'battle',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Ordinary defense role, Voice, late defense overlay, immutable original plans, physical reservation and winner/loser/Moritani cleanup are integrated. Full expansion combinations remain unfinished.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Normal defense and Prescience selectors include the card. A private late-play panel gives timing reasons; revealed components distinguish and inspect the added defense.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles select a legal normal defense or use public revealed damage to assess late protection, with no opponent-hand access. Full expansion strategy calibration remains unfinished.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Explains printed extra timing, card limits, Voice, damage exceptions, original plan promises, application scheduling and the official general winner-retention clarification.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Pure role/slot checks, twelve-faction Basic/Advanced matrix, independent interaction review, all-profile AI and forced concurrent recovery tests cover supported behavior. Full expansion games remain unverified.',
evidence: [
'tests/portable-snooper.test.ts',
'tests/portable-snooper-engine.test.ts',
'tests/portable-snooper-review.test.ts',
'tests/portable-snooper-bots.test.ts',
'tests/portable-snooper-recovery.test.ts',
],
},
],
},
{
id: 'residual-poison',
title: 'Residual Poison: a random leader before battle plans',
category: 'Cards',
coverage: 'Partial',
summary:
'Before either combatant chooses a leader, send one available opposing leader at random to the Tanks, without spice payment.',
steps: [
'Any faction holding the physical card may play it against its actual battle opponent before either combatant commits a leader. Open Residual Poison in your private hand and use its play action. The server selects the victim at random; neither player chooses or confirms that death.',
'An available leader must be alive and eligible for this battle territory. A leader used in this same territory remains eligible; one used elsewhere does not. Cheap Hero cards are not leader discs. The card is discarded once, the victim enters the Tanks, and no spice bounty or battle victory is awarded. Force counts and ordinary battle preparation continue.',
'In games with Richese seated, both combatants finish a shared preparation opportunity before submitting plans or a leader-valued Prescience answer. This application timing procedure appears independently of both hands and does not reveal who holds a preparation card. Active responses, decisions and Truthtrance resolve first. A completed readiness step does not itself choose a leader.',
'A foreign ghola retains its recorded revival custody when killed. Duke Vidal is the same physical disc with its death history retained, and his temporary control ends. An involuntary death releases impossible battle promises and can require a previously answered non-leader Prescience question to be answered again; it never redraws the victim to preserve an answer.',
'Two completed nonleader Cunning inspections do not block this pre-leader card window. The provisional priority keeps a still-possible original native answer first, then requires the extra answer to fit the same legal plan. An impossible answer reopens its original field without another Nexus card or another leader death.',
'Available Harkonnen captives are included. If selected, the captive suffers one public death and captivity ends; unselected living captives stay concealed. This ordinary Tanks interpretation is provisional, distinct from face-down execution for two spice. Foreign Ghola revival custody remains; the shared Duke returns dead and set aside. Legacy battles without a saved preparation event are not retroactively reopened.',
'Saved battle events bind readiness and card actions. Reconnect preserves the opportunity and a committed death. Competing actions use room versions: a stale request cannot repeat the discard or death and must refresh before retrying. All four AI profiles use only their entitled card availability and opponent information.',
],
related: [
'card-richese-residual-poison',
'richese-cards',
'battle',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Pre-leader timing, uniform eligible-disc selection, automatic death, single discard, custody, promise reconciliation and exact event validation are integrated. Answered nonleader Cunning uses provisional native-first reconciliation; Advanced Harkonnen uses provisional ordinary public captive death. Wider combinations remain incomplete.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Private card inspection and one play action accompany neutral readiness controls for both combatants. Death adds no acknowledgement or victim selector.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles use entitled availability before readiness and leader commitment; they cannot inspect or score a hidden victim pool. Full expansion-game calibration remains unfinished.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Explains printed timing/disposal, shared application opportunity, casualty custody and the provisional public captive-death composition.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused pure/engine/control/bot cases cover native/captive death and the pre-leader timing. Genuine Basic/Advanced cache acquisition, Nexus Cunning and battle sources cover two surviving disclosures. Controlled resource-exclusive and impossible-answer cases separately exercise native-first re-answer priority. Historical persisted evidence does not certify final assurance or complete expansion games.',
evidence: [
'tests/residual-poison.test.ts',
'tests/residual-poison-engine.test.ts',
'tests/residual-poison-engine-review.test.ts',
'tests/residual-poison-bots.test.ts',
'tests/residual-poison-custody.test.ts',
'tests/residual-poison-capture-engine.test.ts',
'tests/residual-cunning-engine.test.ts',
'tests/residual-cunning-controls.test.ts',
'tests/nexus-residual-ambiguity.test.ts',
'tests/fixture-residual-cunning.ts',
'tests/fixture-residual-cunning-priority.ts',
'tests/fixture-residual-poison-capture.ts',
'docs/RICHESE_RESIDUAL_POISON_ENGINE_AUDIT.md',
'tests/residual-poison-recovery.test.ts',
],
},
],
},
{
id: 'ornithopter-movement',
title: 'Ornithopter: one longer move or two different groups',
category: 'Cards',
coverage: 'Partial',
summary:
'Play the movement card for a maximum three-territory route or two distinct groups using their normal movement.',
steps: [
'During your movement turn, select your forces and destination using the normal board controls. In Ornithopter movement controls, choose one group up to three territories or two different groups using normal movement. No spice fee or extra reserve shipment is added.',
'The longer-route option provides its own maximum of three territories without requiring Arrakeen or Carthag. It does not add three to another range. Storm, occupancy, alliance and route restrictions still apply. Card-derived range is independent of the Ixian cyborg movement advantage.',
'For two groups, make the first move and resolve its actual arrival reactions before selecting the second. The second group uses the current normal range, including access established by the first move. Different subsets from the same origin are allowed; the first group cannot move again after merging with another force stack. Original eligible ordinary and elite counts are shown in your controls.',
'A concealed No-Field may move as a group member without exposing its value. A marker moved in the first group cannot also move in the second. Revealing an unmoved marker converts its remaining entitlement to its actual placed forces; revealing a moved marker does not give those forces another move.',
'A validated declaration moves the physical card from your hand to the public played-card area. It remains there through genuine CHOAM, Ixian or other arrival decisions and is discarded once when the chosen use ends. Random hand effects act on cards still in hand. Ending your movement closes any remaining card movement without undoing a completed group.',
'The saved event binds retries and the remaining original-group data. Refresh and reconnect preserve that event. After disposal, recovery preserves the completed forces and marker event before opening arrival decisions or advancing an early-ended turn; it does not move the group again. Missing saved group data cannot be reconstructed from merged forces and blocks the damaged continuation instead of allowing reuse.',
'Under the provisional composition, Ornithopter replaces one unused ordinary or Hajr movement. A prior move stays spent and cannot become the card’s first group retrospectively. One Hajr play plus a two-group flight permits three group movements; Hajr may reuse a card-moved group. Ending early abandons the unused card group and ends your turn. The single physical Hajr may grant another move after legitimate recovery and a new legal play.',
'Advanced Hajr must be played immediately after a completed Force Movement and its required arrival decisions, before your next voluntary game action. A completed card group provisionally supplies this opportunity. Basic retains broader own-turn timing. Kulon leaves the fixed card maximum at three and extends both normal-range groups. Advanced advisors may use both physical card modes. They do not grant city access themselves; two-group mode uses current fighter city access at each move, while range3 is independent. Empty arrivals flip normally, and fresh-advisor locks and original-group limits still apply. After Guild Cunning, the physical card may provisionally replace one earned unused Hajr allowance. Cunning itself adds no ordinary move; an active two-group flight keeps its original remaining group. Declaring Cunning abandons an unfinished earlier flight without extra credit. Wider optional combinations remain unfinished.',
'All four AI profiles use their own projected movement choices and original-group limits. They can use a longer route, split distinct groups, finish interrupted movement and end optional movement when no legal second group remains. Complete Richese-game calibration is not yet certified.',
'With Advanced Emperor Homeworlds, provisional composition permits a native Kaitain/Salusa transfer as either group, alongside a ground move or another different typed World group. The physical card grants no World route or range; using its one-move mode on the independently allowed transfer is a separate provisional replacement. Current and original normal/Sardaukar quotas prevent reusing arriving counters. Complete two groups for the actual extra-move credit, or finish early without it. One card is discarded; later Hajr remains independent. Use the Imperial movement panel for World groups.',
'In supported Basic Ecaz/Moritani tables with Richese, Semuta may recover the completed movement card before the original arrival reaction. The forces and counters stay moved; the original player retains their actual turn. Later Ambassador or Terror discards form separate fresh groups and never repeat the movement.',
],
related: [
'card-richese-ornithopter',
'richese-cards',
'movement',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Native Imperial World/ground sequences now use original typed pools and one physical disposal; fresh World-aware cohorts distinguish arrived counters, with a recorded legacy inference for older ground-only flights. Both modes retain original event/cohort accounting. One unused normal/Hajr entitlement can start a flight; completed two-group credit preserves unused Hajr afterward. Each genuinely recovered Hajr replay has its own grant. Advanced uses supplied immediate-after-play timing with an explicit online/card-group convention. Both modes now accept Advanced advisors through native stance/entry and original-group rules. Advisors do not grant city access; current fighter-city range is recomputed for each normal group. Guild Cunning now retains actual earlier credits and permits a physical card to replace an unused Hajr grant, with active-flight and early-end suffixes. New v3 receipts preserve old formats. Wider combinations and broader acceptance remain unfinished.',
evidence: ['game/ornithopter-homeworld.ts', 'game/homeworld-options.ts', 'game/engine.ts', 'components/homeworld-table.tsx', 'tests/fixture-ornithopter-emperor-world.ts', 'tests/ornithopter-emperor-world-engine.test.ts', 'tests/ornithopter-homeworld-quote.test.ts', 'tests/ornithopter-homeworld-controls.test.tsx', 'docs/RICHESE_ORNITHOPTER_ENGINE_AUDIT.md'],
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Imperial controls add actual held-card modes/current continuation, typed unmoved maxima and persistent provisional route/credit guidance. Existing source/destination, typed group, mode and inspector controls consume current shared movement availability. Persistent text explains Hajr composition, Guild Cunning prerequisites/early ending, Advanced timing and advisor/city access; automatic disposal adds no confirmation.',
},
{
area: 'AI',
status: 'Partial',
detail:
'Minimal Imperial candidates use the shared World action adapter and exact typed quotas without strategic refinement. Four profiles use projected ranges, advisor-aware routes/native entry, distinct group quotas and earned Hajr movement, including post-Cunning card groups. Actual advisor and owned second-group candidates are legal; strategic tuning remains deferred.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Imperial composition, source/range boundaries, World-aware and legacy cohorts and distinct no-arrival disposal are explicit. Explains unused entitlement replacement, per-flight distinctness, later Hajr reuse, fixed/normal range, Advanced source timing and explicit unfinished multiple-card/module combinations.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'18 October Guild Cunning scope:13-file125/125, types/lint/build and eight original-action/rendered-table continuations pass. Public ready/start, cache1/Hajr1 purchases, worm/alliance/Guild draw and paid first2/second1 shipments cover both modes, earlier flights and Basic early ending. Eight minimal policy proposals are legal; unearned/spent Hajr rejects. Old receipt formats remain covered. Earlier advisor/Hajr evidence is separate. Actual accepted drafts render without select/submit browser clicks. New Semuta grammar lacks direct combined claim/capture proof; wider combinations, full modes, final assurance and visual/browser/deployed acceptance remain open.',
evidence: ['tests/semuta-ornithopter-ambassador.test.ts', 'tests/semuta-ornithopter-terror.test.ts', 'tests/semuta-ornithopter-native-controls.test.tsx',
'game/ornithopter.ts',
'game/nexus-guild-cunning.ts',
'tests/nexus-guild-cunning-ornithopter.test.ts',
'tests/fixture-guild-cunning-ornithopter.ts',
'tests/guild-cunning-ornithopter-engine.test.ts',
'docs/NEXUS_GUILD_CUNNING_RUNTIME.md',
'components/ornithopter-movement.tsx',
'tests/ornithopter-advisor-rules.test.ts',
'tests/ornithopter-advisors-engine.test.ts',
'tests/ornithopter-advisors-controls.test.tsx',
'tests/fixture-ornithopter-advisors.ts',
'game/card-availability.ts',
'tests/fixture-ornithopter-hajr.ts',
'tests/ornithopter-hajr-engine.test.ts',
'docs/RICHESE_ORNITHOPTER_ENGINE_AUDIT.md',
'tests/ornithopter.test.ts',
'tests/ornithopter-engine.test.ts',
'tests/ornithopter-engine-review.test.ts',
'tests/ornithopter-discard-continuations.test.ts',
'tests/ornithopter-discard-recovery.test.ts',
],
},
],
},
{
id: 'nullentropy-search',
title: 'Nullentropy Box: paid private discard search',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Pay two spice to search privately, recover one non-Box card, shuffle the remainder and discard the Box on top.',
steps: [
'Any faction holding the canonical Nullentropy Box can use its paid search. Pay two spice to the bank, choose one card from the Treachery discard pile other than any Nullentropy Box, shuffle the remaining pile, then discard the played Box on top. This is not a deck draw or a purchase: there is no Emperor income, Harkonnen bonus or Ixian purchase replacement.',
'Open Nullentropy Box in your private hand. Before payment, the panel shows only your Box and its availability reason, with no discard names or candidate count. Pay 2 spice and search privately begins the search. Only the paying player receives the eligible discard faces.',
'During the paid decision, inspect the cards and use Take on one card to finish. Inspection itself does not select anything. There is no free cancellation after viewing the pile and no second confirmation after selection. If exactly one legal card is available, the server selects it automatically without asking for an identical acknowledgement.',
'Payment is recorded once before inspection. Refresh or reconnect restores an unfinished paid search for its owner without charging again. While it is open, other gameplay actions wait so they cannot change the reserved Box or discard pile. The completed search saves the recovered card and shuffled pile before restoring an interrupted response, decision or phase opening. Recovery does not charge, select or shuffle again, and does not replay the earlier action.',
'The selected card enters your hand privately. Other players do not receive the selected identity or the shuffled discard faces. Temporary search access ends on completion; the normal discard pile remains private, even though the played Box is placed face up on top. Past inspection records do not become a permanent live discard browser.',
'An active Truthtrance question and exact card or transaction commitments must resolve as required. Basic and Advanced full-hand holders have a visibly provisional atomic exchange: retrieve one non-Box and discard the played Box, leaving the final hand at its current limit. The printed intermediate-capacity question remains unresolved; over-limit hands are rejected.',
'A pending purchased-shipment cost does not block the search. Under the provisional refund composition, recovering that exact cost preserves its purchased price, creator and beneficiary but ends its later Guild special-stop refund, even if discarded again. Selecting another card leaves the cost’s existing claim status unchanged. Empty or only-Box searches are rejected before payment under the current unsupported-empty-search policy; there is no fallback deck draw.',
'All four AI profiles start only when their own projected availability and spice reserve allow it. They do not inspect unpaid discard contents. Once paid, they choose from their entitled cards, prefer existing functional effects over unfinished Richese faces and complete a legal selection even if only unfinished effects remain. A paid search takes priority over optional actions.',
'Whole Truthtrance questions may name a future printed Box activation. Accepted payment records that play once before private selection; it does not promise the recovered identity. Actual costs share funding with other commitments, while an unpaid unknown recovery cannot supply another effect. Native paid selection and Semuta continuation keep their priority.',
'The paid search and continuations are integrated in development fixtures, with a connected full-hand prototype in both modes. Purchased-shipment cost recovery now uses the provisional nonduplication policy without blocking the search. The explicit Semuta preview can recover the used Box after a clean completed search without replaying payment or shuffle; other discard compositions remain separate. Full Richese starts and complete browser/mobile/full-game acceptance remain gated.',
],
related: [
'card-richese-nullentropy-box',
'richese-cards',
'richese-acquisition',
'card-truthtrance',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Paid inspection, exact private custody, shuffled remainder, Box on top, sole-choice completion and restored parent continuations are integrated. Basic and Advanced full-hand exchange use a connected provisional final-capacity policy. Recovering an exact shipment cost ends only its provisional refund eligibility, retaining the original price and continuation; wider discard/commitment refinement is separate.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'The hand panel shows only the owned Box before payment. The owner’s paid decision has readable card guidance, inspectors and one Take action per eligible card. Other players wait without receiving faces. Browser/mobile acceptance remains pending.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles use their own budget and availability to begin, without discard lookahead. Paid choices use only entitled candidates, prefer functional effects and finish without an extra acknowledgement or retry. Full Richese strategy remains unverified.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Payment, temporary private access, disposal order, continuation recovery and provisional capacity/claimed-cost refund interpretations are documented. This does not grant generic discard browsing or certify the remaining expansion effects.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Pure custody, engine, independent review, AI and persisted recovery suites exercise the bounded search contract. Checks cover payment once, private candidates, exact selection, shuffled custody, stale/repeated requests and sole-card completion. Static rendering verifies prepayment secrecy and paid controls; final global totals and browser success are not claimed.',
evidence: [
'tests/nullentropy-box.test.ts',
'tests/nullentropy-box-engine.test.ts',
'tests/box-shipment-price.test.ts',
'tests/box-shipment-price-controls.test.ts',
'tests/fixture-box-shipment-price.ts',
'tests/nullentropy-box-engine-review.test.ts',
'tests/nullentropy-box-bots.test.ts',
'tests/nullentropy-box-recovery.test.ts',
'tests/box-discard-continuations.test.ts',
'tests/box-discard-recovery.test.ts',
'tests/box-discard-auditor.test.ts',
],
},
],
},
{
id: 'richese-no-field',
title: 'Richese No-Field tokens',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Concealed zero, three and five tokens represent one force until they are revealed.',
steps: [
'Richese has three No-Fields, numbered zero, three and five. A concealed token counts as one force. Only one may be deployed on Arrakis, and consecutive own or allied shipments cannot use the same token.',
'A normal No-Field shipment pays the one-force price. The concealed token moves like a force. Before Battle, Richese may reveal it voluntarily; a token involved in battle is revealed with the Battle Plan. Revelation brings the indicated forces from reserves, limited by what remains there.',
'Provisional Guild transport treats your owned concealed marker as one billable force alongside any same-origin physical counters. Native Guild allies may cross-ship it through the normal permission and rate responses. The actual absent-Guild Secret Ally may cross-ship or return it face down, spending its Nexus once and paying the Bank. Cross keeps concealment; return creates no denomination-sized reserve deposit and retains the same-token next-shipment ban. Ordinary Guild allies cannot return, and marker Homeworld placement remains unavailable. Select the marker separately from physical counters; ordinary movement remains available.',
'With a living, uncaptured Planetologist, your own concealed marker may provisionally use either ordinary movement alternative. Extra range adds one, capped at three, for one origin. Gathering combines exactly two territories at one destination using each selected sector’s ordinary range; the marker can supply one origin alone or with physical companions, and physical counters supply the other. The alternatives do not stack. The marker stays concealed, including zero, and spends one movement without materializing reserves. Physical and Discovery flight use the provisional skill transport policy with original marker quotas; complete combinations remain unfinished.',
'The revealed token stays face up until another token is placed. Revealing it does not clear the previous-shipment restriction. An allied No-Field shipment reveals immediately and uses the ally’s reserves; an existing token must be revealed before another shipment.',
'Before an eligible ally uses its shipment, the game holds an offer opportunity for Richese. Richese may pass or privately propose a token, destination and payment. The ally accepts the exact offer and chooses its permitted regular/elite mix, or declines without payment. Success consumes the ally’s shipment, not Richese’s shipment or either player’s movement.',
'Ordinary allied shipment costs one spice into a stronghold or two elsewhere. Guild recipients and active purchased prices use the existing provisional bank-only discount. Canceling a native Guild recipient’s rate charges one full-price marker, never zero/five materialized forces. A supplier’s original whole-fee1 approval cannot silently become2; release unchanged and obtain a new full-price offer/consent. Independent purchased price remains. Fremen on-planet reserves stay ineligible.',
'Storm and worm exposure reveal the token and destroy its forces. A zero token still had one-force presence before revelation. Trip to Gamont forces a reveal, then returns one force if present. Revealing a token already in a territory does not trigger Terror a second time.',
'Development tables support your own concealed shipment, movement of a marker alone or with a physical group, voluntary reveal and one-force board presence. Physical reserves remain unchanged until reveal. Karama can prevent the No-Field shipment, with Guild shipment prevention and payment handled separately. Price and chosen allied funding are shown before shipment.',
'The map shows a concealed marker without its denomination to everyone. Richese privately sees its token values, last-use restriction and reveal control. Movement selection keeps the marker separate from physical forces. No hidden denomination or physical token identity is included in another player’s projected board state.',
'Marker-only battles use the owner’s private reserve-limited force pool. Both plans must be sealed before the token materializes. A zero-token battle still resolves with its leader, cards and traitor decisions. Ordinary Atreides prescience cannot request this opponent’s dial; other eligible plan elements remain available.',
'Advanced Atreides special Karama is provisionally distinct from ordinary Prescience: it may privately inspect the complete committed No-Field plan, including dial/support and actual played faces. The target seals first; only Atreides receives that inspection, not automatic allies or observers. This is not a token inventory/maximum disclosure or early physical reveal. Both combatants still seal before native materialization. Ordinary dial Prescience remains prohibited.',
'Truthtrance may separately ask whether you currently have a concealed No-Field with printed value0,3 or5. No deployed token, including a revealed last-used token, is No even for value0; concealed5 remains5 with empty reserves. Only the respondent sees the expected answer before public reply. AND/OR publishes one aggregate. Asking/answering does not reveal the physical marker, move counters or bind future use. Physical-force facts still exclude markers.',
'Basic and Advanced ordinary mixed battles have a provisional private pool: physical forces already here plus the token value capped by current reserves. The Battle Wheel labels that interpretation explicitly. Both plans seal before materialization, then native support, casualties and aftermath use actual forces. This first version does not adjudicate the FAQ mixed dial cap.',
'In supported card profiles, provisional materialization-first order forecasts the own marker privately without moving forces early. Both plans seal, the original token reveals and materializes its reserve-limited ordinary counters at its sector, then Harass selects/returns actual undialed counters. Reinforcements must leave three original reserves after that reveal and before any future Harass return; an unfunded card cannot seal a plan. Marker0, last-used identity and original reveal-event history remain native.',
'Concealed collection, occupancy and control use one-force presence. Exposed storm sectors and unprotected worm destruction reveal and remove the resulting actual forces. Storm shelter and other sectors remain separate. Trip to Gamont at a location with a marker reveals it, even if ordinary forces also occupy that sector, then returns one actual force if present. It is still used if zero forces remain. Canceling the CHOAM power leaves the marker concealed.',
'All four AI profiles choose from their own private token inventory, pay only the one-force shipment price, move the marker explicitly and reveal positive tokens when useful. They retain zero-token presence and use only public information to assess opponents. They also offer safe positive tokens from their own inventory during the allied opportunity, fund them with their own spice and accept or decline private offers using their own force and payment information. A human Richese player’s offer window holds an AI ally’s shipment. Pending responses, decisions and Truthtrance retain priority.',
'Marker-only and ordinary-plus-marker No-Fields compose with the selected Advanced Occupy profile under the same provisional additive pool. Either selected lead gets its actual variable-owner quote; original fixed Ecaz strength stays separate. Prevention restores only the chosen lead’s own pool. Basic mixed co-side, Homeworld custody, wider Truthtrance and other profile/module boundaries remain. Complete Richese starts and final acceptance stay gated.',
],
related: [
'richese-cards',
'richese-acquisition',
'card-truthtrance',
'movement',
'battle',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Native lifecycle, additive pools, card funding, distinct special inspection and current printed-value Truthtrance remain. Own concealed Planetologist extra-range or two-origin gathering uses current trainer/token/event and exact per-origin route/entry. Provisional Guild cross and actual Secret Ally cross/face-down return keep marker custody/history distinct from physical counters, with one rounded price and native response continuations. Broader special transports remain separate.',
evidence: ['game/shipment-price.ts', 'game/engine.ts', 'game/planetologist-movement.ts', 'game/bot-mobility.ts', 'game/truthtrance.ts', 'game/truthtrance-no-field-value.ts', 'game/guild-no-field-selection.ts', 'game/transport-quote.ts', 'game/nexus-guild-secret-ally-options.ts', 'game/nexus-guild-secret-ally.ts'],
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Original inventory/card/inspection and current-fact controls remain. Planetologist exposes the owner’s marker separately from physical counters in either movement mode. Existing Guild transport controls now quote marker1 separately from physical0..20, with persistent provisional cross/face-down-return guidance and the actual Secret Ally selector. The marker creates no physical force count.',
evidence: ['components/richese-allied-no-field.tsx', 'components/richese-no-field.tsx', 'components/planetologist-movement.tsx', 'components/planetologist-movement-action.tsx', 'components/harass-withdraw.tsx', 'components/game-table.tsx', 'components/private-battle-plan.tsx', 'components/mixed-shipment-fields.tsx', 'components/truthtrance-no-field-value.tsx'],
},
{
area: 'AI',
status: 'Partial',
detail:
'Existing own/allied, inspection and truthAnswer policies remain. All four minimal profiles may offer boosted own-marker routes or marker-plus-other-origin gathering through shared legal geometry/entry and a living trainer. A shared-quote adapter also offers current owned Guild cross or actual Secret Ally cross/return without using denomination for price. Strategy and calibration remain deferred.',
evidence: ['game/bots.ts', 'game/bot-guild-no-field-transport.ts'],
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Current-observation, printed value and physical counter distinctions remain recorded. Marker-as-one-force with Planetologist movement, Guild cross and actual Secret Ally face-down return is explicitly provisional. Native ally return stays prohibited; last-shipment history survives recall. No joint FAQ or complete combinations are claimed.',
evidence: ['docs/RICHESE_ALLIED_SHIPMENT_AUDIT.md', 'docs/GUILD_RATE_KARAMA_RULES.md', 'docs/NEXUS_GUILD_SECRET_ALLY_RULES.md', 'docs/RICHESE_NO_FIELD_RULES.md', 'docs/PLANETOLOGIST_RULES.md', 'docs/ATREIDES_FULL_PLAN_TIMING.md', 'docs/TRUTHTRANCE_FORCE_FACTS.md'],
},
{
area: 'Verification',
status: 'Partial',
detail:
'Native trained-leader/shipment/movement cases and controlled submit callbacks cover concealed Planetologist range and gather routes plus legal continuation. Earlier scoped Truthtrance, inspection, allied and recovery evidence remains historical. Complete modes, broader combinations, browser/mobile/deployed and final assurance remain due.',
evidence: [
'tests/fixture-guild-no-field-transport.ts',
'tests/guild-no-field-transport-engine.test.ts',
'tests/guild-no-field-transport-quote.test.ts',
'tests/bot-guild-no-field-transport.test.ts',
'tests/fixture-planetologist-no-field-gather.ts',
'tests/planetologist-no-field-gather-engine.test.ts',
'tests/planetologist-no-field-gather-controls.test.tsx',
'tests/fixture-planetologist-no-field.ts',
'tests/planetologist-no-field-engine.test.ts',
'tests/planetologist-no-field-controls.test.tsx',
'tests/planetologist-movement.test.ts',
'tests/planetologist-movement-controls.test.tsx',
'tests/richese-no-field.test.ts',
'tests/richese-no-field-engine.test.ts',
'tests/richese-no-field-review.test.ts',
'tests/richese-no-field-bots.test.ts',
'tests/richese-no-field-recovery.test.ts',
'tests/choam-gamont.test.ts',
'tests/richese-allied-no-field.test.ts',
'tests/richese-allied-no-field-review.test.ts',
'tests/richese-allied-no-field-bots.test.ts',
'tests/richese-allied-no-field-recovery.test.ts',
'tests/allied-marker-guild-rate.test.ts',
'tests/harass-no-field.test.ts',
'tests/fixture-harass-no-field.ts',
'tests/no-field-reinforcements.test.ts',
'tests/fixture-no-field-reinforcements.ts',
'tests/ecaz-occupy-mixed-no-field.test.ts',
'tests/fixture-ecaz-occupy-mixed-no-field.ts',
'tests/ecaz-occupy-mixed-no-field-opponent.test.ts',
'tests/no-field-full-plan.test.ts',
'tests/fixture-no-field-full-plan.ts',
'tests/no-field-full-plan-occupy.test.ts',
'tests/fixture-no-field-full-plan-occupy.ts',
'tests/truthtrance-no-field-value.test.ts',
'tests/truthtrance-no-field-engine.test.ts',
'tests/fixture-truthtrance-no-field.ts',
],
},
],
},
{
id: 'stone-burner',
title: 'Stone Burner: undialed force tokens',
category: 'Cards',
coverage: 'Partial',
summary:
'Choose a leader effect after revelation; undialed physical tokens decide the battle.',
steps: [
'Any faction holding canonical Stone Burner may commit it as a Weapon / Special. It is a named special weapon for Voice, not a poison or projectile weapon. Prescience reveals its actual card identity while other plan elements stay private.',
'After both plans reveal, choose to kill both leaders or ignore the strength of leaders who otherwise survive. Neither leader strength nor Kwisatz Haderach strength determines this battle. The choice affects deaths and bounty, not which undialed-force comparison is used. Ignoring strength supplies no protection against another weapon.',
'Compare the number of physical force tokens not dialed into battle. The aggressor wins a tie unless the actual held Habbanya Ridge Sietch advantage decides it. Dialed losses and spice support still follow their normal rules; elite strength is not an extra physical token.',
'With Harass & Withdraw, this prototype provisionally compares undialed tokens remaining after successful withdrawal. An opposing successful Traitor cancels the return and decides the outcome instead. In Occupy, only the card user’s pool returns; original fixed Ecaz commitment and the other ally’s undialed counters remain. This timing is an explicit implementation interpretation, not a publisher ruling.',
'In the existing native Advanced Occupy prototype, Reinforcements still pays its original own-reserve cost with same-plan, opposing or Mirror-copied Stone. Its +2 normal-score bonus adds no physical undialed tokens, dial, support or on-board casualties. Original mode choices, Traitor precedence and physical Stone/Mirror retention remain unchanged; other profile/module boundaries stay.',
'New battles with winner-changing physical allocations provisionally ask each ambiguous side to commit its undialed physical total after revealed modes and actual withdrawal. All required values stay sealed until everyone commits. The winner chooses compatible ordinary/elite losses afterward. Ordinary and invariant-winner battles keep their usual later casualty choice. Older battles retain their original public-only guard. No hidden opposing plan or No-Field value is inspected to decide precommit availability.',
'Clean selected CHOAM/Ix profiles reuse the existing provisional original Stone-first, then uncopied Tooth order; Mirror copies still choose before their originals as printed. The earlier priority question remains unanswered. Physical-count commitment timing is also an explicit prototype procedure, rather than a publisher clarification.',
'Selected Ix/CHOAM retains original Tech3+ and Advanced Strongholds2+, with genuine setup, delayed income and earned end-Mentat custody. Original47 and independent50 decks keep the separate Richese cache. Native optional-module and Ecaz/Moritani integrations retain their existing setup requirements and preview warnings; a physical-count commitment does not certify every combination.',
'Traitor and Lasgun–shield explosion precedence remain intact. Ordinary bounty applies unless another effect suppresses it. Stone Burner uses the general winning battle-card retention rule: a winner may keep it, and a losing played card is discarded. Normal Moritani ally retention may apply.',
'The post-reveal choice is bound to the current battle event and cannot be repeated after refresh. Review both revealed plans and select one mode; there is no separate victim or death confirmation.',
],
related: [
'card-richese-stone-burner',
'richese-cards',
'battle',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'New original Basic/Advanced mixed-force and copied Stone comparisons collect sealed physical totals only when the winner depends on them. Later typed losses, mandatory cleanup and native aftercare retain that count. Ordinary/invariant and legacy behavior remains; broader combinations and complete modes stay unfinished.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Weapon/prescience selectors, inspectors and both reveal modes remain. The owned physical-total control explains provisional sealed timing and stays visible until commitment; later matching ordinary/elite loss choices remain separate.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All profiles generate legal Stone candidates, choose a reveal mode and commit an offered own physical total. Native two-sided programmes verify both owned choices; strategic refinement and calibration remain deferred.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'Explains physical-token victory, both leader choices, sealed total commitments, later typed losses and the explicitly provisional timing/source boundary.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'The physical-total checkpoint passes frozen16-file146/146, types/lint/build and14 original-action/rendered-control programmes: paid native Basic/Advanced Stone, actual next-turn Mirror, both mixed sides in either seat order, both winners and matching later typed alternatives. Four policies make both private choices legally. Earlier mobile/marker/Habbanya evidence stays dated. Framework aliases/CSS stubs mean no visual/browser/deployed acceptance; comprehensive combinations, assurance and complete modes remain open.',
evidence: [
'game/stone-burner-allocation.ts',
'game/battle-casualty-commitment.ts',
'components/stone-burner-allocation.tsx',
'tests/stone-burner-allocation.test.ts',
'tests/stone-burner-allocation-engine.test.ts',
'tests/stone-burner-allocation-controls.test.tsx',
'tests/fixture-stone-burner-allocation.ts',
'docs/STONE_BURNER_ENGINE_AUDIT.md',
'tests/stone-burner.test.ts',
'tests/stone-burner-engine.test.ts',
'tests/stone-burner-review.test.ts',
'tests/stone-burner-bots.test.ts',
'tests/stone-burner-recovery.test.ts',
'tests/stone-harass-quote.test.ts',
'tests/stone-harass-runtime.test.ts',
'tests/ecaz-occupy-harass-quote.test.ts',
'tests/stone-reinforcements.test.ts',
'tests/ix-revealed-weapons.test.ts',
'tests/fixture-ix-revealed-weapons.ts',
'tests/native-stone-modules.test.ts',
'tests/fixture-native-stone-modules.ts',
'tests/fixture-independent-card-modules.ts',
],
},
],
},
...RICHESE_CARD_DEFINITIONS.map(
(definition): RuleTopic => ({
id: `card-${definition.card.id}`,
title: `${definition.card.name} — Richese`,
category: 'Cards',
coverage: 'Partial',
summary: `${definition.printedType}. ${definition.summary}`,
steps: [
...definition.gameplay,
definition.card.effect === 'juiceOfSapho'
? 'Use the Juice of Sapho panel for an available order change or pre-plan aggressor. Later intervention and other timing modes remain unfinished; consult the timing guide.'
: definition.card.effect === 'karama'
? 'This physical Karama uses the existing generic handler in development fixtures. In the explicit Semuta preview, clean printed cancellations of CHOAM Charity, Inflation or Bene Gesserit Charity pause on the public cost before settling that response; a clean printed normal-auction purchase or winning-bid payment pauses before its reserved lot settles; and a printed cancellation of any ordinary native CHOAM Worthless or Cunning power pauses on its public cost before the denial completes. Richese starts are unfinished previews; other Karama-to-Semuta reactions remain unavailable.'
: definition.card.effect === 'distrans'
? 'Use the Distrans transfer panel to choose another player and a separate held card. Open-bid timing and self-transfer remain guarded pending clarification.'
: definition.card.effect === 'nullentropyBox'
? 'Use the Nullentropy Box panel to pay two bank spice for a private discard search. Both modes provisionally permit full-hand retrieval as an atomic exchange that discards the Box and leaves the final hand within its current limit. Provisional Guild refund claims remain guarded.'
: definition.card.effect === 'ornithopter'
? 'Use the Ornithopter controls with one unused normal/Hajr movement and a selected group/destination. Two card groups stay distinct, while Hajr may reuse their forces afterward. A genuinely recovered Hajr may be legally replayed for another grant. Advanced needs a fresh immediate-after-movement opportunity. Kulon retains the fixed maximum three and extends both normal groups. Advisor/card and wider module combinations remain unfinished.'
: definition.card.effect === 'residualPoison'
? 'Use the Residual Poison panel before either combatant commits a leader. A shared preparation step provides an opportunity regardless of hand contents; advanced Harkonnen tables remain guarded pending the secret-captive ruling. In the explicit Semuta preview, a clean death pauses after public disposal for the neutral offer even if one combatant is already ready. The opponent’s readiness remains; the Poison player must ready again. Inspected battle commitments remain outside this reaction.'
: definition.card.effect === 'stoneBurner'
? 'Use Stone Burner in the weapon selector and review public dial/support feasibility before sealing. Clean selected CHOAM/Ix now uses visibly provisional original Stone-first then uncopied Tooth order; copy-first and physical allocation guards remain.'
: definition.card.effect === 'mirrorWeapon'
? 'Choose physical Mirror in a supported CHOAM/Richese-deck table, including clean selected Ix and bare Basic or Advanced Ecaz/Moritani. Copied Tooth or Stone chooses before its original. The user-selected winning physical-Mirror retention still applies after copied Tooth or Artillery. Original Stone/Tooth provisionally uses Stone-first order. Other profile/module and public-start gates remain.'
: definition.card.effect === 'portableSnooper'
? 'Choose Portable Snooper as your ordinary poison defense, or use the late-defense panel after reveal before your own traitor decision. It uses ordinary winner retention and cannot stop Poison Tooth.'
: definition.card.effect === 'semutaDrug'
? 'In the explicit Richese development preview, every seat sees a neutral response to supported clean discards. A CHOAM & Richese game may include the Ix deck: Thumper pauses before worm/spice draw; Amal pauses after halving spice before opening resumes. Other public sources include ordinary cards, paid Box, Ornithopter, Distrans, definite ordinary Truthtrance answers including queued questions, supported shipment promises and battle answers before or after plan submission/reveal, four clean Sapho scopes, pre-leader Residual Poison, printed Karama canceling clean CHOAM Charity, Inflation or Bene Gesserit Charity, a clean printed Karama normal-auction purchase or winning-bid payment before lot settlement, a completed CHOAM card sale after its bank income, clean Kulon Worthless disposal before its movement bonus, proactive or reactive La La La disposal before blocking free revival, proactive or reactive Baliset before restricting movement, proactive Trip to Gamont before its ordinary/elite return or native No-Field reveal and capped recall, accepted Jubba Cloak before storm protection, and three battle batches. A private normal-auction or Black Market Ixian ally replacement also pauses before drawing, without showing its face until a holder commits; original payment and seller income settle once. Cache purchases cannot use native Ixian allied replacement. Ordinary definite Truthtrance answers pause even when another question stays reserved or the answer bound a supported shipment or unsubmitted battle-plan promise. Submitted/revealed plans bind no new promise, but their answers still offer Semuta without changing the plan. Under the user-selected exchange ruling, Commit may replace Semuta even at your faction hand limit: acquisition and Semuta disposal settle atomically, without increasing your completed hand. Reserved incoming cards still need room. For multiple eligible cards, inspect and select exactly one after commitment. Saved effects resume once. Other private discards, Karama uses, other reactive Worthless uses, inspected Residual Poison battles, nested responses, other pending rewards and wider interactions remain unfinished.'
: 'Reference component only: this Richese card’s game actions are not enabled.',
...(definition.card.effect === 'semutaDrug' ? [
'Mandatory and winner battle discards also pause before native Advanced Harkonnen capture. Claim or Continue completes the original casualties and card cleanup before the capture offer; it does not sample a captive early or repeat capture. Other pending rewards remain outside this bounded path.',
'Mandatory and winner battle discards also pause before native Tleilaxu Face Dance. Claim or Continue preserves the original winner’s casualties and card cleanup, then restores the same private Face Dancer opportunity. Replacement, leader death and force sources remain native; the claimed Treachery card stays with its claimant, and no Face Dancer card becomes a Semuta target.',
'Mandatory and winner battle discards also pause before quoted Advanced CHOAM force-payment income. Claim or Continue leaves the original amount unpaid through casualties and card cleanup, then opens the same allow/Karama response. Allow pays once; cancellation sends that income to the bank without refunding the original force payments. The original post-battle market still completes afterward.',
'Mandatory and winner battle discards also pause before a native Auditor opportunity. Claim or Continue preserves the original survival limit and opponent-used card identities, then eligibility and the full cancellation price use the current opposing hand. A card acquired from the other combatant can be eligible if the audited player did not use it. Payment or private inspection resumes once; only CHOAM receives the historical snapshot.',
'Fresh three-through-six-seat Basic/Advanced Richese games with CHOAM and optional Ix may retain original unused Tech Tokens under the existing native roster prerequisites. Mandatory and winner discards now offer Semuta before the original winner takes one loser-owned token. Claim or Continue leaves every token and income ledger in place until original cleanup finishes; the winner’s selected award still precedes Face Dance. Advanced may additionally retain original unused Stronghold Cards at two through six seats; combining Tech requires three through six. The six separate public module cards remain unowned until the actual final Mentat assignment, using the board after effects such as Gamont. Neither Semuta claim nor its original closing CHOAM continuation awards a Stronghold Card early. Original Leader Skills require the explicit entry described below; other overlays and the separate Basic Moritani entry remain excluded.',
'A mandatory loser-card discard may also offer Semuta while the original winner’s compulsory used card remains reserved. For native Ixians, claim or Continue settles the original casualties, then restores the one-for-one Suboid/Cyborg substitution and its Karama response. The winning used Poison Tooth is not discarded until substitution or decline finishes; only then is that physical Tooth a separate fresh target before optional winner cleanup.',
'In the Basic native Moritani entry, winner compulsory/optional card discards may pause before the losing ally’s original retention choice. After that ally chooses one eligible played card or declines, native Karama finishes first; the completed unkept-card batch then offers Semuta. A kept or unrelated hand card is never a target. Multiple fresh cards require commitment and one private selection; taking a winner’s card does not add it to the original retention pool. Advanced Moritani, Nexus retention and unresolved casualty parents remain separate.',
'A printed Karama canceling native Harkonnen capture, CHOAM Auditor or quoted battle income, Ixian casualty substitution, or Basic Moritani allied retention now offers that exact public cost before the original cancellation finishes. Claim or Continue restores the saved response and cancels once. Acquiring the cost card cannot restore a captive, inspect a hand, pay the canceled income, exchange casualties or keep the proposed allied card. Later native card cleanup and markets still finish; Worthless conversion, other cancellations and module combinations remain separate.',
'A printed-role Karama stopping Richese’s compulsory cache auction or allied card gift also offers its exact used cost before prevention completes. Claim or Continue resumes that original prevention once. The cache keeps its cards and frozen ordinary count, including any completed Black Market reduction; a prevented gift stays with Richese and its original parent resumes. Recovering Karama does not repeat the attempt, transfer the gift or replay a paid purchase. Existing gift retry protection remains.',
'When Semuta itself was proposed as the now-prevented allied gift, its donor may spend it to claim that counter’s used cost. Prevention first retains Semuta and restores the original parent; the same committed response then spends Semuta and takes the cost, without a second prevention or transfer to the ally. Passing keeps Semuta. Other commitments remain enforced.',
'Printed-role Karama stopping Atreides auction inspection, Ixian auction preparation or Advanced Technology also offers its exact cost before prevention. Claim or Continue resumes the original lot or ordinary draw once, without new inspection, extra Ix choice or exchange. Technology stays used and its original unseen lot remains; the native Atreides peek follows. If outgoing Semuta was selected for that now-prevented exchange, only that reservation releases so Semuta can claim the counter’s cost. Other commitments and independent knowledge remain.',
'Printed-role Karama stopping clean native Tleilaxu revival income offers that exact used cost before income prevention. The ordinary or Ghola revival has already completed: returned forces/leaders, actual payment, normal/free/elite allowance use and the free-income history stay unchanged. Claim or Continue withholds the original income once; taking its counter cannot repeat the revival or recover an already discarded Ghola. Ghola’s own earlier discard is a separate opportunity. Unfinished battle, Ambassador, market and arrival parents retain their separate boundaries.',
'Printed-role Karama stopping a clean native CHOAM revival benefit, Tleilaxu granted force limit or discount, early leader revival or Advanced foreign Ghola also offers its exact used cost. The original request stays unpaid and its counters or leader stay in the Tanks through the offer. Claim or Continue finishes the original prevention once: native rules may abandon the request, reprice it, open its remaining response or complete an affordable return. Unfunded repricing returns nothing and consumes no allowance. Any income follows the actual return once; taking Karama cannot repeat the request. Other unfinished parents remain separate.',
'Printed-role Karama stopping native Fremen Storm protection, worm survival, allied worm protection or Advanced additional-worm placement offers its exact used cost before prevention. Claim or Continue finishes that cancellation once. Storm entry keeps its already-deposited cohort and queued arrival through the offer; denial then kills that original group without shipping again. Storm traversal, devouring, later survival responses, Spice draws and rides remain native. A summoned worm retains its own saved parent until native completion. Other unfinished parents retain their separate boundaries.',
'Printed-role Karama stopping native Voice, ordinary Prescience, Kwisatz Haderach, elite strength, Fremen support or CHOAM battle aid offers its exact used cost while the original battle waits. Claim or Continue finishes that prevention once, then native preparation or the next power check resumes. The offer does not answer Prescience, seal or reveal plans, charge support, spend a reserved pledge or change the forces. Taking Karama does not restore the canceled benefit. The separate live Nexus borrowed-Voice parent retains its existing cancellation path; wider combinations remain unfinished.',
'Karama stopping Harkonnen’s extra card after a purchase, a Richese No-Field declaration or Harkonnen’s Traitor call for an ally also offers its used cost. Claim or Continue keeps the original purchase paid and prevents only the bonus draw. A denied No-Field moves no token or forces and charges no shipment; the original ordinary shipment or independent Ambassador reserve grant remains available. An allied Traitor cancellation preserves revealed plans and earlier votes, changes only Harkonnen’s effective call, then finishes the original battle once. The physical Traitor is never a Semuta target. Supported Ambassador cases are Basic; broader combinations remain unfinished.',
'Karama stopping native Ecaz or Moritani placement, Moritani’s earned Duke acquisition, Ecaz Occupy or Enemy of My Enemy also offers its used cost. Claim or Continue keeps earlier payments, physical tokens, the selected battle lead and paid entry intact, then applies the original denial once. Moritani may still reveal or decline its Terror token. Ecaz’s shared-stronghold Collection bonus is Advanced-only: a restricted fresh development setup offers this cost before ordinary collection settles, withholding only the canceled bonus. Basic collection has no such bonus; public Advanced Semuta starts and wider combinations remain guarded.',
'Karama stopping a native CHOAM sale, Richese Black Market, Ixian ally replacement or Fremen allied free-revival grant also offers its fresh used cost. Claim or Continue applies the original denial once: a canceled sale keeps its unsold card and earns nothing; Black Market returns through its unbid continuation; replacement keeps the original paid card and skips the exchange; the ally retains intrinsic revival rates and completed returns. Allowance still uses the original sale, auction, draw or grant controls. Only the used Treachery cost is fresh at this response.',
'Advanced advisor preparation, ordinary incoming-group matching and mandatory conversion after a ground move also offer the used Karama cost. Claim or Continue preserves the original auction or movement boundary, applies only native conversion denial and resumes once. Matching keeps the uncommitted groups and unused move; a completed departure keeps its transferred forces and queued arrival. The existing continuously-alone hold is provisional. Other advisor producers and broader parents remain unfinished.',
'Mandatory advisor conversions after committed Guild cross-shipment or reserve return, Trip to Gamont and a Storm sector also offer the exact used Karama cost. Claim or Continue retains the original payment, transferred or returned counters, used fuel and completed casualties. The original parent then resumes its arrival, Mentat choice or remaining Storm traversal once. Denial preserves the existing continuously-alone hold while its physical occurrence survives; it does not reverse the producer or stop later Storm casualties.',
'The same fresh cost response also follows committed Homeworld transport, completed battle losses and completed Face Dance replacement. Claim or Continue keeps typed deposits, paid fees, casualties, bounty, returned forces and spent cards. Only conversion denial changes; the original arrival, winner-card choice or battle aftermath then resumes once. No held winner card or Face Dancer becomes a candidate merely because its continuation remains pending.',
'Printed-role Karama stopping ordinary Basic Spiritual Advisors, Atreides Movement foresight, Advanced Fremen Storm knowledge or native Face Dancer replacement also offers its exact used cost. Claim or Continue finishes that original prevention once. The paid shipment and remaining turn stay intact; the stopped free packet is not placed. Foresight gains no new knowledge or draw. An original Bene Gesserit stance or Guild opening choice waits unchanged until the Atreides cost finishes. A stopped replacement retains the original Face Dancers and reserve, with its attempt still used. Storm opening acknowledgements must finish before cancellation; they are never bypassed or repeated. Complex Spiritual and arrival parents remain separate.',
'Printed-role Karama stopping ordinary native Fremen range, Cyborg range, Advanced Guild timing or HMS movement/collection also offers its exact used cost. Claim or Continue completes the original denial once. Fremen and Ixian forces remain in place with their move unused and current-use restriction intact; choose a legal replacement. Guild follows the original remaining queue under its native timing lock. A canceled HMS route neither relocates nor collects; only after the fresh cost finishes does the original Storm turn begin, including its normal Advanced card handling. No declaration, payment, movement, collection or turn opening repeats. Card-flight and other complex parents retain their separate boundaries.',
'The explicit fresh Leader Skills entry composes Semuta with original all-fourteen-card native Basic Richese/CHOAM or Advanced E1/E2 setup, retaining original Tech and Advanced Stronghold prerequisites. Actual offers train original living discs; the native Auditor remains ineligible. A completed Hajr discard can resume the same Movement owner before an original private Mentat question. Mandatory loser disposal can resume trained Suk casualty rescue or Rihani’s normal private inspection and optional skilled exchange before winner cleanup. Winning compulsory Artillery stays held through the original skill, then becomes its own fresh Treachery discard. Traitor/Face Dancer movement is never a Semuta target; no rescue, question, inspection or exchange repeats. Basic Ix mixtures, E3, other module/Banker overlays and public starts stay separate.',
'The fresh semuta --nexus-cards entry retains original native E1/E2 Nexus setup, optionally explicit Skills and original Tech/Advanced Strongholds. There is no starting Nexus hand: an actual qualifying closing draw follows a Nexus and settled alliance. CHOAM Secret Ally with CHOAM absent spends a Worthless and its Nexus for two bank spice before the public discard offer; CHOAM Betrayal with CHOAM seated commits one random actual hand-card discard without compensation before its private offer. Claim or Continue retires the original receipt once, without another payment or sample. Separate Nexus cards never become Treachery targets. Homeworlds, Discovery, E3, played-save conversion and public starts stay gated.',
'The same original native Nexus entry offers the actual CHOAM Cunning fuel discard for Kulon, Gamont, Baliset, La La La and Jubba. Any eligible held Treachery card keeps its printed identity and private face; there is no fabricated named Worthless. Original cancellation retains fuel and the spent Nexus. After allowance, Commit or Continue resumes the selected effect and parent once: one range bonus, one typed force return and original closing owner, stopped ordinary movement/free revival, or one threatened-territory storm protection. Jubba protects CHOAM forces, not spice; unprotected forces and covered spice still suffer the original storm. Kull retains its separate guard.',
'A distinct printed Karama canceling those five ordinary native CHOAM printed or Cunning powers also offers its public cost before the original denial completes. CHOAM retains the declared fuel; a Cunning Nexus remains spent. Claim or Continue restores the same saved response and one original movement, free-revival, storm or closing-Mentat suffix. Acquiring Karama cannot return the canceled force, grant range, stop the original request, protect the storm or restore Nexus. The retained CHOAM fuel is not a discard candidate; Kull and unsupported arrival/flight parents remain separate.',
'A printed Karama canceling the Emperor’s shared gift or extra allied revival also offers that exact public cost before the denial completes. The canceled share moves no spice, forces or revival; the Emperor’s ally and extra-revival ledger are unchanged. Claim or Continue restores the saved response and finishes the cancellation once. Only the actual Semuta holder sees the private claimant choice; other seats see the neutral offer.',
'A printed Karama canceling original paid Guild shipment income, non-Ambassador Emperor auction income or Richese special-purchase income also offers its exact public cost before the native denial. The price and physical transaction have already committed: claim or Continue cannot refund spice, re-ship forces, undo cache acquisition or replay a purchase. Original Movement, next-lot inspection or the Richese purchase’s suspended controls resume once. A winner may spend the very Karama it just bought; claiming that identity does not reverse its payment. Homeworld and Ambassador payment compositions remain separate.',
'A printed Karama canceling native Guild transport permission or shipment rate now offers that exact public cost while the original reserve, cross/return or typed Homeworld declaration remains unpaid. Claim or Continue restores and applies that cancellation once. Recovering the cost never restores a denied route, retains the native discount, finances an unfunded group or repeats shipment. Ordinary movement and legal replacements remain; independent price grants stay distinct.',
'A printed Karama buying another active player’s shipment price also offers its exact fresh cost before that same original grant activates. Claim or Continue preserves the original beneficiary, creator and half-normal bank-paid price. Physical recovery ends the provisional stop-refund eligibility for that cost, even if the claimant later discards it again. Guild can spend that very recovered card for an actual special stop without also refunding it to the former owner. Unclaimed original costs retain their older refund; this is selected source composition, not a publisher worked example.',
'Printed native special-Karama costs now offer Semuta at their original disposal point. Recovery or Continue resumes the same committed native effect once even when its physical cost changed hands. Emperor revival already happened before its native disposal and is not repeated. CHOAM has a separate later private batch for its selected cashout cards after one earned credit: commit before inspection and recover one fresh card, never the old activation or one per discarded card. Original once-use, typed sources and refund remain; Advanced E3 entry keeps its separate gate.',
'A native Advanced BG Worthless-as-Karama cost also offers its actual physical card before the original conversion response. Claim or Continue cannot turn that card into a printed Karama, grant BG’s role to its new faction or bypass its native counter. A later printed counter cost is a different fresh event; taking it still denies the conversion. Original shipment/power/auction/winning-payment bindings and passed history remain. Allowed converted prices retain claimed-cost provenance even after later real CHOAM disposal, without a duplicate stop refund.',
'The private semuta --discoveries entry composes original Richese/CHOAM and optional Ix Discovery setup, optionally unused Tech3+ and Advanced Strongholds, without Skills, Homeworlds, Nexus or E3. An entitled physical Truthtrance used as Karama offers its original fresh cost before the same price, cancellation, normal-auction or native special effect resumes. Emperor revival already happened and is not repeated. A physical Karama used as Truthtrance offers after its single definite answer. Recovery changes custody, never the printed face or original effect. Controlled Shrine setup evidence is not natural draw/entry or complete-mode acceptance.',
'The separate fresh semuta --homeworlds entry retains original Richese/CHOAM and classic Homeworld occupation setup with exact CHOAM and no other modules. Paid Box search, clean Distrans transfer, definite Truthtrance answers, used ordinary specials, paid Kaitain disposal, Tupile cleanup and printed Karama canceling native Guild/Emperor/Richese-purchase income offer Semuta. Native printed Kulon, Baliset, La La La, Trip to Gamont and Jubba costs also pause before their original effect: claim/pass adds one movement bonus, denies free allowance without charging/moving forces, stops the uncommitted Baliset move, returns one original board counter before the same CHOAM close, or applies protection before the same recorded storm moves. Printed Karama canceling these powers pauses separately before denial; the retained Worthless fuel is not a candidate. A canceled reactive Baliset resumes its original declared move once; canceled Kulon/La La La/Gamont/Jubba do not apply their effects. A recovered card grants no other faction CHOAM power. Kaitain private groups require commitment before selection; each Tupile holder has a separate cost. Native income denial retains payment and the original occupied-share allocation. Basic unresolved epochs, Kull, other producers and public starts remain guarded.',
'Legal completed CHOAM market sales also offer their used card in the Homeworld profile. Worthless cashout keeps its original two-spice credit; a non-Worthless duplicate keeps its three-spice credit and the original same-name witness stays held. The high-Tupile Worthless-sale prohibition still applies, including duplicate Worthless sales. Claim/pass cannot repeat payout, undo the actual reserve shipment or replace the original market close; no new bank-income interpretation is made.',
'Final Ornithopter disposal also offers its used card in the Homeworld profile after the one-group range-three or original two-group movement completes, including an early end with no useful original group. Claim/pass cannot move those counters again or replay the paid native shipment; unused movement entitlements retain the shared Hajr composition, while advisor and Homeworld-transfer boundaries remain. Clean Sapho Once Around and unstarted Movement first/last costs likewise offer after reordering the finite unacted queue. Earlier bids/funding and physical storm order stay committed, and the same next bidder or combined turn resumes once. Cyclic auctions, partly completed turns, first-versus-Guild and late battle timing are not opened.',
'Original Homeworld battle disposal offers accepted losing cards, later mandatory winning cards and optional winner-selected cards as separate fresh events. Commit and exact selection recover at most one other player’s newly discarded card; unselected cards stay in the pile. The original paid deployments, accepted result, leader deaths and casualty obligations remain committed, with the same native winner cleanup and rewards afterward. A recovered card cannot replay combat or consume another original opportunity.',
'Clean Homeworld Residual Poison disposal offers its used card after exactly one native random eligible leader enters the Tanks, with no spice bounty or force loss; claim/pass resumes the original shared preparation and does not redraw the victim. Early Sapho aggressor disposal likewise keeps the original participants/chooser and changed ordinary tie priority, while clean between-battle first/last disposal keeps earlier resolved battles and only reorders remaining chooser opportunities. Physical storm order is unchanged. Readied or inspected Poison costs, late Sapho timing and Advanced Harkonnen captive disclosure remain outside these clean reactions.',
'Printed Karama canceling original CHOAM opening income or native Inflation placement also offers its used card in the Homeworld profile. Claim/pass completes the same denial once: unpaid income stays withheld, and the original placement attempt remains spent with no token. Clean normal-lot printed Karama purchase and free winning-bid payment likewise offer their costs before exactly one original reserved card arrives without spice payment. Earlier bids, the normal pool, Richese cache, original wallets and later native controls stay committed. Richese lots, BG Worthless conversion, Kull and other cancellations remain separate.',
'The native Advanced BG extra-charity cancellation cost also offers printed Karama after the genuine claim allowance is consumed but before denial; claim/pass withholds the same extra allowance and cannot renew that turn’s claim. Wealthy Basic BG retains its original ordinary-charity guard. Allied Emperor gift and extra-revival cancellation costs likewise offer after original native setup, actual casualty/alliance and declaration: recovering the card does not transfer the canceled gift, return a counter or award extra revival. Original ally, populations, wallets, Tanks and native closing controls remain committed.',
'Original native Homeworld battle-reward cancellation costs also offer printed Karama: Advanced Harkonnen capture, native CHOAM Auditor and quoted force-payment income. Recovery preserves the accepted battle, paid support, leader death and original casualty/cleanup order, then completes the same denial. It cannot sample or transfer a captive, pay/inspect an audit, refund support or credit canceled income. An audit cancellation leaves any earlier allowed force-payment income intact. Existing exact roster, private-custody and source guards remain.',
'An ordinary Ghola played during battle also offers its consumed card after revival. Claim or Continue preserves the revived leader or forces and the opposing sealed plan, then normal planning resumes. It cannot revive again by resuming the receipt.',
'A completed Ghola can also be claimed while its native Tleilaxu one-spice income is waiting. The piece has already returned. Claim or Continue restores that same allow-or-cancel response without another revival or advance payment; normal revival allowances stay unchanged. This includes Tleilaxu using its own Ghola. Other pending effects retain their existing timing.',
'A finished Ornithopter in a fresh Basic Ecaz/Moritani table with Richese offers its own fresh discard before the original arrival. Claim or Continue preserves the moved group and movement counters. A clean Ambassador or Terror effect then has its own later discard event, with its original credit, replacement draw or gift. The single Semuta cannot be spent on both groups. Ordinary shared Ambassador/Terror entry also preserves its original provisional owner order through each fresh discard.',
'A completed paid Nullentropy Box search during battle offers only the used Box. Claim or Continue preserves the two-spice payment, private recovered card, already-shuffled pile and sealed opposing plan. The recovered card may be used in normal legal planning; the search is not repeated.',
'A clean Distrans transfer during battle also offers only the used Distrans. The private card has already reached its recipient; claim or Continue cannot repeat the gift or change a sealed plan. A recipient holding Semuta may claim the used Distrans and keep the already-transferred card.',
'Reactive Baliset and La La La also offer their used card after the accepted cost. The original uncommitted move or free-revival request is already stopped: claim or Continue installs the original restriction without moving forces, consuming movement, reviving or charging the denied request. Another legal move or paid revival remains available. Movement-card, Ambassador, Nexus and other competing parents remain separate.',
'A clean proactive Trip to Gamont also pauses for a selected elite or concealed No-Field. Claim or Continue returns the exact selected physical counter, or performs the native No-Field reveal and returns at most one actual force after reserve-capped materialization. A zero token reveals without inventing a force; taking the used card does not undo that effect or spend revival usage.',
'In supported bare Basic tables with Richese, one entry may earn both an Ambassador and Terror opportunity. Their existing provisional storm order stays fixed while CHOAM/Ix or Sabotage/Robbery discards offer their separate Semuta responses. Complete each fresh group before its original effect continues; the other earned opportunity waits. The table shows when the discard response is pending. Credit, replacement, gift and physical entry are never repeated.',
'Trip to Gamont in CHOAM’s final Mentat opportunity also offers the used card. Claim or Continue completes the selected return and restores that same CHOAM-owned opportunity. It does not check victory or advance the turn: CHOAM must still choose Finish and check victory, using the changed board.',
'Fresh bare public Basic Richese previews now initialize Semuta before genuine setup with selected native E1/E2/E3 families. Older games are unchanged; Advanced and optional modules retain their existing separate entries. Clean ordinary shipment/movement CHOAM and Ixian Ambassador private discards, including BG copies, park the original entry: CHOAM keeps its already-earned credit and Ixians draw one replacement after the reaction. A multiple-card private group requires commitment before exactly one selection. Original entrant actions then resume once. Existing Basic Sabotage/Robbery overflow keeps the original victim/draw, removed token, payment, forces and optional gift. Nested arrivals, completed movement-card provenance, wider module coverage and complete modes remain unfinished. The table labels the preview and its limits.',
] : []),
],
...(definition.card.effect === 'semutaDrug'
? {
checklist: [
{
area: 'Implementation' as const,
status: 'Partial' as const,
detail:
"Basic shared Ambassador/Terror entry now retains both original opportunities through their own source-qualified Semuta groups in the existing provisional storm order. Original credit/draw/gift and physical entry remain once only. Completed native Basic Ornithopter now offers its fresh group before the original movement-caused arrival. Clean Ambassador/Terror discards then use distinct events and original credit/draw/gift; one Semuta cannot pay twice. Other profile guards remain. Completed Ghola now offers Semuta before its exact conditional native one-spice income, including self-income. Claim/pass preserves returned pieces and normal quotas, then restores the original allow/cancel response once. Other parent guards remain. The Richese preview interrupts clean ordinary-card, paid Box, Ornithopter, Distrans, Truthtrance, four Sapho scopes, pre-leader Residual Poison, printed Karama canceling clean CHOAM Charity, Inflation or Bene Gesserit Charity or settling a normal auction purchase or winning bid, a completed CHOAM sale, clean Kulon, proactive or reactive La La La/Baliset and ordinary Trip to Gamont Worthless use, accepted printed Jubba before storm protection, Ix-deck Thumper/Amal and three battle discard stages, including before native Advanced Harkonnen capture. A private normal-auction or Black Market Ixian ally replacement pauses before its draw with a neutral, face-hidden offer; original payment and seller income settle once. Cache purchases retain their native allied-replacement prohibition. Ordinary definite Truthtrance answers pause whether or not another question remains reserved, and also when the answer bound a supported shipment or unsubmitted battle-plan promise. CHOAM sale income is committed before its neutral offer and the same market resumes once; Kulon adds one movement range, La La La blocks one target’s free revival, Baliset restricts the chosen player’s movement, ordinary Trip returns one selected force, and Jubba protects one CHOAM territory only after their offers. Karama’s physical cost is discarded before its neutral offer; the original response is canceled or the reserved lot settles once. Residual Poison commits one random leader death; Sapho commits its finite priority. Thumper waits before worm/spice draw; Amal restores an already-halved opening. Owner-only candidates and one physical Semuta transfer retain privacy. The user-approved full-hand exchange preserves final hand count and incoming reservations. Other Karama uses, other reactive Worthless uses, other private discards, nested responses and other pending rewards remain unfinished. Printed native Guild permission/rate costs now use a dedicated unpaid shipment continuation for reserve, cross/return and typed Homeworld sources; claim/pass applies the same denial/repricing once without delivery replay or invented funding. Printed shipment-price activation now has its own continuation: claim/decline creates the same original price once. Recovered physical cost retains the beneficiary/creator but loses provisional refund eligibility even after rediscard; the same recovered card can pay a real stop without being returned to its former owner. Printed native special costs now resume one committed native effect through effect/complete/cashout stages. Original Emperor post-revival disposal is preserved; CHOAM selected cards are a later private simultaneous batch after one credit. Existing native once-use, joint ordering and typed parent remain. Native BG physical Worthless cost now precedes the single original conversion emitter; the separately printed cancellation cost retains that pending use and still denies it. All four use bindings, incoming reservations and older passes remain. Allowed converted prices carry claimed-cost provenance through actual later rediscard/refund. Fresh private Discovery composition now connects both physical Shrine-role costs without changing original effects or printed identity. Fresh bare public Basic starts now initialize Semuta with selected native families. Clean CHOAM/Ixian Ambassador private batches, including BG copies, retain the original entry, already-earned credit and one later replacement draw. Older games and optional/Advanced scopes remain separate; nested originating-card coverage remains unfinished.",
},
{
area: 'Player controls' as const,
status: 'Partial' as const,
detail:
"The shared-arrival banner identifies a pending discard response while the native owner waits. All seats can Continue at the neutral fresh-discard boundary; only the actual holder sees Commit. In a mixed-owner battle batch, a committed holder can inspect and select only cards discarded by another player; nonholders receive no candidates. Fresh bare Basic Richese previews now enable the bounded reactions with selected native families. Actual persistent Ambassador reaction controls retain Continue, commitment and private multi-selection; optional/Advanced starts keep their existing scope. Earlier four original-action390px native cost/continuation journeys exercise full4 reserve claim, denied cross plus ordinary1, typed full2 all-seat decline, and poor2/full4 release then one-force full2. No overflow/browser/application error; one tool-only stale-node race was resolved with fresh evidence, not replay. Earlier four original-action390px price journeys start at actual activation: bank3 allowance while Guild holds the cost, same-card reserve stop, typed bank2 after all-seat decline, and same-card typed stop followed by real ordinary movement. No overflow/browser/application errors; two tool-only stale-node races were resolved without replay. Earlier four390px special-cost journeys cover original reserve/typed Guild prevention claim/decline and controlled CHOAM private Kulon selection plus Emperor post-revival cost claim. Two original/two controlled; actual native movement/public force inspectors, no overflow/browser/application errors. Four new original-action390px journeys start from actual Baliset controls: bank3 after native allowance, printed counter recovery with denial intact, original full4 Guild repricing and unchanged free Chaumurky acquisition. Native advisors/next-lot inspection finish, with no overflow/browser/application errors. Two controlled390px Shrine-role recovery journeys retain the bank3 three-force delivery and one definite answer.",
},
{
area: 'AI' as const,
status: 'Partial' as const,
detail:
"Eight shared-arrival suspended-group continuations accept69 legal proposals across both owner orders. Eight native Ornithopter/Ambassador-or-Terror later-discard continuations accept28 legal proposals; no new strategy or calibration. Earlier conditional Ghola-income continuations accept32 legal proposals across normal/full hands and all four existing profiles; all recover the card and allow the real income. No strategy tuning. All four AI profiles use their own projected hand to commit or pass the exact current event, and can choose only privately projected committed candidates. This is minimal legal participation, not tuned strategy. For both new native permission and rate cost parents, all four actual original-state profiles recover the exact cost through legal actions and preserve the original denial/repricing. No tuning or calibration. All four original-state profiles claim the price cost; a subsequent real owner action executes the retained bank-paid shipment. This is legal source participation, not a new strategy preference or calibration. All four existing profiles recover the original Guild stop cost via legal private actions, and the native prevention then executes once. No new preference, tuning or calibration. For each native BG cost and printed counter-cost family, all four existing profiles recover only the current fresh card through their private legal action. Native response allowance/denial remains separate; subsequent owner actions exercise the real retained source. No tuning or calibration. Thirty-two controlled legal-policy probes cover both physical Shrine-role events in both modes; no calibration. Four existing profiles also complete actual public Basic BG-copy CHOAM Ambassador reactions through twenty legal proposals; no new strategy or calibration.",
},
{
area: 'Documentation' as const,
status: 'Partial' as const,
detail:
"The guide distinguishes clean public ordinary-card, paid Box, Ornithopter, Distrans, definite ordinary Truthtrance answers (including queued questions, supported shipment promises and battle answers before or after plan submission/reveal), four Sapho scopes, pre-leader Residual Poison, printed Karama cancellation of CHOAM Charity, Inflation or Bene Gesserit Charity or clean normal-auction purchase or winning-bid payment, completed CHOAM card sales, clean Kulon/proactive La La La/Baliset/ordinary Trip to Gamont Worthless and accepted printed Jubba Cloak, Ix-deck Thumper/Amal and three battle batches from a private normal-auction or Black Market Ixian ally replacement, the cache replacement prohibition, privacy-neutral acknowledgements, the user-approved atomic full-hand exchange and remaining discard sources. The native Guild followup distinguishes unpaid transport from completed income and keeps existing denial/no-debt interpretations. Both original cards are actually auctioned; two extra active-price probes explicitly disclose controlled second-card acquisition. Printed price-cost activation is connected below; converted and special costs remain separate. The printed price-cost continuation and claimed-cost nonduplication extension are explicit. Unclaimed original refunds remain provisional and unchanged; recovery does not transfer or repeat the price benefit. Shrine costs and wider E3 entries remain separate; native BG and printed special costs are connected. Printed special costs and CHOAM cashout stages follow native disposal order without a new publisher timing ruling. Eight original and18 controlled paths plus2 original/2 controlled surfaces are explicit. Advanced E3 entry, Shrine costs and full assurance remain separate. The Worthless remains its actual printed role and does not grant BG conversion to a new faction. Native cost versus printed counter, four-use source/incoming bindings and claimed converted-price refund are explicit. Kull pre-discard priority is unchanged; stale native Kull fixture queues were corrected through real decisions. Shrine/E3 and final assurance stay separate. Shrine composition is documented separately from native BG conversion and from original Discovery acquisition evidence. Fresh public Basic admission, original-action Ambassador sources, clean shipment/movement boundaries, controlled full-hand/own-card tests and unfinished nested/module scope are now explicit.",
},
{
area: 'Verification' as const,
status: 'Partial' as const,
detail:
"Current shared-arrival proof passes12 files144/144, types/lint/build, eight gameplay/control/GameTable SSR journeys and eight existing-profile continuations accepting69 proposals. Real139-142-action sources, separate discard events, full-hand/copy/empty-grant edges and parent binding have focused proof. Earlier native-Ornithopter proof passes10 files135/135, types/lint/build and sixteen gameplay/GameTable SSR programmes. Eight existing-profile paths accept28 proposals. Real paid source prefixes and explicitly conserved prior-card acquisitions cover both modes, separate fresh groups, full hands and once-only native continuation. Source setup/dial/inventory and fixture type feedback is repaired before final frozen proof. Native Advanced E3, optional profiles and full-mode/browser/deployed/comprehensive gates remain open. Earlier conditional-Ghola proof passes10 files156/156, types/lint/build and eight actual-control/GameTable SSR journeys. Eight existing profiles accept32 proposals. Native160-action source plus explicitly conserved card staging covers claim/pass, full hands and allow/cancel; separate controlled self-income/leader cases retain physical identity and normal quotas. A private runner eligibility repair retains earlier passing checks by unchanged source identity. Full modes, wider parents, browser/deployed and comprehensive assurance remain open. The following counts are historical family evidence. Genuine setup, custody, hidden-hand parity, saved JSON, authenticated SQLite continuation and legal AI participation cover clean ordinary-card, paid Box, Ornithopter, Distrans, Truthtrance, four Sapho scopes, pre-leader Residual Poison, printed Karama cancellation of CHOAM Charity, Inflation or Bene Gesserit Charity or clean normal-auction purchase or winning-bid payment, completed CHOAM card sales, clean Kulon/proactive La La La/Baliset/ordinary Trip to Gamont Worthless and accepted printed Jubba Cloak, Ix-deck Thumper/Amal, a private normal-auction Ixian ally replacement and three battle discard stages. Other private producers, Karama uses, other reactive Worthless uses, pending rewards, full games and live deployment remain unverified. Earlier thirteen-file158/158 passes, including12 new cases. Thirty-two original-action runtime/policy paths and four original-action390px journeys pass; two separately controlled cross/typed active-price probes retain the original independent grant. No worker/D1/real-room/deployed assurance or complete-mode claim. Earlier eighteen-file234/234 passes, including8 new cases. Fourteen original-action runtime/policy paths and four actual original-action390px journeys pass; two explicitly controlled extra-stop-card acquisitions prove unclaimed refunds. The original same-card stop uses no extra card or staged acquisition. No worker/D1/saved/deployed or complete-mode assurance. Earlier sixteen-file224/224 passes with13 new behavior cases. Twenty-six runtime/policy paths pass:8 original-action Guild paths including4 profiles,18 explicitly controlled native-effect paths. Four actual390px journeys pass (2 original/2 controlled). Existing income/refund consumers use actual neutral passes. No worker/D1/saved/deployed or complete-mode claim. Earlier nineteen-file238/238 passes with8 new cases. Twenty-six original-action runtime/policy paths and four actual original-action390px journeys pass. One controlled acquisition/phase probe uses a REAL subsequent CHOAM rediscard and Guild stop without force/wallet staging or duplicate refund. Separate2 controlled Kull parent probes and3 repaired focused cases pass. No worker/D1/saved/deployed certification. Eight new Shrine cases pass in the57-case affected union, with eight controlled runtime paths and two actual controlled390px journeys; no natural draw/entry, recovery or deployed acceptance. Fresh Basic/Ambassador evidence passes twelve-file142/142, types/lint/build, ten original-action handler/table-rendering programmes and four existing profiles with twenty legal proposals. Public setup, actual one-spice Semuta auction, card purchase, placement/shipment and two actual ordinary movement entries retain35 main plus10 cache. Only unopened positions and original scalar/packet lotteries are selected. Full-hand/own-card edges separately stage conserved card transfers. Stale battle acknowledgements/module-rejection expectations and fixture types were repaired; representative old failures reproduced against the previous engine. Framework aliases/CSS stub; no browser, visual, saved-room or deployed acceptance. Wider nested/provenance scope and complete modes remain open.",
evidence: [
'tests/basic-semuta-ambassador.test.ts',
'tests/fixture-basic-semuta-ambassador.ts',
'tests/semuta-engine.test.ts',
'tests/semuta-recovery.test.ts',
'tests/bot-semuta.test.ts',
'tests/semuta-reaction-controls.test.tsx',
'game/arrival-overlap.ts',
'tests/fixture-semuta-arrival-overlap.ts',
'tests/semuta-arrival-overlap.test.ts',
'tests/semuta-arrival-overlap-ui.test.tsx',
'tests/fixture-semuta-ornithopter-ambassador.ts',
'tests/fixture-semuta-ornithopter-terror.ts',
'tests/semuta-ornithopter-ambassador.test.ts',
'tests/semuta-ornithopter-terror.test.ts',
'tests/semuta-ornithopter-native-controls.test.tsx',
'game/ordinary-discard-income.ts',
'tests/fixture-semuta-ghola-income.ts',
'tests/semuta-ghola-income.test.ts',
'tests/semuta-ghola-income-controls.test.tsx',
'tests/semuta-drug.test.ts',
'tests/treachery-discard-continuations.test.ts',
'tests/multiplayer-discard-continuations.test.ts',
'tests/battle-discard-continuations.test.ts',
'tests/battle-discard-recovery.test.ts',
'tests/terror-discard-continuations.test.ts',
'tests/terror-discard-recovery.test.ts',
'tests/box-discard-continuations.test.ts',
'tests/box-discard-recovery.test.ts',
'tests/box-discard-auditor.test.ts',
'tests/ornithopter-discard-continuations.test.ts',
'tests/ornithopter-discard-recovery.test.ts',
'tests/truthtrance-discard-continuations.test.ts',
'tests/truthtrance-discard-recovery.test.ts',
'tests/ordinary-card-discard-continuations.test.ts',
'tests/ordinary-card-discard-recovery.test.ts',
'tests/semuta-nexus-trade.test.ts',
'tests/semuta-nexus-betrayal.test.ts',
'tests/semuta-nexus-cunning-proactive.test.ts',
'tests/semuta-nexus-cunning-reactive.test.ts',
'tests/semuta-choam-karama.test.ts',
'tests/semuta-emperor-share.test.ts',
'tests/semuta-guild-income.test.ts',
'tests/semuta-emperor-income.test.ts',
'tests/semuta-kaitain.test.ts',
'tests/semuta-tupile.test.ts',
'tests/semuta-homeworld-guild-income.test.ts',
'tests/semuta-homeworld-emperor-income.test.ts',
'tests/semuta-homeworld-ordinary.test.ts',
'tests/semuta-homeworld-choam-movement.test.ts',
'tests/semuta-homeworld-choam-returns.test.ts',
'tests/semuta-homeworld-choam-storm.test.ts',
'tests/semuta-homeworld-choam-karama.test.ts',
'tests/semuta-homeworld-choam-sale.test.ts',
'tests/semuta-homeworld-ornithopter.test.ts',
'tests/semuta-homeworld-sapho.test.ts',
'tests/semuta-homeworld-battle-loser.test.ts',
'tests/semuta-homeworld-battle-winner.test.ts',
'tests/semuta-homeworld-residual-poison.test.ts',
'tests/semuta-homeworld-battle-sapho.test.ts',
'tests/semuta-homeworld-economic-karama.test.ts',
'tests/semuta-homeworld-karama-auction.test.ts',
'tests/fixture-semuta-richese-cache-karama.ts',
'tests/semuta-richese-cache-karama-engine.test.ts',
'tests/fixture-semuta-richese-gift-karama.ts',
'tests/semuta-richese-gift-karama-engine.test.ts',
'tests/fixture-semuta-auction-inspection.ts',
'tests/semuta-auction-inspection-engine.test.ts',
'tests/fixture-semuta-ixian-auction.ts',
'tests/semuta-ixian-auction-engine.test.ts',
'tests/semuta-prevented-gift-reservation.test.ts',
'tests/fixture-semuta-revival-income.ts',
'tests/semuta-revival-income-engine.test.ts',
'tests/fixture-semuta-revival-benefits-forces.ts',
'tests/semuta-revival-benefits-forces-engine.test.ts',
'tests/fixture-semuta-revival-benefits-leaders.ts',
'tests/semuta-revival-benefits-leaders-engine.test.ts',
'game/semuta-disaster-arrival.ts',
'tests/fixture-semuta-disaster-storm.ts',
'tests/semuta-disaster-storm-engine.test.ts',
'tests/fixture-semuta-disaster-worm.ts',
'tests/semuta-disaster-worm-engine.test.ts',
'tests/fixture-semuta-combat-declarations.ts',
'tests/semuta-combat-declarations-engine.test.ts',
'tests/fixture-semuta-combat-forces.ts',
'tests/semuta-combat-forces-engine.test.ts',
'tests/fixture-semuta-combat-capabilities.ts',
'tests/semuta-combat-capabilities-engine.test.ts',
'tests/fixture-semuta-harkonnen-bonus.ts',
'tests/semuta-harkonnen-bonus-engine.test.ts',
'tests/fixture-semuta-no-field-cost.ts',
'tests/semuta-no-field-cost-engine.test.ts',
'tests/fixture-semuta-allied-traitor.ts',
'tests/semuta-allied-traitor-engine.test.ts',
'tests/fixture-semuta-e3-placement.ts',
'tests/semuta-e3-placement-engine.test.ts',
'tests/fixture-semuta-ecaz-economy.ts',
'tests/semuta-ecaz-economy-engine.test.ts',
'tests/fixture-semuta-moritani-alliance.ts',
'tests/semuta-moritani-alliance-engine.test.ts',
'tests/fixture-semuta-native-markets.ts',
'tests/semuta-native-markets-engine.test.ts',
'tests/fixture-semuta-fremen-grant-cost.ts',
'tests/semuta-fremen-grant-cost-engine.test.ts',
'tests/fixture-semuta-ix-ally-cost.ts',
'tests/semuta-ix-ally-cost-engine.test.ts',
'game/semuta-advisor-arrival.ts',
'tests/fixture-semuta-advisor-preparation.ts',
'tests/semuta-advisor-preparation-engine.test.ts',
'tests/fixture-semuta-advisor-matching.ts',
'tests/semuta-advisor-matching-engine.test.ts',
'tests/fixture-semuta-advisor-alone.ts',
'tests/semuta-advisor-alone-engine.test.ts',
'tests/fixture-semuta-advisor-transport.ts',
'tests/semuta-advisor-transport-engine.test.ts',
'tests/fixture-semuta-advisor-gamont.ts',
'tests/semuta-advisor-gamont-engine.test.ts',
'tests/fixture-semuta-advisor-storm.ts',
'tests/semuta-advisor-storm-engine.test.ts',
'tests/fixture-semuta-advisor-homeworld.ts',
'tests/semuta-advisor-homeworld-engine.test.ts',
'tests/fixture-semuta-advisor-battle.ts',
'tests/semuta-advisor-battle-engine.test.ts',
'tests/fixture-semuta-advisor-face-dance.ts',
'tests/semuta-advisor-face-dance-engine.test.ts',
'game/semuta-spiritual-arrival.ts',
'tests/fixture-semuta-spiritual-cost.ts',
'tests/semuta-spiritual-cost-engine.test.ts',
'tests/fixture-semuta-spiritual-arrival.ts',
'tests/semuta-spiritual-arrival-engine.test.ts',
'tests/fixture-semuta-advisor-relocation.ts',
'tests/semuta-advisor-relocation-engine.test.ts',
'tests/fixture-semuta-advisor-gather.ts',
'tests/semuta-advisor-gather-engine.test.ts',
'tests/fixture-semuta-advisor-transport-matching.ts',
'tests/semuta-advisor-transport-matching-engine.test.ts',
'tests/guild-advisor-source-arrival-engine.test.ts',
'tests/fixture-semuta-advisor-ambassador-matching.ts',
'tests/semuta-advisor-ambassador-matching-engine.test.ts',
'tests/fixture-semuta-spiritual-ambassador-cost.ts',
'tests/semuta-spiritual-ambassador-cost-engine.test.ts',
'tests/fixture-semuta-spiritual-ambassador-arrival.ts',
'tests/semuta-spiritual-ambassador-arrival-engine.test.ts',
'tests/fixture-semuta-spiritual-revival.ts',
'tests/semuta-spiritual-revival-engine.test.ts',
'tests/fixture-semuta-spiritual-foresight.ts',
'tests/semuta-spiritual-foresight-engine.test.ts',
'tests/fixture-semuta-storm-dancer.ts',
'tests/semuta-storm-dancer-engine.test.ts',
'tests/fixture-semuta-fremen-guild-movement.ts',
'tests/semuta-fremen-guild-movement-engine.test.ts',
'tests/fixture-semuta-ixian-movement.ts',
'tests/semuta-ixian-movement-engine.test.ts',
'tests/semuta-homeworld-bg-charity.test.ts',
'tests/semuta-homeworld-emperor-share.test.ts',
'tests/semuta-homeworld-capture-karama.test.ts',
'tests/semuta-homeworld-choam-battle-karama.test.ts',
'tests/semuta-guild-transport.test.ts',
'tests/semuta-shipment-price.test.ts',
'tests/semuta-special-karama.test.ts',
'tests/semuta-bg-karama.test.ts',
'tests/semuta-shrine.test.ts',
],
},
],
}
: definition.card.effect === 'mirrorWeapon'
? { checklist: [
{ area: 'Implementation' as const, status: 'Partial' as const,
detail: 'Canonical physical Mirror, copy-first answers and physical retention now compose with bare Basic native E3, both coalition leads and actual Moritani combatants, including selected Ix typed pools. Original fixed Ecaz accounting, physical-owner scalar allocation and later native cleanup remain. Other profile/module boundaries stay separate.',
evidence: ['game/mirror-weapon-mode.ts', 'game/effective-weapons.ts', 'game/engine.ts', 'tests/basic-native-mirror-engine.test.ts'] },
{ area: 'Player controls' as const, status: 'Partial' as const,
detail: 'Actual native Basic selectors admit Mirror. Copied Tooth/Stone choices remain explicit, persistent and busy-disabled; original event actions advance the independent queue. Physical-owner allocation callbacks retain their real event/count and busy no-submit. Inline GameTable callbacks are rendered rather than directly invoked. Ix original Stone/Tooth priority remains visibly provisional.',
evidence: ['components/battle-preparation.tsx', 'components/game-table.tsx', 'tests/basic-native-mirror-controls.test.tsx'] },
{ area: 'AI' as const, status: 'Partial' as const,
detail: 'Twelve existing-profile native Basic continuations across both coalition leads and Moritani accept36 proposals plus256 separate native controls. Legal Mirror commitments use only the current own view. Earlier clean-Ix paths remain. No strategy or difficulty calibration.',
evidence: ['game/bots.ts', 'tests/ix-revealed-weapons.test.ts', 'tests/basic-native-mirror-engine.test.ts'] },
{ area: 'Documentation' as const, status: 'Partial' as const,
detail: 'Printed copy-first, user-selected physical retention and provisional original Stone/Tooth priority are distinguished. Combined modules and full-mode acceptance remain separate.',
evidence: ['docs/MIRROR_WEAPON_ENGINE_AUDIT.md', 'docs/STONE_BURNER_ENGINE_AUDIT.md'] },
{ area: 'Verification' as const, status: 'Partial' as const,
detail: 'Current17-file130/130, types/lint/build and six gameplay/GameTable SSR programmes pass. Genuine six-native Basic setup/alliance/battle with explicit conserved board/budget/card staging covers Ecaz, allied Ix and Moritani copied Tooth/Stone. Original Ix owner selects6/9 physical totals and later native losses; five Moritani counters beat four despite opposing dial9. Legacy fixture controls and unstamped guards are repaired before final frozen proof. Earlier proofs remain dated; browser/deployed, full modes/combinations and comprehensive assurance stay open.',
evidence: ['tests/ix-revealed-weapons.test.ts', 'tests/fixture-ix-revealed-weapons.ts', 'tests/mirror-weapon-engine.test.ts', 'tests/fixture-basic-native-mirror.ts', 'tests/basic-native-mirror-engine.test.ts', 'tests/basic-native-mirror-controls.test.tsx'] },
] }
: {}),
related: [
'richese-cards',
'choam-modules',
...(definition.card.effect === 'juiceOfSapho'
? ['juice-of-sapho']
: definition.card.effect === 'karama'
? ['card-karama']
: definition.card.effect === 'distrans'
? ['distrans-transfer']
: definition.card.effect === 'nullentropyBox'
? ['nullentropy-search']
: definition.card.effect === 'ornithopter'
? ['ornithopter-movement']
: definition.card.effect === 'residualPoison'
? ['residual-poison']
: definition.card.effect === 'stoneBurner'
? ['stone-burner']
: definition.card.effect === 'mirrorWeapon'
? ['battle', 'stone-burner']
: definition.card.effect === 'portableSnooper'
? ['portable-snooper']
: []),
],
}),
),
{
id: 'ecaz-occupy',
title: 'Ecaz Occupy: Basic and Advanced combined-army battles',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Ecaz chooses who leads its combined army; its opponent chooses when Ecaz is Low. Basic provisionally follows the main printed paragraph for odd as well as even counts: ceiling contribution/loss and floor survivors. Advanced retains its user-authorized revision. Usable controls and legal participation are connected; interaction refinement remains.',
steps: [
'When reciprocal Ecaz allies coexist with fighting forces, Ecaz chooses Ecaz or its ally to lead. With Homeworlds, Low Ecaz at zero through six native reserves gives that choice to the opponent; High at seven or more keeps it with Ecaz. The panel names the current chooser, and already-opened decisions retain their saved owner. Every participating whole-territory army must be clear of storm and connected; no component-only battle or casualties are created. The selected lead uses its own leaders, Treachery cards and spice; the original battle-order chooser is not replaced. Advisors are not fighters but retain their native voluntary fighter-conversion opportunity.',
'Bare Basic Ecaz tables support native Ixians, Tleilaxu, CHOAM and Richese with their selected families, classic seats and optional Moritani. Real setup and combined-battle guards remain; optional configurations retain their existing boundaries. Ecaz contributes and loses the ceiling of half its forces on an ordinary win; survivors round down. This follows the main paragraph provisionally because its odd-count FAQ conflicts. Basic support, funding and battle-support income are zero; CHOAM keeps five native leaders and Emperor/Fremen have no Advanced elite inventory.',
'With Advanced Occupy active, the total dial includes the ceiling of half the Ecaz fighters as mandatory full-strength contribution without spice cost, plus the chosen allied army strength. The variable army retains its native Fremen/Fedaykin or Emperor/Sardaukar properties even when Ecaz forms the plan.',
'An ordinary victory leaves the floor of half the Ecaz fighters alive and separately applies the variable army’s dial losses. A sole successful Traitor-call winner preserves both armies; an ordinary defeat, mutual Traitor result or resolved explosion removes the actual combined side. Ecaz and its ally share the printed same-faction Traitor/Face Dancer relation.',
'Eligible Karama can prevent Occupy after the lead choice and before powers/plans. The chosen lead remains lead and dials its own army; the other ally contributes zero. The plan editor then uses the new force pool and no fixed Ecaz strength.',
'An Ixian variable army takes its own typed losses and chooses surviving-Suboid substitution, even when Ecaz plans. Basic Suboids remain half strength and Cyborgs two without spice support. Your wheel uses that physical pool’s half steps, returning to whole Basic steps after Ecaz-only cancellation. Actual Ixians own substitution; the lead owns winner cards/continuation. Advanced CHOAM support income retains its original payer shares; fixed Ecaz strength and Basic plans create none.',
'A Tleilaxu winning co-side cannot Face Dance itself. External Face Dance returns both actual winning allied armies with a combined survivor maximum, while the selected winner keeps original rewards and card cleanup. Reserve/board zero/partial/full replacements remain native choices, not a copied player.',
'A native Richese ally may supply ordinary counters, a concealed No-Field or both under the selected Basic/Advanced provisional additive pool. Even a zero marker retains coalition presence. The selected actor gets its private variable pool/mixed notice; rivals do not. Both plans seal before one reserve-capped materialization, retaining ordinary counters and Richese-only variable losses. Ordinary Prescience follows the physical force owner; distinct Advanced special Karama keeps its private plan-read interpretation. Prevented Ecaz uses only its own pool; neither reading nor prevention reveals the marker early.',
'Stone Burner compares physical undialed counters, not total dial or paid strength: active Occupy contributes floor(Ecaz forces / 2) plus the ally’s native undialed tokens. Canceled Occupy compares only the selected lead’s own pool. Physical Mirror copies use the same comparison and retain their original cleanup. Hidden opposing No-Field preflight uses public possible pools, not its actual denomination; genuinely winner-changing typed allocations remain blocked.',
'With the independent variant, Harass returns only the actual card user’s undialed forces. An Ecaz user keeps the original mandatory ceil contribution committed at free full strength while its floor count returns; ally support is separate. An allied user subtracts fixed strength before choosing its native typed commitment. Canceled Occupy uses its selected lead’s own pool. Returned reserves are outside later casualties/explosion/Face Dance.',
'Reinforcements consumes three card-user reserves normal-first and adds +2 normal score, never support or physical arrivals. Under the provisional native order, an own No-Field materializes before that original reserve fee and successful Harass returns; three reserves must remain after reveal before this plan may seal. Original/copied Stone ignores +2 score but not the fee. Existing all-revealed-outcome cost/disposal remains provisional. Unsupported co-side profiles stay guarded.',
'Advanced numbers come from the user-authorized revised PDF, physical pages 32 and 19, not a new publisher erratum. Basic follows the main printed paragraph provisionally. Original faction/deck prerequisites, separate ten-card Richese cache and independent three-card variant selection stay. Ordinary-plus-marker Basic/Advanced Occupy extends the provisional additive interpretation, not the unresolved FAQ cap. Fresh plain/card Ecaz and standalone Ecaz/classic Skills retain ordinary Arrakis Occupy, including independent cards without other modules. Bare Basic native mixed markers are connected; unsupported overlays and full-mode acceptance remain separate.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'New original Homeworld coalitions assign the public lead choice to the opponent at Low Ecaz, preserving High/no-World and existing in-flight owners. Bare Basic selected native-family starts now retain their original setup and owner-labelled coalition outcomes, including allied zero/mixed Richese presence and actual Ix typed losses/substitution. Basic support stays zero; current physical pools drive half-step controls. Main-paragraph odd Basic and additive-marker policies remain provisional; optional/exotic refinement remains.', evidence: ['game/ecaz-homeworld-lead.ts', 'game/ecaz-occupy-battle.ts', 'game/board-resolution-quote.ts', 'game/battle-resolution-quote.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Lead controls and blocked reasons name the actual chooser and printed Low penalty. Actual Basic wheels expose half-step Ixian totals under either lead, whole steps after Ecaz-only cancellation, zero-support native plans and private Richese mixed bounds. Nine current rendered-table programmes retain original seal/reveal, typed/substitution and Collection controls. Earlier mobile journeys stay separate; no new visual/browser certification.', evidence: ['components/ecaz-occupy.tsx', 'components/face-dance-decision.tsx', 'components/game-table.tsx', 'game/ecaz-occupy-options.ts'] },
{ area: 'AI', status: 'Partial', detail: 'The opponent uses the original shared legal lead adapter at Low Ecaz; strategic refinement remains deferred. Four existing Basic profiles make twelve legal lead/plan/native-Ixian-substitution proposals through original Collection. Existing Advanced legal participation remains separate. Strategy and strength calibration remain deferred.', evidence: ['game/ecaz-occupy-options.ts', 'game/bots.ts', 'tests/ecaz-occupy-options.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The printed Low Ecaz opponent-choice penalty is distinct from authorized Advanced arithmetic and provisional main-paragraph Basic arithmetic are distinguished from the conflicting FAQ, specific Duke ruling and deferred interaction refinement.', evidence: ['docs/ECAZ_OCCUPY_RULES.md', 'docs/RULE_DECISIONS.md', 'game/reference.ts'] },
{ area: 'Verification', status: 'Partial', detail: 'Current Basic native12-file244/244, types/lint/build and nine controlled gameplay/rendering programmes pass. Public setup and actual Nexus/alliance/marker shipping precede labelled board/card/typed/budget staging; both leads, total3.5, native substitution, cancellation and zero/capped/mixed markers reach Collection. Four existing profiles provide12 legal proposals. Earlier Advanced/mobile/full-game evidence is historical; full modes, optional configurations, comprehensive assurance and deployed acceptance remain open.', evidence: ['tests/basic-ecaz-native-entry.test.ts', 'tests/basic-ecaz-native-occupy.test.ts', 'tests/fixture-basic-ecaz-native.ts', 'tests/fixture-ecaz-occupy-richese.ts', 'tests/ecaz-occupy-mixed-no-field.test.ts', 'tests/fixture-ecaz-occupy-mixed-no-field.ts', 'tests/ecaz-occupy-mixed-no-field-opponent.test.ts', 'tests/ecaz-occupy-battle.test.ts', 'tests/basic-ecaz-occupy-runtime.test.ts', 'tests/basic-ecaz-tleilaxu-occupy.test.ts', 'tests/ecaz-occupy-richese.test.ts', 'tests/ecaz-occupy-stone.test.ts', 'tests/ecaz-occupy-cards-runtime.test.ts', 'tools/faction-games.ts', 'docs/ECAZ_OCCUPY_RULES.md'] },
],
related: ['faction-ecaz', 'advanced-ecaz', 'ecaz-ambassadors', 'battle', 'victory', 'implementation-checklist'],
},
{
id: 'ecaz-loyalty',
title: 'Ecaz Loyalty: public Traitor Card',
category: 'Advanced & expansions',
coverage: 'Partial',
summary: 'Advanced Ecaz sets one randomly chosen native Traitor Card aside face up before the initial deal.',
steps: [
'Before any initial Traitor Cards are drawn, randomly select one of the five ordinary Ecaz Traitor Cards and set it aside face up. Everyone may inspect it. It remains outside the deck for the rest of the game, including later Traitor and Face Dancer draws.',
'Loyalty is automatic and cannot be stopped with Karama. It creates no player choice, payment or acknowledgment. The card names a leader, but does not remove, kill, transfer or otherwise change that leader disc. Duke Vidal has no Traitor Card and is never a candidate.',
'In new Advanced development games with Ecaz, the table displays the selected card before the Traitor choices. Inspect traitor enlarges its identity; refreshing or resuming the saved game keeps the same card. Basic games and games without native Ecaz do not use this power.',
'Older saved games that have already dealt their Traitor Cards retain that inventory; they do not gain a retroactive Loyalty draw. Standalone or paired native Ecaz/Moritani all14 Skills retains the original draw after public assignment, with optional independent cards and no unrelated modules. Ordinary allied Arrakis Occupy remains connected; shared-Duke training, Advanced Harkonnen and unsupported roster/module combinations stay guarded.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'One persisted native Ecaz card is selected before genuine initial dealing, excluded from setup and Nexus deck construction, and validated against all known circulating or retired Traitor locations. Older saves stay unchanged. Broader combinations remain gated.', evidence: ['game/ecaz-loyalty.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'A public named card and existing enlarged Traitor inspector appear before setup choices and during play, with internal help and no acknowledgment.', evidence: ['components/ecaz-loyalty.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles complete genuine setup through existing legal actions without choosing, rerolling or acknowledging Loyalty. Strategy remains deferred until game features are complete.', evidence: ['tests/ecaz-loyalty-engine.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Public setup, permanent card exclusion, normal leader custody and old-save limits have internal guidance and sourced developer notes.', evidence: ['game/reference.ts', 'game/faction-reference.ts', 'docs/ECAZ_LOYALTY.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Two-through-six-player deals, full Tleilaxu setup, Harkonnen and Tleilaxu Nexus draws, public projection, invalid-state rejection, all-profile setup, rendering and JSON continuity have focused checks. Final browser and checkpoint evidence is recorded separately; combined-module acceptance remains open.', evidence: ['tests/ecaz-loyalty.test.tsx', 'tests/ecaz-loyalty-engine.test.ts', 'tests/nexus-traitor-engine.test.ts'] },
],
related: ['setup', 'faction-ecaz', 'advanced-ecaz', 'ecaz-ambassadors', 'duke-vidal', 'implementation-checklist'],
},
{
id: 'ecaz-ambassadors',
title: 'Ecaz Ambassadors: placement and remaining effects',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'End-of-Revival placement, entry effects, cohort-eligible free revival, Ecaz Duke acquisition and consensual alliances have connected preview controls and public token guides.',
steps: [
'Ecaz has its reusable Ambassador plus five randomly selected Ambassadors from the other ten identities. Inspect the public supply, placed tokens, triggered group and unused pool to read each effect.',
'Placed Ambassadors are face up by designer clarification. This implementation also shows the unplaced supply openly by default; that supply policy is an interpretation, not an explicit official FAQ ruling.',
'After everyone finishes Revival and any CHOAM closing market is complete, Ecaz may choose a supply token and an ordinary stronghold outside the storm with no Ambassador. The panel shows the next price and available spice. Placed Ambassadors cannot relocate through this control.',
'The current closing order is CHOAM market, deferred technology income, then Ecaz placement. Income received at that point can fund placement. This combined order is an implementation choice, not a priority established by a combined official FAQ.',
'The first placement costs one spice, the second two, and so on that turn. A declaration opens a Karama response before spice is paid or the token moves. Canceling stops the remaining placement opportunity for that turn; previous placements and payments remain.',
'Finish Ambassador placement advances the phase. On a later turn the price begins at one again and the earlier placement block expires. Pending declarations survive reload without charging twice.',
'Destroyed tokens return to supply; triggered regular tokens are set aside, Bene Gesserit is permanently removed, and replenishment waits for all five random tokens. Storm/explosion destruction remains separate. The reusable Ecaz token returns to supply after acquisition or alliance proposal. Basic has an optional new-ally Duke loan; the supplied Advanced p30 automatically grants an available Duke after accepted consent.',
'When an eligible entrant reaches the reusable Ecaz token, Ecaz may acquire the available shared Duke for itself or its current reciprocal ally. The token returns to supply and its companions are unchanged. Direct acquisition persists unused until battle use or Moritani acquisition; that shared tenure is provisional. It is distinct from the optional Basic or automatic Advanced new-alliance turn loan. A fresh token entry is required, with no standing transfer action.',
'Unallied Ecaz may propose an alliance to an unallied entrant. Acceptance activates alliance abilities immediately. Basic then offers an optional Duke loan; Advanced automatically adds an available Duke under supplied PDF p30, without another acknowledgement. The first version releases a surviving loan after one battle, provisionally; an unused living loan is set aside at turn end. Unavailable Duke never prevents consent.',
'When another eligible faction enters a marked stronghold, Ecaz may trigger its Ambassador for itself or its current ally, or leave it in place. Ecaz itself, its ally, advisors and the faction matching the physical Ambassador do not trigger it. Ordinary shipment and native Guild transport settle their own income, BG Intrusion and accompaniment controls before queued entry, without replaying payment or forces. Actual busy controls and unsupported paired or module combinations remain guarded.',
'In supported bare Basic games with Ecaz and Moritani, a single entry that earns both an Ambassador and Terror opportunity retains both in their existing provisional storm order, including when other selected native factions are seated. A Fremen relocation or Guild shipment from the Ambassador resolves its own child arrival before the original queue continues. If that child reveals the same Terror token, it cannot trigger again for the original entrant; if it is left hidden, the original opportunity remains. Unsupported module interactions remain guarded.',
'Accompaniment joining retained BG fighters creates a distinct eligible child entry before the original shipper. Declining the child leaves the live token for the original entry; consuming it does not create a token to offer again. Advisors remain exempt. This existing child-first, live-token composition is explicitly provisional, not a publisher priority ruling.',
'Emperor grants five bank spice. Atreides records the entrant’s current Treachery hand privately for the beneficiary; Harkonnen records one randomly selected held Traitor identity, or Face Dancer identity for a Tleilaxu entrant. These snapshots remain in the recipient’s private inspection history, identify when they were taken, and do not become a live view of later changes. Opening, enlarging or closing them needs no game acknowledgement.',
'CHOAM lets the beneficiary choose any available hand cards, including none, for three spice each. Ixians require one available card to discard before drawing its replacement. Card controls respect projected reservations. After committing an Ixian exchange, a voluntary interruption must leave a card available for its required discard; a queued Truthtrance counts as already committed. A Bene Gesserit trigger permanently removes its token, then the beneficiary chooses an available effect outside the original supply for this group; unsupported copies remain visibly blocked.',
'The Richese Ambassador purchases the top Treachery Card for three of the chosen beneficiary’s own spice when executable. Normally this is automatic; in supported Emperor-absent Nexus tables, the committed trigger instead offers uniform beneficiary Pay or eligible Emperor Nexus Use, with no new decline. Under the provisional purchase composition, an actual unallied holder may prove/retain that price, with no bank payment or reimbursement. Original private inability still consumes the token without payment/draw and does not disclose the reason. Native Emperor income and Harkonnen bonus remain applicable to their original sources, with hand limits and Karama; original movement/worm continuation runs once. Ixian replacement still requires Bidding.',
'The Fremen Ambassador lets the beneficiary relocate one group already on the board directly to any available territory and sector, subject to storm and occupancy. Select physical forces from one territory, preserve elite quantities, and optionally include your concealed No-Field without revealing it. This independent move costs no shipment spice and does not use ordinary movement allowances. It can change sectors within one territory, but pieces already in the destination sector stay in place. Homeworlds and reserves are not board territories.',
'The mobile stronghold can receive a non-Ixian group only from the territory it points to. Ecaz and its ally may co-occupy under Occupy. Advisors keep their applicable stance and accompaniment locks; an eligible arrival can request fighters. CHOAM may use Baliset during Shipment and Movement; if allowed, choose another legal destination. Intrusion or Terror resolves before the original entrant continues. A destination that causes both settles the Intrusion first and then offers the committed Terror entry; no payment or force transfer replays. There is no extra decline after triggering; if no legal move remains, the effect finishes without moving pieces and its token stays consumed.',
'The Guild Ambassador grants an immediate free shipment of zero through four physical reserve forces for Ecaz or its ally, including typed elites. Choose a clear territory and sector; this does not spend ordinary shipment or movement, ally aid or a retained rate card. Fremen may use destinations outside their ordinary reinforcement radius, but their southern reserves stay on-planet and this effect never permits storm entry. Only Ixians may ship directly into their placed mobile stronghold.',
'During Shipment and Movement, Guild can use its special Karama to stop another eligible off-planet Ambassador shipment before forces arrive; it does not stop this grant during a phase-one worm sequence. A successful off-planet shipment may invite Bene Gesserit accompaniment and accrues applicable phase-five Heighliner income once. BG can accompany Ixians into the mobile stronghold. Projected accompaniment choices show blocked sectors and keep Polar Sink and decline available when legal. Intrusion, separate Terror and accompanying fighter-triggered Ambassadors finish before the original entrant or worm rider resumes.',
'In bare Basic Richese/Ecaz tables, No-Field may replace the whole Guild grant under an explicit provisional policy: concealed native0/3/5 counts as one and ships free; allied use reveals immediately within four available counters and keeps the one/two-spice transport payment to Guild or Bank. Richese chooses its token/payer and the beneficiary must accept before transfer. Prior native revelation, shared token history and physical fallback after scoped prevention remain; ordinary allowances are unchanged. Advanced/optional profiles remain separate. In bounded classic plus Ecaz/Moritani games, a shared Ambassador/Terror entry gives both owners saved optional prompts in current storm order without repeating the committed entry; this is a provisional table order, not a printed publisher priority. A Terror entry now waits for the arrival’s own interaction — Guild income, a Bene Gesserit fighter Intrusion or advisor choice, or Fremen storm protection — and then opens without replaying payment or force transfer. Ambassador-created child arrivals retain their own contracts. The native-module extension now composes ordinary paid arrival order with Atomics, Homeworlds and Nexus; other combinations and complete rules remain unfinished.',
'The Tleilaxu Ambassador returns one eligible own leader or up to four physical forces free. First-death leaders and the first-killed Atreides KH need not wait for the ordinary cohort. Under the provisional repeat interpretation, later native leaders must satisfy their ordinary death condition, and later KH returns must meet their saved next-cohort marker. Preserve the actual opening before resurrection; KH advances its marker beyond both owner and old KH cycles without resetting activation losses or adding a native disc. Ecaz retains native identity bookkeeping. Ecaz may instead return the shared Duke alive and unclaimed under his independent permission; its ally cannot inherit that permission. Native and BG copied grants share eligibility and exclusive alternatives. A positive return provisionally earns seated Tleilaxu one bank spice per beneficiary/turn, sharing ordinary free revival; Ghola stays separate. Canceling income keeps the return and spent entitlement. Ordinary allowance independence and wider custody/module combinations remain provisional.',
'All eleven effect guides are readable. Emperor, Atreides, Harkonnen, CHOAM, Ixian, Richese, Fremen and Guild entry effects are integrated, together with Bene Gesserit copies of those eight effects and direct Duke acquisition or consensual alliance through the reusable Ecaz token. Advanced combined Occupy has a separate bounded Development Verified guide, and Basic even-force Occupy now composes the same shared controls. Remaining effects, exceptional Duke custody and complete Ecaz rules remain unfinished. Ambassadors can be placed on the genuinely placed Hidden Mobile Stronghold, including when its pointer is in storm: the interior is sheltered. Its face-up marker stays attached through Ixian movement. Placement still pays the increasing fee and can be prevented by Karama. This supplies no Terror or direct-shipment permission. Normal public Ecaz starts remain development previews; complete rules and unsupported combinations stay gated.',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Placed HMS now shares one eligible-destination quote across paid placement, projection, cancellation and minimal bots; its CHOAM/Ix card parents retain the actual entrant. Basic Guild No-Field now connects native concealment, allied request/supply/consent, immediate materialization, provisional transport payment, source-scoped prevention and original arrival. A shared ordinary death-cohort quote admits eligible native/KH repeats without importing normal phase/slot/price or native early-service gates into the independent grant. Preserve actual openings before native resurrection, retain Ecaz identity tracking and advance KH above its actual cycle while keeping five native discs and loss activation. Existing Duke, source-bound income and original entrant continuation remain; wider custody/modules stay partial.',
evidence: ['game/ecaz-ambassador-placement.ts', 'game/engine.ts', 'game/guild-ambassador-no-field.ts', 'game/guild-ambassador-continuation.ts', 'game/revival.ts', 'game/tleilaxu-ambassador-leaders.ts', 'game/tleilaxu-ambassador-income.ts', 'game/karama-context.ts', 'game/ecaz-duke-revival.ts', 'game/bot-arrival.ts'],
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Placement controls show the available sheltered HMS; public face-up board markers stay on its interior through native relocation. Persistent No-Field controls show exact marker/destination/payment choices, provisional guidance, busy reasons and both refusal routes, including a native zero-reserve grant. Persistent free-return guidance explains first-return and later-cohort eligibility, KH’s separate marker, ordinary-slot independence and the provisional shared income. Original exact native/KH/Duke buttons, busy controls, force alternatives and committed-return/income continuation remain. Earlier mobile arrival evidence stays separate.',
evidence: ['components/ecaz-ambassadors.tsx', 'components/ambassador-board-markers.tsx', 'components/ecaz-entry.tsx', 'components/ambassador-shipment.tsx', 'components/ambassador-no-field.tsx', 'components/game-table.tsx'],
},
{
area: 'AI',
status: 'Partial',
detail:
'Eight HMS-entry existing-profile continuations accept eight legal proposals across Basic and Advanced. Eight earlier No-Field existing-profile continuations accept12 legal proposals from native-empty or allied-request states, without strategy/calibration. Twelve existing legal profiles select repeated native/copy/KH choices and finish the original entrant, using server-private eligibility. Earlier original Duke/income and placement/consent evidence remains separate. No strategy refinement or strength calibration.',
evidence: ['game/bots.ts', 'tests/ambassador-revival-income-engine.test.ts', 'tests/duke-ambassador-engine.test.ts', 'docs/TLEILAXU_AMBASSADOR_RULES.md'],
},
{
area: 'Documentation',
status: 'Partial',
detail:
'The placed-HMS permission records general stronghold/storm-shelter source composition without implying a designer-specific ruling or new transport/Terror permission. Guild No-Field now distinguishes the selected Basic cap/fee policy from printed authority, independent allowances and remaining Advanced/module gates. Source-bound effects, copies and Duke guides remain. Native own-arrival child-first/live-token order stays provisional. Separate native transport permission, independent purchased typed prices and own/allied marker billing preserve original sources and approvals. Immune Junction now keeps its offered tariff/payees with an explicit unused-purchase choice. Cunning opportunity scope, special-stop card return and unused-price expiry are selected interpretations; full combinations remain open.',
evidence: ['docs/ECAZ_AMBASSADORS_RULES.md', 'docs/GUILD_AMBASSADOR_IMPLEMENTATION.md', 'docs/GUILD_AMBASSADOR_RULES.md', 'docs/TLEILAXU_AMBASSADOR_RULES.md', 'docs/DEFERRED_SHIPMENT_ARRIVAL.md', 'docs/BOT_ARRIVAL_PREFLIGHT.md'],
},
{
area: 'Verification',
status: 'Partial',
detail:
'Placed-HMS proof passes12 files135/135, types/lint/build, twelve actual placement-control/gameplay/GameTable SSR journeys and eight minimal policies. Actual46/50-action Basic/Advanced sources cover paid placement, entry/Emperor5/decline, held Karama, storm shelter and native relocation; Basic CHOAM/Ix retain original card continuations. Browser/deployed and complete-mode acceptance remain open. Earlier Basic Guild-marker proof passes13 files129/129, types/lint/build, fifteen gameplay/control/GameTable SSR journeys and eight minimal-policy continuations. Genuine53/71/74-action sources plus two explicitly conserved shortage arrangements cover native0/3/5, prior reveal, consent, Guild/Bank fee, prevention/refusal and physical fallback. Earlier repeat13-file114/114, types/lint/build and three controlled gameplay/rendering programmes pass: original Basic paid-entry sources plus assigned native histories reach the next actual ordinary Revival; separate Advanced actual entry returns KH with old2/cohort3 → marker4. Twelve legal policies finish original entry. First-opening, income allow/cancel and ordinary controls pass. Controlled histories are not earned repeat-battle/full-game proof. Earlier original Duke/income evidence stays separate; full modes, wider combinations, assurance and deployed acceptance remain open.',
evidence: [
'tests/fixture-ecaz-hms-ambassador.ts',
'tests/ecaz-hms-ambassador-engine.test.ts',
'tests/ecaz-hms-ambassador-controls.test.tsx',
'tests/ecaz-hms-placement-quote.test.ts',
'tests/ambassador-repeat-leader-engine.test.ts',
'tests/fixture-ambassador-repeat-leaders.ts',
'tests/tleilaxu-ambassador-leaders.test.ts',
'tests/fixture-ambassador-revival-income.ts',
'tests/fixture-guild-ambassador-no-field.ts',
'tests/guild-ambassador-no-field-engine.test.ts',
'tests/guild-ambassador-no-field-bank.test.ts',
'tests/guild-ambassador-no-field-controls.test.tsx',
'tests/guild-ambassador-no-field-quote.test.ts',
'tests/ambassador-revival-income-engine.test.ts',
'tests/tleilaxu-ambassador-income.test.ts',
'tests/basic-ecaz-tleilaxu-occupy.test.ts',
'tests/fixture-duke-ambassador.ts',
'tests/duke-ambassador-engine.test.ts',
'tests/tleilaxu-ambassador-leaders.test.ts',
'tests/tleilaxu-ambassador-engine.test.ts',
'tests/ecaz-ambassadors.test.ts',
'tests/ecaz-placement.test.ts',
'tests/ecaz-entry.test.ts',
'tests/moritani-ecaz-duke-winner.test.ts',
'tests/bot-arrival.test.ts',
'tests/deferred-shipment-arrival.test.ts',
'tests/guild-ambassador-income-arrival.test.ts',
'tests/bg-ambassador-arrival.test.ts',
'tests/ecaz-duke-acquisition.test.ts',
'tests/ecaz-duke-ally-quote.test.ts',
'tests/ecaz-duke-ally-engine.test.ts',
'tests/ecaz-duke-ally-controls.test.ts',
'tests/fixture-ecaz-duke-ally.ts',
'components/ecaz-duke-acquisition-choices.tsx',
'tests/ecaz-duke-bots.test.ts',
'tests/ecaz-duke-recovery.test.ts',
'tests/ecaz-alliance.test.ts',
'tests/ecaz-alliance-engine.test.ts',
'tests/ecaz-alliance-recovery.test.ts',
'tests/ecaz-entry-bots.test.ts',
'game/tleilaxu-ambassador-leaders.ts',
'tests/kwisatz-ambassador.test.ts',
'tests/ecaz-entry-continuations.test.ts',
'tests/ecaz-entry-recovery.test.ts',
'tests/richese-ambassador.test.ts',
'tests/richese-ambassador-bots.test.ts',
'tests/richese-ambassador-interruptions.test.ts',
'tests/fremen-ambassador-quote.test.ts',
'tests/fremen-ambassador-engine.test.ts',
'tests/fremen-ambassador-bots.test.ts',
'tests/fremen-ambassador-cancellation.test.ts',
'tests/fremen-ambassador-recovery.test.ts',
'tests/guild-ambassador-quote.test.ts',
'tests/guild-ambassador-advisor-quote.test.ts',
'tests/guild-ambassador-continuation.test.ts',
'tests/guild-ambassador-cancellation.test.ts',
'tests/ambassador-resume.test.ts',
'tests/guild-ambassador-engine.test.ts',
'tests/guild-ambassador-bots.test.ts',
'tests/treachery-discard-continuations.test.ts',
'tests/multiplayer-discard-continuations.test.ts',
],
},
],
related: [
'revival',
'card-karama',
'faction-ecaz',
'duke-vidal',
'ecaz-modules',
'implementation-checklist',
],
},
{
id: 'automatic-casualties',
title: 'Automatic battle casualties and action notices',
category: 'Getting started',
coverage: 'Partial',
summary:
'A single legal casualty allocation settles immediately; optional choices still wait. A toggleable house notice explains tagged automatic events.',
steps: [
'After a battle resolves, the server calculates casualty allocations consistent with the revealed wheel and spice support. If exactly one allocation is legal, it applies that allocation without asking for an identical confirmation.',
'If several physical casualty combinations are legal, the winner still chooses. Automatic casualties preserve later optional Ixian substitutions, winner card cleanup and Moritani ally retention; they do not choose those benefits for you.',
'Newly received tagged events queue in order, with the acting house and event name staying visible until you select Continue. New events cannot replace the text you are reading. Use Automatic action notices to turn the display on or off. The preference belongs to this browser; hiding notices does not disable automatic rule settlement or change AI timing.',
'Continue dismisses only the local notice; game progression continues normally. Notices have no timed fade or dismissal. Reloading treats existing events as a baseline rather than replaying them. Events received while notices are off are consumed; turning notices on does not replay them. At most three notices, including the visible one, remain queued. Bursts summarize older pending actions with a count while their details remain in the table chronicle. Hiding the page preserves the unread visible notice, clears pending notices and consumes new updates silently.',
'Current notice events include committed ordinary movement, shipment, revival, collection and battle results, native Guild transport and Hidden Mobile Stronghold relocation. Declared or canceled actions do not announce an uncompleted result. Existing notices also cover automatic casualties, successful Ecaz Ambassador placement, supported successful Ambassador effects, Emperor auction income, Harkonnen bonus-card draws and private full-plan inspection availability. The Harkonnen draw is announced without exposing its private card identity. Notices reveal no private card identities or plan details. Uncancelable responses now settle automatically as described in Automatic allowance of powers. Successful powers without a notice tag remain outside the current coverage.',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Sole battle casualty allocations settle automatically. The separate response checklist tracks automatic allowance; other forced outcomes and successful-power notice tags remain incomplete.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Multiple allocations and optional continuations retain controls. The house notice waits for Continue, preserves unread text across updates and backgrounding, and has an on/off button and bounded burst summaries.',
},
{
area: 'AI',
status: 'Implemented',
detail:
'Human and AI seats share the same automatic casualty settlement; bots still choose when multiple allocations remain.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'This topic explains the supported settlement and notice scope; further automatic outcomes require their own documentation.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Regression coverage preserves force counts, JSON replay safety, real casualty choices, substitution and retention. This does not certify all automatic effects or complete notice browser behavior.',
evidence: [
'tests/automatic-casualties.test.ts',
'tests/moritani-retention.test.ts',
'tests/duke-vidal-engine.test.ts',
'tests/completed-action-events.test.ts',
'tests/action-notice-queue.test.tsx',
],
},
],
related: [
'battle',
'advanced-combat',
'ix-forces',
'moritani-ally-retention',
'automatic-responses',
'ai-pacing',
'implementation-checklist',
],
},
{
id: 'automatic-responses',
title: 'Automatic allowance of powers',
category: 'Getting started',
coverage: 'Partial',
summary:
'A power proceeds when no remaining player has a usable physical Karama option. Meaningful cancellation choices still wait for their player.',
steps: [
'The power’s owner cannot cancel that power and needs no Allow click. Other players without a usable physical Karama card also need no input. Once every remaining player with a cancellation option has explicitly allowed, the server completes the power and checks its next continuation.',
'Your controls show only your own cancelable cards and whether you explicitly allowed. Other players’ pass choices, eligible cards and reasons for having no option are not exposed. A pending window can still reveal that some blocking option remains somewhere.',
'A player who already allowed may still cancel while another player’s choice keeps the window open. Allies retain legal cancellation choices. Automatic allowance never chooses a card or a cancellation for you.',
'Physical availability includes Advanced Bene Gesserit Worthless conversion and excludes cards reserved for Moritani battle retention, a sealed Battle Plan or prescience. Another Worthless conversion cannot directly cancel the live conversion response; an otherwise usable real Karama remains eligible.',
'An active Truthtrance question or phase-opening choice pauses automatic allowance. After suspended windows return, the server checks the current hands and bindings again. Your battle promises are checked when committing an action: a physically usable card can remain listed conservatively even if spending it would break a promise and be rejected.',
'New uncancelable windows settle with the action that creates them. Reconnecting can resume an older saved window through an authoritative background update; merely preparing a player’s view does not award spice or draw cards. Concurrent updates cannot award the same income or card twice.',
'Supported responses share this behavior for human and AI seats. Complete promise-aware option filtering, all successful-power notice tags, and full expansion interaction verification remain unfinished. See Automatic battle casualties and action notices for the cosmetic queue.',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Physical-card eligibility and bounded response chains are integrated, including restored windows and persisted legacy recovery. Promise feasibility remains conservative until commit.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Only the current viewer receives cancel-card IDs and explicit-pass state. Owners and players without a physical blocking option need no Allow click; promise-constrained candidates may still be rejected.',
},
{
area: 'AI',
status: 'Implemented',
detail:
'Bots use the same private response controls, skip unavailable response actions, and retain their own strategy for a meaningful cancellation choice.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'This topic records physical eligibility, private explicit passes, restored continuations, timing inference and the conservative promise boundary.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Fifteen engine tests cover response chains, custody, overlays, promises and private views; seven persistence tests cover exact-once recovery, takeback races, bounded CAS and worker coalescing. Full expansion and notice-browser certification remain open.',
evidence: [
'tests/automatic-responses.test.ts',
'tests/automatic-response-recovery.test.ts',
'tests/moritani-retention-bots.test.ts',
],
},
],
related: [
'card-karama',
'card-truthtrance',
'privacy',
'automatic-casualties',
'ai-pacing',
'implementation-checklist',
],
},
{
id: 'automatic-decisions',
title: 'Automatic settlement without a choice',
category: 'Getting started',
coverage: 'Partial',
summary:
'A fully funded auction payment with no Karama alternative settles automatically. Atreides can keep reading a private plan without a confirmation step.',
steps: [
'When a winning bid’s declared split between your own spice and pledged ally funding can be paid exactly, and you have no physically usable Karama alternative, the server pays it automatically. A genuine Karama option or an unfunded payment still requires its existing decision; automatic settlement does not choose a card or alter the declared funding split.',
'Atreides special Karama still requires a voluntary declaration and the selected combatant still commits first. Once that plan is committed, its entitled Atreides viewer can inspect the dial, support, leader and played cards persistently beside the normal planning controls. There is no Finish inspection action.',
'The same private panel remains available when Atreides is outside the battle helping an ally. Only Atreides receives this special inspection; it is not copied into the ally’s private view. The inspection ends when both committed plans become public. Card enlargement and Truthtrance promise controls remain separate from sealing your plan.',
'Older saved inspection acknowledgements and eligible payment confirmations can be resumed through authoritative normalization. A private view alone does not spend spice or expose a sealed plan to an unauthorized seat.',
'Single-allocation battle casualties and uncancelable faction responses have their own linked checklists. Other decisions with only one legal outcome, complete promise-aware payment alternatives, and full expansion timing coverage remain under review.',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Exact funded payment without a physical Karama alternative and inspection-only acknowledgement removal are implemented, including eligible legacy normalization. Other forced decisions remain to audit.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Real payment alternatives retain controls. Entitled private plan details and inspectors persist in the action panel during planning, including external Atreides, without a dismissal gate.',
},
{
area: 'AI',
status: 'Implemented',
detail:
'Bots no longer submit an inspection acknowledgement. They share authoritative automatic payment settlement and still choose genuine payment alternatives and battle plans from their own views.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'This checklist separates no-choice payment, persistent private inspection, legacy recovery and unfinished forced-decision scope.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused automatic-decision and full-plan regressions cover settlement, target-first order, private entitlement and continued planning. Browser readability and complete expansion interaction verification remain separate.',
evidence: [
'tests/automatic-decisions.test.ts',
'tests/full-plan.test.ts',
],
},
],
related: [
'bidding',
'special-karama',
'card-truthtrance',
'automatic-casualties',
'automatic-responses',
'implementation-checklist',
],
},
{
id: 'ai-pacing',
title: 'Online AI action pacing',
category: 'Getting started',
coverage: 'Partial',
summary:
'Online rooms schedule one AI decision at a time with a 1.5-second interval, including human seats on autopilot.',
steps: [
'Online AI progression saves a due time and commits at most one AI action per step. The next action is scheduled using a 1.5-second interval. Network and server delays can make the visible interval longer.',
'The server rechecks the current room after waiting. Reconnects preserve the pending deadline; they do not replay a backlog of elapsed AI actions. Competing workers cannot both commit the same action.',
'Take back control remains available for your own autopilot seat while the worker waits. The server checks current control and room version before saving an AI action; already completed decisions remain in the game.',
'Pacing does not reveal hidden cards, change difficulty, or turn optional human decisions into automatic actions. Disabling Automatic action notices changes only cosmetic feedback, not this server interval.',
'Offline simulations use fast batches for testing and are not evidence of the online visual cadence. Hosted and broader browser cadence verification remain separate from focused server tests.',
],
checklist: [
{
area: 'Implementation',
status: 'Implemented',
detail:
'Online room persistence schedules and commits individual AI actions with a saved 1.5-second interval; offline batches stay fast.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Existing difficulty and Take back control controls apply. The notice toggle does not change server pacing.',
},
{
area: 'AI',
status: 'Implemented',
detail:
'The online scheduler covers permanent AI seats and voluntary autopilot using the same authorized private views.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'This topic separates server pacing, reconnect behavior, takeover and cosmetic notices.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Eight focused server tests cover deadlines, early requests, reconnects, competing workers, takeback races and offline simulation. Broader hosted/browser cadence remains to verify.',
evidence: ['tests/bot-pacing.test.ts'],
},
],
related: [
'ai-players',
'privacy',
'automatic-casualties',
'implementation-checklist',
],
},
{
id: 'ix-deck',
title: 'Ixians & Tleilaxu treachery deck',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Fourteen expansion cards join the thirty-three base cards; matching names still represent distinct physical cards.',
steps: [
'The expansion includes Poison Blade, Shield Snooper, Weirding Way, Chemistry, Poison Tooth, Artillery Strike, Thumper and Amal, plus the six ordinary card types below.',
'Hunter Seeker is a projectile weapon and Basilia Weapon is a poison weapon. Normal matching defenses and Voice categories apply. Basilia Weapon belongs to this expansion; Ellaca Drug is the base-game poison card.',
'The additional Shield and Snooper behave like their base copies, including the Shield’s lasgun interaction. Kull Wahad is a Worthless card and can be played in a battle plan or converted with advanced Bene Gesserit’s Karama advantage.',
'The second Harvester is a separate card. The provisional preview interpretation permits each available copy during the open fresh-blow window, doubling its current amount again: both copies yield four times the fresh blow without multiplying pre-existing spice. Neither copy can restore a worm-destroyed blow or create spice in storm.',
'With this expansion the combined deck has forty-seven distinct card identities: five ordinary projectile weapons, five ordinary poison weapons, five ordinary Shields, five ordinary Snoopers, six Worthless cards and two Harvesters, in addition to the other base and special expansion cards.',
'Labelled Basic and Advanced expansion previews use genuine setup with the complete deck, Sandtrout and the selected factions. Starting cards, private choices, controls and minimal legal AI use the normal paths. Preview access does not certify complete expansion rules or combinations.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Actual 47-card setup and original Sandtrout/Thumper/Harvester mechanics retain explicit provisional first-turn precedence and sequential doubling. Wider faction/module interactions remain unfinished.', evidence: ['game/cards.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Normal preview setup and held-card controls include persistent first-turn Thumper and waiting-Sandtrout explanations before spending. Public ignored-encounter feedback explains the result.', evidence: ['components/game-table.tsx', 'docs/EXPANSION_FACTIONS_PROTOTYPE.md'] },
{ area: 'AI', status: 'Partial', detail: 'All four existing profiles legally accept an actual harvested window and finish the phase. Historical complete-game samples separately exercise native expansion factions; strategic refinement and strength calibration remain deferred.', evidence: ['game/bots.ts', 'tests/ix-spice-cards-engine.test.ts', 'tests/ix-prototype.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The prototype setup record separates functional progress, source interpretations and final acceptance.', evidence: ['docs/IX_PROTOTYPE.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Affected4-file47/47, types/lint/build, twelve original three-classic-seat Basic/Advanced gameplay/rendering programmes and four minimal legal profiles pass. First/later Thumper, first-turn Sandtrout, replacement worms and two physical Harvesters retain original card stock. Historical native-faction samples remain separate; full combinations, browser/deployed and final assurance remain open.', evidence: ['tests/fixture-ix-spice-cards.ts', 'tests/ix-spice-cards-engine.test.ts', 'tests/ix-prototype.test.ts', 'tests/prototype-room.test.ts'] },
],
related: [
'ix-battle-cards',
'card-harvester',
'card-thumper',
'card-amal',
'ix-technology',
],
},
{
id: 'ix-technology',
title: 'Ixian setup and bidding technology',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Private starting-card selection, auction preparation, advanced substitution and allied purchase replacement.',
steps: [
'Before starting Treachery Cards are dealt, Ixians choose one from the original inspected pool. Fresh Advanced includes one extra card when Harkonnen is seated: shuffle the remainder and deal two to Harkonnen, one to each other faction, without an additional deck draw. Basic retains one card per faction in the pool and a separate Harkonnen top-deck bonus. An already-opened old-count Advanced draft keeps its recorded procedure without a redeal.',
'Before the auction is prepared, everyone receives a Karama response window. Allowing Ixian inspection draws one extra card above the number up for bid. Ixians privately return one to the top or bottom of the deck, then shuffle the rest for auction. Canceling leaves only the ordinary auction cards and reveals none to Ixians.',
'A full Ixian hand does not prevent its inspection advantage. The number of auction cards is determined by factions able to bid. The private pool record is unordered and includes cards already auctioned; it is not a view of another player’s hand or the upcoming card.',
'In advanced play, before bidding on a card and before Atreides gets its peek, Ixians may offer one hand card for the upcoming unseen card. Declining saves the option for a later card. Declaring an exchange spends the once-per-round attempt and opens a separate Karama response; cancellation keeps both cards where they are.',
'After a paid or Karama-paid purchase, an Ixian ally may keep the purchased card or request its replacement. A response resolves before discarding that exact card and drawing the deck’s top card privately. Payment still settles normally. Harkonnen’s separate bonus draw follows the replacement.',
'The separate fresh ixian-betrayal profile connects both Nexus Betrayal alternatives to those original native attempts. After native counters pass, a neutral acknowledgement precedes the draw or declared Advanced exchange. Use prevents just that attempt: ordinary Bidding count without Ixian inspection, or unchanged hand/lot custody with the Technology declaration still used. All-pass keeps the native advantage. This bounded ordering/privacy convention is an inference, not a universal publisher priority.',
'The controls preserve decisions and private cards across reconnects. Complete expansion starts, Richese/other auction modes, exact phase-opening ordering, short-deck behavior and interruption timing remain under audit.',
],
related: ['bidding', 'setup', 'ix-forces', 'nexus-ixian-replacement', 'nexus-ixian-betrayal'],
},
{
id: 'mobile-stronghold',
title: 'Hidden Mobile Stronghold',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'A separate movable stronghold with its own occupants, entrance and victory control.',
steps: [
'Ixians begin with three cyborgs and three suboids inside. After the first storm moves, select its pointing sector in any non-stronghold territory, including the Polar Sink. Placement collects no spice.',
'Before later storm dials or card reveals, occupied Ixians may keep the current position or declare a route of up to three territories. Use the route selector to name each sector. The destination must be a non-stronghold territory. The route cannot begin, end or pass through the current storm sector. Occupants stay inside throughout relocation.',
'Choose the spice collected in each visited sector, including the starting sector. This preview provisionally permits any whole amount up to the available pile and two per Ixian force inside, separately in each sector. A public Karama response resolves before relocation or collection. The printed rule does not detail partial allocations or all passenger interactions.',
'Forces inside are separate from forces outside. Enter and leave through the pointing sector, counting the stronghold as one more territory of movement. A storm in that pointing sector blocks ordinary entry or exit. Direct shipping inside is restricted to Ixians; advanced Bene Gesserit may accompany their shipment.',
'Worms and storms do not kill the occupants. Battles wait while the pointing sector is in storm; otherwise normal battles and the two-faction capacity apply inside. The sole controller counts it toward victory, even when that controller is not Ixian. Capturing it does not grant another faction permission to move it.',
'In advanced play, Ixians may spend special Karama once during their own Shipment and Movement turn to relocate up to two territories while their forces occupy it. This preserves their ordinary shipment and troop movement. Setup and bidding technology now have decision controls; expansion starts and remaining interaction audits are unfinished.',
],
related: ['ix-forces', 'movement', 'storm'],
},
{
id: 'fremen-movement-karama',
title: 'Fremen movement and Karama',
category: 'Factions',
coverage: 'Partial',
summary:
'Karama can remove the two-territory advantage for one movement use.',
steps: [
'Declare the force group and destination. A move that needs the Fremen two-territory advantage waits only for players with an available cancellation choice. Without a blocker, it proceeds automatically.',
'If allowed, the declared group continues to its destination. If canceled, no forces move and no movement is spent. Choose a legal one-territory replacement or finish movement.',
'The restriction belongs to that movement use. A separate extra move granted by Hajr can use two territories again. Reserve reinforcements and worm rides use their own rules.',
'Forces in Arrakeen or Carthag grant ordinary ornithopter range independently. The Richese Ornithopter card’s fixed three-territory mode is also independent; its two-group mode uses each group’s normal range. Other unresolved combinations of that expansion card remain guarded.',
'All four AI profiles respect the reduced range. Hard and Brutal may cancel an enemy Fremen move toward their own fighters. Pending responses and reduced-range choices are saved with the game.',
],
related: [
'movement',
'faction-fremen',
'card-hajr',
'automatic-responses',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Implemented',
detail:
'A declared movement is validated before continuation; cancellation applies to the current movement use and preserves its forces.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'The response shows the destination and cancellation consequence; the movement panel explains the reduced range.',
},
{
area: 'AI',
status: 'Implemented',
detail:
'All profiles plan using the projected range restriction, including normal-range Ornithopter groups.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'The internal guide distinguishes per-use cancellation, reserve reinforcements, Hajr and independent ornithopter ranges.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Fourteen movement scenarios and three persisted-room scenarios pass, including both cancellation outcomes, nested responses, exact group custody and all four AI profiles. Complete Advanced and expansion games and mobile acceptance remain unverified.',
evidence: [
'tests/fremen-movement-karama.test.ts',
'tests/fremen-movement-review.test.ts',
'tests/fremen-movement-recovery.test.ts',
],
},
],
},
{
id: 'ix-forces',
title: 'Ixian cyborgs and suboids',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Half-strength suboids, spice-supported cyborgs and post-battle casualty substitution.',
steps: [
'Your twenty forces consist of seven cyborgs and thirteen suboids. In basic battles, cyborgs dial two strength and suboids one-half. Ixians can therefore use half-strength dial increments in the basic game.',
'In advanced battles, each supported cyborg costs one spice and contributes two strength. Unsupported cyborgs contribute one. Suboids always contribute one-half and cannot receive spice support.',
'Choose casualties that match your revealed dial and spice support. After those losses, surviving suboids can be sent to the tanks in place of cyborgs lost in that same battle, one for one. This preserves the number of physical casualties while changing their types.',
'In the substitution panel, choose surviving suboids to sacrifice and lost cyborgs to retain. The two counts must match. Retained cyborgs return to their casualty sectors. The exchange may be partial or declined.',
'A Karama response before the exchange can cancel it, leaving the original casualties. Basic cyborg double strength also has a response before plans. Suboid half strength cannot be canceled. Traitor destruction and explosions leave no survivors available for substitution.',
'A cyborg in the selected movement group lets that group move two territories. Suboids moving without a cyborg move one. Ornithopters allow three territories regardless of force type. A two-territory cyborg move has a Karama response; if canceled, the army remains in place and can choose a shorter move.',
'Cyborgs collect three spice each. Suboids collect two, or three with ornithopters. Collection still requires the force to occupy the spice sector, outside the storm.',
'Ixians have one free force revival, either type. Choose cyborgs-first or suboids-first in the revival form. Each paid cyborg costs three spice, each paid suboid two; a Tleilaxu ally discount rounds the paid total up after halving. The one-per-turn Sardaukar/Fedaykin restriction does not apply to cyborgs.',
'Combat and substitution have tested engine, UI and AI support. Cyborg movement, collection and typed revival pricing also have tested support. The mobile stronghold and faction setup/auction technology now have tested support. The complete sector, timing and expansion audit remains unfinished; supported faction starts are available as previews.',
],
example:
'Two cyborgs and six suboids dial six: lose two cyborgs (four strength) and four suboids (two strength). The two surviving suboids can replace the two lost cyborgs. Six suboids end in the tanks and two cyborgs remain on the board. In advanced play, the dial needs two spice for those cyborgs.',
related: ['faction-ixians', 'advanced-ixians', 'battle', 'advanced-combat'],
},
{
id: 'tleilaxu-gholas',
title: 'Tleilaxu foreign gholas',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Revive foreign leaders into your pool, retain their identities, and negotiate dead-ghola buybacks.',
steps: [
'During advanced Revival, Tleilaxu with fewer than five active leaders may pay the bank to revive dead leaders of other factions. Each costs half its printed value, rounded up. Several may be revived in the phase, up to five active leaders. The Auditor and Kwisatz Haderach cannot be acquired as foreign gholas.',
'The revived leader becomes part of the Tleilaxu leader pool. Its original faction and traitor identity do not change. It fights for its current controller and remains vulnerable to the corresponding traitor card. Harkonnen capture temporarily overrides ghola control.',
'Face-down leaders can become gholas, preserving their death history. A dead ghola stays associated with the Tleilaxu pool and can be revived again. Returning an existing member with Ghola treachery is distinct from acquiring a new foreign leader.',
'A living ghola cannot be sold back. After it dies, its original faction may request a private buyback quote through revival commerce, even when all native leaders are unavailable. Tleilaxu may refuse. An accepted return costs the agreed price and uses the requester’s one-leader allowance.',
'A foreign-ghola revival opens a Karama response before payment or transfer. Cancellation prevents revival of that specific leader for the turn; another eligible dead leader may still be chosen. A separate response governs a paid discount.',
'Acquisition, private buybacks, identity and combat control have tested support. Complete timing, captive-pool counting, own-leader returns above a five-member pool, buyback/card exceptions and later leader-skill, homeworld and Ecaz interactions remain in the expansion audit. Supported expansion starts are available as unfinished previews.',
],
related: [
'tleilaxu-revival',
'tleilaxu-face-dancers',
'captured-leaders',
'card-ghola',
],
},
{
id: 'tleilaxu-revival',
title: 'Tleilaxu revival commerce',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Revival payments, force permissions, discounts and private early-leader quotes.',
steps: [
'Other factions pay Tleilaxu for force and leader revival. Tleilaxu pay the bank at half price, rounded up, and have no normal limit on their own force or leader revivals. The one-elite-force limit still applies.',
'Tleilaxu receive one spice from the bank when a faction uses its normal free force revival, including their own. Splitting that allowance into smaller actions never grants extra income. Playing a Ghola treachery card grants a separate one-spice payment.',
'Tleilaxu may allow any other faction to revive up to five forces. They may also offer their ally half-price force and leader revival. The ally pays; Tleilaxu cannot fund that payment. Emperor extra revivals remain separate and their payments go to Tleilaxu.',
'For early leader revival, request a particular dead leader while at least one native leader remains available. Tleilaxu quote a price, possibly zero, and the requester accepts or withdraws. Only these two players see the request and price. With all native leaders unavailable, ordinary revival rules apply.',
'An accepted early revival uses the normal one-leader allowance of the requesting faction. Kwisatz Haderach can also be requested. Tleilaxu can revive several of their own dead leaders in a phase, including before all five die.',
'The server pauses before a larger limit, discount or early revival takes effect. Karama can cancel that benefit. Forces and spice remain unchanged if the return is aborted; a canceled discount is repriced before payment. A separate response governs the payment to Tleilaxu after a successful return.',
'Revival commerce and the private controls are tested. Exact cancellation duration, simultaneous card timing, special free-revival effects, foreign gholas and later expansion economy interactions remain in the complete rules audit. Supported expansion starts are available as unfinished previews.',
],
related: [
'revival',
'card-ghola',
'card-karama',
'tleilaxu-face-dancers',
'ix-modules',
],
},
{
id: 'tleilaxu-face-dancers',
title: 'Tleilaxu Face Dancers and Zoal',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Secret identities replace a victorious army after the battle is settled.',
steps: [
'Tleilaxu take no ordinary traitors. Once everyone else has selected their traitors, shuffle the unused cards and deal Tleilaxu three private Face Dancers.',
'After another faction wins, that winner resolves losses, leader bounties, card choices and tech-token rewards. Tleilaxu then have a separate opportunity to reveal an unrevealed Face Dancer matching the winning leader.',
'Return the winner’s surviving forces to reserves, then replace up to that number with Tleilaxu forces from reserves or other board locations. The winning leader goes to the tanks with no additional bounty. A leader already killed does not die again.',
'With Advanced Homeworlds, the Emperor’s normal survivors provisionally return to Kaitain and Sardaukar to Salusa Secundus, preserving their exact types and existing casualties. This selected reserve-return composition is not revival and grants no revival income, fee or second reward. The original victory remains the winner’s.',
'Arrakis replacements withdraw actual Tleilaxu native stocks. On Tleilax, existing native forces remain and selecting those reserves adds no counters; only selected external Arrakis replacements increase that pool. Occupied-Tleilax protection for its occupier or ally still blocks a reveal. Zero replacements or decline remain available.',
'A winning Cheap Hero may be a Face Dancer. Kwisatz Haderach does not protect an accompanying leader against Face Dancing. Karama cannot cancel the reveal or the replacement army.',
'Keep revealed Face Dancers face up until all three have been used. Shuffle those cards back into the unused deck and draw three new ones. During Mentat Pause, you may instead replace one unrevealed Face Dancer; this once-per-turn exchange has a Karama response.',
'Zoal has variable battle strength: he copies the opposing leader disc, without any KH bonus, or counts zero against a Cheap Hero. His death bounty uses that copied strength. His ordinary revival value is three spice before discounts.',
'After completed replacement, advisors left alone at remote sources or a zero-replacement target have a separate BG conversion response. Face Dance remains complete and immune; prevention keeps its returns, replacement, leader death and revelation/cycle, then resumes the original aftermath once.',
'The core setup, reveal sequence, card cycling, Zoal effects and AI controls are tested. Tleilaxu revival commerce also has tested support. Foreign ghola acquisition and buyback controls are also implemented. Their special Karama now also has tested support; its timing and the complete expansion interaction audit are still unfinished, so starts remain labelled previews.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Advanced Emperor typed returns use native reserve quotes from Arrakis and visitor Homeworlds. Actual replacement stocks, existing immunity, original victory and single leader death remain. Broader combinations stay open.' },
{ area: 'Player controls', status: 'Partial', detail: 'Persistent provisional routing, public survivor maximum and own selectable sources feed the original choices and guarded reveal/decline callbacks.' },
{ area: 'AI', status: 'Partial', detail: 'All four minimal profiles use the unblocked projected opportunity and legal native replacement sources; no strategic refinement or calibration.' },
{ area: 'Documentation', status: 'Partial', detail: 'Distinguishes selected normal/Kaitain and Sardaukar/Salusa reserve return from revival, historical origin and a confirmed publisher destination ruling.' },
{ area: 'Verification', status: 'Partial', detail: 'Genuine public Advanced shipment/battle sources, labelled controlled Homeworld visitor cases and control supplements cover the route. Full modes, browser/mobile/deployed and final assurance remain due.', evidence: [
'game/homeworld-native-reserves.ts', 'components/face-dance-actions.tsx', 'components/face-dance-decision.tsx',
'tests/fixture-emperor-face-dance-return.ts', 'tests/emperor-face-dance-return-engine.test.ts',
'tests/fixture-emperor-face-dance-homeworld.ts', 'tests/emperor-face-dance-homeworld.test.ts', 'tests/emperor-face-dance-return-controls.test.ts', 'docs/HOMEWORLD_REPLACEMENT_RULES.md',
] },
],
related: [
'battle',
'cheap-hero-traitor',
'tech-tokens',
'mentat',
'ix-modules',
'advanced-advisors',
],
},
{
id: 'card-amal',
title: 'Amal and phase openings',
category: 'Cards',
coverage: 'Partial',
summary:
'Return half of every faction’s available spice before the new phase takes effect.',
steps: [
'Amal is played at the beginning of a phase and discarded. Every faction, including its owner, returns half the spice behind its shield to the bank, rounded up. Five spice becomes two; one becomes zero.',
'Ix tables open a public confirmation window before each phase. Play Amal or pass. Everyone receives this window regardless of who holds a card. Once everyone passes, the phase begins.',
'A pass commits until another opening card is played. Playing Amal resets the confirmations, so everyone can respond to the changed state before continuing.',
'Automatic auctions, collection and Mentat payments wait for confirmation. Unpaid bribes are not available spice until paid at Mentat. Income from the previous phase and unused ally credit are settled before the next opening.',
'In the explicitly opted-in Semuta preview with a physical Ix deck, a clean Amal discard pauses after the spice reduction and opening-pass reset. Another holder may claim only the used Amal card; all-seat decline leaves it discarded. Either path restores the same phase-opening confirmation window before bidding, draws or other opening effects begin.',
'The server, phase controls and AI support this timing. Supported expansion starts are unfinished previews. Printed card timing, conflicts among simultaneous beginning-of-phase powers and later expansion economy interactions still need the complete audit.',
],
related: ['bidding', 'collection', 'mentat', 'card-thumper', 'ix-modules'],
},
{
id: 'cheap-hero-traitor',
title: 'Cheap Hero and Heroine traitor',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'One expansion traitor card can betray either Cheap Hero card repeatedly.',
steps: [
'The Ixians & Tleilaxu expansion adds one Cheap Hero traitor to setup. It is separate from the Cheap Hero and Cheap Heroine treachery cards and is not a leader disc.',
'If an opponent uses either hero as their battle leader, the holder may reveal this traitor. The ordinary traitor outcome applies: the opponent loses its army and played cards; the hero has zero strength and grants no leader bounty.',
'Keep the traitor after revealing it. You can call it again against either hero in later battles, including against a different opponent. Revealed traitor identities remain visible in the player panels; unrevealed holdings remain private.',
'Harkonnen may call this traitor against its ally’s opponent through the ordinary ally-power response. Kwisatz Haderach protects an accompanying hero against a traitor call.',
'When this original expansion identity is in the actual Traitor Deck, Moritani may draw it as a normal Mentat assassination replacement. It remains a private Traitor Card, not a physical opposing leader disc or native-faction assassination target. The retired victim stays permanently out of the deck.',
'The matching, outcome, public memory and AI support are implemented and tested. Full expansion deck setup and later expansion interactions remain gated with the rest of the expansion.',
],
checklist: [
{area:'Implementation',status:'Partial',detail:'Canonical Hero is accepted as a physical Moritani replacement, separately from printed leader-disc and faction-target lookup. Full active/retired census still prevents fabrication or copying; no Hero leader or Duke Traitor is added.',evidence:['game/traitors.ts','game/moritani-assassinate.ts','game/engine.ts']},
{area:'Player controls',status:'Partial',detail:'Actual390px final Collection readiness and original owned Mentat initialization produce one Hero in the private hand; its real inspector shows Any faction and strength0 with normal traitor guidance. No overflow/browser errors; no extra replacement selector.',evidence:['components/game-table.tsx']},
{area:'AI',status:'Partial',detail:'All four actual Ready policies advance through owned initialization before the automatic Hero draw. The card choice comes from the original reserve, not AI invention; strategic calibration remains deferred.',evidence:['game/bots.ts']},
{area:'Documentation',status:'Partial',detail:'One physical expansion Traitor identity, two matching Hero Treachery cards and no leader disc are distinct. Replacement legality does not make Hero a faction assassination target; permanent victims stay out.',evidence:['docs/MORITANI_ASSASSINATE_LEADERS.md','docs/NEXUS_CARD_RULES.md']},
{area:'Verification',status:'Partial',detail:'Affected15-file134/134, five original Hero API/policy paths, next-Storm continuation and actual390px inspector pass. Illegal physical-disc/target use and one-card census boundaries are covered. No saved/deployed or complete-expansion acceptance.',evidence:['tests/fixture-moritani-hero-replacement.ts','tests/moritani-hero-replacement.test.ts']},
],
related: [
'setup',
'battle',
'faction-harkonnen',
'advanced-atreides',
'ix-modules',
'moritani-assassinate-leaders',
],
},
{
id: 'card-thumper',
title: 'Thumper: a worm instead of a reveal',
category: 'Cards',
coverage: 'Partial',
summary:
'Start the spice phase with a worm encounter without consuming the next spice card. First-turn precedence is an explicit provisional preview policy.',
steps: [
'Play Thumper at the opening of Spice Blow, before the first reveal. Discard the treachery card. Resolve a Shai-Hulud encounter against the previous territory in the first spice discard pile.',
'Fremen survival, optional allied protection, cancellation responses, Nexus and rides resolve through the ordinary worm sequence. If protection needs a decision, the actual next spice card stays in the deck until that decision finishes.',
'Continue drawing afterward to reach a territory. In the advanced game, another worm drawn after Thumper is an additional worm and can offer Fremen placement. The second spice blow then resolves normally against its separate pile.',
'After the first turn, a waiting Sandtrout suppresses the encounter under the provisional preview interpretation. Its immediate territory replacement receives double spice; a replacement worm instead resolves normally.',
'Thumper does not add a Shai-Hulud card to the spice deck. The generated encounter is remembered in the discard history for timing but disappears when the deck is reshuffled.',
'First-turn preview policy: Thumper may be spent and discarded, but its worm encounter is ignored and normal spice drawing continues. The held-card explanation warns before spending. This applies the ordinary first-turn rule by inference; it is not a separately confirmed publisher ruling. Broader phase-opening priorities remain under review.',
],
related: ['spice-blow', 'sandtrout', 'advanced-storm-spice', 'ix-modules'],
},
{
id: 'sandtrout',
title: 'Sandtrout: broken alliances and the next worm',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'A pending spice-card effect that can cross phases and turns. Original selected-Ix previews retain explicit provisional first-turn and Thumper interpretations.',
steps: [
'Drawing Sandtrout immediately breaks existing alliances and clears pending alliance offers. It is then held aside while spice draws continue. A territory drawn before the next active Shai-Hulud receives its usual spice amount.',
'The next active Shai-Hulud drawn is suppressed: it does not devour the previous territory, offer Fremen protection or a ride, or trigger its own Nexus. Discard the consumed Sandtrout with that suppressed worm.',
'If the immediate replacement is a territory, double its spice. Harvester can then double that enhanced blow again. Spice still cannot appear in the storm.',
'If the immediate replacement is another Shai-Hulud, resolve it normally and do not double a later territory. A normal worm can trigger a Nexus, and further normal worms can offer advanced Fremen placement.',
'The pending Sandtrout effect survives until consumed, including between the two advanced spice blows and across turns. Its status is public. A still-hidden Sandtrout at the top of the deck is visible only to authorized Atreides foresight.',
'Homeworld occupation and Leader Skills retain their ordinary benefits while Sandtrout is waiting. Its later worm suppression and immediate-replacement doubling follow the same printed effect.',
'First-turn preview policy gives ignored worms precedence: Sandtrout remains waiting and no doubling is earned. Later Thumper equivalence lets Sandtrout suppress that generated encounter. Both compositions are labelled provisional. A separately summoned Fremen worm and wider module/phase-opening interactions retain their separate contracts and audit boundaries.',
],
related: [
'spice-blow',
'advanced-storm-spice',
'card-harvester',
'ix-modules',
],
},
{
id: 'card-poison-tooth',
title: 'Poison Tooth: choose after the reveal',
category: 'Cards',
coverage: 'Partial',
summary:
'A poison weapon with an optional attack on both leaders. It is included in the local Ix prototype deck; supported expansion starts are available as unfinished previews.',
steps: [
'Commit Poison Tooth in your weapon slot. After both plans are revealed, its owner chooses whether to activate it before traitor decisions proceed. Committing the card does not yet activate its poison.',
'When activated, the tooth attacks both leaders, including its owner’s leader. Chemistry in the defense slot protects that leader. Snooper and Shield Snooper do not protect against the tooth. A Chemistry card used as a weapon supplies no defense.',
'When left unused, the tooth kills neither leader. Other weapons still work. A winning player may keep the unused tooth or discard it; a losing player normally discards it. Moritani’s defeated ally may choose an unused tooth as its one retained card when the battle has a winner. A used tooth is discarded even when its owner wins.',
'Voice can name Poison Tooth specifically or address poison weapons. Requiring it in a plan does not remove its later activation choice. A traitor victory takes precedence over the weapon effects.',
'Choose after comparing the revealed plans: killing both leaders may turn a loss into a win, but may also remove your own winning leader strength. The ordinary dial, tie, spice-support and casualty rules still apply.',
'The effect and choice have focused tests. Complete expansion setup, direct comparison against the CHOAM replacement printing, and interactions with later expansion cards remain under audit.',
],
related: ['battle', 'ix-battle-cards', 'advanced-combat'],
},
{
id: 'card-artillery',
title: 'Artillery Strike: shields and stunned leaders',
category: 'Cards',
coverage: 'Partial',
summary:
'An attack on both leaders that suppresses leader strength and bounty. Engine support exists; the Ix deck is available in supported unfinished expansion previews.',
steps: [
'Play Artillery Strike in the weapon slot. It attacks both leaders. Each side protects its own leader with Shield or Shield Snooper. Weirding Way as projectile defense is not a shield and does not protect against this card.',
'Surviving leaders contribute no battle strength. The implemented battle comparison uses the dials, with the aggressor winning ties; the attached Kwisatz Haderach bonus is also suppressed. The surviving KH token is not killed by Artillery Strike.',
'No bounty is collected for leaders killed in a battle resolved with Artillery Strike, including a leader killed by the opposing weapon. Spice support and force casualties still follow the usual rules.',
'Discard the card after use. A traitor victory overrides its effect; lasgun/shield explosions also take precedence and destroy the territory’s forces and spice as usual.',
'Bene Gesserit must name Artillery Strike specifically. A generic prohibition on projectile weapons does not prohibit it.',
'The effects have focused tests. Complete expansion setup, direct comparison against the CHOAM replacement printing, and Stone Burner, leader-skill and other expansion interactions remain under audit.',
],
related: ['battle', 'ix-battle-cards', 'advanced-combat'],
},
{
id: 'ix-battle-cards',
title: 'Ix battle cards: combined and alternate roles',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Poison Blade, Shield Snooper, Weirding Way and Chemistry have tested combat support. The fourteen-card inventory is assembled; supported faction starts are available as unfinished previews.',
steps: [
'Poison Blade attacks with both projectile and poison. A defense against only one of those types does not save the leader. Shield Snooper defends against both types.',
'Shield Snooper counts as a shield for a lasgun explosion. Weirding Way used as projectile defense does not count as a shield: it neither stops a lasgun nor causes an explosion.',
'Weirding Way normally fills the weapon slot as a projectile weapon. With another weapon, it fills the defense slot as projectile defense. Chemistry normally fills the defense slot as poison defense; with another defense, it fills the weapon slot as poison. One card cannot fill both slots.',
'Voice can name one of these special cards directly or use a matching generic attack or defense type. A prohibition uses the role the card actually plays. For example, forbidding poison weapons still allows Chemistry as poison defense.',
'Compulsion uses the default role. Requiring a projectile weapon can compel Weirding Way as a weapon. Requiring a projectile defense cannot force a player to turn Weirding Way into that defense. Likewise, requiring a poison weapon cannot force Chemistry out of its default defense role.',
'Prescience reveals the card occupying the requested slot. With a poison weapon and Weirding Way, a weapon question reveals the poison weapon; a defense question reveals Weirding Way. The other card remains private, and the revealed slot must remain unchanged.',
'The local Ix prototype deals the full expansion deck through genuine setup. Poison Tooth and Artillery Strike have their own topics. Complete rules compliance and combined expansion interactions remain unfinished; supported faction starts are labelled previews.',
],
related: [
'battle',
'battle-cards',
'ix-modules',
'card-poison-tooth',
'card-artillery',
],
},
{
id: 'setup',
title: 'Start a table and take your seat',
category: 'Getting started',
coverage: 'Partial',
summary:
'Create a room, invite rivals with its code, and complete each faction’s starting choices.',
steps: [
'Each player chooses a distinct faction and an unoccupied player circle, then marks Ready. The six circles appear around the map and determine storm order. Changing your circle resets readiness. The host starts when everyone is ready.',
'The host may instead deal random enabled factions or draw distinct prediction numbers for a faction draft. The highest number picks first; choices apply together after all seats pick. AI seats choose automatically and human readiness clears. Human seats may offer a faction swap; a human recipient must accept, while an AI currently accepts immediately. Human readiness then clears. Other lobby changes wait for a pending human offer to be accepted, declined or canceled.',
'After positions are fixed, Bene Gesserit seals a secret prediction of a faction and turn. No traitor or Treachery Cards have been dealt yet. Other players wait for this choice; if Bene Gesserit is absent, the table continues automatically.',
'Each player receives four private traitor choices and keeps one. Harkonnen keeps all four automatically. Every remaining selection must finish before starting spice and forces are placed. Your starting Treachery hand is still empty.',
'Starting spice and fixed forces are then placed. Fremen distributes ten forces among Sietch Tabr, False Wall South and False Wall West, choosing their printed sectors. Basic Bene Gesserit starts with one fighter in Polar Sink. In Advanced setup, Bene Gesserit instead chooses a printed territory and sector after Fremen placement; its advisor becomes a fighter when alone.',
'After all starting force choices, each player receives one private Treachery Card and Harkonnen receives two. Dealing and entry into the first Storm phase are automatic. The table names the player whose setup choice is still required; there is no separate confirmation for dealing.',
'Older saved tables that already received their cards keep those cards and their existing unfinished choices. Returning to a table does not restart setup or deal another hand. Supported classic and expansion factions can start Basic or Advanced games as unfinished previews while rules and interactions are completed.',
'The browser keeps a private seat cookie. Returning to the same room in that browser restores your seat. Separate players should use separate browsers or profiles.',
],
related: ['privacy', 'ai-players', 'storm', 'implementation-checklist'],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Lobby random faction dealing, prediction-number drafting and human-initiated faction swaps retain seat identities and clear readiness on assignment. AI targets automatically accept under a provisional policy; AI-initiated offers remain unfinished. Base setup enforces prediction, traitors, forces and automatic dealing in order, with private choices and preserved saved tables. Advanced starting advisors and elite forces share the same setup logic. The normal lobby starts selected expansions and optional modules through existing genuine setups as labelled previews; unsupported combinations still reject at start.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'The table names the current stage and waiting players, shows only timely private choices, and requires exactly ten Fremen forces. Desktop prediction, traitor selection, multi-sector placement and invitation restoration passed. Mobile and live Advanced controls still need acceptance.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles follow the stage order using only their own views. The base-roster setup matrix and sampled Basic and Advanced games complete without rejected candidates. Initial Fedaykin allocation strategy and complete expansion setup remain unfinished.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'This guide explains base setup order, private information, waiting ownership, automatic dealing and saved-table recovery. Expansion and optional-module instructions still need their complete rule-specific ordering.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Checks cover all 57 base-faction rosters, four AI profiles, two seating orders, private stage restoration, duplicate final choices, card and force conservation, and saved setup without redealing. Full rules and browser acceptance remain separate.',
evidence: [
'tests/base-setup-order.test.ts',
'tests/bot-staged-setup.test.ts',
'tests/base-setup-recovery.test.ts',
],
},
],
},
{
id: 'ai-players',
title: 'Play with AI opponents',
category: 'Getting started',
coverage: 'Partial',
summary:
'The host can fill open faction seats with Easy, Medium, Hard or Brutal AI players.',
steps: [
'In the lobby, choose an unoccupied faction and difficulty, then select Add AI player. Open Configure on an AI seat to change its difficulty, faction or player circle, or remove it before starting. Changes save immediately, keep the same seat and clear human readiness; AI seats remain ready.',
'Easy uses varied destinations, small deployments and low bids. Medium balances strongholds and spice. Hard uses more conservative battle estimates and targeted Karama responses. Brutal spends more and prioritizes disrupting rivals holding several strongholds.',
'AI decisions use the same private player view and legal-action checks as human decisions. Difficulty never grants extra spice, hidden cards or access to an opponent’s sealed plan.',
'Online rooms schedule one AI action at a time with a 1.5-second interval. A response that needs your input waits for you, even when every other seat is AI. Reconnecting preserves the saved AI deadline and seat control; see Online AI action pacing for its verification boundary.',
'These policies complete Basic games. A balanced study found Easy weaker than the other levels, but did not establish a reliable strength ordering among Medium, Hard and Brutal. Advanced and expansion decisions are still being developed.',
'Full AI strategy development and strength tuning wait until all other game features are complete. Final targets are approximately 75% wins for Medium against Easy, Hard against Medium, and Brutal against Hard in balanced pairwise matches; these targets have not yet been demonstrated.',
],
related: [
'setup',
'privacy',
'battle',
'ai-pacing',
'implementation-checklist',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Integrated: lobby AI seats keep their identity and saved settings. Basic legal participation is connected; final strategies across every faction and module remain unfinished.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Integrated: hosts add, remove and configure permanent AI seats in the lobby. Shared validation preserves identity, available factions/circles and readiness. Final AI strategy and calibration remain missing.',
},
{
area: 'AI',
status: 'Partial',
detail:
'Existing four profiles remain available. Full strategic implementation and adjacent 75% strength targets wait until all non-AI features are complete.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'Lobby configuration, readiness resets and the distinction between current profiles and final strength targets are explained here.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused host authority, private views, saved settings, JSON restoration and concurrent-start checks cover configuration. Full AI strategy, multiplayer and calibrated strength acceptance remain unfinished.',
evidence: [
'tests/lobby-bot-configuration.test.ts',
'tests/lobby-bot-configuration-recovery.test.ts',
'tests/lobby-bot-configuration-http.test.ts',
],
},
],
},
{
id: 'privacy',
title: 'Private information and reconnecting',
category: 'Getting started',
coverage: 'Implemented',
summary:
'Each player receives their own hand and secrets. Room codes invite players; they do not grant control of an existing seat.',
steps: [
'Your spice, hand, traitors and prediction remain private in other players’ views. Inspect buttons enlarge only components your current view is allowed to see; inspection does not select, play or reveal them.',
'The treachery discard pile is private and cannot be searched unless a card effect specifically permits it. A previously revealed card does not make the whole discard pile available for inspection.',
'A submitted plan stays hidden until both plans are sealed. Prescience exposes only its chosen element to the combatants.',
'If the table changes while you act, your view refreshes. Review the current decision before trying again.',
'A failed connection offers retry controls. An uncertain game action is checked against the saved table rather than automatically played again.',
'If creating or joining a room has an uncertain result, keep the browser tab open. Its saved retry details survive refresh; Retry same request recovers the original room and seat when the request already succeeded. Closing the tab or clearing browser data can remove those details. A clearly rejected first request lets you correct the form.',
'Before losing this browser’s seat, open Protect your saved seat, save its complete private recovery kit and enable the key. Keep it separate from the public invitation. Anyone with that kit can control the seat and see its private information.',
'Recover a saved seat restores the same faction and pending commitments, and revokes its previous browser sessions. Keep the recovery page open if a result is uncertain and retry the same request. A replacement key invalidates the older kit.',
'A room code alone cannot recover an occupied seat. Use the retained entry request for an uncertain create or join, or a previously saved kit for later seat recovery. Hosts cannot take over another human’s seat.',
'After the game starts, Let AI play for me lets you delegate your own seat to Easy, Medium, Hard or Brutal AI. It uses only your seat’s information and can complete setup, spend resources and commit plans. Your seat, saved choices and recovery kit remain yours. Take back control stops future AI decisions without undoing completed actions.',
'The table displays which human seats are on autopilot. AI stops when another human must decide. Online progress is saved one AI action at a time; if processing is interrupted, reopen the table and use its reconnect or resume control when offered. Autopilot does not automatically start because a player disconnects.',
],
related: ['battle', 'alliance-funding', 'ai-pacing', 'seat-ai-permission'],
},
...PHASES.map(
(title, phase): RuleTopic => ({
id: phaseIds[phase],
title: `${phase + 1}. ${title}`,
category: 'Turn phases',
coverage: 'Partial',
summary: PHASE_HELP[phase],
steps: phaseDetails[phase],
related:
phase === 5
? ['alliance-funding', 'faction-guild', 'faction-fremen']
: phase === 6
? [
'card-karama',
'card-truthtrance',
'battle-cards',
'automatic-casualties',
]
: phase === 4
? ['ecaz-ambassadors', 'tleilaxu-revival']
: phase === 3
? ['ordinary-auction-clock', 'ix-technology', 'nexus-ixian-betrayal', 'nexus-ixian-replacement', 'richese-cards']
: phase === 2
? ['advanced-charity-order', 'choam-economy', 'bg-charity-karama']
: phase === 1
? ['card-harvester', 'faction-fremen']
: phase === 0
? ['storm-cards', 'advanced-storm-spice', 'faction-fremen']
: undefined,
}),
),
{
id: 'advanced-charity-order',
title: 'Advanced Charity player order',
category: 'Turn phases', coverage: 'Partial', developmentStage: 'Prototyped',
summary: 'New Advanced Charity phases give each faction one opportunity, beginning with the First Player counterclockwise.',
steps: [
'Resolve CHOAM opening income before any ordinary claim. When it is your turn, claim if eligible and then finish your Charity turn. Finishing without a claim passes your opportunity.',
'A claim and its native responses retain the current player. Completing a Karama response does not finish or consume the responder’s own Charity turn.',
'Waiting and completed seats cannot claim or finish. A new Truthtrance answer cannot reopen a completed ordered turn, while a remaining owned future claim may still support a binding answer.',
'Basic and already-opened unstamped Advanced phases keep concurrent readiness. Inflation, Homeworld bonuses and CHOAM funding retain their existing calculation and limitations.',
'Owned Juice of Sapho changes the remaining turn order first/last. A current accepted claim provisionally protects that turn before the reordered later queue. Completed turns stay closed and no additional claim is granted. Broader interactions and full Advanced acceptance remain unfinished.',
],
related: ['charity', 'choam-economy', 'bg-charity-karama', 'truthtrance-turn-actions'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Fresh native order, current-only claim/finish and original response/closing lifecycle are connected. Sapho reorders remaining opportunities with provisional started-current protection and original claim limits.', evidence: ['game/charity-order.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Persistent current/wait/completed status and native claim/finish controls retain funding explanations.', evidence: ['components/charity-claim.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing policies wait for their actual opportunity and use the native claim and finish actions; strategy and calibration remain deferred.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Source cutover, Basic/legacy behavior, remaining entitlements and interaction boundaries are explicit.', evidence: ['docs/ADVANCED_CHARITY_ORDER.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused helper, native and control sources; frozen runtime evidence and complete-mode acceptance are separate.', evidence: ['tests/charity-order.test.ts', 'tests/advanced-charity-order-engine.test.ts', 'tests/charity-claim-controls.test.tsx', 'tests/sapho-charity-order.test.ts', 'tests/sapho-charity-order-engine.test.ts', 'tests/sapho-charity-order-controls.test.tsx'] },
],
},
{
id: 'ordinary-auction-clock',
title: 'Ordinary auction: ten seconds to bid',
category: 'Turn phases', coverage: 'Partial', developmentStage: 'Prototyped',
summary: 'The server times each new ordinary bidding opportunity and uses the native pass when its ten seconds expire.',
steps: [
'Watch the persistent ordinary-auction countdown. Bid or pass before it reaches zero; server time decides the deadline. The local display never submits a pass.',
'Inspection, Truthtrance, cancellation, payment and other current native decisions hold the remaining budget. Unrelated polls do not grant more time. The next actual bidder receives ten seconds.',
'If passing would violate a binding Truthtrance answer, the explicit online convention submits only its required legal bid. Normal payment is owed if that bid wins; no extra strategic bid is chosen.',
'Administrative room-control or closure changes conservatively re-arm ten seconds once play resumes, including pauses no client observed. Paused, closed and removed rooms do not progress.',
'An already-open older unstamped lot keeps its saved untimed protocol; the next new native lot is timed. Pure offline games do not use wall time. A stored online deadline is evaluated on the next authenticated request after a stopped host.',
'Silent and Once-Around procedures retain their own timing. Full special-auction, browser, deployed and comprehensive acceptance remain unfinished.',
],
related: ['bidding', 'truthtrance-bid', 'truthtrance-turn-actions', 'ai-pacing'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Versioned native source, trusted clock, held budget, canonical pass and required-Truth bid use the original room and native rule paths.', evidence: ['game/auction-clock.ts', 'game/engine.ts', 'db/rooms.ts', 'db/room-continuation.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Persistent countdown distinguishes starting, running, interrupted, paused and server-resolution states; no client action is dispatched.', evidence: ['components/auction-countdown.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing online AI pacing runs alongside the deadline; no strategy refinement or calibration is added.', evidence: ['db/room-continuation.ts', 'db/rooms.ts', 'tests/bot-pacing.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Printed Basic/Advanced source, provisional online conventions and legacy timing boundaries are explicit.', evidence: ['docs/AUCTION_TIME_LIMIT.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused helper, native, display and trusted-room clock tests; final hosted and full-mode acceptance remains.', evidence: ['tests/auction-clock.test.ts', 'tests/auction-clock-runtime.test.ts', 'tests/auction-countdown.test.tsx', 'tests/rooms-auction-clock.test.ts'] },
],
},
{
id: 'storm-cards',
title: 'Storm Cards: forecast and revealed faces',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Inspect the six possible faces, your permitted private forecast, and a card already revealed to the table.',
steps: [
'The gallery shows the six possible values, one through six. It does not identify a live draw.',
'Every new Advanced Storm after the first uses these cards, even without Fremen. That does not give another faction Fremen’s private forecast. First-turn dials, Basic and an already recorded saved opening keep their own protocol.',
'When the table grants Fremen its private forecast, Inspect Storm Card opens that exact face. Other players do not receive the private forecast.',
'When the card is publicly revealed, its chronicle entry gains an inspector. The recorded face remains available while that entry remains in the chronicle, including after refresh.',
'The card value and actual movement can differ. Weather Control and Ecological Testing Station do not rewrite the recorded card face. Read the current storm result for the distance actually moved.',
'Earlier saved chronicle entries without a recorded face retain their text. Inspection is read-only and never draws, plays or reveals another card.',
],
related: ['storm', 'advanced-storm-spice', 'faction-fremen', 'privacy', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Six numeric faces and a public reveal record connect existing Storm Card state to inspection. Inspection itself changes no draw or movement; the later Advanced default is tracked separately. Full component artwork and printed-face verification remain open.', evidence: ['game/storm-cards.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Private forecasts, public revealed-card chronicle entries and the six-face reference gallery share a keyboard-accessible enlarged inspector.', evidence: ['components/storm-cards.tsx', 'components/game-table.tsx', 'components/rules-reference.tsx'] },
{ area: 'AI', status: 'Implemented', detail: 'Inspection adds no game action or AI decision. Existing forecast authorization, legal choices and profiles remain unchanged.' },
{ area: 'Documentation', status: 'Partial', detail: 'Guidance distinguishes private forecasts, public history, reference examples and modified storm distance. This is not complete physical-component certification.', evidence: ['docs/STORM_CARD_INSPECTION.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused checks cover private forecast authorization, public reveal records, saved continuation, original versus modified distance and malformed component rejection. Broader rules and visual acceptance remain separate.', evidence: ['tests/storm-card-inspection.test.ts'] },
],
},
{
id: 'nexus-offers',
title: 'Propose, withdraw and break alliances',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Manage ordinary alliance offers during a Nexus; each partner must agree before an alliance forms.',
steps: [
'When a Nexus opens, choose a partner and use Propose / accept alliance. A player who has invited you is marked in the partner list. Both players must be unallied and the current rules must permit the pairing.',
'Your outgoing offer names its recipient. You remain unallied until the other player agrees. Choose another partner to replace the offer, or use Withdraw your alliance offer to cancel it.',
'Withdrawal removes only your outgoing offer. Another player’s invitation may remain, and you can still accept it while the Nexus is open. Once allied, use the separate Break alliance action to leave during a Nexus.',
'The table chronicle records proposals, formation, withdrawals and breaks. Changing an offer clears Nexus readiness so the table can review the updated negotiations.',
'Refresh restores saved offers and alliances. If acceptance and withdrawal arrive together, only one action is committed; refresh or reconcile a changed table before choosing again. Pending responses and decisions must finish first.',
'Allied forces, cards and spice keep their owners. Alliance funding and individual faction powers use their own controls; special alliances and expansion restrictions remain separate.',
],
related: ['spice-blow', 'alliance-funding', 'table-discussion', 'privacy'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Existing ordinary reciprocal offers, withdrawal and break preserve readiness and configured alliance restrictions. Broader special diplomacy remains unfinished.', evidence: ['game/nexus-alliance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Named outgoing offers now have live withdrawal, alongside existing proposal, acceptance and break controls.', evidence: ['components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four existing profiles can continue legally after withdrawal. Full diplomacy and difficulty tuning remain deferred.' },
{ area: 'Documentation', status: 'Implemented', detail: 'Offer versus alliance, incoming invitations, readiness, refresh and concurrent choices are explained.', evidence: ['docs/NEXUS_OFFERS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Full-table rendering, JSON continuation, pending-window rejection and SQLite acceptance/withdrawal races are covered. All-configuration and full visual acceptance remain open.', evidence: ['tests/nexus-offer-controls.test.tsx', 'tests/nexus-offer-recovery.test.ts', 'tests/nexus-alliance.test.ts'] },
],
},
{
id: 'hand-browsing',
title: 'Browse your private hand',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Find cards by name or printed category and arrange their display while keeping every physical card and its controls.',
steps: [
'Open Your private hand and type part of a card name in Search your hand. Search ignores capitalization, surrounding spaces and accents; punctuation is literal. The result count shows how many of your current cards are visible.',
'Printed category filters weapons, defenses, Worthless cards, Cheap Heroes or Heroines, and Special cards. These are the cards’ primary printed categories. Flexible battle roles and faction powers still use their normal choices and rules.',
'Display order offers your saved hand order, Name A–Z or printed category with names within each category. Identical names remain separate physical cards. Choosing Hand order restores their saved sequence.',
'Show all cards clears the name and category filters while keeping your selected display order. An empty hand has a different message from a search with no matches.',
'Inspect and play the displayed cards using their existing controls. Required decisions and dedicated effect panels remain outside this filter. Browsing does not play, discard, rearrange the saved hand or change a Battle Plan.',
'Incoming table updates recalculate the results from the cards you currently own. Filters and display sorting are local to the open hand panel; leaving the tab, changing seats or refreshing resets them. Saved cards and pending game decisions remain intact.',
],
related: ['draw-piles', 'battle-cards', 'privacy', 'nullentropy-search'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Search, printed-category filtering and stable display sorting select only the current owned cards without changing their physical IDs or saved order.', evidence: ['game/hand-browsing.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Native search/category/order controls, result count, clear filters, keyboard scrolling and existing per-card inspectors/actions are connected.', evidence: ['components/hand-browser.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'This local display adds no game action. Existing legal AI participation is unchanged; strategic refinement remains deferred.' },
{ area: 'Documentation', status: 'Implemented', detail: 'Filtering, printed roles, sort order, identical cards, empty states, live changes and refresh behavior are explained.', evidence: ['docs/HAND_BROWSING.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused selection and live table rendering cover expansion categories, physical identity, immutable sorting, current-card updates and viewer privacy. Browser and full visual acceptance have separate evidence and limits.', evidence: ['tests/hand-browsing.test.ts', 'tests/hand-browser-controls.test.tsx'] },
],
},
{
id: 'draw-piles',
title: 'Cards and draw piles',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Read the Treachery and Spice draw counts above the board and distinguish them from cards already elsewhere on the table.',
steps: [
'Once setup begins, the two draw counts show cards currently in the Treachery and Spice draw piles. Everyone sees the same counts. The numbers follow table updates and refresh without a separate game action.',
'Cards in hands, the auction pool, separate faction caches and discard piles are outside these draw counts. The ordinary auction’s remaining count includes its current lot. Nexus Cards retain their separate deck and discard counts in the Nexus panel.',
'Zero means the current draw pile is empty. The existing draw rules may replenish it from eligible discards; the count is not a total of all cards remaining in the game. First-turn worms temporarily set aside rejoin the Spice draw pile when that sequence finishes.',
'A pile count does not reveal card identities or their order. Inspect your own hand, the public Spice discard tops and any private cards an effect permits you to see using their existing card inspectors.',
'Treachery discard contents remain private unless an effect permits inspection. A paid Nullentropy Box search uses its own private controls; the draw counts do not grant additional inspection.',
],
related: ['bidding', 'spice-blow', 'nullentropy-search', 'nexus-cards', 'privacy'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Authoritative Treachery and Spice physical draw counts are projected after setup begins, separately from auction, hands and discards.', evidence: ['game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'A read-only display above the board follows live updates and links to this guide.', evidence: ['components/draw-piles.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Counts add no decision or strategy change. Minimal legal participation remains available; strength tuning waits for feature completion.' },
{ area: 'Documentation', status: 'Implemented', detail: 'Physical pile boundaries, empty/refill behavior and existing inspection permissions are explained.', evidence: ['docs/DRAW_PILES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Genuine Basic setup, actual auction draws, refill, skipped worms, Thumper exclusion, view privacy, JSON restoration and live component rendering are checked. Complete combined-game and visual acceptance remain open.', evidence: ['tests/draw-piles.test.ts', 'tests/draw-piles-controls.test.tsx'] },
],
},
{
id: 'force-counters',
title: 'Inspect force counters and their locations',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Enlarge faction counters and read public reserves, Tanks, deployed groups and Homeworld breakdowns.',
steps: [
'Use Inspect forces beneath any player’s force summary. Everyone can inspect these public counts, including while another player is making a decision. Opening the inspector does not move forces or submit a game action.',
'Reserves, the Tleilaxu Tanks and each deployed location show physical counters. A special counter is included in that location’s total, not added again. Battle strength, spice support, leaders and temporary powers are separate.',
'Ixian normal counters are Suboids and their special counters are Cyborgs. Emperor’s special counters are Sardaukar; Fremen’s are Fedaykin. When a table uses combined counts, it does not assign a separate starred count to each location.',
'Bene Gesserit advisors are the reverse face of the same force counters. A territory’s advisor stance applies across its sectors; advisor counts are included in that territory’s total. Reserves and the Tanks have no deployed stance.',
'Native Homeworld groups subdivide reserves and are listed separately as a breakdown. Foreign Homeworld deployments are additional locations. Counters inside the Mobile Stronghold remain inspectable before its setup placement; Discovery locations use their names without a map sector.',
'A concealed No-Field appears as a separate marker with its public location. It counts as one for board presence, but adds no physical counter to this inventory. Its hidden value is not revealed or inferred; revelation draws from the reserves available then.',
'Refresh restores the saved public groups. The inspector follows table updates while open. Counter illustrations are enlarged original diagrams; the gallery shows component types rather than quantities in a saved game.',
],
related: ['advanced-combat', 'ix-forces', 'advanced-advisors', 'homeworlds', 'richese-no-field'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Public physical pools, special subsets, advisor stances, native reserve breakdowns and foreign deployments are projected without changing game state. Full physical-component and rules certification remain open.', evidence: ['game/force-inventory.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Every live player summary opens enlarged force inspection; the internal reference includes all twelve factions.', evidence: ['components/force-inspector.tsx', 'components/game-table.tsx', 'components/rules-reference.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Read-only inspection adds no game action. Existing minimal legal participation is unchanged; strategy tuning remains deferred.' },
{ area: 'Documentation', status: 'Implemented', detail: 'Physical counts, special identities, advisor faces, Homeworld accounting and concealed markers are explained.', evidence: ['docs/FORCE_INSPECTION.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused checks cover all faction identities, public-view equivalence, JSON recovery, physical subsets, Basic Homeworld special identity, unplaced HMS, foreign deployments and concealed-value privacy. Full visual and combined-game acceptance remain open.', evidence: ['tests/force-inventory.test.ts', 'tests/force-inspector.test.tsx'] },
],
},
{
id: 'alliance-funding',
title: 'Fund an ally’s bid or shipment',
category: 'Getting started',
coverage: 'Implemented',
summary:
'Use Alliance funding during bidding or shipment and movement to authorize a payment contribution.',
steps: [
'Set an unspent pledge. That spice is reserved for your ally for the current phase.',
'Your ally can choose its share of the next payment, or leave it blank to use personal spice first.',
'Shipment contributions go directly to the Guild, including a contribution toward the Guild’s own shipment. Spice paid by the Guild itself goes to the bank. If the Guild is absent, an independent Karama shipment rate applies, or Guild income is prevented, the applicable payment goes to the bank.',
'Guild transport, southern-reserve cross-shipment and return controls show the selected physical forces, rounded total cost, personal payment and pledged share before you submit. A combined-sector group is priced by its actual total. The Guild must fund its own share before receiving shipment income.',
'Unspent funding returns at phase end. A pledge committed to the current high bid cannot be withdrawn.',
],
example:
'You have two spice and your ally pledges four. You may bid six; winning uses two of yours and four of theirs.',
related: ['bidding', 'movement', 'faction-guild', 'card-karama'],
},
{
id: 'revealed-battle-components',
title: 'Compare revealed battle components',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'After both plans are public, compare their dials, leaders and played card faces in one shared area.',
steps: [
'Use Compare revealed battle plans beside your next decision. Attacker and defender are shown in a stable order with the exact force dial and the played leader’s printed strength. These numbers alone are not the final battle score.',
'Weapon and original-defense cards show their names, printed categories and gameplay guidance. A Cheap Hero appears in the leader slot. None marks an empty slot. Added after reveal is separate from the original defense; Diplomat and other effect details explain changes without replacing the recorded plan.',
'Inspect card or Inspect leader enlarges that public component. Return to battle decisions takes you back to the pending controls. Inspection never plays a card, changes a dial or submits a Traitor call.',
'The shared display stays available while another player owns a post-reveal choice. It does not appear while either plan remains sealed. Private Atreides inspection and unplayed hand cards stay on their separate authorized surfaces.',
],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'One read-only display consumes existing revealed projections, exact used card identities and authorized leaders. No new engine or saved-state behavior.', evidence: ['components/revealed-battle.tsx', 'components/revealed-plan-pieces.tsx'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Public faces, exact dials, direct enlarged inspection and navigation to the decision controls remain available across decision ownership.', evidence: ['components/game-table.tsx', 'app/globals.css'] },
{ area: 'AI', status: 'Implemented', detail: 'The same public components display an AI plan after normal revelation; presentation adds no AI decision or strategy change.', evidence: ['components/revealed-battle.tsx'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The guide distinguishes public disclosure, printed values, original and late slots, private insight and decision ownership.', evidence: ['game/reference.ts', 'docs/REVEALED_BATTLE_COMPONENTS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Sealed/revealed actions, used-card privacy, JSON rendering, empty/hero/late slots and shared display during another player’s choice have focused tests. Browser and final checkpoint evidence are recorded separately; full visual and interaction acceptance remain open.', evidence: ['tests/revealed-plan-pieces.test.tsx', 'tests/kwisatz.test.ts', 'tests/diplomat-defense-controls.test.tsx', 'tests/spice-banker-controls.test.tsx'] },
],
related: ['battle', 'battle-cards', 'kwisatz-haderach', 'implementation-checklist'],
},
{
id: 'battle-cards',
title: 'Weapons, defenses and winning cards',
category: 'Cards',
coverage: 'Partial',
summary: 'Build a legal combination and decide what to keep after winning.',
steps: [
'Choose one weapon, one defense, both, or neither. A worthless card can occupy a weapon or defense slot.',
'Choose an available leader or Cheap Hero when required. Without either, battle cards cannot be played. In Advanced, sealing a legal leaderless plan announces that fact to the whole table before reveal; its dial, spice and other choices remain sealed. Refresh retains the same announcement without submitting another plan.',
'On Arrakis, a surviving leader remains in its battle territory for the rest of the Battle phase. A later Lasgun–Shield explosion there also kills previously surviving leader discs still present, even if a different leader fights that later battle. The Basic application is provisional; a successful Traitor call prevents the explosion.',
'A loser normally discards all played cards. If allied with Moritani and the battle has a winner, the defeated ally may retain one played card that a winner could keep. A winner may discard selected played cards; Cheap Heroes are discarded after use.',
],
related: ['battle', 'card-karama', 'moritani-ally-retention'],
},
{
id: 'card-weather',
title: 'Weather Control',
category: 'Cards',
coverage: 'Implemented',
summary: 'Set the pending storm distance before movement resolves.',
steps: [
'Set Storm distance on the card to a number from zero to ten.',
'Play it during the storm phase, including after the dials are revealed.',
'Everyone confirms the revised storm movement.',
'A saved play preserves your chosen distance and cleared readiness. Recovery does not move the storm or ask you to play the card again.',
],
related: ['storm', 'card-atomics'],
},
{
id: 'card-atomics',
title: 'Family Atomics',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Destroy the Shield Wall while you have forces on or adjacent to it.',
steps: [
'Basic keeps its current before-movement Storm window, including before or after distance revelation, and ordinary discard after use.',
'Advanced permits play only after the first game turn, once storm movement is calculated and before it moves. You need fighters or your concealed No-Field on the Shield Wall or an adjacent territory, with no storm strictly between their sector and the touching Wall sector. Your own sector or the Wall may be in storm. Advisors do not qualify.',
'All forces on the Wall are destroyed. Arrakeen, Carthag and Imperial Basin lose its storm protection for the rest of the game. The destroyed Wall remains rock and may still be entered. Ordinary storm casualties follow actual movement, without a retroactive sweep of an unchanged sector.',
'Advanced removes the used card from the game. Inspect its public face in Removed from game; it cannot be reshuffled or recovered from discard. Basic retains ordinary discard. Already completed older plays keep their recorded outcome.',
'A controlled concealed No-Field counts as one force for qualification, even0, using only its public location. A Wall marker provisionally reveals into its actual reserve-capped forces before all Wall casualties; an adjacent marker stays concealed. The forced destructive reveal is source composition, not a separate publisher combined-effect ruling. Broader interactions and complete Advanced remain under audit.',
'A saved play preserves the destroyed wall and its casualties. Recovery does not require your already-destroyed qualifying forces to remain on the wall.',
],
related: ['storm', 'card-weather'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Advanced timing, direct intervening sectors, physical/marker qualification, provisional forced No-Field Wall reveal/casualties and a separate removed-card zone are connected; wider combinations remain.', evidence: ['game/family-atomics.ts', 'game/card-availability.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Shared unavailable reasons and public removed-card inspection retain native card controls.', evidence: ['components/game-table.tsx', 'components/removed-treachery.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing minimal Storm confirmation remains legal; required printed-window guides share legality. Optional card strategy remains deferred.', evidence: ['game/bots.ts', 'game/engine.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Adopted Advanced text, Basic boundary, sector examples and removal are explicit.', evidence: ['docs/FAMILY_ATOMICS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused helper, real turn-two engine and removed-pile sources; full modes, combinations and deployed acceptance remain.', evidence: ['tests/family-atomics.test.ts', 'tests/family-atomics-engine.test.ts', 'tests/fixture-family-atomics-no-field.ts', 'tests/family-atomics-no-field-engine.test.ts', 'tests/removed-treachery.test.tsx'] },
],
},
{
id: 'card-harvester',
title: 'Harvester',
category: 'Cards',
coverage: 'Partial',
summary: 'Double the fresh spice blow while its response window is open.',
steps: [
'Play after the territory card is revealed and before the table accepts the blow.',
'Only the new blow is doubled; existing spice is unchanged. Spice under the storm still does not appear.',
'With the Ixian expansion there are two separate Harvester cards. The provisional preview interpretation applies each physical card to the current fresh blow: both produce four times that blow, or eight times the printed amount after an immediate Sandtrout doubling. This sequential reading is not a separately confirmed publisher ruling.',
'A worm that destroys the fresh blow closes its Harvester window. This does not increase your forces’ collection rate.',
'A saved play preserves the doubled blow and its existing ground spice. Recovery does not add the spice again or consume another Harvester.',
],
example:
'A territory has three spice. A new blow adds eight. Harvester adds another eight, leaving nineteen.',
related: ['spice-blow', 'collection'],
},
{
id: 'card-hajr',
title: 'Hajr',
category: 'Cards',
coverage: 'Partial',
summary: 'Make an additional force move during your movement turn.',
steps: [
'In Basic, play during your shipment and movement turn. Advanced requires the immediate opportunity after a completed Force Movement and its required arrival decisions, before your next voluntary game action.',
'Make one additional legal group move, using the same or another group. Normal source, range and destination restrictions still apply. A completed Ornithopter group provisionally supplies the Advanced timing opportunity.',
'Ornithopter replaces one unused movement entitlement, so one Hajr play and a two-group flight permit three group movements. Groups must differ within that flight, while the later Hajr move may reuse them.',
'The deck contains one physical Hajr. If Nullentropy Box genuinely retrieves it after its discard, you may legally play that same card again for another extra move. This replay is an explicit interpretation because the source establishes no once-per-turn cap. A repeated submission while it is still discarded grants nothing. Advanced still needs a fresh completed-movement opportunity after retrieval; the search supplies no movement.',
'A saved play preserves the extra movement allowance. Recovery neither grants another move nor finishes your movement turn.',
],
related: ['movement', 'ornithopter-movement', 'nullentropy-search'],
checklist: [
{area:'Implementation',status:'Partial',detail:'Accepted physical plays grant counted extra moves; legitimate same-card Box retrieval preserves cost/custody and Advanced timing. Cunning carries unused grants while forfeiting ordinary movement. Legacy markers and receipts retain compatibility.',evidence:['game/engine.ts','game/ornithopter.ts','game/nexus-guild-cunning.ts']},
{area:'Player controls',status:'Partial',detail:'The existing card selector uses held-card/current timing authority. Persistent table text shows accepted Hajr plays and explains fresh Advanced timing after recovery.',evidence:['game/card-availability.ts','components/game-table.tsx']},
{area:'AI',status:'Partial',detail:'Four profiles retain a legal third ordinary move after real Basic/Advanced paid Box recovery. Strategic refinement and calibration remain deferred.',evidence:['tests/hajr-replay-engine.test.ts']},
{area:'Documentation',status:'Partial',detail:'Explains the single physical card, original paid retrieval, repeated legal grant, unchanged Basic timing and fresh Advanced opportunity. Replay remains an explicit source interpretation.',evidence:['docs/RICHESE_ORNITHOPTER_ENGINE_AUDIT.md']},
{area:'Verification',status:'Partial',detail:'Frozen12-file102/102, types/lint/build and two original-action/rendered-table programmes pass with eight legal policy proposals. Cunning counts have pure/related regressions, not an original paid-Box Nexus programme. No visual/browser/deployed, complete-mode or comprehensive assurance claim.',evidence:['tests/fixture-hajr-replay.ts','tests/hajr-replay-engine.test.ts','tests/nexus-guild-cunning-counted.test.ts','tests/nexus-guild-cunning-engine.test.ts']},
],
},
{
id: 'card-ghola',
title: 'Tleilaxu Ghola',
category: 'Cards',
coverage: 'Partial',
summary: 'Return forces or a leader from the tanks using the card.',
steps: [
'During Revival, Tleilaxu special Karama prevention also blocks this card for the selected player. This inclusion is provisional and ends when Revival ends; completed returns stay unchanged. Ghola remains available afterward, subject to its other timing and target rules.',
'Choose a dead leader for leader revival, or leave the leader choice empty to return up to five forces. A card pays for one of these choices; it cannot revive both a leader and the Kwisatz Haderach.',
'A binding battle answer or prescience commitment may require this preparation. The private guide identifies a Ghola play that can fulfill the answer, without spending or revealing the card until you choose to play it. Resolve any revival-income response before using that income to support a battle.',
'A Basic ground-movement promise can also require Ghola force preparation. The guide returns physical Tanks to reserves, then preserves an unused affordable shipment and one later matching ground move. Ghola itself does not fulfill movement or consume normal revival allowances. A known discarded Ghola may be recovered with the paid Box and played again.',
'Returned forces go to reserves. A leader revived with this card can fight again this turn, including in another territory. Atreides can also select a dead Kwisatz Haderach; revive it separately from its accompanying leader. Returning a controlled foreign ghola does not transfer it back to its original faction. Additional advanced and expansion interactions remain under audit.',
'An actual Ecaz native Ghola return uses that disc in its current ordinary cohort without consuming the ordinary phase slot. A repeat waits for the remaining native cohort and another opening. Independent Duke Ghola preserves a satisfied five-Tanks opening and returns him set aside; only Ecaz may revive him.',
'Semuta may recover the used Ghola before its native Tleilaxu one-spice income resolves. Keep the returned piece and normal revival allowance; claim or Continue then restores the original income response. Taking the card never repeats its revival.',
'A saved play preserves the revived pieces, any earned technology income and the discarded card. Recovery restores any pending Tleilaxu income response without reviving or paying twice. Private preparation guidance waits for recovery to finish.',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Ordinary and typed forces, controlled leaders and Kwisatz retain original use and custody. Actual Ecaz native Ghola/foreign returns now record completed native cohort identity; independent Duke resurrection preserves its five-Tanks opening without aligning death counters. Ecaz-only living set-aside custody remains; broader combinations and assurance stay unfinished.',
evidence: ['game/ordinary-discard-income.ts', 'game/ghola-force-preparation.ts', 'game/engine.ts', 'game/ecaz-duke-revival.ts', 'game/ecaz-revival-cohort.ts', 'game/revival.ts'],
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'The hand selector uses current authoritative eligible targets, physical force and elite counts, and explains blocked timing or selections.',
evidence: ['components/game-table.tsx'],
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles choose useful Ghola recovery in open windows while preserving specific actions and binding preparation. Full strength calibration remains open.',
evidence: ['game/bots.ts', 'tests/ghola-bots.test.ts'],
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'The internal card guide explains target choice, same-turn use, separate leader/Kwisatz returns and exact-once recovery.',
evidence: ['game/reference.ts'],
},
{
area: 'Verification',
status: 'Partial',
detail:
'Actual battle death, subsequent territory use, Kwisatz explosion/revival, private targets and concurrent persisted actions are covered; every expansion combination remains uncertified.',
evidence: [
'tests/ghola-lifecycle.test.ts',
'tests/ghola-lifecycle-recovery.test.ts',
'tests/ordinary-card-discard-continuations.test.ts',
],
},
],
related: ['revival', 'special-karama'],
},
{
id: 'atreides-full-plan',
title: 'Atreides: special full Battle Plan inspection',
category: 'Factions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Spend the native Advanced special Karama before public revelation, including after one plan seals.',
steps: [
'After battle preparation, spend a projected available Karama and select either combatant. Keeping the power at the initial offer preserves later use before revelation, without opening another mandatory offer.',
'If the target has sealed, inspect the original full plan immediately. Otherwise that target commits next. Only Atreides receives the plan and selected card faces; an ally gains no automatic access.',
'Already sealed plans stay fixed. If you have already sealed, the other combatant’s last commitment reveals both plans immediately. The special power grants no replanning, payment refund or separate reading pause.',
'Preparation order and target-first sequencing remain provisional. The distinct No-Field permission retains ordinary dial Prescience’s prohibition and does not materialize the marker during private inspection.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Shared before-reveal timing replaces the initial-offer deadline; sealed target reading and target-last public reveal preserve original commitments.', evidence: ['game/atreides-full-plan.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Initial and persistent later controls share projected spendable physical cards and combatant targets, with unavailable and own-sealed guidance.', evidence: ['components/atreides-full-plan.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'The existing own/allied target preference shares the legal projection at initial and later windows. Strategy and calibration remain deferred.', evidence: ['game/atreides-full-plan.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Supplied source deadline, retained provisional sequencing and same-action last-seal limitation are explicit.', evidence: ['docs/ATREIDES_FULL_PLAN_TIMING.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Genuine49/50-action public setup, paid acquisition, shipments and movement create the native battle. Frozen11-file126/126, types/lint/build, five actual control/gameplay/table-SSR journeys and eight existing-profile paths pass. Full modes, broader combinations and comprehensive/browser/deployed assurance remain open.', evidence: ['tests/atreides-full-plan-window.test.ts', 'tests/atreides-full-plan-ui.test.tsx', 'tests/fixture-atreides-full-plan-window.ts', 'tests/full-plan.test.ts', 'tests/no-field-full-plan.test.ts'] },
],
related: ['card-karama', 'advanced-combat', 'battle-cards'],
},
{
id: 'card-karama',
title: 'Karama',
category: 'Cards',
coverage: 'Partial',
summary:
'Buy an auction card, purchase shipment pricing or cancel a supported faction power.',
steps: [
'If eligible to bid, use the card to take the current auction card without paying spice. A full hand cannot bypass the bidding limit.',
'Holding Karama also permits bids beyond your available spice. A winner can choose to spend it; an outbid player keeps it.',
'Use Cancel with Karama during a power response. Supported responses include Voice, prescience, Atreides auction and spice peeks, spiritual advisors, Emperor gifts and revival, faction income, Harkonnen bonus cards and allied traitors, plus Fremen storm and worm powers, elite combat strength and Fremen free spice support.',
'Native Guild cross/return permission has its own unpaid counter before price. Preventing it keeps a legal different shipment/movement without removing native half price. The conservative provisional scope is that original opportunity, not a separately signed Cunning second opportunity; immune Junction and common world-to-foreign-world permission remain independent. Native rate cancellation bills the same paid units and original approved split. Free counters stay free and own/allied No-Field prices one marker. Supplier whole-fee1 requires a new offer/consent before becoming2.',
'A native Guild holder of Richese Secret Ally still ships up to five real forces at one-counter cost. Canceling its native rate changes sand1 to2, not five physical forces to ten paid units. If full2 is unaffordable, the declared Nexus stays spent without refund or reusable coupon while ordinary shipment remains available; this is the selected affordability composition. A still-held card uses the corrected full price. An independent purchased Karama price stays separate.',
'Use a held Karama to purchase the active player’s Force Shipment at half normal price, rounded up, paid entirely to bank. Original typed World routes retain this independent source without new permission or Nexus stacking. Semuta can recover the printed cost without changing its original price beneficiary or creator; a recovered cost cannot also receive the provisional Guild-stop refund, even after rediscard. Unclaimed original costs keep that existing refund. Completion consumes only the grant. Immune Junction keeps its original tariff/payees; accepting it explicitly ends the separate purchased price unused without refund, only upon delivery.',
'Advanced Bene Gesserit may spend Worthless cards as Karama. Each opens a separate native cancellation response and stays spent if the power is denied. In the Semuta preview, its physical cost offers recovery before that response; the card remains Worthless for its new faction. A later printed cancellation cost is a separate fresh event whose recovery does not undo denial. Allowed converted prices retain the original owner/beneficiary and claimed-cost refund boundary. Normal printed Karama has no BG conversion response.',
'A pending Worthless purchase keeps space for its original auction card. Gifts and hand exchanges must leave enough room for every committed incoming card. Refreshing restores the same auction, unused shipment opportunity or original canceled power.',
'Atreides full-plan inspection, Emperor revival, Fremen’s summoned worm, Harkonnen hand exchange the Guild shipment stop and Tleilaxu revival prevention are implemented as once-per-game uses. Other cancellations and special Karamas are still being implemented.',
'In the selectable Kull development preview, another player’s legal ordinary Karama or supported special activation pauses before its costs for CHOAM’s neutral reaction. A declared Kull is pending, not yet a phase ban. Only a different eligible physical Karama can counter it; the original stays reserved. Successful Kull retains the unplayed original, including an advanced Bene Gesserit Worthless card intercepted before conversion, and prevents further Karama activations for that phase in Basic. New Advanced attempts instead restrict that specific effect; phase expiry is provisional. See Kull Wahad for the preview policy and deferred winning-overbid warning.',
],
related: ['bidding', 'battle', 'advanced-combat', 'special-karama', 'choam-kull', 'nexus-choam-kull'],
},
{
id: 'truthtrance-forces',
title: 'Truthtrance: physical force counts',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Ask about current physical counters in reserves, the Tanks or an exact board location.',
steps: [
'Choose Current physical forces, then the pool, counter type and an Exactly, At least or At most comparison. A board question names both territory and sector. Available HMS interiors and revealed Discovery locations are separate from their outside territories.',
'Every physical counter counts once, including advisors. The total includes elites, and the normal count excludes them. Combat bonuses, concealed No-Field markers and their hidden force values do not enter the count.',
'Use the separate Current concealed No-Field printed value question for a token denomination. Concealed5 can coexist with exactly zero physical counters at its sector and zero reserves; this still is not five materialized forces. Public Yes/No does not itself reveal or materialize the marker.',
'Reserves includes the native Homeworld reserve breakdown. These controls do not query individual Homeworld populations. A Basic faction whose starred counters are not tracked separately supports only the aggregate total.',
'Combine the question with another supported fact using AND or OR. Only the respondent sees the expected answer; the published result does not identify which clause matched. Later legal movement or revival does not change this historical answer or break a promise.',
],
related: ['card-truthtrance', 'force-counters', 'truthtrance-spice', 'richese-no-field', 'privacy'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Physical pool comparisons, exact live locations, typed-counter availability and saved fact revalidation are connected.', evidence: ['game/truthtrance-force-count.ts', 'game/truthtrance.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Pool, territory/sector, counter type and numeric comparison share validation with the server.', evidence: ['components/truthtrance-force-count.tsx', 'components/truthtrance.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All profiles answer the shared private projection legally. Broader questioning strategy and tuning remain deferred.', evidence: ['game/bots.ts', 'tests/truthtrance-force-engine.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Source composition, present custody, marker exclusions and remaining question forms are explicit.', evidence: ['docs/TRUTHTRANCE_FORCE_FACTS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Genuine setup, typed pools, private compounds, live board boundaries, later legal actions, malformed saves, controls and authenticated concurrent answers have focused checks.', evidence: ['tests/truthtrance-force-count.test.ts', 'tests/truthtrance-force-engine.test.ts', 'tests/truthtrance-force-controls.test.tsx', 'tests/truthtrance-force-recovery.test.ts'] },
],
},
{
id: 'truthtrance-spice',
title: 'Truthtrance: current spice questions',
category: 'Cards',
coverage: 'Partial',
summary:
'Ask whether another player personally holds exactly, at least or at most an amount of spice.',
steps: [
'Declare Truthtrance, choose a player and select Current personal spice under verified facts. Choose Exactly, At least or At most and a whole amount of zero or more. Preview the public question before asking.',
'The answer uses that player’s current personal spice. Separate pledged aid and incoming payments are excluded. The server verifies the answer; all four AI levels can answer this question. An exact comparison answered Yes naturally identifies that amount, while a range question reveals only its answer.',
'Combine spice with a named card or selected traitor using AND or OR. The combined answer is published, without separate clause results or additional inventory details. A question about current holdings creates no promise about later holdings or spending.',
'The Truthtrance card is discarded once after a definite answer and the interrupted decision resumes. Broader facts, arbitrary prose and nonbattle promises remain unfinished; this support does not establish complete Truthtrance compliance.',
],
related: ['card-truthtrance', 'privacy', 'implementation-checklist'],
checklist: [
{
area: 'Implementation',
status: 'Implemented',
detail:
'Current personal-spice comparisons validate whole thresholds, enforce truthful answers and compose with existing fact groups without creating future commitments.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'The question form offers comparisons, a styled amount field, unavailable reasons and a public preview. Desktop asking and AI response were checked; mobile and broader question journeys remain to be verified.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles answer from the private verified result. This does not add strategic spice-question selection or natural-language interpretation.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'The guide distinguishes current personal holdings, separate aid and incoming payments, comparison disclosures and future promises within this fact scope.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused checks cover numeric boundaries, truthful answers, private combined results, all profiles, later legal spending, persisted interruptions and duplicate answers. Full Truthtrance and mode acceptance remain separate.',
evidence: [
'tests/truthtrance-spice.test.ts',
'tests/truthtrance-spice-recovery.test.ts',
],
},
],
},
{
id: 'truthtrance-card-count',
title: 'Truthtrance: named-card counts',
category: 'Cards',
coverage: 'Partial',
summary:
'Ask whether another player holds exactly, at least or at most a number of copies of one named card.',
steps: [
'Declare Truthtrance and choose Verified current facts. Select Number of a named card, choose its exact name, select a comparison and enter a whole count of zero or more. Review the public question before asking.',
'Only physical cards currently in that player’s hand count. Separate cache cards, cards in discard and cards still in a deck are excluded. Shield and Shield Snooper are different names. A card retained in hand after battle still counts.',
'The shared canonical name list includes the three independent Ecaz cards as well as ordinary/Ix and separate Richese cache identities. Naming one does not select its family, expose its physical ID or change its battle role.',
'The server establishes the truthful Yes or No privately for the target. Their public answer reveals only the requested comparison, not card identities or the rest of their hand. An exact-count question answered Yes naturally confirms that count.',
'Combine a card count with another count, named-card possession, traitor or spice fact using AND or OR. Only the combined answer is published. The answer describes current custody; it does not require the player to keep those cards afterward.',
'All four AI levels answer the structured comparison. A definite answer discards Truthtrance once and resumes the interrupted table decision. This question type does not complete arbitrary facts or nonbattle future promises.',
],
example:
'“Do you currently hold at least two cards named Shield?” is Yes with two Shields and No with one Shield plus one Shield Snooper.',
related: ['card-truthtrance', 'truthtrance-fact-expression', 'truthtrance-spice', 'privacy'],
checklist: [
{
area: 'Implementation',
status: 'Implemented',
detail:
'Exact named physical-card comparisons validate nonnegative safe integers and compose with verified fact groups.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Named-card selection, three comparisons, accessible count input, invalid-input feedback and a public preview.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles answer from their own verified result; strategic selection of count questions is not yet calibrated.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'Explains current hand custody, exact printed names, compound answers and the absence of a future retention promise.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused parser, actual question/answer, privacy, AI and persistence checks; complete Truthtrance acceptance remains unfinished.',
evidence: [
'tests/truthtrance-card-count.test.ts',
'tests/truthtrance-spice-recovery.test.ts',
],
},
],
},
{
id: 'truthtrance-fact-expression',
title: 'Truthtrance: grouped current facts',
category: 'Cards',
coverage: 'Partial',
summary: 'Build one current-fact question with multiple AND/OR conditions and nested groups.',
steps: [
'After declaring Truthtrance and resolving priority, choose another player and Verified current facts. Start with one current fact. Group it with AND or OR, add further facts or nested groups, and review the whole public question.',
'AND requires all conditions. OR requires at least one condition. Each nested group keeps its own meaning. Removing a fact preserves its siblings; a group with one remaining fact collapses to that fact.',
'The builder supports up to eight terms per group, sixteen total items including groups, and four levels of grouping. These are app input limits. Add/group controls explain the available expression, and invalid fields anywhere in the tree block Ask publicly.',
'Current facts are evaluated when the target answers. Only the aggregate answer is published. No makes the whole expression false; it does not necessarily make each condition false. Unknown retains the existing option to ask again or save the card.',
'A definite answer uses the original single card discard and resumes the previous table decision. Current facts do not promise that cards, spice or forces will remain afterward. Battle-plan and future shipment or movement promises use their separate question types.',
],
example: 'Does the Emperor have at least ten spice AND at least one Baliset AND no Shields? One public Yes confirms that whole current conjunction without listing any other card.',
related: ['card-truthtrance', 'truthtrance-card-count', 'truthtrance-spice', 'truthtrance-forces'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Existing structured fact parsing and aggregate evaluation retain their limits, now shared with controlled whole-tree authoring; actions and saved state are unchanged.' },
{ area: 'Player controls', status: 'Partial', detail: 'Add, wrap, AND/OR selection, nested groups, remove/collapse, whole-tree validation, persistent meaning and actual public submission are connected.' },
{ area: 'AI', status: 'Partial', detail: 'The four existing profiles answer their entitled aggregate result. Full proactive question strategy and difficulty calibration remain deferred.' },
{ area: 'Documentation', status: 'Partial', detail: 'Explains grouping, aggregate disclosure, current-only meaning and software input limits separately from printed permission.' },
{ area: 'Verification', status: 'Partial', detail: 'Focused structure/control and genuine original-card question/answer cases cover the authoring path. Browser/mobile/deployed acceptance and full Truthtrance combinations remain due.', evidence: [
'game/truth-fact-expression.ts', 'components/truth-fact-expression-fields.tsx', 'components/truth-fact-question.tsx', 'components/truthtrance.tsx',
'tests/truth-fact-expression.test.ts', 'tests/truth-fact-expression-controls.test.ts', 'tests/truth-fact-expression-engine.test.ts', 'tests/fixture-truth-fact-expression.ts', 'docs/TRUTHTRANCE_CARD_COUNT.md',
] },
],
},
{
id: 'truthtrance-face-dancers',
title: 'Truthtrance: currently unrevealed Face Dancers',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Ask whether another player currently holds a named printed identity as an unrevealed Face Dancer.',
steps: [
'Declare Truthtrance and choose a verified current fact. Select Currently unrevealed Face Dancer, the respondent and a public printed identity. Cheap Hero / Heroine shares one identity; Duke has no Face Dancer card.',
'A matching currently held unrevealed card answers Yes. Revealed, absent and returned cards answer No. Ordinary selected-Traitor questions continue to ask about ordinary Traitor Cards.',
'Combine current facts with AND or OR. Only the respondent sees the verified whole answer before replying; other players receive the question and final aggregate answer, without the private card list or individual clause results.',
'This does not turn up a physical Face Dancer or promise to use or retain it later. A later legal replacement may change the current answer while the earlier historical answer remains correct. Existing mixed-shipment profile limits still apply.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Exact public-identity parsing and current unrevealed matching share normal Truthtrance evaluation, aggregate text and physical disposal.', evidence: ['game/truthtrance-face-dancer.ts', 'game/truthtrance.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Public identity fields, current-only guidance and the common fact selector work standalone and in the existing compound builder.', evidence: ['components/truthtrance-face-dancer.tsx', 'components/mixed-shipment-fields.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing profiles use their own server-verified aggregate answer. Question strategy and final calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truthtrance-face-dancer-engine.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Native card and broad question permission, ordinary Traitor distinction and absence of any future promise are explicit.', evidence: ['docs/TRUTHTRANCE_FACE_DANCERS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Frozen12-file86/86, types/lint/build, twelve actual identity-field/question/gameplay/table-SSR journeys and sixteen legal profile answers pass. Native26/29-action sources and actual60/63-action replacement sources preserve current cards, old answers and original parent; broader modes, future/mixed profiles and comprehensive/browser/deployed proof remain open.', evidence: ['tests/truthtrance-face-dancer-fact.test.ts', 'tests/truthtrance-face-dancer-engine.test.ts', 'tests/truthtrance-face-dancer-controls.test.tsx', 'tests/fixture-truthtrance-face-dancer.ts'] },
],
related: ['card-truthtrance', 'tleilaxu-face-dancers', 'truthtrance-hand-inventory'],
},
{
id: 'truthtrance-hand-inventory',
title: 'Truthtrance: hand size and primary card roles',
category: 'Cards',
coverage: 'Partial',
summary:
'Ask a verified Yes/No question about total hand size or how many held cards have a selected primary role.',
steps: [
'Declare Truthtrance, choose Verified current facts, then Hand size or primary card role. Select all cards or a primary role, a comparison and a whole count of zero or more. Review the question before asking.',
'Count only physical cards currently in the target’s hand, including reserved cards still held there. Decks, discards, separate caches and cards already on the table do not count. Every held physical copy counts once.',
'Primary roles are the cards’ default roles. Weirding Way is a weapon; Chemistry is a defense. Alternate battle roles do not change these counts. Worthless cards and Cheap Heroes or Heroines are separate categories. Bene Gesserit and CHOAM powers do not turn held Worthless cards into another category.',
'Richese cards use their printed roles: Stone Burner and Mirror Weapon are weapons; Portable Snooper is a defense. Other Special cards belong to the Special category. A classification question does not make an unfinished card effect available.',
'Only the target receives the verified answer before answering. Other players see the question and its final aggregate Yes/No answer, without a list of matching cards. An exact comparison answered Yes necessarily confirms that count. AND/OR combinations publish only their combined result.',
'These are current facts, not promises to keep cards or to use them in battle. All four AI levels answer from their own verified result. Broader freeform questions and future-action commitments remain unfinished.',
],
example:
'A hand of Weirding Way, Chemistry and Baliset has three cards: one primary weapon, one primary defense and one Worthless card.',
related: [
'card-truthtrance',
'truthtrance-card-count',
'truthtrance-spice',
'truthtrance-forces',
'privacy',
],
checklist: [
{
area: 'Implementation',
status: 'Implemented',
detail:
'Validated total and primary-role physical hand counts share the component classification and aggregate fact evaluator.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Role selection, comparison, accessible count input, invalid-input feedback and the exact public question preview.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles truthfully answer; strategic choice of these questions remains uncalibrated.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'Explains hand custody, default roles, alternate uses, private aggregation and current-fact lifetime.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused role, engine, privacy, AI, JSON and persisted concurrent-answer checks; no complete mode certificate.',
evidence: [
'tests/truthtrance-hand-inventory.test.ts',
'tests/truthtrance-spice-recovery.test.ts',
],
},
],
},
{
id: 'advanced-voice-named-cards',
title: 'Advanced Voice: naming a battle card',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Advanced Voice may require or forbid a particular ordinary battle-card face.',
steps: [
'In Advanced Voice, choose a category or one named ordinary weapon, defense, Worthless card or Cheap Hero face. Named commands distinguish different cards of the same category; all physical copies of the chosen face match.',
'The target must play the named card in a legal slot if required and able, or avoid it if forbidden. If no eligible matching card is held, a requirement does not force another card. Existing special-card commands keep their own behavior.',
'Basic retains its existing category choices. Borrowed Voice uses the same Advanced choices; the exact ordinary-name interpretation and wider interactions remain provisional.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Native and borrowed Voice share a canonical face matcher, role-aware plan validation and Advanced-only command gate; ordinary hero availability and generic commands remain intact.', evidence: ['game/battle-cards.ts', 'game/engine.ts', 'game/nexus-borrowed-voice.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Native and borrowed Voice and structured declaration controls offer named faces in Advanced.', evidence: ['components/battle-preparation.tsx', 'components/turn-action-fields.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles use the shared plan matcher; broader strategy and calibration remain unfinished.', evidence: ['game/bots.ts', 'tests/voice-named-card-runtime.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'The supplied Advanced source and provisional interpretation are recorded.', evidence: ['docs/PORTABLE_SNOOPER_ENGINE_AUDIT.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused matching, real battle/borrowed Voice, controls and minimal bot cases cover the prototype; complete combinations and deployed acceptance remain open.', evidence: ['tests/voice-named-card.test.ts', 'tests/voice-named-card-runtime.test.ts', 'tests/voice-named-card-controls.test.tsx', 'tests/nexus-borrowed-voice-runtime.test.ts'] },
],
related: ['card-truthtrance', 'truthtrance-turn-actions'],
},
{
id: 'truthtrance-knowledge',
title: 'Truthtrance: recorded predictions and private forecasts',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Ask about a recorded prediction, submitted storm dial, Fremen forecast, Atreides peek or Basic Ixian auction group, with a single fact or an AND/OR combination.',
steps: [
'Choose a recorded prediction faction, compare its turn, or compare the target’s current submitted storm dial or known Fremen forecast. Exactly, at least and at most are available for numeric facts.',
'Ask whether Atreides’ currently known next Spice Card is a sandworm, Sandtrout, or a blow at a named printed territory. If the peek was canceled or is no longer available, the answer is I don’t know.',
'Ask whether the ordinary auction card currently inspected by Atreides has a named Treachery Card face. If the inspection was canceled or the lot is no longer available, the answer is I don’t know. Special auctions and other factions’ occupied Homeworld inspections are not yet included.',
'In Basic Bidding, ask Ixians whether their recorded inspected auction group contains a named card. This refers to the recorded group, including cards later sold, rather than what remains for sale. If the inspection is unavailable or belongs to another player, the answer is I don’t know.',
'These questions describe a choice already recorded or information currently known. They do not require anyone to win on a future turn, change a choice, or make the storm move a promised distance.',
'A missing prediction, an unsubmitted or expired storm dial, or an unknown forecast yields I don’t know. A forecast question never gives another faction the Fremen’s private knowledge.',
'For a supported Basic dialer who has not submitted, the separate combined turn-action question can ask about their future exact choice; that is a commitment, not a fact about an already sealed dial.',
'Only the target sees the verified answer before replying. The published response gives the combined result, without identifying which clause matched or separately displaying the stored values.',
'As with other Truthtrance questions, an unknown answer lets the holder ask something else or save the card. A definite answer spends the physical card once and restores the interrupted interaction.',
],
related: ['card-truthtrance', 'truthtrance-spice', 'privacy'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Stored prediction, entitled storm knowledge, native Atreides peeks and the Basic Ixian recorded auction group use shared three-valued fact evaluation; special auction and occupied inspection remain separate.', evidence: ['game/truthtrance-knowledge.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Fact choices, numeric comparisons, public faction and card names, bounded inputs and compound question previews.', evidence: ['components/truthtrance-knowledge.tsx', 'components/mixed-shipment-fields.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles answer the owner-only verified scalar through the existing Truthtrance flow. Strategic question selection and freeform understanding remain incomplete.', evidence: ['game/bots.ts', 'tests/truthtrance-knowledge.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Current-knowledge semantics, unknown cases and original FAQ authority are explicit.', evidence: ['docs/TRUTHTRANCE_KNOWLEDGE.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused rules, UI, native Atreides peeks and Ixian auction knowledge and all-profile answers; earlier storm cases include JSON and SQLite restoration. Broader Truthtrance acceptance remains open.', evidence: ['tests/truthtrance-knowledge.test.ts', 'tests/truthtrance-knowledge-controls.test.tsx', 'tests/truthtrance-ix-pool-knowledge.test.ts', 'tests/truthtrance-ix-pool-runtime.test.ts', 'tests/truthtrance-spice-peek-runtime.test.ts', 'tests/truthtrance-auction-peek-runtime.test.ts', 'tests/truthtrance-knowledge-recovery.test.ts'] },
],
},
{
id: 'truthtrance-turn-actions',
title: 'Truthtrance: combined card plays, battle and turn actions',
category: 'Cards', coverage: 'Partial', developmentStage: 'Prototyped',
summary: 'Combine printed Karama shipment pricing and current-lot costs, original-window Weather/Atomics/Harvester plays, native Voice/Prescience declarations, future printed Hajr/Ghola plays, current battle decisions, final Nexus membership, ordinary bids, native Revival, future payments and physical transport in one whole current-turn answer, with optional frozen facts.',
steps: [
'Choose Combine printed card plays, native battle powers and this turn’s other actions. Full AND/OR groups share sixteen logical leaves and four grouping levels, with optional current facts. This is a provisional composition of original-window card plays, native power declarations, printed Hajr/Ghola use, current battle decisions, final Nexus membership, current-lot bids, ordinary Revival, funded payments and owned-stage travel; wider action families and optional combinations remain unfinished.',
'A final-alliance clause names another current participant during this original quiet native Nexus. Existing invitations and reciprocal formation remain authoritative. Offers, temporary membership and your own Ready do not settle the clause; final actual membership is fixed only when the Nexus closes.',
'Whole No can permit a temporary paid pair and later require a break. Own Ready must preserve a completion after final membership is fixed; remaining payment or physical-action alternatives keep their later deadlines. Definite answers, including constants, uniformly reopen own Nexus readiness; later ordinary payments require confirmation again.',
'Missing foreign consent can offer I don’t know and save or change the question; it never invents a definite Yes. Unknown requires an otherwise funded native completion, so a known unaffordable branch stays No. Foreign withdrawal can release impossibility without vetoing the other player’s rights.',
'Only actual ordinary bribes paid by the respondent after answering add payment progress. Payments to the same recipient accumulate. Shipment fees, gifts and later receipt of incoming bribes do not count. Native recipient restrictions, costs and receipt timing remain.',
'An ordinary-bid clause names the current public lot and counts the maximum new accepted declaration after answering. Earlier bids, summed bids and later purchase invoices do not count. A pass can reset after another bid, so No stays binding through reentry until that original physical lot closes.',
'Ordinary force Revival clauses accumulate future total, normal or elite physical returns. Personal native leader clauses include eligible Advanced Atreides Kwisatz. Prior returns, Ghola, foreign leaders and special returns do not count. Original costs, slots, cycles and actual return controls remain.',
'Basic Revival No lasts to phase close; ordered Advanced finishes at the respondent’s actual own turn end. Own Ready must retain a whole completion, including a funded later payment alternative. An owned Karama invoice guide appears only at the actual payment decision, never while another bidder is active.',
'A battle-plan condition names an atomic part of your actual plan in this current battle. An open condition settles when both original plans reveal; a plan already sealed fixes its value at the answer. The human guide fills your existing plan for review before sealing. Native leaders, physical cards, Voice, costs and ordered preparation still apply.',
'A Traitor condition describes the original eligible voter’s Reveal or Decline declaration in this revealed battle, before any later Karama prevention. A prevented Reveal stays a declared Reveal. No missing battle or declaration is invented as a zero plan or Decline, and an absent matching Traitor never creates one.',
'A future storm-dial condition names a current Basic dialer who has not submitted and asks whether their value will be exactly, at least or at most a chosen threshold. Turn 1 permits 0–20; later Basic turns permit 1–3. Yes and No bind the whole answer; multiple conditions share the same native choice. The other dial remains sealed, and the normal sum is revealed only after both dialers submit.',
'A native-power condition names your original Voice or Prescience opportunity in this battle. Ask about actual use or explicit Decline, an exact Voice category and require/forbid command, or the requested Prescience field. A requested field is not the inspected answer. The declaration counts before later Karama prevention.',
'Native owners can provide their eligible ally’s power. Voice finishes before Prescience; a pending Prescience condition does not advance its turn. Original command and No-Field restrictions remain. All predicates concern the same one native choice; source expiry is absence and never becomes a synthetic Decline. Borrowed Nexus and special powers retain separate scope.',
'In a supported Basic battle response, ask whether a named non-owner will spend a physical printed Karama to cancel the current Voice or Prescience. The question may combine this exact response with current facts; other future action families remain unavailable while the response is open. Yes requires that actual card use while possible; No prevents it. A different player may cancel first, releasing an impossible Yes. Passing does not itself surrender a still-open response, but the target cannot close their last opportunity while a required Yes remains.',
'A printed-card condition requires an actual Hajr or Tleilaxu Ghola play in its printed role after this answer. Earlier plays, discards, sales, Karama roles and recovery alone do not count; a genuine later Box recovery followed by replay can count. No hidden card is needed merely to ask the public named condition.',
'Hajr counts even if its extra move is unused, closes at your own Movement end and must earn its actual Advanced timing. Ghola remains available through this turn’s Mentat and uses real Tanks, eligible leader or Kwisatz and typed selection; it does not spend or satisfy ordinary Revival quotas. Ordinary returns and Ghola share the actual remaining Tanks and purse.',
'A printed Nullentropy Box clause counts its accepted two-spice search activation after answering this turn, before private selection. It does not name the recovered card; earlier use or recovery alone does not count. No lasts through Mentat. The actual fee shares the purse with payments and physical actions; an unpaid unknown recovered card cannot supply another effect. Whole native Basic Richese answers retain their real Semuta discard continuation. Current guides use native availability and paid selection keeps its own panel.',
'Printed Distrans and Juice of Sapho clauses count actual native use after answering this turn. They do not select a transfer recipient/card or an order scope/mode/outcome. Native costs, capacity, reservations, first/last, no-op and unsplit-current-turn rules remain. Earlier Sapho answers may wait for original Movement without new income; only current exact choices become guides. These No intervals last through Mentat. Wider future ordering and action calendars remain partial.',
'A printed Semuta Drug clause counts the completed exchange and disposal after answering, not a multi-card inspection commitment. The selected card is not promised. Its No interval lasts through Mentat. Current fresh windows and the already-declared foreign Truth cost retain native event, reservations and physical exchange; no later foreign discard is invented. Immediate No and completion checks precede inspection, and a required Yes cannot pass its sole modelled trigger. OR can preserve a later alternative. Unknown acquisitions supply no specific effect, but can supply Distrans’s generic other-card transfer with native reservations.',
'A printed Ornithopter clause counts its first accepted native flight declaration after answering, not every group or disposal. It names no mode or route; an already active flight supplies no new credit. Its interval closes at your actual Movement end. A printed Residual Poison clause counts actual native random death/disposal without naming a victim, through turn end. Private completion pays its card without sampling a victim or inventing casualties for revival. Native movement and pre-leader legality, current events, costs and other commitments remain.',
'Weather Control and Family Atomics conditions concern a future printed play in this original open Storm window, including after dial reveal and before movement starts. Harvester concerns this original fresh blow. A later blow has a different identity even in the same phase. Earlier plays, disposal, other roles and recovery alone do not count.',
'These original-window conditions describe playing the card, with the normal chosen Weather distance, Atomics qualifying forces/casualties and Harvester arithmetic. They do not describe a future selected distance or amount. Accepting the window must preserve the whole answer; a later payment alternative can remain. No caps last through actual source closure, rather than ending at your own Ready.',
'A current-lot Karama condition counts a future physical printed Karama cost for this original ordinary auction card, either immediate purchase or its winning invoice. Bidding alone, another Karama role, a converted Worthless card, an earlier play, recovery or a later lot does not count. A bid-and-Karama answer must retain the real bid before the purchase; free acquisition still uses the original native controls and hand limit. A whole No shares its payment and bid funding without assuming a forbidden free invoice. Unseen future auction cards cannot fund another promised card play; actual owned knowledge remains usable.',
'A printed Karama shipment-price clause names the current beneficiary’s unused native shipment. The giver spends the physical printed card; the beneficiary still pays the native bank tariff, such as two spice becoming one. Playing that cost counts even if its price is unused. The source remains while that original recipient is entitled, including another actor’s turn; a different beneficiary or a Cunning second opportunity has its own interval. Own shipping or ending must preserve the whole answer before a foreign counter, while foreign actions retain their rights.',
'A Thumper condition counts an actual printed play after answering before this turn’s original first Spice reveal. Its cost counts even when the existing first-turn rule ignores the encounter or waiting Sandtrout suppresses it. Own acceptance must retain the whole answer. Known card effects enter the quote; the next hidden Spice Card does not. A forced later draw can release genuine impossibility, while choosing known casualties cannot evade an earlier answer.',
'A printed Amal clause names the original phase opening and counts a future printed play after this answer. The actual available-spice reduction occurs before ordinary payments become possible; known Mentat bribe receipts arrive afterward. Definite answers reopen your own opening pass. Own cost or acceptance must retain a completion, while a foreign Amal can release genuine impossibility before another player takes the last pass. Later openings keep separate intervals.',
'One remaining owned Charity claim may fund cumulative ordinary installments after actual prepayments. Charity itself is not a bribe; it cannot be claimed twice or spent again on shipment or revival. Current card windows precede future Charity, and native guides wait for its actual phase. Own premature claiming or Ready cannot evade a commitment; cumulative No caps remain.',
'CHOAM may also fund later installments with its own automatic opening receipt, once and independently of an eligible ordinary Charity claim. Future income is not current spendable cash. Native counters and opposing claims retain their rights; a last response pass settles the opposing claim rather than making its debit voluntary. Guides wait for actual cash, and other future market, card, collection or gift revenue is not forecast.',
'Shipment clauses describe the same one future original reserve shipment. Choose any sector of the named territory or one exact printed sector; a sector clause matches only that actual destination and physical group. Territory-wide and sector-specific conditions share one shipment, payment and allowance. Ground-movement clauses may likewise name a printed destination sector, but separate moves can satisfy separate clauses. Each movement minimum requires one actual physical group, never the sum of smaller moves. Existing allowances, cards, pieces and preparation remain authoritative.',
'Yes requires the whole expression and fulfills on qualifying actual events. OR preserves legal alternatives; No negates the whole expression. Current facts freeze at answer. A private native quotation shares funding with earlier commitments without storing or publishing a selected branch.',
'Transport and Hajr close at your actual Movement end. Ghola or a payment alternative may remain after that close, through the full current turn including Mentat. A known Inflation Double opening closes payments earlier without closing Ghola. Complete a required payment before its actual opportunity closes; No payment caps remain binding until then.',
'Review the persistent own history and current source-bound native guide, or choose another legal manual route. Every definite answer uniformly reopens applicable concurrent preparation or final payment readiness. Four minimal AI profiles participate; complete strategy and final rules/deployed acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-alliance', 'truthtrance-travel', 'truthtrance-bid', 'truthtrance-revival', 'truthtrance-bribe-expression', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Whole signed alternatives reuse phase-opening Amal with native payment order, printed Thumper with known-encounter quotation, Karama shipment pricing and current-lot costs, original-window plays, native power declarations, printed Hajr/Ghola/Box/Distrans/Sapho, accepted Ornithopter flights, native Residual Poison and completed Semuta exchanges, battle, Traitor, final-alliance, bid, Revival, payment and transport constraints with separate actual intervals, resources and deadlines.', evidence: ['game/window-card-play.ts', 'game/battle-power-question.ts', 'game/turn-action-promises.ts', 'game/printed-card-play.ts', 'game/movement-promise-search.ts', 'game/mixed-action-question.ts', 'game/engine.ts', 'game/truthtrance.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full editor, raw question, private answer, persistent own history and exact current-phase native guide.', evidence: ['components/turn-action-fields.tsx', 'components/turn-action-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-turn-action-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and consume native guides, including printed roles, exact fresh Semuta controls and original power declarations; full strategy and calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-turn-action-runtime.test.ts', 'tests/truth-turn-preparation-runtime.test.ts', 'tests/fixture-truth-turn-alliance.ts', 'tests/truth-turn-alliance-runtime.test.ts', 'tests/truth-turn-combat-runtime.test.ts', 'tests/truth-turn-card-play-runtime.test.ts', 'tests/truth-turn-power-runtime.test.ts', 'tests/truth-turn-window-card-runtime.test.ts', 'tests/truth-turn-karama-runtime.test.ts', 'tests/truth-turn-karama-shipment-runtime.test.ts', 'tests/truth-turn-thumper-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Current funding, physical event meaning, private alternatives, separate deadlines and provisional scope are explicit.', evidence: ['docs/TRUTHTRANCE_TURN_ACTIONS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused helper, control and original native sources, including physical printed plays, original Storm/blow sources, shared Revival resources and native power declarations; broader composition and final acceptance remain.', evidence: ['tests/fixture-truth-flight-poison.ts', 'tests/truth-flight-poison-runtime.test.ts', 'tests/fixture-truth-semuta-play.ts', 'tests/truth-semuta-play-runtime.test.ts', 'tests/semuta-reaction-controls.test.tsx', 'tests/fixture-truth-transfer-order-play.ts', 'tests/truth-transfer-order-play-runtime.test.ts', 'tests/fixture-distrans-prebid.ts', 'tests/fixture-sapho-started-movement.ts', 'tests/fixture-truth-box-play.ts', 'tests/truth-box-play-runtime.test.ts', 'tests/truth-opaque-card-plan.test.ts', 'tests/fixture-truth-choam-income.ts', 'tests/truth-choam-income-runtime.test.ts', 'tests/window-card-play.test.ts', 'tests/battle-power-question.test.ts', 'tests/printed-card-play.test.ts', 'tests/turn-action-promises.test.ts', 'tests/truth-turn-action-controls.test.tsx', 'tests/fixture-truth-turn-action.ts', 'tests/truth-turn-action-runtime.test.ts', 'tests/truth-turn-action-funding.test.ts', 'tests/fixture-truth-turn-preparation.ts', 'tests/truth-turn-preparation-runtime.test.ts', 'tests/fixture-truth-turn-alliance.ts', 'tests/truth-turn-alliance-runtime.test.ts', 'tests/fixture-truth-turn-combat.ts', 'tests/truth-turn-combat-runtime.test.ts', 'tests/fixture-truth-turn-card-play.ts', 'tests/truth-turn-card-play-runtime.test.ts', 'tests/fixture-truth-turn-power.ts', 'tests/truth-turn-power-runtime.test.ts', 'tests/fixture-truth-turn-window-card.ts', 'tests/truth-turn-window-card-runtime.test.ts', 'tests/fixture-truth-turn-karama.ts', 'tests/truth-turn-karama-runtime.test.ts', 'tests/truth-turn-karama-forecast.test.ts', 'tests/fixture-truth-turn-karama-shipment.ts', 'tests/truth-turn-karama-shipment-runtime.test.ts', 'tests/truth-turn-karama-shipment-funding.test.ts', 'tests/fixture-truth-turn-thumper.ts', 'tests/truth-turn-thumper-runtime.test.ts', 'tests/fixture-truth-turn-amal.ts', 'tests/truth-turn-amal-runtime.test.ts', 'game/ordinary-payment-plan.ts', 'tests/ordinary-payment-plan.test.ts', 'tests/fixture-truth-charity-payments.ts', 'tests/truth-charity-payments-runtime.test.ts'] },
],
},
{
id: 'truthtrance-travel',
title: 'Truthtrance: combined shipment and ground movements',
category: 'Cards', coverage: 'Partial', developmentStage: 'Prototyped',
summary: 'Combine future native reserve shipment and physical ground-movement conditions in one whole answer, optionally with current facts.',
steps: [
'From Storm through Shipment and Movement, choose Combine this turn’s shipment and ground movements for a native respondent with an upcoming or active opportunity. Full AND/OR groups can include ship, move and optional current-fact clauses. Other action families and wider compositions remain unfinished.',
'Each shipment condition refers to the same one future original reserve shipment after answering. A current-turn shipment used before answering does not count; last turn’s shipment does not close this turn’s upcoming opportunity. Moving, cross-planet transport and reserve shipment retain their original distinct meanings and costs.',
'Each movement minimum requires one actual future physical ground group to that destination. Smaller moves never add together. Original owned Hajr, Ornithopter, card preparation, types, routes and movement allowances stay authoritative.',
'Yes requires the whole expression; OR preserves legal alternatives. No negates the whole question and stays binding through your actual movement end. A qualifying Yes completes immediately. Original legal actions must leave a possible completion; an opposing completed effect may release impossibility.',
'Current facts freeze at the actual answer and impose no promise to keep the same holdings. Unknown facts require an aggregate guaranteed without guessing; constant answers need no future action. Separate frozen values and private branch choices are not published.',
'Review the entitled current-phase preparation, bid pass or owned invoice, then the native shipment/movement step; other legal manual routes remain. A definite answer uniformly reopens concurrent Charity or legacy Revival readiness, including constants. Completed ordered Advanced Revival stays complete. Prior Revival and bribe payments retain their funding. Private own history persists; four minimal profiles participate legally. Complete modes, broader compositions and final deployed acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-shipment', 'truthtrance-movement-expression', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Private signed branches share the original shipment and movement completion search, recording distinct native physical receipts and accepted-order release.', evidence: ['game/travel-expression-promises.ts', 'game/mixed-action-question.ts', 'game/movement-shipment-preparation.ts', 'game/engine.ts', 'game/truthtrance.ts', 'tests/travel-expression-promises.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full optional-fact editor, raw Ask/private answers, persistent aggregate history and exact guarded native guide.', evidence: ['components/travel-claim-fields.tsx', 'components/travel-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-travel-controls.test.tsx', 'tests/truth-travel-early-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and consume the native guide; strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-travel-runtime.test.ts', 'tests/truth-travel-early-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Single-shipment, physical group maxima, whole No, snapshot, native order and provisional scope are explicit.', evidence: ['docs/TRUTHTRANCE_TRAVEL_PROMISES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused helper/control/native journeys; broader optional/faction/preparation/cross-action and deployed acceptance remain open.', evidence: ['tests/fixture-truth-travel.ts', 'tests/truth-travel-runtime.test.ts', 'tests/fixture-truth-travel-order.ts', 'tests/truth-travel-order.test.ts', 'tests/truth-travel-guild-fremen.test.ts', 'tests/truth-travel-controls.test.tsx', 'tests/travel-expression-promises.test.ts', 'tests/fixture-truth-travel-early.ts', 'tests/truth-travel-early-runtime.test.ts', 'tests/truth-travel-early-revival.test.ts', 'tests/truth-travel-early-bid.test.ts', 'tests/truth-travel-early-controls.test.tsx'] },
],
},
{
id: 'truthtrance-mixed-traitor',
title: 'Truthtrance: current facts and this Traitor declaration',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine answer-time facts with the original current revealed-battle Reveal or Decline decision, preserving matching eligibility and declaration receipts.',
steps: [
'Choose Combine current facts and this Traitor declaration. Add full AND/OR groups with both current facts and Reveal/Decline conditions. All declaration leaves concern the same original unsubmitted native voter in this revealed battle, including a native allied Harkonnen voter.',
'Current facts freeze at the actual answer. Later spice payments, matching-card draws or returns do not create a new factual answer. Unknown facts cannot be relied on being true for Yes or false for No; No negates the complete expression.',
'The two possible declaration values are checked together. A whole answer may force Reveal, force Decline, or already be guaranteed for either choice. A constant or tautology needs no native restriction. No to a promise to decline can require Reveal.',
'A forced value uses the original matching physical Traitor, Kwisatz/leader protection, voter/beneficiary and prior-promise rules. Current inability to Reveal does not erase a Decline commitment: it stays binding if a later native draw makes Reveal possible.',
'The actual original declaration fulfills a binding answer before later Karama or Nexus betrayal changes its effect. A prevented effect never retracts the receipt. Submitted true and false votes are never reopened.',
'During Harkonnen Cunning, a live required Reveal protects the matching identity from a voluntary return. Decline may return that identity. After a fulfilled declaration, the original return rules apply and the receipt remains.',
'Full mixed editing, raw preview/Ask, private aggregate answer choices and persistent own status connect to the original compatible declaration buttons and four minimal profiles. Reduced choices and individual frozen facts are not projected as extra answers. Unrevealed future-leader questions, broader preparations/compositions and final deployed acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-traitor-decision', 'truthtrance-mixed-battle', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Exact logical reduction of one current decision binds only a forced original native declaration. Actual receipt/release updates own raw aggregate without exposing compiled choice or frozen facts.', evidence: ['game/mixed-traitor-question.ts', 'game/traitor-decision-promises.ts', 'game/truthtrance.ts', 'game/engine.ts', 'tests/mixed-traitor-question.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full shared editor and exact source-aware aggregate answer callbacks use public context. Original private legal-choice buttons and own persistent status stay connected.', evidence: ['components/mixed-traitor-fields.tsx', 'components/mixed-traitor-promises.tsx', 'components/traitor-decision-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-mixed-traitor-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and declare through original compatible choices; full strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-mixed-traitor-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Snapshot/unknown, opposite-call logic, native eligibility/protection, declaration-versus-effect and remaining boundaries are explicit.', evidence: ['docs/TRUTHTRANCE_MIXED_TRAITOR.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused pure logical/event, original Basic/allied/Cunning and controlled editing/answer cases; wider faction/module/composition and final deployed acceptance remain open.', evidence: ['tests/mixed-traitor-question.test.ts', 'tests/traitor-decision-promises.test.ts', 'tests/fixture-truth-mixed-traitor.ts', 'tests/truth-mixed-traitor-runtime.test.ts', 'tests/truth-mixed-traitor-harkonnen.test.ts', 'tests/truth-mixed-traitor-controls.test.tsx'] },
],
},
{
id: 'truthtrance-traitor-decision',
title: 'Truthtrance: this battle’s Traitor declaration',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind an unsubmitted native voter’s original declaration after both battle plans reveal.',
steps: [
'Choose Bind this battle’s Traitor declaration, then an actual voter who has not submitted. The public question names the current revealed battle. Already submitted Yes and No votes cannot be reopened; future unrevealed-leader questions remain separate.',
'Yes requires a legal Reveal against the opposing revealed leader; No requires decline. Native matching Traitor identity, Kwisatz protection and voter/beneficiary rules remain. Face Dancers do not count as ordinary Traitors. Only the respondent sees feasible answers. This current-choice prototype uses held matching eligibility; unknown future identity draws and broader future preparations remain unfinished.',
'The original declaration fulfills the answer before any later Harkonnen-ally Karama response or Nexus betrayal. A prevented effect does not make that completed declaration untruthful. The answer does not guarantee successful betrayal.',
'Harkonnen Cunning may still draw and return an ordinary legal identity. A live promised Reveal protects the matching card from voluntary return, with a private reason and other original choices available. No and already fulfilled declarations do not impose that custody restriction. The native pending return resumes after Truthtrance.',
'Persistent answer and vote notices use the same legal choices as the server. Four minimal policies honor the declared choice; strategy and calibration remain deferred. Current-decision composition is explicit software policy under the general current-turn rule, not a publisher Traitor-specific FAQ. Full game/module and final acceptance remain unfinished.',
],
related: ['card-truthtrance', 'battle', 'card-karama', 'nexus-harkonnen-betrayal', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Original event/voter/beneficiary/opponent/leader binding, declaration-time fulfillment and native matching eligibility are connected. Harkonnen Cunning retains unfulfilled matching custody while completed declarations keep ordinary return rights.', evidence: ['game/traitor-decision-promises.ts', 'game/truthtrance.ts', 'game/engine.ts', 'game/nexus-traitor-options.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Public eligible targets, private definite answers, persistent vote notices, both native/ally vote panels and private blocked return reasons are connected. Busy callbacks do nothing and a stale blocked checkbox may be unchecked.', evidence: ['components/truthtrance.tsx', 'components/traitor-decision-promises.tsx', 'components/game-table.tsx', 'components/nexus-traitors.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing profiles consume private legal answers and declarations; the shared Nexus return policy excludes a forbidden identity. No strength tuning or general freeform interpretation is added.', evidence: ['game/bots.ts', 'game/nexus-traitor-options.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Current declaration versus successful effect, native eligibility and Cunning custody boundaries are explicit, with wider future promises and final acceptance open.', evidence: ['docs/TRUTHTRANCE_TRAITOR_DECISIONS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: '13 files101/101, types/lint/build and six native engine/answer-callback/GameTable SSR journeys pass. Genuine26/72/77-action Basic/allied/Cunning sources earn original cards, alliances, payments, reveal and draw/return. Four profiles answer/vote legally. Unmatched-card staging is labelled; submitted-false and response/typing fixture feedback is repaired. Full future promises, combinations and final assurance remain open.', evidence: ['tests/traitor-decision-promises.test.ts', 'tests/fixture-truth-traitor-decision.ts', 'tests/fixture-truth-traitor-harkonnen.ts', 'tests/truth-traitor-decision-engine.test.ts', 'tests/truth-traitor-harkonnen-engine.test.ts', 'tests/truth-traitor-decision-controls.test.tsx', 'docs/TRUTHTRANCE_TRAITOR_DECISIONS.md'] },
],
},
{
id: "truthtrance-alliance-expression",
title: "Truthtrance: combined final alliance partners",
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: "Combine final partner conditions with AND/OR, retaining every owned consent route and whole No until actual Nexus close.",
steps: [
"Choose Combine final alliance partners with AND/OR. Build full groups using current participants other than the respondent. Every condition concerns actual membership when this ordinary Nexus closes.",
"OR keeps every compatible consent-supported partner available. AND requires every child; in the native pair system two different final partners cannot both be true. No negates the complete expression, rather than demanding each child separately be false.",
"A proposal alone is not membership. Yes stays binding after formation; No can permit temporary membership if it ends before the close. Both settle only at the actual Nexus close.",
"A known owned completion uses an existing partnership or a real incoming invitation. No future consent or withdrawal is invented. Missing consent can leave No or I don’t know available; the holder may save the card or ask again after a real offer.",
"Every compatible native consent plan is checked against earlier financial and other commitments. An OR answer selects no fixed route; another manual legal partner remains available. Existing bribes use their original payment controls before accepting a recipient when required.",
"Other participants keep their original withdrawal and departure rights. One surviving OR route preserves Yes; removing the last owned route can release an impossible answer in accepted order. A later reoffer never reactivates a released record.",
"Full editing, raw preview/Ask, private answers, own aggregate status and one exact shared acceptance/break/Ready guide connect to four minimal policies. A definite answer reopens only respondent readiness. Earlier-phase diplomacy, optional combinations, broader action families and final deployed acceptance remain unfinished.",
],
related: ['card-truthtrance', 'truthtrance-alliance', 'truthtrance-mixed-alliance', 'truthtrance-bribe', 'implementation-checklist'],
checklist: [
{ area: "Implementation", status: "Partial", detail: "Finite final outcomes reuse original canonical consent plans, native financial preparation and one scalar/whole/mixed accepted sequence. Raw projection omits private source and mixed residuals.", evidence: ["game/alliance-expression-promises.ts", "game/mixed-alliance-question.ts", "game/engine.ts", "game/truthtrance.ts"] },
{ area: "Player controls", status: "Partial", detail: "Full partner/mixed editors, raw preview/Ask, private answers and one exact live native guide retain public context and original consent.", evidence: ["components/alliance-expression-fields.tsx", "components/mixed-alliance-fields.tsx", "components/alliance-expression-promises.tsx", "components/mixed-alliance-promises.tsx", "components/alliance-promises.tsx", "components/truthtrance.tsx", "components/game-table.tsx"] },
{ area: "AI", status: "Partial", detail: "Four minimal profiles answer and perform canonical native acceptance and Ready. Strategy/calibration remain deferred.", evidence: ["game/bots.ts", "tests/truth-alliance-expression-runtime.test.ts", "tests/truth-mixed-alliance-runtime.test.ts"] },
{ area: "Documentation", status: "Implemented", detail: "Current-Nexus interval, whole No, snapshot/unknown, owned consent, native financial preparation and remaining gates are explicit.", evidence: ["docs/TRUTHTRANCE_ALLIANCE_EXPRESSIONS.md", "docs/RULE_DECISIONS.md"] },
{ area: "Verification", status: "Partial", detail: "Focused pure, original native consent/close/funding and controlled editing/guide cases. Wider compositions and final deployed acceptance remain open.", evidence: ["tests/alliance-expression-promises.test.ts", "tests/mixed-alliance-question.test.ts", "tests/fixture-truth-alliance-expression.ts", "tests/truth-alliance-expression-runtime.test.ts", "tests/truth-mixed-alliance-runtime.test.ts", "tests/truth-alliance-expression-funding.test.ts", "tests/truth-alliance-expression-controls.test.tsx", "tests/truth-mixed-alliance-controls.test.tsx"] },
],
},
{
id: "truthtrance-mixed-alliance",
title: "Truthtrance: current facts and final alliance partners",
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: "Combine answer-time facts with final Nexus partner conditions while preserving real consent, alternatives and original commitments.",
steps: [
"Choose Combine current facts and final alliance partners. Build full AND/OR groups with at least one current fact and one partner condition. Nested facts share the sixteen-condition, four-level input limit.",
"Current facts freeze at the actual answer. A fact that you hold at least10 spice stays that answer-time fact after a real payment leaves7. Only the aggregate answer is shared; frozen clause answers and reduced branches remain private.",
"A fact may settle the whole answer immediately, requiring no later alliance. Otherwise the remaining final-partner conditions use the same native system as whole alliance questions. Unknown facts cannot be relied on being true for Yes or false for No.",
"A known owned completion uses an existing partnership or a real incoming invitation. No future consent or withdrawal is invented. Missing consent can leave No or I don’t know available; the holder may save the card or ask again after a real offer.",
"Every compatible native consent plan is checked against earlier financial and other commitments. An OR answer selects no fixed route; another manual legal partner remains available. Existing bribes use their original payment controls before accepting a recipient when required.",
"Other participants keep their original withdrawal and departure rights. One surviving OR route preserves Yes; removing the last owned route can release an impossible answer in accepted order. A later reoffer never reactivates a released record.",
"Full editing, raw preview/Ask, private answers, own aggregate status and one exact shared acceptance/break/Ready guide connect to four minimal policies. A definite answer reopens only respondent readiness. Earlier-phase diplomacy, optional combinations, broader action families and final deployed acceptance remain unfinished.",
],
related: ['card-truthtrance', 'truthtrance-alliance', 'truthtrance-alliance-expression', 'truthtrance-bribe', 'implementation-checklist'],
checklist: [
{ area: "Implementation", status: "Partial", detail: "Finite final outcomes reuse original canonical consent plans, native financial preparation and one scalar/whole/mixed accepted sequence. Raw projection omits private source and mixed residuals.", evidence: ["game/alliance-expression-promises.ts", "game/mixed-alliance-question.ts", "game/engine.ts", "game/truthtrance.ts"] },
{ area: "Player controls", status: "Partial", detail: "Full partner/mixed editors, raw preview/Ask, private answers and one exact live native guide retain public context and original consent.", evidence: ["components/alliance-expression-fields.tsx", "components/mixed-alliance-fields.tsx", "components/alliance-expression-promises.tsx", "components/mixed-alliance-promises.tsx", "components/alliance-promises.tsx", "components/truthtrance.tsx", "components/game-table.tsx"] },
{ area: "AI", status: "Partial", detail: "Four minimal profiles answer and perform canonical native acceptance and Ready. Strategy/calibration remain deferred.", evidence: ["game/bots.ts", "tests/truth-alliance-expression-runtime.test.ts", "tests/truth-mixed-alliance-runtime.test.ts"] },
{ area: "Documentation", status: "Implemented", detail: "Current-Nexus interval, whole No, snapshot/unknown, owned consent, native financial preparation and remaining gates are explicit.", evidence: ["docs/TRUTHTRANCE_ALLIANCE_EXPRESSIONS.md", "docs/RULE_DECISIONS.md"] },
{ area: "Verification", status: "Partial", detail: "Focused pure, original native consent/close/funding and controlled editing/guide cases. Wider compositions and final deployed acceptance remain open.", evidence: ["tests/alliance-expression-promises.test.ts", "tests/mixed-alliance-question.test.ts", "tests/fixture-truth-alliance-expression.ts", "tests/truth-alliance-expression-runtime.test.ts", "tests/truth-mixed-alliance-runtime.test.ts", "tests/truth-alliance-expression-funding.test.ts", "tests/truth-alliance-expression-controls.test.tsx", "tests/truth-mixed-alliance-controls.test.tsx"] },
],
},
{
id: 'truthtrance-alliance',
title: 'Truthtrance: alliance membership at this Nexus close',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind actual partnership at the current ordinary Nexus close, using real reciprocal consent and original alliance actions.',
steps: [
'Choose Bind alliance membership at this Nexus close, another respondent and a named partner. This first version supports a quiet ordinary Nexus in registered native Basic and Advanced tables without optional modules. An ordinary worm Nexus does not require the Nexus Cards option.',
'The question concerns actual final membership at this Nexus close. A proposal alone is not an alliance. Yes stays live after forming the pair and settles only at the close. No requires ending without the named partner; a temporary partnership may be broken before readiness.',
'An owned Yes route uses an already held partnership or a currently available reciprocal invitation. The respondent may break an old pair first if the real invitation remains. Another player’s future consent, departure or renewed offer is not invented. Other players keep their original right to withdraw or break.',
'If consent is not available and earlier answers do not fix the result, No or I don’t know may be available. Unknown preserves the physical card; the holder may ask a different question or save it to resume negotiations, then ask again after a real invitation.',
'Your persistent panel offers the next native break, acceptance or Ready action in a quiet Nexus, including out of turn. A new definite answer reopens your own readiness. Ready requires the current partnership to match every live answer. Actual closing settles them before the next native draw or worm ride.',
'Own actions cannot erase the last owned completion of Yes. A completed opposing withdrawal or break can release an impossible answer; earlier compatible answers remain. Existing financial and movement commitments are retained. An earlier owed bribe to the desired partner uses its original payment guide before acceptance.',
'The current-Nexus interval, owned-consent witness and release priority are provisional online compositions of general current-turn Truthtrance authority. Wider negotiations, earlier-phase alliance questions, optional modules and complete-mode acceptance remain due. No start gate opens.',
],
related: ['card-truthtrance', 'nexus-offers', phaseRuleId(1), 'truthtrance-bribe', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Current-Nexus final membership, joint own Yes/No, canonical break/accept quotes, real closure and opposing-impossibility release retain original consent rights.', evidence: ['game/alliance-promises.ts', 'game/nexus-alliance.ts', 'game/truthtrance.ts', 'game/engine.ts', 'tests/alliance-promises.test.ts', 'tests/truth-alliance-runtime.test.ts', 'tests/truth-alliance-interactions.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Fixed-turn named partner, public final-status preview, target-only answers and persistent event-bound break/accept/Ready guidance. No private Nexus source is projected.', evidence: ['components/alliance-claim-fields.tsx', 'components/alliance-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-alliance-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four minimal policies use feasible answers and owned native guides. Strategic negotiation and calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-alliance-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Physical alliance/general Truthtrance sources, owned consent, final interval, unknown/save and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_ALLIANCE_PROMISES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original setup/Worm/consent histories and focused UI/pure/actor-order cases; wider source compositions, browser and final deployed acceptance remain open.', evidence: ['tests/fixture-truth-alliance.ts', 'tests/truth-alliance-runtime.test.ts', 'tests/truth-alliance-controls.test.tsx', 'tests/truth-alliance-interactions.test.ts'] },
],
},
{
id: 'truthtrance-bribe',
title: 'Truthtrance: ordinary bribe-payment promises',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind cumulative future ordinary spice payments to a named non-allied recipient, retaining actual funding and deferred collection.',
steps: [
'Choose Bind ordinary bribe payments this turn, another respondent, a named non-allied recipient and a positive whole minimum. The current turn is fixed. Registered native Basic and Advanced tables without optional modules support this funded-payment prototype.',
'Yes requires cumulative matching ordinary payer payments after the answer while possible. No keeps later matching payments below the minimum, even across smaller payments. Earlier payments, gifts and allied aid do not count. Several Yes questions for one recipient share the largest deficit; different recipients reserve separate spice.',
'The payer spends spice when the actual native bribe is accepted. The recipient keeps that payment deferred until the next Mentat opening; a late Mentat payment waits for next turn. The question creates no immediate recipient cash, discount or refund. Current auction and sealed-battle liabilities stay reserved.',
'Ordinary payment witnesses use current spendable spice, CHOAM’s own automatic opening receipt once, and one remaining owned Charity claim after prepayments. The automatic receipt and ordinary claim have separate markers; guides spend only actual cash. Later installments share the final purse with battle, bid, revival, shipment and movement commitments. Actual counters or opposing claims can change funding. Other future income, pledge withdrawal, gifts and wider card preparation remain bounded. A later question must preserve earlier answers too.',
'Your persistent panel shows named cumulative progress and fulfilled/released status. Its legal ordinary-payment guide works out of turn in a clear native window. Current payment controls also apply the recipient cap and retain funding for other Yes answers. Stale or modified guides reject.',
'In supported bare Basic Richese games, an answered bribe question retains its payment commitment while the used Truthtrance passes through the Semuta claim-or-pass opportunity. The same continuation applies to combined and mixed bribe questions. Kull and optional module combinations remain outside this preview.',
'Your own voluntary spending, alliance offer to the recipient or finishing Mentat cannot evade an unpaid Yes. A new Yes reopens an already-ready Charity or Mentat respondent; Collection readiness stays. A known automatic Inflation Double closure requires payment before Collection Ready ends that legal window. Completed opposing consequences may release impossible answers in accepted order. No finishes at the original turn boundary.',
'Quiet Mentat remains available after opening collection; Inflation Double still prohibits actual payments. No can be fixed under Double, while Yes requires a currently legal funded payment. This cumulative funded-current-turn protocol is a provisional composition of general Truthtrance authority; optional modules, future preparations, broader deals and complete-mode acceptance remain due.',
],
related: ['card-truthtrance', 'bribes', 'truthtrance-bid', 'truthtrance-revival', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Recipient-specific cumulative ordinary payments, joint funding/caps, real payer completion, deferred native receipt and accepted-order release retain original mechanics.', evidence: ['game/bribe-promises.ts', 'game/truthtrance.ts', 'game/engine.ts', 'tests/bribe-promises.test.ts', 'tests/truth-bribe-runtime.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Typed current-turn named-recipient fields, public preview, target-only answers and persistent guarded out-of-turn payment guide; ordinary recipient limits retain other commitments.', evidence: ['components/bribe-claim-fields.tsx', 'components/bribe-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-bribe-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing four minimal profiles answer and execute legal ordinary-payment guides. Strategic initiation/negotiation and calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-bribe-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'General Truthtrance/physical bribery sources, provisional cumulative meaning, funded scope, original timing and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_BRIBE_PROMISES.md', 'docs/MENTAT_BRIBES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused pure, original deal/payment/Mentat/next-turn runtime and controlled/native UI evidence. Native alliance campaigns, optional compositions, future preparations and final browser/deployed acceptance remain open.', evidence: ['tests/fixture-truth-choam-income.ts', 'tests/truth-choam-income-runtime.test.ts', 'tests/fixture-mentat-bribes.ts', 'tests/mentat-bribes-runtime.test.ts', 'tests/fixture-truth-bribe.ts', 'tests/truth-bribe-runtime.test.ts', 'tests/truth-bribe-controls.test.tsx'] },
],
},
{
id: 'truthtrance-mixed-revival',
title: 'Truthtrance: current facts and ordinary Revival',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine answer-time facts with actual future ordinary force and personal named-leader returns using the existing Revival rules.',
steps: [
'Choose Combine current facts and ordinary Revival. Build full AND/OR groups with at least one current fact and one force minimum or named native leader condition. Nested current facts share the16-leaf/depth4 software limit.',
'Current facts freeze at the actual answer. A fact that you hold at least4 spice stays that answer-time fact after actual force income and leader payment change your spice. This creates no promise to retain the same cards, spice or forces afterward.',
'Yes makes the complete expression true; No keeps the whole expression false. A definite Yes cannot rely on an unknown fact being true, and No cannot rely on it being false. If neither guaranteed answer is currently available, the holder may save the unanswered card or change the question.',
'A fact may already settle the aggregate, requiring no later return. Otherwise actual ordinary physical force returns add cumulatively by total, normal and elite counters; personal named-leader returns count after the answer. Prior returns, requests alone, Ghola, foreign leaders and special returns do not fulfill the claim.',
'The original Revival system retains eligibility, costs, cycles, slots, turn order, owned preparations and earlier accepted funding. The answer grants no extra opportunity. A current accepted leader price can be paid; future foreign consent is not assumed. OR alternatives stay available.',
'Raw preview/Ask, private answer choices, own aggregate progress and one exact shared native guide connect to four minimal policies. Basic settles at actual phase close; Advanced settles when your ordered opportunity ends. Quiet native phases0–4 retain their supported scope; other action families, correlated unknowns and broader compositions remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-revival-expression', 'truthtrance-leader-revival', 'truthtrance-mixed-bribe', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Shared answer-time compilation binds only the required native Revival expression; own raw aggregate projection hides reduced clauses and retains native eligibility/funding/deadlines.', evidence: ['game/mixed-action-question.ts', 'game/mixed-revival-question.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full shared mixed editor, public faction leader choices, repairable drafts, raw preview/Ask, private answers and one exact live event guide are connected.', evidence: ['components/mixed-revival-fields.tsx', 'components/mixed-revival-promises.tsx', 'components/revival-expression-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-mixed-revival-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and use native ordinary-return guides. Strategic refinement/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-mixed-revival-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Snapshot/unknown meaning, native return boundaries and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_MIXED_REVIVAL.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original native return and funding journeys plus controlled shared editing/guides; broader combinations and final deployed acceptance remain open.', evidence: ['tests/fixture-truth-mixed-revival.ts', 'tests/truth-mixed-revival-runtime.test.ts', 'tests/truth-mixed-revival-funding.test.ts', 'tests/truth-mixed-revival-controls.test.tsx'] },
],
},
{
id: 'truthtrance-mixed-bribe',
title: 'Truthtrance: current facts and ordinary payments',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine answer-time facts with cumulative future ordinary payments while keeping one native purse, deferred receipts and the private aggregate.',
steps: [
'Choose Combine current facts and ordinary payments. Build full AND/OR groups with at least one current fact and one named non-allied recipient/minimum condition. One16-leaf/depth4 software budget includes nested fact groups.',
'Current facts freeze when answered. If you truthfully hold at least10 spice then promise payments totaling5, the fact remains the answer-time fact after your supply drops to5. Later spending or card custody creates no new factual answer.',
'Only the complete yes/no answer and original question are public. A definite Yes cannot rely on an unknown fact being true; No cannot rely on it being false. The remaining funded payment obligation must guarantee the aggregate. If neither definite answer is currently supportable, the unanswered card may be saved or asked differently.',
'A fact can already settle the whole answer, needing no later payment. Otherwise actual ordinary payer payments after the answer add together per recipient; earlier payments, gifts, allied aid and later Mentat collection do not count. No negates the whole mixed expression.',
'Remaining payments use the original scalar/grouped bribe system, current uncommitted funds, nonally restrictions, previous budgets and accepted order. Dynamic OR recipients remain available. Answering grants no spice and pays nobody.',
'Recipient shares stay deferred to the next actual Mentat opening; a late Mentat payment waits for next turn’s opening. Yes cannot evade by finishing Mentat; No remains binding until actual turn advance. Existing known Inflation Double closure retains its earlier Collection deadline.',
'Full shared editing, guarded raw preview/Ask, private answers, own cumulative progress and one exact native payment guide connect to four minimal policies. Historical fulfilled panels do not duplicate or hide a new live guide. Native Basic/Advanced phases0–8 retain their existing quiet supported scope; other action families, correlated unknowns and optional compositions remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-bribe-expression', 'truthtrance-bribe', 'truthtrance-mixed-movement', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Generic answer-time compilation binds only a necessary native payment expression; raw aggregate projection hides compiled clauses and keeps native funding/receipt rules.', evidence: ['game/mixed-action-question.ts', 'game/mixed-bribe-question.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Reusable mixed editor serves movement/payments with stable movement controls; raw aggregate panel and one shared exact payment guide are connected.', evidence: ['components/mixed-action-fields.tsx', 'components/mixed-bribe-fields.tsx', 'components/mixed-bribe-promises.tsx', 'components/bribe-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer the aggregate and pay through exact native guides. Strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-mixed-bribe-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Snapshot/unknown composition, original current-purse/receipt/deadline and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_MIXED_BRIBES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original native payment/receipt/funding and controlled shared editor/guide cases supplement existing scalar and grouped proof; wider composition/final deployed acceptance remain open.', evidence: ['tests/fixture-truth-mixed-bribe.ts', 'tests/truth-mixed-bribe-runtime.test.ts', 'tests/truth-mixed-bribe-funding.test.ts', 'tests/truth-mixed-bribe-controls.test.tsx', 'tests/truth-mixed-movement-controls.test.tsx'] },
],
},
{
id: 'truthtrance-bribe-expression',
title: 'Truthtrance: combined ordinary bribe payments',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine cumulative future ordinary payments with full AND/OR while keeping whole No, dynamic alternatives and the original shared purse.',
steps: [
'Choose Combine ordinary bribe payments with AND/OR. Add, wrap, remove or nest named non-allied recipient/minimum conditions. AND requires every child; OR at least one. The complete editor supports sixteen leaves and depth four; these are software input limits.',
'Each leaf counts actual matching ordinary payer payments after this answer until the current turn ends. Split payments add together. Earlier payments, gifts, allied aid and later recipient collection do not count. Repeated conditions for one recipient share that answer’s cumulative progress.',
'No negates the whole expression. No to paying A AND B may permit either partial route, while forbidding completion of both; No to A OR B forbids either qualifying route. A Yes becomes fulfilled only when actual payments make the whole expression true.',
'The server rebuilds currently funded alternatives after each action; no suggested OR route is saved. Several questions and earlier scalar bribe, bid, revival, shipment, movement and battle commitments keep their actual budgets and accepted order. Unknown future income or foreign agreement is not assumed.',
'Persistent own progress and the exact ordinary-payment guide connect to native payments and all four minimal policies. Another legal route may be paid manually. Stale, modified or foreign guide packets reject; rejected actions leave the original state intact.',
'Quiet phases0–8 in registered bare native Basic/Advanced support this prototype. Yes blocks finishing Mentat; a new Yes reopens only its already-ready payer. Known automatic Inflation Double closure retains the earlier Collection deadline. No lasts until actual turn advance. Late Mentat receipts wait for next turn’s opening.',
'This cumulative funded interval and accepted-order composition is provisional application of general Truthtrance authority. Optional modules, future preparations, cross-family expressions and final browser/deployed acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-bribe', 'bribes', 'truthtrance-revival-expression', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Strict full-tree parsing, whole-answer progress and lazy scalar/expression allocations use actual native payments and one shared purse.', evidence: ['game/bribe-expression-promises.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full controlled expression editor, public preview, private answers, persistent own progress and exact native guide are connected.', evidence: ['components/bribe-expression-fields.tsx', 'components/bribe-expression-promises.tsx', 'components/bribe-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer the whole question and execute native legal payments. Strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-bribe-expression-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Source authority, cumulative interpretation, funding, original receipt timing and remaining scope are explicit.', evidence: ['docs/TRUTHTRANCE_BRIBE_EXPRESSIONS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused pure, controlled editor/guide and original native payment cases; broader compositions and full mode acceptance remain open.', evidence: ['tests/bribe-expression-promises.test.ts', 'tests/truth-bribe-expression-controls.test.tsx', 'tests/fixture-truth-bribe-expression.ts', 'tests/truth-bribe-expression-runtime.test.ts', 'tests/truth-bribe-expression-funding.test.ts'] },
],
},
{
id: 'truthtrance-revival-expression',
title: 'Truthtrance: grouped force and leader revivals',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Ask a whole AND/OR question across future ordinary force minima and named personal native leader returns, retaining every legal alternative.',
steps: [
'Choose Bind combined force and leader revivals. Build AND/OR groups with ordinary total/normal/elite force minima or a named personal native leader/Kwisatz return. Registered bare native Basic/Advanced tables support quiet phases0–4 with a remaining ordinary opportunity. The input supports sixteen leaves and four grouped levels; these are software bounds, not printed question limits.',
'Each force leaf counts cumulative actual ordinary physical returns after this answer; each elite counts once. Each leader leaf means a future actual personal native return of that printed identity. Previous returns, requests, unaccepted quotes, Ghola/cards, special returns and foreign gholas do not count. Original prices, custody, cohort, slots and order remain.',
'Yes requires the complete positive expression to become true. AND needs every child; OR at least one. No keeps the whole expression false: No to force1 AND leader may permit either first return but forbids completing both; No to force1 OR leader forbids either qualifying return.',
'Your answer stores the full expression and actual progress, never a fixed branch. A guide suggests one legal action; another legal OR route or AND-No reason remains available. Every action rebuilds compatible alternatives against earlier scalar and grouped answers, sharing native funding and allowance.',
'The persistent panel displays the full expression, typed forces and named future returns. Exact current phase/event guides prepare, return or finish through native controls. Yes settles only on actual whole-expression progress; No lasts to Basic phase close or the stamped Advanced opportunity close. All four minimal profiles use the same legal path.',
'The owned current-turn interval, source and accepted-order release policy remain provisional compositions of general Truthtrance authority. Other future families, cross-opportunity expressions, special/card revival, optional modules and complete-mode/browser/deployed acceptance remain due. No start gate opens.',
],
related: ['card-truthtrance', 'truthtrance-revival', 'truthtrance-leader-revival', 'advanced-revival-order', 'implementation-checklist', phaseRuleId(4)],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Strict full-tree parser, cumulative physical/native progress and lazy dynamic alternatives reuse the actual native planner and shared constraints without storing a branch.', evidence: ['game/revival-expression-promises.ts', 'game/engine.ts', 'game/truthtrance.ts', 'tests/revival-expression-promises.test.ts', 'tests/truth-revival-expression-runtime.test.ts', 'tests/truth-revival-expression-funding.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full controlled AND/OR editor, public preview, target-only answers and persistent whole-expression progress/exact guide.', evidence: ['components/revival-expression-fields.tsx', 'components/revival-expression-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-revival-expression-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four existing minimal policies answer the whole claim and use the native guide. Strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-revival-expression-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'AND/OR authority, provisional future interval/source, dynamic alternatives and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_REVIVAL_EXPRESSIONS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Pure whole-tree logic, controlled editor/guide and inherited original H/A/T battle/death histories; broader source families, browser/deployed and final assurance remain due.', evidence: ['tests/fixture-truth-revival-expression.ts', 'tests/truth-revival-expression-runtime.test.ts', 'tests/truth-revival-expression-controls.test.tsx', 'tests/truth-revival-expression-funding.test.ts'] },
],
},
{
id: 'truthtrance-leader-revival',
title: 'Truthtrance: named leader revival this turn',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind an actual future personal native return of a named leader or Kwisatz, retaining native cost, custody, cohort and allowance.',
steps: [
'Choose Bind a named leader revival this turn, the respondent and a public printed leader identity. Registered native Basic/Advanced tables support quiet phases0–4 with a remaining Revival opportunity. Advanced Atreides may name Kwisatz Haderach; Ecaz may name the shared Duke where present. Optional compositions remain unfinished.',
'Only a future actual personal native return after this answer counts. Direct ordinary requests and actually accepted personal early negotiations share real return accounting. A request, quote, prior return, Ghola card, special return or foreign ghola does not fulfill Yes. No forbids the named native return without banning other legal actions.',
'The original dead/captured/foreign custody, cohort, cost, native leader allowance and ordered ownership remain. Several same-identity Yes answers may share one actual return; different names need actual native slots. Force and leader commitments share one purse and completion plan.',
'The owned guide may claim available Charity, preserve or pay a known auction liability, make a required force return, return a leader/Kwisatz or finish at the real native opportunity. Tleilaxu may prepare through its actual one-time self free-revival income. An already-priced, not-declined personal negotiation can be accepted; a future foreign agreement or price is never invented.',
'Yes prevents voluntary spending, invoices or Finish that erase its last completion. A completed opposing effect can release impossible answers in shared force/leader acceptance order. The actual allowed return fulfills Yes; responses and payment/income keep their original timing. Basic No lasts to phase close; stamped Advanced No ends with the native opportunity.',
'Your own persistent panel shows pending, fulfilled and released answers. Exact event/phase guides and all four minimal policies use the same legal native actions. Strategy and difficulty calibration remain deferred.',
'This named future-return source, interval, owned witness and release policy are provisional online compositions of general current-turn Truthtrance authority. Dedicated original cohort, Auditor, Duke and Kwisatz commitment journeys, wider preparation/compositions, browser and complete-mode acceptance remain due. No start gate opens.',
],
related: ['card-truthtrance', 'truthtrance-revival', 'advanced-revival-order', 'truthtrance-bribe', 'implementation-checklist', phaseRuleId(4)],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Named native future returns, joint force/leader purse and slots, real completion, source exclusions, owned preparation and accepted-order release retain original rules.', evidence: ['game/leader-revival-promises.ts', 'game/revival.ts', 'game/engine.ts', 'game/truthtrance.ts', 'tests/leader-revival-promises.test.ts', 'tests/truth-leader-revival-runtime.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Public-name fields/preview, target-only answers and persistent exact event/phase native guides.', evidence: ['components/leader-revival-claim-fields.tsx', 'components/leader-revival-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-leader-revival-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing minimal profiles answer and use the same native guide. Full negotiation strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-leader-revival-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'General authority, native source/interval, owned preparation and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_LEADER_REVIVAL_PROMISES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original native Tleilaxu battle/death/return source, pure and controlled UI evidence; broader normal-cohort/KH/Duke, browser and deployed acceptance remain due.', evidence: ['tests/fixture-truth-leader-revival.ts', 'tests/truth-leader-revival-runtime.test.ts', 'tests/truth-leader-revival-controls.test.tsx'] },
],
},
{
id: 'truthtrance-revival',
title: 'Truthtrance: ordinary force-revival promises',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind cumulative future total, normal or elite physical returns in the same turn before native Revival closes.',
steps: [
'Choose Bind ordinary force revivals this turn, another participant with a remaining native opportunity, total/normal/elite counters and a minimum from1 to20. This first version supports registered native Basic and Advanced tables without optional modules; it opens no new game-start configuration.',
'Only ordinary force returns actually completed after your answer count. Each elite is one physical counter. Earlier returns, leaders, Ghola, Emperor-funded extras and other special returns are separate. Smaller ordinary requests add together.',
'Yes requires enough matching returns while possible. No forbids reaching the minimum, even through several smaller requests. Several answers must remain jointly possible. The original typed Tanks, free allowance, paid prices, elite limits and Revival order remain authoritative.',
'The private answer choices and guide use current native quotas and funding, including native free/paid selection. Earlier questions retain current Tanks and actual liabilities, project fresh normal Revival ledgers, and may prepare through actual Charity or owned opening income. Unknown future casualties do not supply forces. Earlier shipment and ground-movement promises retain their funding. Unknown gifts, future draws and foreign choices are not assumed.',
'Your own request, spending or Finish Revival cannot evade an unmet Yes. A completed opposing effect may release an impossible answer in accepted order. A requested return does not fulfill Yes until the actual return completes; its original responses still decide the outcome.',
'The persistent own promise panel displays progress and fulfilled/released status. Before Revival it waits for your actual Charity/Ready, ordinary/native pass, Silent zero or owned ordinary auction-payment choice; at Revival it offers a normal return or Finish Revival. Each guide belongs to its current phase and original event. Basic No remains through phase close because native readiness can reopen; stamped Advanced No ends when your opportunity finishes.',
'This cumulative this-turn protocol is a provisional online composition of general current-turn Truthtrance authority. Optional-module compositions, special/card revival claims, grouped revival expressions and complete-mode acceptance remain required work.',
],
related: ['card-truthtrance', 'advanced-revival-order', 'truthtrance-shipment', 'truthtrance-movement', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Typed cumulative phases0–4 native ordinary returns, real completion, compatible answers, voluntary guards and forced release retain original cost/quota/order.', evidence: ['game/revival-promises.ts', 'game/truthtrance.ts', 'game/engine.ts', 'tests/revival-promises.test.ts', 'tests/truth-revival-runtime.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Structured question, target-only feasible answers and persistent event-bound normal revival/finish guide.', evidence: ['components/revival-claim-fields.tsx', 'components/revival-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-revival-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing four profiles use feasible answers and the native action guide; strategy and difficulty calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-revival-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'General authority, provisional timing/count interpretation, native order and remaining boundaries are explicit.', evidence: ['docs/TRUTHTRANCE_REVIVAL_PROMISES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused native original-deal/death, pure and control evidence; broader combinations, browser and final deployed acceptance remain open.', evidence: ['tests/fixture-truth-revival.ts', 'tests/truth-revival-runtime.test.ts', 'tests/truth-revival-controls.test.tsx'] },
],
},
{
id: 'truthtrance-mixed-bid',
title: 'Truthtrance: current facts and ordinary bids',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine answer-time facts with future accepted bid declarations in the current ordinary lot, preserving native funding and payment.',
steps: [
'Choose Combine current facts and ordinary bids. Add full AND/OR groups with at least one current fact and one bid minimum. The fixed public turn and current ordinary lot apply to every bid condition; nested facts share the sixteen-condition, four-level input limit.',
'Current facts freeze at the actual answer. A statement that you hold at least10 spice remains that answer-time fact after the winning purchase leaves6. The answer does not require preserving the same resources afterward.',
'Yes makes the complete mixed expression true; No keeps the complete expression false. Unknown facts cannot be relied on being true for Yes or false for No. If neither guaranteed answer is available, the unanswered card may be saved or asked differently.',
'A fact may already settle the aggregate, needing no bid. Otherwise only future accepted declarations in this exact lot count. Two smaller bids never add into a larger bid. A qualifying declaration fulfills Yes even when another bidder eventually wins; the original winning payment remains separate.',
'All remaining minima concern one future bid interval. Satisfying two minima requires the larger; satisfying either requires the smaller. This exact reduction retains every legal amount. No forbids qualifying later declarations through actual lot close.',
'Native current funds, prepaid allied aid, Karama overbidding, capacity, active/waiting eligibility, earlier commitments and release order remain. The answer grants no new opportunity, spice or free purchase and assumes no future rival raise.',
'Raw editing/preview/Ask, private answers, own aggregate status and one exact native bid/pass guide connect to four minimal policies. Fulfilled history does not duplicate or suppress a live guide. Phase-wide questions, native special auctions, other action families and broader compositions remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-bid', 'truthtrance-mixed-revival', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Shared answer-time compilation reduces remaining same-lot minima to an exact native scalar bid obligation; raw aggregate projection hides frozen values, reduced minima and hidden lot source.', evidence: ['game/mixed-action-question.ts', 'game/mixed-bid-question.ts', 'game/truthtrance.ts', 'game/engine.ts', 'tests/mixed-bid-question.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full shared editor, fixed current lot, repairable bid drafts, raw preview/Ask, private answers and one exact live event guide are connected.', evidence: ['components/mixed-bid-fields.tsx', 'components/mixed-bid-promises.tsx', 'components/bid-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-mixed-bid-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and declare native bids. Strategic refinement/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-mixed-bid-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Snapshot/unknown meaning, exact threshold reduction, original declaration/invoice boundaries and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_MIXED_BIDS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Pure reduction, original native bid/payment/funding and controlled shared editing/guide cases; broader combinations and final deployed acceptance remain open.', evidence: ['tests/fixture-truth-mixed-bid.ts', 'tests/truth-mixed-bid-runtime.test.ts', 'tests/truth-mixed-bid-funding.test.ts', 'tests/truth-mixed-bid-controls.test.tsx'] },
],
},
{
id: 'truthtrance-bid',
title: 'Truthtrance: bidding commitments',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind a minimum bid in an ordinary lot, the remaining ordinary Bidding phase, or a Richese Once Around or Silent lot, preserving native funding and order.',
steps: [
'Choose Bind a bid in this ordinary lot, another remaining eligible bidder and a positive whole spice minimum. The turn and lot are fixed. Registered native Basic and Advanced tables without optional modules are supported first; broader compositions remain unfinished.',
'In a quiet Richese Once Around auction, choose Bind a bid in this Once Around lot to bind the respondent’s one remaining bid or pass. A waiting Richese owner cannot promise Yes until an actual bid ensures an owner turn. Current hand space, funds and pledged aid remain required; an opposing raise can release an impossible Yes. Normal special auctions remain outside this prototype.',
'Alternatively choose Bind a bid this Bidding phase. Yes requires one qualifying accepted ordinary bid after the answer and before Bidding closes; No forbids qualifying later ordinary bids across lots. Earlier bids do not count, and a bid does not promise a win.',
'In a Silent Richese lot the question binds the respondent’s single sealed submission. Zero declines; a positive bid remains hidden until the native simultaneous reveal. Available answers use that bidder’s own funding, without using opponents’ concealed amounts.',
'The phase-wide guide may wait for a later lot only when the existing funded sale, prepared next card and post-sale space and funds support it. An unbid lot, hypothetical rival raise, cancelable unfunded overbid or Harkonnen bonus slot is not invented as a future opportunity. Before Bidding, current funding and available card count provide a provisional forecast; special auction preparation and combined future commitments remain limited.',
'Yes requires one new accepted bid at or above the minimum while possible. An earlier bid does not count. A pass or lower bid cannot rely on another player raising later. No forbids every later qualifying bid until this lot closes.',
'The declaration fulfills Yes even if another player later wins. If you win, the original winning invoice and Karama payment rules still apply. A promise creates no spice or free purchase. Current-highest, already-passed and full-hand players have no new opportunity for this structured question.',
'Available answers use current native funding, prepaid allied aid and a spendable Karama. Earlier shipment and movement obligations retain their funding. Unknown future purchases or rival income are not assumed. Several answers must remain jointly possible: Yes sets the required minimum and No can cap a later bid.',
'Your own voluntary spending cannot evade Yes. A completed opposing raise may make it impossible and release that answer; still-possible answers and No constraints remain. Closed lots finish No and cannot bind the next lot or turn.',
'Your persistent bid-promise panel waits for your actual active seat, then offers a legal bid or pass. It shows fulfilled and released status without timing out. Only the questioned player receives its feasible answers and private guide; the question and reply are public.',
'These current-lot and phase-wide protocols are provisional online compositions of the general current-turn Truthtrance rule. Native special auctions, optional modules, grouped phase-wide bidding commitments, broader force-revival commitments and complete-mode acceptance remain unfinished.',
],
related: ['card-truthtrance', 'bidding', 'truthtrance-shipment', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Current-lot and separate phase-wide minimum bids use native declarations, funded witnesses, joint Yes/No constraints and their own expiry. No new game-start gate.', evidence: ['game/bid-promises.ts', 'game/turn-bid-promises.ts', 'game/truthtrance.ts', 'game/engine.ts', 'tests/turn-bid-promises.test.ts', 'tests/truth-turn-bid-runtime.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Separate editors, public previews, target-only answers and persistent event-bound native guides keep winning payments separate.', evidence: ['components/bid-claim-fields.tsx', 'components/bid-promises.tsx', 'components/phase-bid-claim-fields.tsx', 'components/phase-bid-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-phase-bid-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four existing profiles use the projected feasible answer and ordinary guide. Minimal legal participation only; strategy and calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-bid-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'General FAQ authority, provisional current-lot meaning, physical declaration/payment distinction and remaining scope are explicit.', evidence: ['docs/TRUTHTRANCE_BID_PROMISES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original public H/A/E sources and actual callbacks cover Yes/No, payments, release, multiple original cards, stale ownership and earlier shipment funding. Broader rule/module, recovery and deployed acceptance remain required.', evidence: ['tests/fixture-truth-bid.ts', 'tests/truth-bid-runtime.test.ts', 'tests/truth-bid-controls.test.tsx'] },
],
},
{
id: 'truthtrance-mixed-movement',
title: 'Truthtrance: current facts and future ground moves',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine a fact at answer time with future physical ground moves, publishing the aggregate answer and preserving the original native movement obligations.',
steps: [
'Choose Combine current facts and future ground moves. Build full AND/OR groups with at least one current fact and one destination/minimum action. One logical budget spans nested fact groups and future conditions: sixteen leaves and depth four as software limits.',
'Current facts are evaluated when the respondent answers. Later spending, card disposal or other custody changes do not rewrite that historical fact. The question, whole answer and physical actions are public; individual fact answers and the reduced obligation are not published.',
'A definite answer must be guaranteed by the current facts and remaining owned movement. Unknown facts take the conservative case for that answer: Yes cannot rely on an unknown being true, and No cannot rely on it being false. If neither whole answer is currently supportable, the holder may ask differently or save the unanswered card.',
'A fact may already settle the aggregate answer, requiring no future move. Otherwise the remaining pure movement conditions use the original native search, funding, allowances, cards, responses and actual owner finish. No negates the entire mixed question.',
'Each movement condition needs one actual future physical group; smaller moves never add together. Prior moves, shipment and the concealed No-Field marker do not fulfill it. Owned Hajr still follows its original timing, even when the question asked about holding that same physical Hajr before it was played.',
'Persistent own raw question, aggregate status, recorded movement maxima and one exact native guide connect to real actions and all four minimal policies. Pure and mixed panels share the guide. Stale, foreign or modified nested packets reject.',
'Native Basic/Advanced phases0–5 retain the existing unused movement opportunity and preparation scope. The fact/action composition is provisional application of general Truthtrance authority; other action families, optional modules and complete-mode acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-fact-expression', 'truthtrance-movement-expression', 'truthtrance-movement', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Strict generic mixed parser/compiler freezes facts conservatively and binds only the resulting native movement obligation; immediate aggregate answers create none.', evidence: ['game/mixed-action-question.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full mixed editor with reused fact controls, guarded raw preview/Ask, private answers, aggregate panel and shared exact guide.', evidence: ['components/mixed-action-fields.tsx', 'components/mixed-movement-fields.tsx', 'components/mixed-movement-promises.tsx', 'components/movement-expression-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer the aggregate and follow native movement guides. Strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-mixed-movement-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Snapshot, conservative unknown semantics, original physical obligations and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_MIXED_MOVEMENT.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused generic, controlled editor/guide and original native known/unknown/Hajr/Charity cases. Broader composition and final browser/deployed acceptance remain open.', evidence: ['tests/mixed-action-question.test.ts', 'tests/fixture-truth-mixed-movement.ts', 'tests/truth-mixed-movement-runtime.test.ts', 'tests/truth-mixed-movement-controls.test.tsx'] },
],
},
{
id: 'truthtrance-movement-expression',
title: 'Truthtrance: combined ground moves',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine future physical ground moves with full AND/OR while preserving whole No, actual entitlements and maximum qualifying group sizes.',
steps: [
'Choose Combine ground moves with AND/OR and add printed Arrakis destination/minimum conditions. AND requires all children; OR at least one. The editor supports sixteen conditions and depth four as software input limits.',
'Each condition asks for one future qualifying physical ground group after this answer and before your Movement opportunity ends. Smaller moves never add together. Repeated same-destination conditions share the largest actual future group; earlier moves are excluded.',
'No negates the whole expression. No to moving to A AND B may permit either first move while forbidding completing both. No to A OR B forbids either qualifying move. A Yes becomes fulfilled only when actual committed moves make the full expression true.',
'The native owned-action search retains all alternatives after real progress. Several required moves need actual remaining entitlements or owned Hajr/Ornithopter preparations; the question grants none. Native range, storms, physical counters, elite allocations, shipment preparation and opponent responses remain authoritative.',
'Only completed ordinary ground movement records progress. Shipment, concealed No-Field markers, HMS relocation and Ambassador relocation do not fulfill a condition. Physical advisors and elites retain their native physical counting. A pending range response records no movement until its real commitment.',
'Persistent own maximum progress, private feasible answers and an exact event/phase guide connect to real native actions and all four minimal profiles. The guide may prepare cards, forces or payments at their original windows. Another legal OR route may be chosen manually. Wire force records retain exact native contents.',
'Supported native Basic/Advanced phases0–5 retain their existing current-turn opportunity and owned preparation scope. Finishing movement cannot evade Yes; No closes at the actual owner opportunity end. Current-fact/cross-family expressions, optional modules and complete-mode acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-movement', 'truthtrance-shipment', 'truthtrance-revival-expression', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Strict whole-tree parsing, immutable maximum progress and joint native scalar/expression reachability preserve owned multi-move entitlements and whole No.', evidence: ['game/movement-expression-promises.ts', 'game/movement-promise-search.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Full expression editor, guarded preview/Ask, target-only answers, own progress and exact phase/event guide are connected.', evidence: ['components/movement-expression-fields.tsx', 'components/movement-expression-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and follow owned native movement/preparation guides. Strategic initiation/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-movement-expression-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Source composition, physical event meaning, opportunity/deadline, preparation and remaining gates are explicit.', evidence: ['docs/TRUTHTRANCE_MOVEMENT_EXPRESSIONS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused pure/search, controlled editor/guide and original Basic/Advanced/Hajr/Charity/Fremen cases. Wider composition and browser/deployed acceptance remain open.', evidence: ['tests/movement-expression-promises.test.ts', 'tests/fixture-truth-movement-expression.ts', 'tests/truth-movement-expression-runtime.test.ts', 'tests/truth-movement-expression-controls.test.tsx'] },
],
},
{
id: 'truthtrance-movement',
title: 'Truthtrance: ground-movement promises',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Bind one future qualifying physical ground movement before a supported Basic or Advanced respondent with declared native families finishes their current-round turn.',
steps: [
'Choose Bind ground movement this turn, a printed territory, optionally one of its printed sectors, and a minimum of one to twenty physical forces. Basic and Advanced with declared native families support clean phases0–4 before Movement. During Movement ask an active player before or after shipment, or a still-unused waiting respondent. Finish pending decisions first. Optional modules, later rounds and wider owned preparations remain unfinished.',
'Yes requires one qualifying ground movement from now until that player’s Shipment and Movement turn ends, while possible. Smaller groups do not add together and earlier moves do not count. Shipment, HMS relocation and Ambassador relocation do not fulfill this statement; a concealed No-Field marker itself is not a physical on-board force counter.',
'A nonmatching move leaves Yes pending when an owned later route remains. One matching physical commitment fulfills it before card disposal and later Intrusion, Ambassador or Terror effects. You are promising the move, not survival afterward. No forbids every later matching move, including Hajr and both Ornithopter groups, until the actual turn closes.',
'Ordinary reserve shipment may prepare or reinforce a later ground group using its actual cost, native allocation and pledged payment split. Shipment itself neither fulfills movement Yes nor violates movement No. Joint guidance honors a required shipment before End; an already declared reserve or native Guild transport keeps its exact source, destination and funding while responses finish.',
'Waiting answers use current board/resources without assuming foreign income, movement, cooperation or discarded cards. Another player cannot fulfill or close your promise by moving or ending. Ordinary guidance appears on your actual turn; your already-paid Box choice can finish now. Deferred gifts/accompaniment cannot voluntarily spend the last route before another player responds.',
'Earlier classic answers include owned Charity and ordinary Revival, reopen readiness when needed, and reserve a current winning auction invoice using cash or a held Karama. Only current preparation, Ready, bid-pass or owned payment appears before Movement. Owned fixed CHOAM opening income uses its allowed native settlement while the actual counter stays live; a canceled current-turn receipt cannot be credited again. Unknown purchases and foreign future income are not assumed. Forced Storm losses can release impossibility; old movement allowances reset at actual phase entry. A separate held Karama may prepare Guild shipment rates. Native Once Around and owned Silent bids reserve exact funding; a submitted ally locks its full pledge until reveal. Current native guidance passes or submits zero with the original event. A paid sale is not charged again, and foreign invoice outcomes precede release.',
'Private feasible answers and the next owned step use actual movement legality, typed groups, held Hajr, both Ornithopter modes and original cohorts, current city access, held native Kulon, physical Ghola force returns and owned Box recovery. Before paying the two-spice Box fee, only a known card still in discard supplies a route; unknown future draws/gifts are not invented. Native relocation and wider preparation remain unfinished.',
'Ghola returns up to five eligible forces to reserves using the physical card and current typed allowance, without using normal revival slots. It does not fulfill ground movement: an unused affordable shipment and later matching move remain necessary. A known spent Ghola can be recovered and replayed through Box. Possible Tleilaxu income remains conditional and supplies no forecast cash.',
'A paid Box search retains its full private choice and original event. A guided choice preserves Yes; an incompatible selection rejects before shuffle and keeps that paid search available without another fee. No-only promises retain ordinary selection before movement can end. The existing provisional atomic full-hand exchange remains.',
'Voluntary actions cannot erase the last required route. Native counter responses finish before impossibility is decided. An opposing loss releases only incompatible answers, retaining No constraints and still-possible Yes answers in accepted order. This owned-route and release priority is a provisional software composition of the general current-turn rule, not a publisher movement-specific FAQ.',
'Native Advanced counts each physical elite once and retains Hajr’s immediate post-movement timing. Owned native advisor preparation and an eligible arrival fighter flip may prepare city range; the original Karama response still decides the real advantage. Matching/Fremen/conversion counters keep Yes pending until transfer or completed impossibility. A mandatory response pass cannot evade the obligation or deadlock release.',
'Richese may prepare the route with its actual one-force-price No-Field shipment, voluntary reserve-capped reveal, marker-only city positioning or a physical group carrying the token. Neither shipment nor reveal fulfills movement, and the concealed marker adds zero to the promised minimum. Native Karama, exact token events, no-repeat history and Hajr timing remain. Own optional revelation cannot evade the last completion; a completed opposing prevention may release it.',
'Persistent answer and next-step controls do not time out. All four profiles use the same private legal guidance. Broader Truthtrance questions, complete modes, full combinations and final acceptance remain unfinished.',
],
related: ['card-truthtrance', 'truthtrance-shipment', 'movement', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Declared native Advanced phase5 now reuses the typed route witness, immediate Hajr timing and owned advisor preparation/arrival flips with real counters. Owned No-Field shipment/reveal/marker movement uses native events, reserve caps and physical-only fulfillment. Basic declared native families join classic phases0–4. Exact Richese own/donor invoices, full submitted-ally Silent locks and already-paid boundaries prepare the owned turn without speculative bought cards/income. Fixed non-CHOAM preopening Charity and shared ordinary force-revival accounting preserve real native counter decisions. Mandatory Ix phase5 opening retains the future turn/reset. Held Ghola and known/paid Box recovery now add exact force returns and later shipment; normal revival allowances stay separate and native income is not precredited. Basic/Advanced native phases0–4 now include the owned CHOAM fixed allowed opening, retaining its real cancellation and receipt. Later rounds, wider preparations/modules remain unfinished.', evidence: ['game/native-promise-scope.ts', 'tests/fixture-truthtrance-choam-promises.ts', 'tests/truthtrance-choam-promises-engine.test.ts', 'tests/fixture-truthtrance-richese-promises.ts', 'tests/truthtrance-richese-promises-engine.test.ts', 'tests/fixture-truthtrance-native-family-promises.ts', 'tests/truthtrance-native-family-promises-engine.test.ts', 'game/ghola-force-preparation.ts', 'game/early-auction-funding.ts', 'game/movement-promises.ts', 'game/movement-promise-search.ts', 'game/movement-shipment-preparation.ts', 'game/movement-discard-knowledge.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Native No-Field preparation now has distinct persistent reveal/shipment/marker/mixed labels and actual reveal callbacks. Classic Advanced questions and persistent guidance now connect an actual legal movement callback; native advisor preparation has a named action. Physical Ghola force-return guidance now precedes actual reserve shipment and ground movement, with income/disposal controls retaining priority. Persistent busy-safe guidance includes current Charity, Revival, Ready, ordinary bid-pass/payment and event-bearing native Once Around pass/Silent zero. Foreign pending funding cannot force a speculative positive bid or expose future movement. Actual native pass/zero handlers preserve unread obligations. Existing waiting/card controls remain; browser/visual acceptance stays open.', evidence: ['tests/truth-movement-advanced-controls.test.tsx', 'components/movement-claim-fields.tsx', 'components/movement-promises.tsx', 'components/shipment-promises.tsx', 'components/truthtrance.tsx', 'components/nullentropy-box.tsx', 'components/game-table.tsx', 'tests/truth-movement-waiting-controls.test.tsx', 'tests/truth-movement-early-controls.test.tsx', 'tests/truth-movement-native-early-controls.test.tsx', 'tests/truth-movement-ghola-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four existing profiles use actual native Advanced Richese reveal/physical movement legally. All four existing profiles finish a genuine classic Advanced movement question legally without strategy changes. Eight earlier existing-profile held-Ghola/known-Box runs accept40 proposals plus24 separate native continuations. Physical return, exact paid recovery, unused shipment and qualifying ground move use the same private legal guidance. Earlier native funding paths remain. Minimal legal participation only; no strategy tuning or calibration.', evidence: ['game/bots.ts', 'tests/truth-movement-ghola-engine.test.ts', 'tests/truth-movement-native-early-engine.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'General FAQ authority, existential single-event meaning, explicit software composition, source selection and unfinished scope are documented.', evidence: ['docs/TRUTHTRANCE_MOVEMENT_PROMISES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: '25 October native No-Field/Ixian:24 files163/163 pass; two fixture-only lint repairs then pass3 files15/15 consumers, types/lint/build and six native control/GameTable SSR journeys. Hashes retain all application/other files. Original Richese Basic24/Advanced27 and Ixian43 source actions earn cards, payments and typed groups. Controlled cap/card/force/earlier-clock boundaries stay labelled. Earlier classic Advanced:26 files238/238, types/lint/build and four actual-control/GameTable SSR journeys, including a real guidance callback, pass. Genuine23/27-action Atreides/Fremen sources earn original setup/cards, paid/free shipment and actual Karama auction. BG acquisition/stance/reserve overlays are explicitly controlled. Hajr, typed counter outcomes, preparation/matching and city-range arrival flips pass. Earlier22-file182/182 Ghola evidence follows. Original held/Box prefixes42/104/75/151 use native setup, actual cache purchase, paid desert shipments, Storm casualties and settled bribes without Advanced city income. Eight minimal-profile runs accept40 proposals plus24 separate native continuations. Controlled acquisitions/losses/knowledge and counter-enabled income disclose staging. Ghola discard relevance and a fixture field collision are repaired before final frozen proof. Earlier counts remain historical. Full modes, wider preparations, browser/deployed and comprehensive assurance remain open.', evidence: ['tests/truth-movement-no-field-engine.test.ts', 'tests/truth-movement-no-field-controls.test.tsx', 'tests/fixture-truth-movement-no-field.ts', 'tests/truth-movement-ixian-engine.test.ts', 'tests/fixture-truth-movement-ixian.ts', 'tests/truth-movement-advanced-engine.test.ts', 'tests/truth-movement-advanced-controls.test.tsx', 'tests/fixture-truth-movement-advanced.ts', 'tests/truth-movement-waiting-engine.test.ts', 'tests/truth-movement-waiting-controls.test.tsx', 'tests/fixture-truth-movement-waiting.ts', 'tests/fixture-truth-movement-waiting-box.ts', 'tests/fixture-hajr-replay.ts', 'tests/truth-movement-early-engine.test.ts', 'tests/truth-movement-early-controls.test.tsx', 'tests/fixture-truth-movement-early.ts', 'tests/early-auction-funding.test.ts', 'tests/truth-movement-native-early-engine.test.ts', 'tests/truth-movement-native-early-controls.test.tsx', 'tests/fixture-truth-movement-native-early.ts', 'tests/fixture-truth-movement-ghola.ts', 'tests/truth-movement-ghola-engine.test.ts', 'tests/truth-movement-ghola-controls.test.tsx', 'tests/movement-discard-knowledge.test.ts', 'docs/TRUTHTRANCE_MOVEMENT_PROMISES.md'] },
],
},
{
id: 'truthtrance-shipment',
title: 'Truthtrance: shipment promises',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Bind this turn’s reserve shipment to a destination and physical minimum, including earlier Basic phases and players whose shipment turn is still ahead.',
steps: [
'Declare Truthtrance, select an eligible player and choose Bind a shipment from reserves. Bare Basic and Advanced rules with selected native faction decks allow the question during Storm through Revival as well as before that player’s shipment. During Shipment and Movement, base Basic and Advanced, including Guild, support an unused active or waiting turn. Finish pending decisions first. Choose a printed destination and minimum of one to twenty forces, or combine conditions using AND or OR; each describes the same shipment. Answering never grants an early shipment. Optional configurations keep their separate boundaries.',
'The pure shipment builder supports up to sixteen shipment conditions, nested AND/OR groups and four grouping levels. Add, wrap, change group meaning or remove a condition; a singleton group collapses without losing its remaining statement. These app input limits do not add printed rules. Every condition describes the same eventual reserve shipment; a current fact is unnecessary.',
'Yes requires the complete statement to match while possible: all AND conditions or at least one OR condition. No requires the whole statement to be false: at least one AND condition false, or every OR condition false. A smaller count, different destination, transport of forces already on the board or no shipment may satisfy No. Forces already in the destination and ground movement do not satisfy the question. Fremen reinforcements and Guild transport from southern reserves do count.',
'The target privately sees feasible answers based on the current board, owned resources and all earlier promises. Before Movement, include remaining owned Charity and normal Revival, the current winning invoice and unused outgoing Bidding refunds; incoming Bidding aid expires. Auction payment and shipping discounts need distinct physical Karamas. At shipment time, available Ghola, Karama and current pledged aid retain their normal rules. Unknown purchases, unresolved Storm outcomes, rival gifts and future income are not assumed.',
'Accepted whole answers are public and constrain the event together. A new answer reopens your Charity or Revival readiness when needed. Claim or revive before marking Ready if that is your last legal route; bids, gifts and paid revivals cannot spend it away. Honor a required shipment before ground movement or finishing. An unresolved foreign bid and its income responses finish before release. A completed opposing effect that makes compliance impossible releases it publicly.',
'Guild interception and rate or transport-permission responses finish before delivery. An opposing stop consumes the shipment without payment or arrival: answers matching no shipment fulfill and impossible answers release. You cannot stop your own shipment to evade your answer. An unaffordable canceled rate leaves shipment available; a retained owned discount or ordinary Fremen reinforcement may still provide a legal route.',
'Choose Mixed current fact and shipment for nested AND/OR groups of supported current facts and this-turn reserve shipments. Current facts freeze privately when answered: Yes OR a true current fact can allow skipping even after later losing that holding; No AND a false current fact can allow shipping even after that fact changes. Unknown is not false. Only the whole question and answer are public.',
'Your promises retain the original grouped question without exposing private compiled facts. Earlier phases show later-this-turn guidance and only an available current Charity or Revival preparation. Shipment actions wait for your actual phase5 turn and finished controls. The owned-route/readiness protocol is a provisional interpretation. All four profiles retain a minimal legal path; answers allowing a skip retain ordinary legal payment choices. Earlier modules, expansion shipment modes, other future actions and arbitrary prose enforcement remain unfinished.',
],
example:
'Yes to at least six forces to Carthag and No to at least eight there leaves a shipment of six or seven. Moving existing forces into Carthag does not fulfill either shipment event.',
related: ['card-truthtrance', 'movement', 'alliance-funding', 'privacy'],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Bare registered native Basic/Advanced phases0–4 with selected faction decks use explicit provisional current-board/owned-stage feasibility, auction liabilities, distinct card costs, expiring aid and readiness reopening. A prospective Karama auction payment must pass the native spending guard at the live Bidding source, including any Kull phase restriction. Wealthy Advanced BG Charity and owned CHOAM opening income retain their native counters; the detached witness uses their allowed fixed payment. A current-turn CHOAM receipt prevents repeated credit. Native Richese guidance passes or submits Silent zero with its exact event. Typed revival keeps the current one-elite limit. Voluntary bids/payments/closure preserve a route; foreign invoices await their actual outcome. Existing phase5 waiting/native Guild interception, permission and rates remain. Earlier modules and wider future actions remain unfinished.',
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Full pure shipment AND/OR authoring now exposes sixteen shipment leaves and nested groups without adding a current fact. Add/wrap/remove/collapse, whole-input validation and exact public submission retain target-private feasibility and original-question promise text. The separate Mixed builder remains.',
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles answer and preserve a legal route beyond their strategic shortlist. Wider promise strategy and strength calibration remain unfinished.',
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'Explains reserve-origin events, Yes/No alternatives, preparation, public release and current software boundaries.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Source programmes include genuine native CHOAM, Richese and Ecaz/Moritani Basic/Advanced early questions, own opening allowance/cancellation, real native auctions, reserve shipment and physical ground movement, alongside original classic early-phase questions, actual purchase/payment and delivery, wealthy BG charity/counter, typed revival, real forced Storm release, current preparation controls and four minimal legal profiles. Current frozen totals and limits are in the source contract/current checkpoint; earlier persistence/privacy evidence remains historical. Full Truthtrance, modes, assurance and deployed acceptance remain open.',
evidence: ['game/native-promise-scope.ts', 'tests/fixture-truthtrance-choam-promises.ts', 'tests/truthtrance-choam-promises-engine.test.ts', 'tests/fixture-truthtrance-richese-promises.ts', 'tests/truthtrance-richese-promises-engine.test.ts', 'tests/fixture-truthtrance-native-family-promises.ts', 'tests/truthtrance-native-family-promises-engine.test.ts',
'tests/shipment-promises.test.ts',
'tests/shipment-promises-bots.test.ts',
'tests/shipment-promises-recovery.test.ts',
'tests/compound-shipment-promises.test.ts',
'game/shipment-expression-input.ts', 'components/shipment-expression-fields.tsx', 'components/truth-shipment-question.tsx',
'tests/truth-shipment-expression-controls.test.ts', 'tests/truth-shipment-expression-engine.test.ts', 'tests/fixture-truth-shipment-expression.ts',
'tests/compound-shipment-bots.test.ts',
'tests/compound-shipment-controls.test.tsx',
'tests/compound-shipment-recovery.test.ts',
'tests/mixed-shipment-question.test.ts',
'tests/mixed-shipment-engine.test.ts',
'tests/truthtrance-early-shipment-engine.test.ts',
'tests/truthtrance-early-shipment-controls.test.tsx',
'tests/fixture-truthtrance-early-shipment.ts',
'tests/fixture-truthtrance-early-advanced-shipment.ts',
'tests/truthtrance-early-advanced-shipment-engine.test.ts',
'tests/fixture-truthtrance-advanced-shipment-preparation.ts',
'tests/truthtrance-advanced-shipment-preparation-engine.test.ts',
'components/shipment-promises.tsx',
'components/truthtrance.tsx',
'components/game-table.tsx',
'game/shipment-promises.ts',
'game/truthtrance.ts',
'tests/truthtrance-future-shipment.test.ts',
'tests/truthtrance-future-shipment-engine.test.ts',
'tests/fixture-truthtrance-future-shipment.ts',
'tests/truthtrance-guild-shipment.test.ts',
'tests/truthtrance-guild-shipment-engine.test.ts',
'tests/fixture-truthtrance-guild-shipment.ts',
'docs/TRUTHTRANCE_SHIPMENT_PROMISES.md',
],
},
],
},
{
id: 'truthtrance-plan-expression',
title: 'Truthtrance: grouped battle-plan questions',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Build a whole AND/OR battle-plan claim with multiple conditions and nested groups.',
steps: [
'Choose Bind a battle-plan choice during a live battle, then another combatant. Edit dial, support, weapon/defense slots, leader or hero, and Kwisatz conditions. Group with AND or OR, add siblings or nested groups, and review the complete public claim.',
'AND requires every branch; OR at least one. No requires the whole claim to be false, not every condition separately. Removing a condition preserves its siblings, and a singleton group collapses to its remaining condition.',
'The builder shares the existing app limits: eight children per group, sixteen total items including groups and four grouping levels. These are input limits. Invalid fields anywhere block Ask publicly, without inspecting the opponent’s private cards or plan.',
'The server supplies feasible answers and compliant preparations/plans. A definite answer discards the original Truthtrance once and constrains the actual plan while possible. Existing Voice, prescience, sealing, reveal and preparation rules remain; the question does not grant a new plan or timing permission.',
],
example: 'Yes to dial exactly zero AND an empty weapon slot AND an empty defense slot requires all three. No permits a legal plan that makes at least one of them false.',
related: ['card-truthtrance', 'battle', 'truthtrance-fact-expression', 'truthtrance-shipment'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Existing parser, whole-claim feasibility, binding and sealing remain authoritative, with their unchanged input limits shared by the editor.' },
{ area: 'Player controls', status: 'Partial', detail: 'Full bounded add/wrap/remove/collapse/group switching, whole-leaf validation, readable preview and exact guarded public submission are integrated.' },
{ area: 'AI', status: 'Partial', detail: 'All four minimal profiles keep their entitled feasible-answer and compliant-plan paths. Strategic question selection and calibration remain deferred.' },
{ area: 'Documentation', status: 'Partial', detail: 'Explains whole Yes/No meaning, preserved timing/plan permissions and software limits separately from printed rules.' },
{ area: 'Verification', status: 'Partial', detail: 'Controlled authoring and genuine native battle question/answer/plan paths cover the form. Full combinations, browser/mobile/deployed and final assurance remain due.', evidence: [
'game/battle-promises.ts', 'game/battle-claim-expression.ts', 'components/battle-claim-expression-fields.tsx', 'components/truth-battle-plan-question.tsx',
'tests/truth-battle-plan-controls.test.ts', 'tests/fixture-truth-plan-expression.ts', 'tests/truth-plan-expression-engine.test.ts', 'docs/TRUTHTRANCE_NONBATTLE_READINESS_20260907.md',
] },
],
},
{
id: 'truthtrance-mixed-battle',
title: 'Truthtrance: current facts and this battle plan',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Combine answer-time facts with native current-battle plan conditions while keeping legal preparations, fixed choices and private aggregate meaning.',
steps: [
'Choose Combine current facts and this battle plan, another combatant, and full AND/OR groups containing both fact and plan conditions. Dial, spice support, weapon, defense, leader/hero and Kwisatz use keep their native meanings.',
'Current facts freeze at the actual answer. Holding a card or a particular spice amount then does not promise keeping it afterward. A real later payment or played card never creates a new factual answer.',
'Yes makes the complete expression true; No negates the whole expression. A definite Yes cannot rely on an unknown fact being true, and No cannot rely on it being false. If neither guaranteed completion is currently available, the unanswered card can be saved or asked differently.',
'A fact may already settle the aggregate, needing no plan commitment. Otherwise the remaining conditions use the original legal battle-plan search, earlier promises, Voice, Prescience, inspections, owned preparations and normal funding. Alternatives remain available; no fixed route is chosen by the answer.',
'An open obligation stays pending through previews and your own sealing. It fulfills at the actual native plan reveal before battle cleanup. Already submitted or revealed plans are fixed, so a truthful answer about that plan is immediately complete. A later native impossibility releases a binding answer.',
'Native controls can fill a compliant draft or complete the next owned preparation; Fill does not seal automatically. The original Seal action still checks the whole authoritative obligation. Raw question/aggregate status stays visible after the battle while reduced clauses and frozen facts stay private.',
'One raw logical budget counts fact and plan groups together: sixteen total clauses, at most eight children per group, and four grouping levels. Other mixed question families retain their existing limits. These are input limits rather than printed restrictions.',
'The current battle and territory are fixed by the question. Existing older battles lacking an identity receive one only in an actual accepted Ask transaction. Four minimal profiles use native answer and compliant plan/preparation feedback; full strategy and wider composition acceptance remain unfinished.',
],
related: ['card-truthtrance', phaseRuleId(6), 'truthtrance-mixed-revival', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Shared fact snapshot compiles only a needed native plan residual. Real reveal settles open aggregates before synchronous cleanup; fixed-plan/constant answers need no future binding.', evidence: ['game/mixed-battle-question.ts', 'game/mixed-action-question.ts', 'game/battle-promises.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Shared full editor with native raw budget, exact preview/Ask, private answers, persistent raw aggregate and guarded native preparation/Fill controls are connected.', evidence: ['components/mixed-action-fields.tsx', 'components/mixed-battle-fields.tsx', 'components/mixed-battle-promises.tsx', 'components/battle-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx', 'tests/truth-mixed-battle-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal profiles answer and prioritize the private native compliant fallback when mixed constraints are hidden. Strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/truth-mixed-battle-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Snapshot/native plan interval, input budgets, reveal settlement, older battle identity and remaining source/composition limits are explicit.', evidence: ['docs/TRUTHTRANCE_MIXED_BATTLE.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Pure parser/budget, original Basic battle/payment/Prescience and controlled native assistance cases; wider Advanced/faction/card preparation and final deployed acceptance remain open.', evidence: ['tests/mixed-battle-question.test.ts', 'tests/mixed-action-question.test.ts', 'tests/fixture-truth-mixed-battle.ts', 'tests/truth-mixed-battle-runtime.test.ts', 'tests/truth-mixed-battle-funding.test.ts', 'tests/truth-mixed-battle-controls.test.tsx'] },
],
},
{
id: 'truthtrance-charity',
title: 'Truthtrance: Charity commitment',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Ask whether another player will claim Charity after answering during this turn’s upcoming or current Basic Charity phase.',
steps: [
'Yes requires an actual native Charity claim while possible; No forbids it until the original Charity phase ends. An answer in Charity reopens that player’s concurrent Ready; earlier Storm or Spice readiness stays intact, and an earlier claim does not count.',
'During Charity a private guide can suggest the exact claim or an ordinary bribe that makes the claim eligible. Before Charity, the forecast offers no executable future action. The bribe is paid now and received at Mentat; the claim uses the normal eligibility, payer and inflation rules.',
'A Yes remains binding while a supported claim or payment route exists. A voluntary action cannot abandon it; an external change that removes the supported route releases it. Independent future commitments may require an unknown answer until their joint planning is supported.',
'The supported quiet Basic Storm, Spice and Charity timing is provisional. Advanced ordered Charity, other preparations, pending windows and broader combinations remain unfinished.',
],
related: ['card-truthtrance', 'charity', 'truthtrance-bribe'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Native Basic upcoming/current claim, one-payment route, turn-bound Yes/No and event-bound live guide are connected; wider forecasts and combined obligations remain open.', evidence: ['game/charity-promises.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Question, recipient answers, persistent private guidance and claim/Ready reasons are connected; browser acceptance remains open.', evidence: ['components/truthtrance.tsx', 'components/truth-charity-promise.tsx', 'components/charity-claim.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Profiles use the private answer and native guided action; strategy and calibration are deferred.', evidence: ['game/bots.ts', 'tests/truth-charity-commitment-runtime.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The FAQ source, provisional timing and bounded preparation route are recorded.', evidence: ['docs/TRUTHTRANCE_CHARITY.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused native and rendered controls cover the Basic prototype; wider combinations and deployed acceptance remain open.', evidence: ['tests/charity-promises.test.ts', 'tests/truth-charity-commitment-runtime.test.ts', 'tests/truth-charity-commitment-controls.test.tsx', 'tests/truth-charity-early-runtime.test.ts', 'tests/truth-charity-early-controls.test.tsx'] },
],
},
{
id: 'card-truthtrance',
title: 'Truthtrance',
category: 'Cards',
coverage: 'Partial',
summary:
'Ask another player a public yes/no question. Verified facts, supported Charity, ordinary-bid, ordinary force-revival, named/grouped native revival, ordinary bribe-payment, current-Nexus alliance, shipment and ground-movement promises, current-battle plan and Traitor-declaration commitments, freeform answers and saving an unanswered card are supported; arbitrary promise enforcement is unfinished.',
steps: [
'Declare the card from your hand at any time after cards are dealt. Other players may declare a competing Truthtrance or pass; questions are then asked in storm order. The interrupted phase, response, or battle decision resumes afterward.',
'Ask a game-related yes/no question. Named-card, selected-traitor, currently unrevealed Face Dancer and current personal-spice questions are checked by the server. Face Dancer and ordinary Traitor holdings stay distinct. AND and OR combine facts; only the combined answer is published, with no extra inventory details or separate answer for each clause.',
'For current spice, choose Exactly, At least or At most and a nonnegative whole amount. This counts spice personally held when answering, excluding separately pledged aid and incoming payments. It does not ask whether a particular action is affordable or promise that the balance will stay unchanged. A true current-spice answer does not prevent later legal spending.',
'For a concealed No-Field, choose its current printed value0,3 or5, not the prospective force pool. A missing or already revealed marker answers No, including for0; a concealed5 with empty reserves still answers Yes to5. Only the respondent sees the expected aggregate before public reply. Neither question nor answer turns up the physical token or commits later use; current-force facts continue to exclude markers.',
'The questioned player answers publicly. A definite answer discards the card. If the answer cannot be known, the holder may ask a different question or save Truthtrance for later.',
'A saved definite answer resumes automatically: its public answer, binding promise and consumed card are recorded once, then the next queued question or interrupted action resumes. Private answer and preparation guidance is unavailable during this automatic recovery.',
'Freeform questions also accept public Yes, No, or I don’t know answers. Their truthfulness relies on the players. AI answers structured facts and battle-plan questions; it cannot yet interpret freeform questions.',
'An answer may bind actions or decisions during the current turn only. The answering player must do everything in their power to comply; if compliance later becomes impossible, the answer is no longer binding. Freeform promises are recorded in the table’s turn history. Arbitrary freeform enforcement and broader action commitments remain unfinished. Structured reserve-shipment promises include earlier bare Basic phases and unused active or waiting phase5 turns in base Basic/Advanced, including Guild; see the shipment promise guide. Ground-movement minima include earlier Basic phases with declared native families, owned Charity/ordinary revival preparation and exact normal/native auction funding, plus active or unused waiting phase5 turns before or after shipment. Yes binds a qualifying event while possible, and No remains binding through later Hajr/Ornithopter until actual turn end. See the separate ground-movement guide and its remaining preparation/timing boundaries.',
'After both plans reveal, a separate current-Traitor question binds an actual unsubmitted native voter to Reveal or decline. The declaration fulfills it before later Karama/betrayal prevention. Cunning cannot voluntarily return a matching card needed by a live Yes; completed declarations retain their native later custody rights. See the current-Traitor guide for scope.',
'An ordinary-bid question can bind one new qualifying bid in the current lot for a supported active or waiting bidder. Yes requires that declaration while possible; No forbids it to lot close. A bid need not win to fulfill Yes, but a winning bid still follows its original payment rules. See the current-lot guide for funding, expiry and unfinished configurations.',
'A current-Nexus alliance question binds actual final membership with a named partner at that Nexus close. Yes uses existing partnership or an actual invitation; offers alone do not form alliances. No may require a later break before Ready. Unknown can save the card until consent exists. Other players retain their original withdrawal/break rights. See the alliance-promise guide for its provisional interval and scope.',
'A bribe-payment question binds cumulative future ordinary spice paid to one named non-allied recipient during this turn. Only the real payer action counts; the recipient still spends its receipt at Mentat. Split payments add together, and earlier obligations retain their funding. See the ordinary-bribe guide for the funded prototype and unfinished preparations.',
'A mixed current-fact and ordinary-payment question freezes facts before later debits and keeps only the funded native payment obligation needed by the whole answer. The recipient still waits for its original Mentat opening; individual frozen clauses remain private. See the mixed payment guide for its provisional scope.',
'A mixed current-fact and ground-movement question freezes the fact at answer time and keeps only the native movement obligation needed for the whole answer. Later card disposal does not rewrite the fact, and unknown clauses require a guaranteed aggregate. See the mixed movement guide for its provisional scope.',
'A grouped ground-movement question combines future physical group minima with full AND/OR. One move must meet each leaf; smaller moves never add together. Actual owned entitlements can fulfill several leaves over several moves, while No negates the whole expression. See the combined movement guide for its provisional opportunity and scope.',
'A grouped ordinary-bribe question combines named future payment minima with full AND/OR. No negates the whole question; real payments rebuild legal funded alternatives, and next-opening recipient collection adds no new progress. See the combined bribe guide for its provisional interval and scope.',
'A grouped Revival question combines future ordinary force minima and named native leader/Kwisatz returns with full AND/OR. No negates the whole expression, not every leaf. Legal alternatives are rebuilt after actual returns without fixing one branch. See the grouped Revival guide for input limits, source and provisional scope.',
'A named leader-revival question binds an actual future personal native return before your Revival opportunity ends, including Kwisatz where eligible. Force/leader promises share costs and slots; prior/card/special/foreign-ghola returns do not count. See the named-leader guide for provisional scope and preparation.',
'An ordinary force-revival question binds cumulative future total, normal or elite returns in native Revival later this turn, from supported phases0–4. Earlier and special returns do not count. Yes retains the original costs and limits; No also applies across smaller requests. See the revival-promise guide for exact timing and unfinished compositions.',
'Battle-plan questions can bind dial values or ranges, named weapon/defense slots, a leader or either Cheap Hero, spice support and Kwisatz use. The complete grouped builder supports eight children per group, sixteen total conditions including groups and depth four. Add/wrap/remove/collapse retains the whole claim and validates every field. AND/OR combinations preserve legal alternatives. Only answers with a legal completion now or through available Ghola preparation are offered; a sealed plan fixes its answer. Previous battle commitments, Voice and prescience also apply. Private preparation guidance can play a required Ghola, then a compliant-plan example can fill the form for review before sealing.',
'Named conditions include Reinforcements and Harass slot occupancy without making either a weapon/defense category. In clean classic Homeworlds, a source-aware legal completion can choose the native fee needed for a promised dial; review and filling retain that exact allocation. Active preview, answers/history and server records use the actual combat location name, including native Worlds, rather than treating every battle as an Arrakis territory.',
'If a completed opposing power makes a battle answer impossible, it is publicly released. A pending Voice response resolves before that release. A player cannot voluntarily spend a promised battle card or give away necessary support spice to evade the answer. Feasibility includes available Ghola cards, eligible leader/Kwisatz or force revivals, and possible revival income. Each actual card can be spent only once. Other future card/power sequences and the full timing audit remain unfinished.',
'Holding both copies lets you declare one or both. Each question resolves separately, and each card is discarded only after its definite answer. Full timing and card-face audits remain pending.',
],
related: [
'battle',
'privacy',
'truthtrance-spice',
'truthtrance-forces',
'truthtrance-card-count',
'truthtrance-hand-inventory',
'truthtrance-fact-expression',
'truthtrance-plan-expression',
'truthtrance-shipment',
'truthtrance-movement',
'truthtrance-turn-actions',
'truthtrance-travel',
'truthtrance-movement-expression',
'truthtrance-mixed-movement',
'truthtrance-bid',
'truthtrance-charity',
'truthtrance-revival',
'truthtrance-leader-revival',
'truthtrance-revival-expression',
'truthtrance-bribe',
'truthtrance-bribe-expression',
'truthtrance-mixed-bribe',
'truthtrance-alliance',
'richese-no-field',
'card-reinforcements',
],
},
...FACTIONS.map(
(f): RuleTopic => ({
id: `faction-${f.id}`,
title: f.name,
category: 'Factions',
coverage:
f.expansion === 'base' || ['tleilaxu', 'ixians', 'ecaz'].includes(f.id)
? 'Partial'
: 'Planned',
summary: f.title,
steps: FACTION_RULES[f.id].basic,
related: [
'setup',
'battle',
`advanced-${f.id}`,
'faction-sheets',
...(f.id === 'richese' ? ['richese-cards', 'richese-no-field', 'richese-gift', 'richese-acquisition'] : []),
...(f.id === 'choam' ? ['choam-auditor', 'choam-worthless', 'choam-kull', 'nexus-choam-kull', 'choam-combat'] : []),
...(f.id === 'ecaz'
? ['ecaz-loyalty', 'ecaz-ambassadors', 'duke-vidal', 'implementation-checklist']
: []),
...(f.id === 'moritani'
? [
'moritani-terror',
'moritani-enemy',
'moritani-ally-retention',
'moritani-assassinate-leaders',
'duke-vidal',
]
: []),
],
}),
),
...Object.entries(FACTION_RULES).map(
([id, rules]): RuleTopic => ({
id: `advanced-${id}`,
title: `${FACTIONS.find((f) => f.id === id)!.name}: advanced powers`,
category: 'Advanced & expansions',
coverage: [
'atreides',
'harkonnen',
'fremen',
'guild',
'emperor',
'tleilaxu',
'ixians',
'ecaz',
].includes(id)
? 'Partial'
: 'Planned',
summary:
'Advanced faction rules. The six classic factions can use the unfinished Advanced preview; complete rules compliance remains under verification.',
steps: rules.advanced,
related: [`faction-${id}`, 'advanced-combat', ...(id === 'ecaz' ? ['ecaz-loyalty'] : [])],
}),
),
{
id: 'duke-vidal',
title: 'Duke Prad Vidal: shared leader',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'A separate Ecaz leader disc of strength six, with changing control and no Traitor Card.',
steps: [
'Duke Vidal is separate from both factions’ five ordinary leaders. His Ecaz identity does not mean Ecaz currently controls him. Inspect the shared disc to see its current controller, whether it is set aside, or whether it is in the Tanks.',
'At the end of Shipping and Movement, Moritani gains Vidal if it faces battles in at least two strongholds, excluding battles involving Ecaz, and Vidal is not in the Tanks. The printed rule takes him from the current controller. Moritani has him for one battle; it may acquire him again on a later turn by meeting the condition again. At turn end, set him aside unless he is in the Tanks or captured.',
'Karama can prevent Moritani from acquiring Vidal. That cancellation does not remove him once Moritani already controls him.',
'Ecaz may acquire Vidal through a triggered Ambassador for itself or its current reciprocal ally outside Tanks/captured/ghola custody. Ordinary acquisition lasts until battle use, including unused control across turns; this shared tenure is provisional. A current recipient under a different temporary tenure may provisionally renew control through the Ambassador; Advanced Harkonnen same-holder cases remain guarded. The alternative forms a consensual alliance while both factions are unallied. Basic can then lend Duke optionally; the supplied Advanced physical p30 adds an available Duke to the new ally automatically and sets an unused disc aside at turn end.',
'Only Ecaz may revive Vidal, including with Ghola Treachery. Ecaz may revive him for five spice regardless of how many of its leaders are in the Tanks. Five spice is his special revival cost; his printed battle strength is six. Ecaz may begin ordinary leader revival when five leaders are in the Tanks, counting Vidal, even if it still holds another leader.',
'Ordinary Ecaz returns now use an explicit provisional native cohort. Five actual Tanked discs including Duke, or the existing unavailable-native-roster exception, opens it; completed native IDs preserve the remainder and later openings. A late first death can join a later cohort. Independent Duke deaths do not set or hold its ordinary number, and a real Duke resurrection preserves an already satisfied opening. Original native prices and one ordinary leader slot remain.',
'An unallied native Ecaz holder may spend its actual Ecaz Nexus at a quiet boundary in any phase to take Duke for the current turn, including original captured custody or the set-aside disc in Tanks. Finish committed interactions first. One battle or unused turn expiry sets him aside. Nexus liberation permanently clears captivity; it does not return him to a former captor. Actual Ecaz Ghola returns him alive and set aside before a separate Cunning play.',
'Original standalone, paired and mixed-family no-Skills E3 Nexus connects Advanced Harkonnen capture of the same shared disc, surviving just-used losing Duke, Keep/Execute and captive returns. Qualifying Moritani can take a living captive permanently, preserving native identity and death/use history; one battle or unused expiry never restores the captor. Takeover, capture priority and return destinations are provisional compositions.',
'Public Moritani qualification uses the public Duke snapshot, not secret execution status. Karama preserves existing capture if it cancels the grant. Allowed resolution publishes actual unavailability: an executed Duke stays dead in Ecaz Tanks, never revived by Moritani. This provisional public-effect policy does not promise permanent execution secrecy. Ecaz-only revival, Ambassador exclusions, Skills/Harkonnen and shared-training guards remain; complete modes are not certified.',
'After an actual surviving Duke win against Moritani, the distinct Advanced assassination advantage uses the victorious player’s printed-faction Traitor identities, never a Duke Traitor. Original native Ecaz/Duke6 now opens Sanya Ecaz4 while the same used shared disc stays alive and set aside.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Native Ecaz cohorts, independent Duke return and original Harkonnen captive takeover remain connected. Actual surviving shared-disc wins now bind the victorious player’s native assassination targets rather than requiring a disc in that native array. Ordinary Guild income settles before queued Ambassador acquisition. Native identity, Ecaz-only revival and custody/training guards remain.', evidence: ['game/ecaz-revival-cohort.ts', 'game/ecaz-duke-revival.ts', 'game/duke-vidal.ts', 'game/moritani-assassinate.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Actual390px original paid shipment, Guild permission and Ecaz acquisition lead to Duke6 victory, Sanya4 reveal and original private Mentat replacement. Earlier living captive reclamation, Karama, one-battle release and cohort11 to8/12 to10 controls remain bounded evidence; full journeys open.', evidence: ['components/game-table.tsx', 'components/duke-vidal.tsx', 'components/moritani-assassinate.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four owner profiles choose legal native targets after actual shared/foreign/Auditor wins or Continue when the played Auditor is the only held card. Ordinary Guild-paid Ambassador quote stays eligible. Earlier native capture/cohort policies remain; strategic calibration is deferred.', evidence: ['game/bots.ts', 'game/bot-arrival.ts', 'game/nexus-ecaz-duke-options.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Shared played-disc identity, victor printed-faction targets and no Duke Traitor are explicit. Original Ecaz-only Duke5/set-aside and Ambassador exclusions remain distinct from provisional takeover/return, public availability and native-cohort policies. No new numerical user ruling or full priority FAQ is claimed.', evidence: ['docs/ECAZ_REVIVAL_RULES.md', 'docs/DUKE_VIDAL_RULES.md', 'docs/MORITANI_ASSASSINATE_LEADERS.md', 'docs/DEFERRED_SHIPMENT_ARRIVAL.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Current affected15-file134/134, types/lint and25 original API/policy paths pass. Actual390px Guild-paid Ambassador acquisition, shared Duke6/Sanya4, foreign Guild5/Zoal3 and three Auditor choices/Continue have physical replacement proof. Earlier capture195/195 and cohort230/230 checkpoints remain historical, not full combinations or saved/deployed assurance.', evidence: ['tests/fixture-moritani-ecaz-duke-winner.ts', 'tests/moritani-ecaz-duke-winner.test.ts', 'tests/moritani-foreign-ghola-winner.test.ts', 'tests/moritani-auditor-winner.test.ts', 'tests/moritani-duke-captured-runtime.test.ts', 'tests/ecaz-revival-cohort-runtime.test.ts'] },
],
related: [
'faction-ecaz',
'faction-moritani',
'battle',
'moritani-assassinate-leaders',
'revival',
'captured-leaders',
'card-karama',
],
},
{
id: 'moritani-terror',
title: 'Moritani Terror: placement and entry',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Six hidden tokens threaten stronghold entrants. Native Atomics now composes the selected modules; complete Moritani rules remain unfinished.',
steps: [
'Placement and isolated entry decisions have controls for Robbery, Sabotage, Sneak Attack, Extortion, ordinary native-leader Assassination and bounded Atomics. You may instead leave a token hidden. Supported native Moritani starts use labelled previews; unsupported competing entry reactions remain guarded.',
'Begin with all six Terror tokens in your hidden supply. Once during Mentat Pause, you may either place one from supply or move one already placed to another eligible stronghold. There is no spice cost.',
'The destination must have no Terror token. A stronghold under storm is eligible, but the Hidden Mobile Stronghold and Homeworlds are excluded.',
'When another faction ships or moves into the marked stronghold, you may reveal its token and apply the effect to that entrant. Your ally does not trigger this opportunity. Bene Gesserit advisors do.',
'You may decline a normal trigger, leaving the token hidden where it is. Being present when a token is placed does not itself count as entering. A revealed token leaves the game, except when Extortion is subsequently recovered.',
'Richese No-Field placement can trigger Terror, including a zero No-Field. Revealing that No-Field later does not create another trigger. Replacing an army with Face Dancers does not trigger Terror either.',
'Terror tokens survive storms and Lasgun–Shield explosions. Their survival is separate from the fate of forces in the territory.',
'Karama can prevent a Terror placement or relocation. The Moritani cancellation table does not list a cancellation of a token’s reveal or effect. Enemy of My Enemy has its own alliance cancellation.',
'The relative order of Terror, ambassadors, Bene Gesserit reactions and other effects from the same arrival remains under review. These rules do not establish a priority order between those reactions.',
],
related: [
'faction-moritani',
'moritani-terror-effects',
'moritani-enemy',
'movement',
'mentat',
'advanced-advisors',
],
},
{
id: 'moritani-terror-effects',
title: 'Moritani: the six Terror effects',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Random assassination, territorial destruction, deferred income, theft, sabotage and reserve entry.',
steps: [
'Robbery, Sabotage, Sneak Attack, effective-control Assassination, Extortion and bounded Atomics have controls for supported entry reactions. After a Robbery draw, finish any required discard; after Sabotage, give one of your own cards or decline. Enemy of My Enemy has partial alliance controls. Complete Moritani games remain unfinished.',
'Assassination randomly kills one actual living effectively controlled disc: native, captive, ordinary foreign Ghola, shared Duke or optional Advanced Auditor, once each. Native discs controlled elsewhere are excluded; living used discs remain eligible. The provisional public-victim policy reveals the actual killed disc and pays native printed value, Zoal3 or Duke6. Empty revelation spends the token without victim, bounty or RNG and resumes arrival. No pool/size is projected or used to gate availability; Moritani cannot choose a victim. These exceptional/empty policies are product compositions, not a located publisher FAQ.',
'Atomics sends every faction’s forces in the territory to the Tanks and places public Aftermath. Native revelation retains original Guild invoices, Ambassador/Terror arrival order and selected modules. A caught No-Field provisionally materializes capped reserves before all physical losses. Later alliances now retain the original affected hand-limit targets under the explicit provisional interpretation in the Aftermath topic.',
'Extortion: set aside five spice from the bank for collection during Mentat Pause. After collection, recover this token unless one player pays you three spice in the storm-order opportunity. The Extortion topic explains the two separate payments.',
'Robbery: choose between taking half the entrant’s spice, rounded up, and drawing the top Treachery Card. If the draw exceeds your hand limit, choose a card to discard afterward; a full hand does not remove the draw option.',
'Sabotage: randomly draw and discard a Treachery Card from the entrant if possible. Then you may give that player a card of your choice from your own hand. Giving a card is optional. If the gift puts the recipient above their hand limit, the recipient provisionally chooses one held card to discard, including the gift; the original entry waits for that fresh discard and any supported Semuta reaction.',
'Sneak Attack: send up to five of your reserve forces into the triggered territory at no cost, respecting storm and occupancy restrictions. This particular entry is allowed even when Atomics Aftermath is present.',
'Before revealing Sneak Attack, inspect its private available maximum and any reason positive entry is blocked. You may keep it hidden. Revealing spends the token even if you then choose Send no forces. For a supported entry, select zero through the displayed maximum; forces enter the arrival’s territory and sector without consuming your ordinary shipment or movement turn. Zero remains available when positive entry is blocked. Aftermath’s printed exception allows this reserve entry even after Atomics resolves. A positive entry during Shipment and Movement is treated as an off-planet shipment for the Heighliners token, which accrues its once-per-turn income for its owner, and the committed entry finishes before Bene Gesserit may answer it with an Intrusion choice or a free spiritual-advisor shipment.',
'The random Assassination token is separate from the advanced Assassinate Leaders advantage. Neither ability supplies the other’s selection or timing rules.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Focused canonical effective-control pool reuses original custody; original token resolution kills/releases actual discs, pays printed bounty and resumes committed arrival. Empty pool spends without RNG; malformed physical identities reject before mutation. Other Terror effects retain their own scope.', evidence: ['game/moritani-terror-assassination.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Original actual390px Reveal Assassination resolves a captive Duke death6, displays Tanks inspection and resumes native Harkonnen movement. No selectable victim or projected pool; no overflow/browser errors.', evidence: ['components/game-table.tsx', 'components/duke-vidal.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four policies make accepted original decisions: Easy reveals, Medium/Hard/Brutal form an accepted Enemy of My Enemy alliance in the actual native position. Legal participation only; no calibrated strategy claim.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Effective-control exceptional pool, public victim and spent-empty behavior are labelled provisional and separate from Advanced battle-loss Assassinate Leaders. Native printed values and no foreign-Ghola Duke remain binding.', evidence: ['docs/MORITANI_ASSASSINATION_SNEAK.md', 'docs/MORITANI_TERROR_RULES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Affected22-file195/195 and types/lint/build pass. Pure custody/identity/value boundaries plus original capture-to-Terror runtime and real table death6 pass. Empty boundary resumes genuine Guild entry but stages prior native deaths. Full combinations/deployed acceptance open.', evidence: ['tests/moritani-terror-assassination.test.ts', 'tests/moritani-terror-assassination-runtime.test.ts', 'tests/moritani-force-leader.test.ts'] },
],
related: [
'moritani-terror',
'moritani-aftermath',
'moritani-extortion',
'moritani-assassinate-leaders',
],
},
{
id: 'moritani-aftermath',
title: 'Moritani Atomics and Aftermath',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Bounded Atomics reveals destroy the territory’s forces, prohibit future shipment there, and reduce hand limits.',
steps: [
'On a supported native Moritani table with original selected modules, revealing Atomics sends every faction’s forces in the triggered territory to the Tanks and places a public Atomics Aftermath marker there. Hidden tokens remain face down until revealed.',
'An original Moritani Nexus Cunning placement may put Atomics in a printed Arrakis desert. The later explosion and Aftermath retain that actual placement grant after the token is removed. This does not permit ordinary desert placement, Homeworld, HMS or Discovery targets.',
'A caught concealed No-Field provisionally reveals its reserve-capped native forces before the explosion sends them to Tanks. This composition is labelled provisional; it is not a located publisher clarification.',
'Aftermath permanently prohibits shipping forces into that territory, including Fremen reinforcements. The restriction is on shipment: it does not prohibit otherwise legal ordinary movement into the territory.',
'Sneak Attack expressly permits its reserve forces to enter despite Aftermath. Its storm and occupancy restrictions still apply.',
'Beginning on the activation turn, Moritani’s hand limit and its ally’s at activation are each reduced by one. If either hand exceeds its reduced limit on resolution, discard one random card per excess card. The public Aftermath notice identifies the affected players; their individual projected hand limits reflect the penalty.',
'Under the recommended persistent-target interpretation, later Nexus or Enemy of My Enemy alliances do not move the penalty: Moritani and the ally at detonation remain reduced; a later ally keeps its normal limit. An initially unallied detonation gains no ally target afterward. The notice labels this provisional, not a publisher ruling. Original stored targets migrate without replaying casualties or card discards. Genuine Basic/Advanced later-pact, special-alliance, migration and corruption boundaries pass112/112 in6 related files, with types/lint/build and actual390px controls verified. Broader Atomics compositions and complete modes remain open.',
'The Atomics Terror token and Family Atomics Treachery Card are separate components with different effects. Aftermath is not the destroyed Shield Wall. Complete Moritani-game acceptance remains open; supported expansion starts are unfinished previews.',
],
related: ['moritani-terror-effects', 'movement', 'card-atomics', 'bidding'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Native optional-module Atomics uses original typed casualties, capped No-Field reveal, fixed activation hand targets and suspended arrival continuation. Desert Aftermath retains the actual Cunning placement history. Complete combinations remain open.', evidence: ['game/moritani-atomics.ts', 'game/engine.ts', 'game/terror-location.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Original Reveal Atomics and public Aftermath controls explain the destructive effect, shipment ban, random overflow and provisional policies.', evidence: ['components/moritani-terror.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Minimal legal original Terror decisions and Sneak Attack use the original projected controls; strategy and difficulty calibration remain deferred.', evidence: ['game/bots.ts', 'tests/moritani-atomics-modules.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed Cunning placement and provisional concealed destruction/activation targets are explicit; preview and complete-mode gates stay separate.', evidence: ['docs/MORITANI_TERROR_RULES.md', 'docs/NEXUS_MORITANI_RUNTIME.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused original-action module and Cunning desert scenarios supplement the earlier native proof; source-bound owner verification is recorded in the linked contract. Comprehensive assurance and deployed acceptance remain required.', evidence: ['tests/moritani-atomics-modules.test.ts', 'tests/fixture-moritani-atomics-modules.ts', 'tests/nexus-moritani-atomics-runtime.test.ts', 'tests/fixture-nexus-moritani-atomics.ts', 'tests/moritani-atomics.test.ts'] },
],
},
{
id: 'moritani-extortion',
title: 'Moritani Extortion: collection and recovery',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Five deferred bank spice and a separate opportunity to prevent the token’s return.',
steps: [
'Revealing Extortion sets aside five spice from the bank in front of Moritani’s shield. Moritani collects it during Mentat Pause; it is not available to spend when the token is revealed.',
'For this table’s selected timing, Moritani’s normal Mentat Terror placement or relocation opportunity resolves first, including any Karama response. Only afterward does Moritani collect the five spice and offer the Extortion payment opportunity. A token recovered afterward cannot be placed again during that same Mentat Pause.',
'If Extortion is revealed during Mentat after placement has already finished, resolve that committed entry and its interruptions first. Then collect the bank award and offer payment before any player can end the turn.',
'After collection, each non-Moritani player in storm order may pay Moritani three spice or decline. Sapho may provisionally reorder only unanswered choices; earlier declines cannot repeat. A player without three spice cannot pay but may decline. The first payment permanently removes Extortion from play and ends the offers; it does not undo the bank award.',
'If every eligible player declines, rotate Extortion and return it face down to Moritani’s hidden supply for a future placement. Other revealed Terror tokens have no corresponding recovery provision.',
'These controls cover Extortion collection, payer ordering, the payment choice and native return/removal. Supported native Moritani starts remain labelled previews; complete-mode acceptance is unfinished.',
],
related: ['moritani-terror', 'moritani-terror-effects', 'mentat'],
},
{
id: 'moritani-enemy',
title: 'Moritani: Enemy of My Enemy',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Offer the entrant an alliance before revealing a would-trigger Terror token.',
steps: [
'Supported entry opportunities offer private Moritani controls followed by a public Karama response and, if allowed, an accept/refuse decision for the entrant. The entrant sees the alliance terms, not the hidden token’s name, face or Moritani’s private eligibility details. Moritani can start as an unfinished preview; rules and interactions remain incomplete.',
'When an eligible faction would trigger Terror, Moritani may offer that entrant an alliance before revealing the token. This offer cannot be made to Ecaz.',
'If accepted, Moritani and the entrant become allies immediately, ending any existing alliance either had. Return the unrevealed Terror token to Moritani’s supply.',
'Accepting the alliance does not immediately remove shared forces. In Advanced, the ending player’s own shared fighters go to Tanks at each Shipment and Movement end, including this formation turn, unless a normal exception applies. Basic retains the later-player deadline on the following turn. This does not change the offer’s formation timing or open unsupported entry combinations.',
'If the entrant refuses the offer, Moritani must reveal the token. Making an offer and receiving a refusal does not retain the ordinary option to decline the trigger.',
'This alliance opportunity comes from the faction ability; it does not wait for a Nexus. Karama can prevent the alliance forming, while Moritani may still reveal the token.',
'In the current controls, Karama is checked before the entrant replies. If canceled, the decision returns to Moritani: reveal the token or leave it hidden. The canceled offer cannot be offered again during this entry opportunity.',
'An offer is available only when the implementation can resolve the token if the entrant refuses. Unfinished effects or unsupported leader and entry interactions therefore block the offer upfront; the private reason is shown to Moritani. This is an implementation limit, not an extra printed alliance rule.',
'No token identity is revealed merely by making or accepting the offer.',
],
related: [
'faction-moritani',
'moritani-terror',
'spice-blow',
'card-karama',
],
},
// Source/implementation audit: docs/MORITANI_ALLY_RETENTION_RULES.md.
// GF9 Ecaz & Moritani p.6 supplies the ally choice; base p.14 supplies general
// Karama composition. The continuation order below describes this engine,
// not a dedicated publisher ruling on simultaneous postbattle effects.
{
id: 'moritani-ally-retention',
title: 'Moritani alliance: retain a battle card',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'A defeated Moritani ally may keep one eligible played Treachery Card when the battle has a winner.',
steps: [
'The choice belongs to the defeated ally. Moritani does not gain this benefit for its own losses, and no separate Moritani approval is required. Choose one of your played cards that you could have retained after winning, or decline the ability.',
'A single successful traitor call still produces a winner and can allow retention. Mutual traitor destruction and a resolved Lasgun–Shield explosion have no winner, so they provide no opportunity. Resolve the actual battle outcome before checking this condition.',
'Only eligible physical cards from your Battle Plan appear in the controls. Unplayed cards, opposing cards and leader discs cannot be chosen. Cheap Hero or Heroine must be discarded. Other mandatory-discard rules use the same test as winner cleanup, including whether Poison Tooth was actually used and whether a traitor decided the battle.',
'In the current sequence, the winner first completes any casualty choice and its own played-card cleanup. The defeated ally then declares one eligible card. That declaration opens the general Karama response against the Moritani alliance power before the card is finally retained; declining skips this response and discards the pending played cards.',
'If Karama cancels the power, discard all of the defeated ally’s pending played cards. If the table allows it, retain the declared card and discard the rest. Cards awaiting this cleanup remain reserved and cannot be spent through another power during the decision or response.',
'The played cards were already revealed in battle. The table can see the retention declaration; inspection and selection do not reveal unrelated cards from the defeated ally’s hand.',
'After retention resolves, this implementation continues pending CHOAM battle income, technology transfer, Harkonnen capture and Face Dancer opportunities. The retained card is settled before those continuations; the original battle is not recalculated. This order is the current implementation of the combined rules, not a separate expansion priority ruling.',
'The card choice, cancellation and cleanup have controls; Moritani starts remain unfinished previews while rules and interactions are completed.',
],
related: [
'faction-moritani',
'battle',
'card-karama',
'captured-leaders',
'privacy',
],
},
{
id: 'ecaz-special-karama',
title: 'Ecaz special Karama: unarmed leader-disc difference',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Declare the once-game unarmed power before reveal; virtual disc difference adds strength without extra physical losses.',
steps: [
'Native Advanced Ecaz may spend one available actual Karama before both plans reveal. Declare before sealing or after an unarmed own plan. Both weapon and defense slots must stay empty.',
'The owned panel does not inspect or quote an opposing hidden leader. Current battle event, physical card, once-use and legal unarmed completion are validated before cost.',
'Provisional formula: absolute printed/copied leader-disc difference adds virtual dial strength after reveal. It adds no counters, extra support or physical casualties; KH and skill modifiers are excluded. Traitor/explosion precedence remains native.',
'This is supplied PDF physical p30 Ecaz G with explicit first-version interpretation. Combined lead/custody and wider timing refinement do not certify complete Ecaz or reopen public gates.',
],
related: ['ecaz-occupy', 'special-karama', 'battle'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Normalized real-card/once-use declaration, unarmed commitment and authoritative virtual-strength resolution are connected.', evidence: ['game/ecaz-special-karama.ts', 'game/engine.ts', 'game/battle-resolution-quote.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Owned event-bound selector, declared status and provisional formula; live isolated React declaration clicked in Chromium.', evidence: ['components/ecaz-special-karama.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Minimum legal unarmed declaration and plan filtering use only its own quote; strategic refinement is deferred.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Supplied source and physical/virtual interpretation are explicit.', evidence: ['docs/ECAZ_OCCUPY_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'One direct changed-path smoke observes winner change, unarmed rejection, two physical losses and two support spice; types pass. No broad acceptance claimed.' },
],
},
{
id: 'moritani-special-karama',
title: 'Moritani special Karama: opponent played-card disposal',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'After losing, force kept/discarded subsets of the actual winner’s public played cards with one real Karama.',
steps: [
'Native Advanced Moritani with its once-use unspent gets an owned opportunity before optional winner-card disposal. Decline without cost or choose exact disjoint keep/discard subsets and one actual Karama.',
'Only public played identities still held by the winner are offered. Unchanged cards remain the winner’s choice; forced keeps are removed from that optional discard list.',
'Provisional precedence: compulsory named-card disposal finishes first, and force keep applies only to ordinary retainable cards. The supplied p35 Moritani F does not adjudicate this mandatory-disposal override.',
'Cost, once-use, source/event revalidation and fresh-discard continuation are native. Mixed aftermath and other timing refinement remain separate; no full Moritani certification is claimed.',
],
related: ['moritani-ally-retention', 'special-karama', 'battle'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Owned resolved-loss opportunity, exact subsets, real cost and one winner-cleanup continuation are connected.', evidence: ['game/moritani-special-karama.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Real card selector and per-public-card keep/discard controls; live isolated React choices submitted in Chromium.', evidence: ['components/moritani-special-karama.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Legal own-quote weapon/defense forced discard or decline; no unused opposing hand data.', evidence: ['game/moritani-special-karama-options.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Distinct special power, supplied source and provisional precedence are recorded.', evidence: ['docs/MORITANI_ALLY_RETENTION_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'One actual loss/cost/forced keep/discard/cleanup smoke and current types pass; no broad acceptance claimed.' },
],
},
{
id: 'moritani-assassinate-leaders',
title: 'Moritani: advanced Assassinate Leaders',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Supported native Advanced Moritani reveals a different opposing-faction Traitor Card after a loss and replaces it during Mentat Pause.',
steps: [
'After you lose a battle, this advanced advantage is available only if the opposing leader disc survived and no Traitor was called.',
'You may reveal a Traitor Card for that opposing faction, but it must name a different leader from the one you just fought. If that named leader is not in the Tanks, kill it and collect spice for its value.',
'An already-dead named leader remains a legal reveal, awarding no death or spice. During Mentat Pause, set the revealed card aside face up as a marker and draw a new Traitor Card. You can use this advantage only once against each faction in the game.',
'A Mentat replacement is an ordinary physical Traitor Card, including the original Ix Hero identity when present. After original owned initialization, retire the victim permanently. The replacement itself may later be legally exchanged, returned and drawn again; keep its old receipt unchanged and count one live card, not one per historical reference.',
'The authorized revised Advanced PDF, physical page35, requires that you have not revealed your Traitor Card normally this game. A normal own-card reveal therefore forfeits Assassinate Leaders for the rest of this game, across turns and opponents. Existing state preserves that forfeiture; Karama has no effect against the ability. This is the authorized source, not a new GF9 erratum.',
'The surviving played disc need not be native to its victorious controller. Captivity and Ghola control never rewrite native identity. A different printed-faction target may itself be captured or an ordinary foreign ghola. Pending choices show printed potential bounty without disclosing actual life/custody; the selected public reveal pays only if alive. Its capture/concealment ends, while ordinary ghola return custody remains. Revealing a selected concealed execution’s actual outcome is provisional. Auditor retains its explicit capture/Ghola exclusions; Duke has no Traitor and Cheap Hero is not a physical opposing disc.',
'Terror Assassination chooses a random leader when its token is triggered. It does not use this battle-loss condition, different-leader Traitor Card or once-per-faction allowance. Fresh supported plain/card Advanced Moritani starts initialize this printed advantage automatically; Basic never gains it. Standalone or paired Ecaz/Moritani/classic all14 Skills retains optional independent cards, original Tech3+ and Advanced Strongholds2+, with Advanced Harkonnen and mixed-family Skills guards. Played saves do not gain invented prior-call history.',
],
checklist: [
{area:'Implementation',status:'Partial',detail:'Canonical native target identity now admits valid captures and ordinary foreign Gholas. Uniform pending potential bounty keeps actual death/custody server-side until reveal; living targets die/pay once, dead targets yield zero. Selected capture/concealment clears, ordinary Ghola return custody and original physical retirement/replacement remain. Auditor/controller and mode guards stay.',evidence:['game/moritani-assassinate.ts','game/engine.ts']},
{area:'Player controls',status:'Partial',detail:'Persistent choices display printed potential bounty uniformly and submit the original event-bound reveal/decline. Actual outcome is public only after commitment; prior Hero/private replacement and public face-up history retain their controls.',evidence:['components/moritani-assassinate.tsx','components/nexus-traitors.tsx','components/game-table.tsx']},
{area:'AI',status:'Partial',detail:'All four profiles use only projected printed potential bounty and preserve original reveal/decline legality. Twelve current own-view capture/execution/Ghola proposals and continuations pass; strategy and calibration remain deferred.',evidence:['game/bots.ts','tests/moritani-assassinate-target.test.ts']},
{area:'Documentation',status:'Partial',detail:'Supplied native-target selection, selected concealed-outcome disclosure as provisional policy, retained Ghola loan and explicit controlled staging are recorded. Permanent victim markers and historical draws remain distinct. Wider modes and final assurance remain open.',evidence:['docs/MORITANI_ASSASSINATE_LEADERS.md','docs/RULE_DECISIONS.md']},
{area:'Verification',status:'Partial',detail:'Frozen14-file100/100, types/lint/build, six actual choice/gameplay/table-SSR journeys and twelve legal profile paths pass. Native47-action capture branches and a140-action paid-Ghola prefix plus controlled seven-action battle remain scoped; no complete-mode, broad custody/recovery or browser/deployed certificate.',evidence:['tests/moritani-assassinate-target.test.ts','tests/fixture-moritani-assassinate-target.ts','tests/fixture-moritani-assassinate-ghola-target.ts','tests/moritani-assassinate-quote.test.ts','tests/moritani-assassinate-controls.test.tsx','tests/moritani-hero-replacement.test.ts']},
],
related: [
'faction-moritani',
'moritani-terror-effects',
'battle',
'captured-leaders',
],
},
{
id: 'advanced-combat',
title: 'Advanced combat and elite forces',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Spice-supported combat, elite units, casualty selection and Kwisatz Haderach.',
steps: [
'The combat engine now distinguishes ordinary and elite tokens, accepts half-strength dials and seals spice support with the battle plan. The unfinished Advanced preview is available for the six classic factions while other Advanced rules are completed.',
'One spice supports one token at its full strength. Unsupported tokens fight at half strength. Fremen uses full strength without spice; Sardaukar counts as ordinary against Fremen.',
'After resolution, casualties must match both the dial and spice spent. One legal ordinary/elite allocation settles automatically; several legal allocations ask the winner to choose. The losing army is destroyed. Only a traitor winner avoids its committed spice payment.',
'Elite tokens are tracked in reserves, territories and tanks. Normal revival, Ghola and the Emperor’s extra allied revival share the limit of one elite revival per faction per turn. The Emperor’s own special Karama revival is separate and does not consume that limit.',
'Atreides privately tracks losses and can add KH to a sealed plan after seven battle losses. The accompanying leader or Cheap Hero gains two strength if it survives, and cannot turn traitor. KH can be used in only one territory per turn.',
'Before sealing plans, the table offers separate Karama responses for doubled elite strength and Fremen’s free spice support. Canceling elite strength makes those tokens fight as ordinary forces for this battle; it does not change their token type. Canceling free support makes Fremen pay spice or fight at half strength. Sardaukar already fights as ordinary against Fremen.',
'The KH cancellation window does not disclose Atreides’ activation status or selected plan. Canceling prevents both its bonus and its traitor protection in this battle.',
],
example:
'An Emperor army with one Sardaukar and five ordinary forces dials 3 and spends 1 spice. It may lose the supported Sardaukar and two unsupported ordinary forces, or one supported ordinary force and four unsupported ordinary forces.',
related: ['battle', 'revival', 'automatic-casualties', 'kwisatz-haderach'],
},
{
id: 'kwisatz-haderach',
title: 'Kwisatz Haderach: companion and loss track',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Inspect the Atreides battle companion, its rules and your private battle-loss progress.',
steps: [...KWISATZ_RULES],
related: ['faction-atreides', 'advanced-combat', 'revival', 'card-ghola', 'card-karama'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Existing activation, battle inclusion and revival remain authoritative. The original component face and private loss track connect to inspection; combined-module and final physical-component verification remain open.', evidence: ['game/kwisatz-display.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Private Atreides status and battle composition, authorized full-plan inspection, public revealed plans and the reference share an enlarged component inspector.', evidence: ['components/kwisatz-inspector.tsx', 'components/game-table.tsx', 'components/battle-component-inspection.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing legal battle and revival participation is unchanged. Strength tuning remains deferred until all non-AI features are complete.', evidence: ['game/bots.ts', 'tests/kwisatz.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Internal guidance explains activation, territory limits, conditional strength, protection, death and separate revival. Private progress is never inferred from a public plan.', evidence: ['game/kwisatz-display.ts', 'docs/KWISATZ_INSPECTION.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused checks cover private versus public views, sealed/revealed plan inspection, JSON restoration, availability labels and the separate companion asset. Full Advanced and combination acceptance remains open.', evidence: ['tests/kwisatz.test.ts', 'tests/kwisatz-inspection.test.tsx'] },
],
},
{
id: 'advanced-storm-spice',
title: 'Advanced storms and double spice blow',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Post-first-turn Storm Deck in every Advanced roster, native Fremen forecasts, two spice piles and worm responses.',
steps: [
'Advanced normally uses these phase rules, not an extra source profile. The adopted unofficial revision changes later Storm determination; it is not a publisher clarification or complete-mode certification. The six classic factions can start the unfinished Advanced preview while remaining powers are completed.',
'Resolve blow A, its worms, Harvester window, Nexus and rides, then do the same for blow B. Each pile uses its own previous discard. First-turn worms are set aside and shuffled back only after both blows finish.',
'Keep the first storm’s two secret nearby-player dials, each zero through twenty. Every later newly opened Advanced Storm draws a random card from one through six, including without Fremen. The last revealed face is eligible again next time. A saved current dial or card opening finishes as recorded; returning to the table never rerolls it.',
'After the first storm, native Fremen privately learns the actual card for the next turn. Canceling foresight hides that card from Fremen without changing its eventual distance. Without Fremen, nobody gets a forecast or a foresight response. Weather Control may replace a revealed distance before movement without changing the recorded card face.',
'Fremen storm losses are half the exposed group, rounded up. Choose ordinary and Fedaykin casualties when more than one combination is possible. A legal reserve shipment into storm applies this loss only to the arriving group.',
'Fremen may place additional worms from a spice blow in a sand territory. Canceling this placement prevents further additional-worm placements for the rest of the turn. Ordinary worm appearances and their Nexus still resolve.',
'Fremen worm survival and optional allied protection have separate responses before casualties. Canceling Fremen survival destroys the Fremen forces at that worm’s location and removes that ride; it does not cancel an allowed protection of allied forces.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'New post-first Advanced Storm openings use the canonical six-card source in every roster; first dials, native foresight and recorded current openings retain their own protocol. Wider Advanced interactions remain incomplete.', evidence: ['game/engine.ts', 'game/storm-cards.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Controls follow the current recorded dial or card opening. Public card inspection does not grant a private forecast; pending responses keep priority.', evidence: ['components/game-table.tsx', 'components/storm-cards.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Legal Storm participation follows the projected opening, including recorded dials and no-Fremen cards. Strategy calibration and full-mode acceptance remain separate.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Internal guidance distinguishes the authorized unofficial Advanced default, unchanged Basic rules, first dials, native forecasts and saved continuation.', evidence: ['docs/RULE_DECISIONS.md', 'docs/BASE_ADVANCED_READINESS_20260907.md', 'docs/STORM_CARD_INSPECTION.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused native and authenticated SQLite checks cover fresh no-Fremen cards, first dials, a genuinely captured prior Advanced dial opening, forecast privacy and unchanged Basic continuation. Actual phone inspection and confirmation continued a saved no-Fremen card opening; broader Advanced and deployment acceptance remain open.', evidence: ['tests/advanced-source-engine.test.ts', 'tests/advanced-source-recovery.test.ts', 'tests/advanced-source-controls.test.tsx', 'tests/bot-advanced-source.test.ts', 'docs/STORM_CARD_INSPECTION.md'] },
],
example:
'Five Fremen forces caught in storm lose three tokens. If the group includes two Fedaykin, Fremen can keep both by losing three ordinary tokens.',
related: [
'storm',
'spice-blow',
'advanced-fremen',
'card-karama',
'card-weather',
'card-harvester',
],
},
{
id: 'advanced-revival-order',
title: 'Advanced Revival: player order',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Take native Revival choices from the First Player counterclockwise, then explicitly finish your turn.',
steps: [
'A newly opened Advanced Revival follows the adopted revised rules: the First Player acts first, then the remaining players counterclockwise. The panel names the current player, remaining turns and completed turns.',
'During your turn, choose ordinary forces, your eligible leader or Kwisatz Haderach, and any native leader negotiation. This preview groups native force and leader choices into one opportunity; the source explicitly orders Force Revival and describes leader returns in addition.',
'Tleilaxu can answer another player’s request, grant a larger limit or offer an ally discount outside its own turn. Fremen can grant allied free revival. Emperor can fund its ally’s extra forces during that ally’s opportunity. Finish every accepted return and its required responses before ending the turn.',
'Choose Finish Revival turn when done. An unanswered leader request is withdrawn by this explicit finish. Completed native turns stay finished. Card effects, Nexus cards, special Karama and their responses keep their separate timing; taking part in a response does not consume your own turn.',
'Basic retains concurrent readiness. An already-opened older Advanced Revival finishes its saved readiness timing; the next new Advanced Revival uses player order. This does not redeal or restart a game.',
'Sapho may change an unfinished Revival position first or last. A started current player finishes first under visibly provisional queued timing. Native requests, allowances and completed turns remain; only the remaining queue changes. Full Advanced games, optional combinations and final multiplayer/deployed acceptance remain open.',
],
checklist: [
{area:'Implementation',status:'Partial',detail:'Fresh Advanced Revival has one current native opportunity, explicit completion and retained response ownership. Leader grouping is an explicit composition; Basic and unstamped current phases retain prior timing.',evidence:['game/revival-order.ts','game/engine.ts']},
{area:'Player controls',status:'Partial',detail:'Persistent current/remaining/completed order, guarded Finish and native-return/commerce availability use the projected opportunity.',evidence:['components/revival-turn.tsx','components/revival-commerce.tsx','components/game-table.tsx']},
{area:'AI',status:'Partial',detail:'Minimal policies wait for native self returns and Finish while retaining authorized responder and card actions. Strategy and calibration remain deferred.',evidence:['game/bots.ts']},
{area:'Documentation',status:'Partial',detail:'Supplied Advanced physical9/printed7 authority, explicit leader composition and fresh-phase cutover are recorded.',evidence:['docs/ADVANCED_REVIVAL_ORDER.md','docs/RULE_DECISIONS.md']},
{area:'Verification',status:'Partial',detail:'Focused helper, played native order/return and guarded control cases cover the changed path. Full-mode, browser/mobile, recovery and deployed acceptance remain due.',evidence:['tests/revival-order.test.ts','tests/advanced-revival-order-engine.test.ts','tests/advanced-revival-order-controls.test.tsx','tests/fixture-advanced-revival-order.ts']},
],
related: ['advanced-storm-spice','tleilaxu-revival','choam-revival','juice-of-sapho'],
},
{
id: 'advanced-allied-separation',
title: 'Advanced alliances: ending shared occupation',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Each ending player loses its own shared fighters; advisor coexistence, Polar Sink and native Ecaz coexistence are exempt.',
steps: [
'Under the adopted unofficial Advanced revision, finish each player’s Shipment and Movement separately. Your own fighters still sharing a territory with your ally go to Tanks when your turn ends. Your ally’s fighters stay; its later turn does not postpone your loss. An alliance formed this turn has no Advanced grace period.',
'Polar Sink is exempt. If either allied group is Bene Gesserit advisors, coexistence sends neither group to Tanks. Bene Gesserit fighters have no advisor exemption. Native Ecaz peaceful coexistence keeps its own conditions, including applicable Karama effects.',
'Before an ordinary finish, the table warns which public territories would lose your forces. It does not reveal force amounts or concealed No-Field values. Finish movement uses the existing action, without another loss confirmation. If no legal escape is available, you may still finish and accept the mandatory consequence.',
'A concealed No-Field counts as one presence, including0. If its actual separation deadline is due, provisional destructive timing reveals it, places only available reserves, then sends your actual shared forces to Tanks. Your ally stays. A marker elsewhere, a not-yet-due Basic turn and existing exemptions retain concealment. The warning states that a marker is affected without exposing its value or quantity.',
'Complete any pending shipment, movement, arrival or response before ordinary finish controls become available. Extra-move and deferred-turn endings use the same separation rule; they do not replay the arrival or charge shipment again.',
'An ordinary physical reserve shipment may enter an allied territory before your movement on your own unused turn. Ship, then move out; stronghold capacity and storm still apply. The ending consequence covers your entire shared group, not only new visitors. No-Fields and optional Homeworld/mobile transport keep their separate legality.',
'Basic still uses its older later-player deadline and formation-turn exemption, plus its visibly provisional new-visitor consequence. Homeworlds keep their native allied-entry restrictions. The rule grants no extra shipment, movement or alliance formation window; completed turns are not reevaluated.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'A shared ordinary reserve-entry quote connects native preflight and commit. Canonical separation distinguishes Basic from Advanced timing and exceptions; native ending-group custody removes all Advanced shared forces. Due concealed markers use provisional reserve-capped revelation instead of blocking Finish.', evidence: ['game/allied-separation.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Pre-shipment notice explains the mode-specific consequence; own clean-turn warnings in both modes contain public loss territories and optional marker presence only. Mandatory loss adds no confirmation and pending-control locks retain priority.', evidence: ['components/game-table.tsx', 'components/advanced-ally-separation.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four legal policies use projected movement/ending availability. Native departure takes priority, without retaining a doomed city sentinel; a Medium typed-arrival/departure smoke passes. No separate separation calculator or strategic calibration was added.', evidence: ['game/bots.ts', 'game/bot-mobility.ts', 'tests/bot-advanced-source.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The unofficial per-player/advisor departures are distinguished from the earlier publisher/FAQ and unchanged Basic policy.', evidence: ['docs/ALLIED_TRANSIT_RULES.md', 'docs/RULE_DECISIONS.md', 'docs/BASE_ADVANCED_READINESS_20260907.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Genuine native overlaps cover first/later newly allied ends, exact normal/elite custody, Hajr, advisor/Ecaz/Polar exceptions and unchanged Basic policy. Authenticated SQLite covers restart, races, privacy and immutable rejects. Actual phone ending moved only the ending group to Tanks and refresh retained it; wider combinations, full modes and deployment remain open.', evidence: ['tests/fixture-no-field-allied-separation.ts', 'tests/no-field-allied-separation-engine.test.ts', 'tests/no-field-allied-separation-controls.test.tsx', 'tests/allied-separation.test.ts', 'tests/advanced-source-engine.test.ts', 'tests/advanced-source-recovery.test.ts', 'tests/bot-advanced-source.test.ts', 'docs/ALLIED_TRANSIT_RULES.md'] },
],
related: ['movement', 'spice-blow', 'advanced-advisors', 'ecaz-ambassadors', 'homeworlds'],
},
{
id: 'victory',
title: 'Winning and the final turn',
category: 'Getting started',
coverage: 'Partial',
summary:
'Stronghold targets, storm-contested occupation, prediction and final-turn fallback.',
steps: [
'Victory is checked when the Mentat pause begins. A faction needs three strongholds, or four when allied or playing a two-player game. Allies combine distinct qualifying strongholds.',
'In the provisional two-person setup, each person controls two separately played factions and switches between their seats. They are not automatically allied and do not pool holdings unless they form an alliance. Each side needs four strongholds. Ordinary two-seat games also use four.',
'Ecaz and its reciprocal ally can also win by jointly occupying three strongholds: both factions need non-advisor presence in each, without opposing fighters. The ordinary four-stronghold alliance route remains available. Occupy cancellation does not remove this victory condition. A concealed No-Field supplies public presence; its secret value is not revealed by this check.',
'The separately marked fresh native Ecaz Homeworld preview has another printed route: native Ecaz must currently have at least seven reserves, the reciprocal alliance must jointly hold one actual uncontested stronghold, and it must occupy worlds of two other native factions. Two Emperor worlds count as one faction. This joins normal winners before a correct BG prediction or final-turn fallback; it adds no ordinary stronghold points.',
'Opposing forces may survive together in a stronghold covered by storm. That contested stronghold does not count for either side. A sole occupant still counts it even under storm.',
'A correct Bene Gesserit faction-and-turn prediction replaces a normal win, including an allied win, with a Bene Gesserit solo win. Guild and Fremen special wins cannot be predicted.',
'On the final turn, normally turn ten, a normal stronghold victory comes first. Otherwise, check Fremen’s special condition, then award the game to Guild and its ally if present. If Guild is absent, Fremen and its ally win even when the usual Fremen special condition fails. An agreed extra turn provisionally moves these final-turn checks to the new final turn.',
'When neither Guild nor Fremen is playing and nobody has reached the normal target, compare individual qualifying stronghold counts. Every player tied for the highest count wins. A correct Bene Gesserit prediction can replace this stronghold win.',
'With tech tokens enabled, owning all three adds one stronghold. One player must hold all three, even in an alliance. In Advanced, when multiple unallied players qualify, the highest stronghold count wins; equal counts provisionally share. Qualifying sides sharing a win may instead unanimously agree to continue another turn and optionally increase ordinary stronghold targets. A finish vote settles the original shared result before any correct prediction replaces it. Final-turn extension and exceptional compositions use provisional timing.',
'Stronghold victory progress shows current territories, a complete Tech Token set, Ecaz joint occupation and Fremen final-turn conditions. Basic permits reciprocal Fremen/Ecaz cooccupation at Tabr; supplied Advanced p32 permits both protected sietches. Solitary/nonallied Ecaz still blocks. Public counts do not award victory before the proper checkpoint; Tech Tokens cannot supply joint occupation.',
'Other expansion additions to victory remain in development. Advanced preview supports selected factions and combinations; complete rules acceptance remains open.',
],
example:
'At the final turn with neither Guild nor Fremen, two players each hold two qualifying strongholds and a third holds one. The two leaders of the count share the win.',
related: [
'mentat',
'tech-tokens',
'faction-fremen',
'faction-guild',
'faction-beneGesserit',
],
},
{
id: 'two-person-four-factions',
title: 'Two people, two factions each',
category: 'Getting started',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Two people each control two independent faction seats.',
steps: [
'The host enables the option before adding extra factions. Each person joins one seat and adds a second, then switches active faction to ready and play each seat.',
'The provisional interpretation keeps the factions separate and does not automatically ally them. An individual faction or alliance needs four strongholds.',
'The host can add an AI opponent with two independently configured faction seats. Human and AI seats cannot be mixed within one controller. The mode cannot be disabled while a second faction is present, and not every player-count interaction is established.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Two controllers own four independently authenticated seats; the shared victory quote uses the validated controller count. Other player-count rules remain provisional.', evidence: ['game/two-player-controllers.ts', 'game/engine.ts', 'game/victory-progress.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Lobby controls add and select seats, each with its own view and actions; wider accessibility and complete-game acceptance remain open.', evidence: ['components/two-player-controls.tsx', 'app/page.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'An AI opponent can own two bot faction seats with independent legal policies; coordinated strategy and strength calibration remain unfinished.', evidence: ['game/engine.ts', 'tests/two-player-bot-engine.test.ts', 'docs/AI_DEVELOPMENT_PLAN.md'] },
{ area: 'Documentation', status: 'Partial', detail: 'The provisional interpretation, sources and limitations are recorded.', evidence: ['docs/TWO_PLAYER_TWO_FACTIONS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused setup, first-turn, victory, seat selection, action and recovery cases exercise the prototype. Full games, combinations, broader custody and deployed acceptance remain open.', evidence: ['tests/two-player-engine.test.ts', 'tests/two-player-seat-http.test.ts', 'tests/victory-progress.test.ts'] },
],
related: ['victory', 'mentat'],
},
{
id: 'fremen-ecaz-endgame',
title: 'Fremen and Ecaz: the final-turn exception',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Integrated',
summary: 'Allied Ecaz and Fremen may share Sietch Tabr, and in Advanced Habbanya Sietch, while qualifying for the Fremen special victory.',
steps: [
'At the final-turn victory check, ordinary stronghold victories come first. If none qualifies, Fremen’s special occupation conditions are checked before the Guild fallback. A qualifying Fremen victory includes its ally and is not replaced by a Bene Gesserit prediction.',
'Ecaz and Fremen must be current reciprocal allies and both have fighters in Sietch Tabr. Their co-occupation does not block the Fremen special condition. Ecaz alone, non-allied Ecaz or another faction’s fighters still block it. Accompanying Bene Gesserit advisors do not count as fighters.',
'In Basic, Habbanya Sietch must be empty or occupied only by Fremen. In Advanced, reciprocal allied Ecaz and Fremen may also share Habbanya Sietch when both have fighters there. Tuek’s Sietch must contain no Atreides, Harkonnen or Emperor presence, and Advanced play also excludes Richese presence. A concealed No-Field counts without revealing its hidden value.',
'The public victory guide lists the three territories and any blocking factions. It uses the same settled-board facts as automatic victory resolution. No extra confirmation is required; the table chronicle explains a successful special victory.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Basic Tabr-only and supplied Advanced p32 two-sietch cooccupation allowances share public progress and the real final-turn quote. Broader expansion acceptance remains separate.', evidence: ['game/fremen-victory.ts', 'game/victory-quote.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Read-only public territory conditions and blockers; victory resolves at the existing checkpoint without a new decision.', evidence: ['components/victory-progress.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles reach the automatic outcome through legal final-turn actions. Strategic defense of this allied exception is not separately calibrated.', evidence: ['tests/fremen-ecaz-victory-engine.test.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Publisher Basic Tabr exception and authorized Advanced two-sietch cutover are distinguished.', evidence: ['docs/ECAZ_VICTORY_RULES.md', 'game/reference.ts'] },
{ area: 'Verification', status: 'Partial', detail: 'Public presence, precedence, all-profile continuation, JSON and authenticated SQLite recovery are covered. Final-turn positions are explicitly staged after genuine setup.', evidence: ['tests/fremen-victory.test.ts', 'tests/fremen-victory-controls.test.tsx', 'tests/fremen-ecaz-victory-engine.test.ts', 'tests/fremen-ecaz-victory-recovery.test.ts'] },
],
related: ['victory', 'faction-fremen', 'faction-ecaz'],
},
{
id: 'stronghold-cards',
title: 'Stronghold Cards: control and battle advantages',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Six public cards reward control with local battle advantages. This optional module requires Advanced rules.',
steps: [
'Set all six cards aside at setup. At the end of the first Mentat Pause, give each card to the faction controlling its stronghold. At every later turn end, transfer it to the new controller or set it aside if nobody controls that place.',
'Keep each card throughout the following turn even if your forces leave or lose control. The benefit applies only to its holder when battling in that stronghold. It is separate from your Treachery hand and does not use a hand slot.',
'One faction must occupy the stronghold with fighters. Bene Gesserit advisors do not contest control. When Ecaz and its reciprocal ally are the only occupying fighters, Ecaz controls it. A concealed Richese No-Field counts as an occupying presence without revealing its value.',
...STRONGHOLD_CARDS.map(
(card) => `${card.name}: ${card.gameplay.join(' ')}`,
),
'The mobile card copies a currently controlled stronghold, even if another faction still holds that location’s card. Holding a card after leaving its location does not itself make that location an eligible copy. The choice is public and fixed before battle plans; a sole eligible advantage is announced automatically.',
'Arrakeen pays only for actual support and creates no personal cash. CHOAM force-payment income includes the bank contribution, subject to its normal traitor and donor exclusions. Carthag does not protect an empty or Worthless defense, stop Poison Tooth, or remove a Shield’s Lasgun explosion risk.',
'Sietch Tabr uses the opposing dial, excluding leaders and other bonuses. A single traitor victory qualifies; mutual destruction does not. Tuek pays after an ordinary loss or a single traitor outcome as well as a win; a double traitor gives neither faction spice. Habbanya also decides a tied Stone Burner comparison.',
'Classic Advanced Nexus core also retains original Strongholds2–6 and optional Tech3–6 with base33 or selected independent36, optionally all14. Earn cards only at actual end-Mentat. Earned Arrakeen composes temporary-Sardaukar support and real Reinforcements reserve fees without making bank money personal; earned Carthag still requires a physical effective defense after an original Harkonnen call is canceled. Original cleanup, token reward, held custody and private Mentat replacement remain.',
'Fresh Advanced all14 Skills uses registered actual seats and selected ordinary decks with original Strongholds2–6 and optional Tech3–6, including its independent-card/World envelope. Native E3 needs no Nexus or exact single family merely to use Skills. Original Nexus/Discovery/Semuta card contexts and Advanced role guards remain separate. Actual end-Mentat claims stay. Arrakeen funds only local holder-plan support, never native World support, personal cash or reserve fees; normal Banker uses the final payer debit. Rescue, cleanup, Tech and Face Dance retain their order.',
'Ecaz/Moritani Skills may include other registered selected-family seats and unused selected ordinary decks, with original Worlds/phase modules and optional independent cards. Native five-disc training and original role exclusions remain. Normal Warmaster one on a temporary Duke never grants trained three. Winner Suk precedes unused-disc assassination, bounty, winner Tech and one Mentat replacement. Ecaz-held support belongs only to the selected Ecaz plan, not an allied plan; fixed and variable armies remain separate. Advanced E3/Harkonnen, shared Duke and effect-specific guards stay.',
'Fresh independent Treachery previews retain clean registered selected-deck paired/mixed/all-three native rosters and classic-only unused decks, with optional Tech3–6 and Advanced Strongholds2–6. Basic mixed Ecaz also admits bare cards. Original end-Mentat custody, physical reserve fees, owner-only Harass returns and selected-winner Tech remain. Clean World cards use their registered occupation profile; Skills/Nexus/Discovery/Semuta retain separate admission.',
'The six effects, public ownership and pre-plan choice are integrated in development games. Enable Stronghold Cards in an Advanced preview lobby. Complete Advanced compliance and every expansion interaction remain under verification.',
],
example:
'You hold Arrakeen’s card and support four forces. The bank pays two spice; you and any permitted ally cover the remaining two. Leaving Arrakeen later does not transfer its card until turn end.',
related: [
'battle',
'mentat',
'choam-combat',
'mobile-stronghold',
'stronghold-factions',
'choam-modules',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'All six local effects/end-Mentat custody are integrated. Fresh Advanced classic/supported native skill rosters, including standalone Ecaz/Moritani, compose all14 skills and optional original Tech. Original subsidy, physical rescue, native income/Duke/assassination and reward order remain; full combinations stay open.',
evidence: [
'game/stronghold-cards.ts',
'game/stronghold-battle.ts',
'game/engine.ts',
],
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Public held cards, enlarged inspection, event-bound mobile copy and bank-aware support cost.',
evidence: [
'components/stronghold-cards.tsx',
'components/game-table.tsx',
],
},
{
area: 'AI',
status: 'Partial',
detail:
'All four policies understand public copy choices, support subsidies, defense and tie effects; comparative full-game calibration remains pending.',
evidence: ['game/bots.ts'],
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'All six full effect guides, custody timing, examples and interaction explanations are available here.',
evidence: ['game/reference.ts', 'docs/STRONGHOLD_CARDS.md'],
},
{area:'Verification',status:'Partial',detail:"Original-action classic Nexus phase sources now earn Arrakeen support beside temporary Sardaukar and real reserve fees, and Carthag Shield poison survival after native call cancellation. Actual normal five-module setup plus earned combat and Axlotl controls complete; four legal policies finish native income and battles. Prior E3 and broader evidence remains dated. Full combinations, deployed acceptance and comprehensive assurance remain open.",evidence:['tests/nexus-core-tech-runtime.test.ts','tests/fixture-nexus-core-tech.ts','tests/nexus-core-strongholds-runtime.test.ts','tests/fixture-nexus-core-strongholds.ts','tests/stronghold-cards.test.ts',
'tests/stronghold-engine.test.ts',
'tests/classic-skills-stronghold-runtime.test.ts',
'tests/native-skills-stronghold-runtime.test.ts',
'tests/ecaz-skills-modules-runtime.test.ts',
'tests/moritani-skills-modules-runtime.test.ts',]},
],
},
{
id: 'stronghold-factions',
title: 'Expansion factions with Stronghold Cards',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Fresh Advanced selected-deck Stronghold play connects registered native or classic rosters through original holder-only rule handlers.',
steps: [
'Fresh Advanced normal starts admit unique two-to-six-seat selected-deck rosters: paired Ecaz/Moritani, mixed E1/E2/E3, all six natives or classic-only seats with unused selected decks. Each native needs its family selected. Original unused Tech optionally requires three through six seats. Mandatory Occupy and Advanced Assassinate compose, including the existing captured-leader Harkonnen/Moritani contract. Basic Strongholds and unrelated overlays keep separate profiles; explicit Semuta retains its earlier narrower envelope.',
'CHOAM-only ordinary Treachery has 35 physical cards; Ix or both decks have47, not49, because CHOAM replaces the shared Ix cards. Native Richese’s ten-card cache remains separate. Genuine setup retains original faction offers/leaders/forces and any native Auditor/HMS, with all six Stronghold Cards initially unowned.',
'Card ownership begins only at the real first end of Mentat and is retained through the following turn. It is not assigned by a battle fixture or reset on refresh. Hidden Mobile Stronghold interior forces and its outside pointing territory stay distinct.',
'The mobile card copies an advantage of another currently controlled stronghold, not merely a retained card. A sole choice is automatic; multiple choices use the existing public pre-plan selection. Accepted choices stay bound to the same original battle through private plans and saved continuation.',
'Arrakeen provides at most two spice toward actual support, not extra personal cash. Native CHOAM income uses the original bank and player payment shares, including its established traitor and own-donor exclusions. Original cyborg/suboid and starred casualties, bounty and other native income stay separate.',
'Carthag, Habbanya, Sietch Tabr and Tuek’s Sietch retain their existing defense, tie, opposing-dial and played-Worthless contracts. New Richese coverage uses actual No-Field shipment/reveal and native cache acquisition for Stone Burner; mixed No-Field dials/full-plan and unresolved Stone/Poison Tooth cases are not silently enabled.',
'Shared Ecaz control holds the card at Ecaz; the selected lead gets only its own held advantage. Ecaz-led Arrakeen may bank-fund actual ally-variable support up to two, never fixed free Ecaz strength. Choosing the ally gives no automatically shared card benefit. Original Habbanya tie and Tabr income likewise follow the actual holder-plan.',
'Native Moritani losing Tuek holder still earns two bank spice per played Worthless card. Original post-loss assassination follows support/card income, retains only printed bounty and one actual private Mentat replacement. Winner cleanup and force losses finish once; normal Traitor revelation forfeits assassination for the game. Native Terror placement remains free.',
'Bounded expanded-family evidence includes sixteen rule cases, eleven actual No-Field/Stone/FaceDance program cases, all four legal policies and eighteen unstaged complete paired/mixed2..6 games (11066 accepted actions, no rejections). Human390px Stone kill/Habbanya and two-reserve Face Dance controls complete their native decisions. Save/recovery/privacy/custody assurance follows all rules, not a new prototype gate. Full-card, faction, module and deployed acceptance remain open; supported expansion starts are unfinished previews.',
],
related: ['stronghold-cards', 'mobile-stronghold', 'choam-combat', 'setup', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Fresh registered selected-deck rosters, including paired/mixed E3 and classic-only unused decks, use original setup and actual end-Mentat ownership. Mandatory Ecaz coalition and Moritani Assassinate retain their existing handlers. Optional Tech3–6 awards the actual selected lead before Face Dance. Clean phase admission does not widen explicit Semuta or retrofit played games.', evidence: ['game/engine.ts', 'game/faction-module-profile.ts', 'game/stronghold-cards.ts', 'game/battle-resolution-quote.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Original local390px controls cover HMS copy/support, real cache Stone reveal mode and partial Face Dance replacement. Standalone E3 human controls select the Ecaz holder lead, show bank2/personal1 for actual support3, seal native plans and keep the physical Shield; Moritani reveals printed Master Bewt bounty through its original inspector and choice. Original Collection and Mentat continue after refresh.', evidence: ['components/stronghold-cards.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal legal policies consume actual marker/Stone/FaceDance/copy choices; eighteen genuine paired/mixed Advanced2..6 games complete. Strategy/calibration and other combinations remain deferred.', evidence: ['game/bots.ts', 'tools/faction-games.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Advanced family/deck/cache admission, existing six effects, original winner versus replacement and explicit guarded combinations are recorded without completing every card or faction.', evidence: ['docs/STRONGHOLD_CARDS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'New selected-deck cases cover normal mixed/classic setup, actual six-native income and claims, native Harkonnen/Moritani assassination and labelled controlled Ecaz/Ixian coalition battles. Full modes remain unfinished. Prior E1/E2 evidence remains dated. Standalone E3 adds20 focused cases, affected native/CLI179, types/lint/build and actual controlled holder-only funding, tie/income, assassination/death/forfeiture and four legal policies. Four genuine two/three-seat E3 games complete642 accepted actions,15 JSON continuations and3 battles without rejection; no natural assassination claim. Human390px Ecaz reaches v18/Mentat with bank2/personal1, separate Collection2 and physical Ecaz2/Guild1 survivors; Moritani reaches v11/Mentat with wallet18 and one original private replacement. No new assurance/full-suite campaign or public/deployed certification.', evidence: ['tests/independent-phase-profile.test.ts', 'tests/independent-phase-modules-runtime.test.ts', 'tests/independent-phase-ecaz-battle.test.ts', 'tests/phase-module-profile.test.ts', 'tests/mixed-phase-modules-runtime.test.ts', 'tests/mixed-phase-modules-controls.test.tsx', 'tests/phase-module-ecaz-runtime.test.ts', 'tests/phase-module-moritani-runtime.test.ts', 'tests/ecaz-stronghold-runtime.test.ts', 'tests/moritani-stronghold-runtime.test.ts', 'tests/richese-strongholds-runtime.test.ts', 'tests/tleilaxu-strongholds-runtime.test.ts'] },
],
},
{
id: 'tech-tokens',
title: 'Tech tokens: income, conquest and victory',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'An optional Ixians & Tleilaxu module, available with three or more players independently of expansion factions.',
steps: [
'The host can enable tech tokens in the lobby. Changing this option clears human readiness. Fremen begins with Spice Production, Ixians with Heighliners, and Tleilaxu with Axlotl Tanks. After the first storm, randomly assign any remaining tokens in storm order to factions without one.',
'Spice Production triggers when a faction takes CHOAM charity, except when only Bene Gesserit does so. Axlotl Tanks triggers when a faction receives free revival in the Revival phase, except when only Tleilaxu does so. Heighliners triggers when a faction ships from off planet, except when only Guild does so.',
'Each token triggers once in its matching phase. Place spice on the token equal to the number of tech tokens its owner holds, including itself. Collect that spice only at the end of the phase; it is unavailable for spending before then.',
'Fremen reserve arrivals and Guild cross-planet or return shipments do not trigger Heighliners. A stopped shipment never arrives and cannot trigger it. Bene Gesserit accompanying forces do arrive from off planet and can trigger the token even after a Guild shipment.',
'A battle winner takes one tech token from the defeated faction after casualties and played-card decisions. With several available tokens, the winner chooses. A winner still takes the token if no winning forces survive. Mutual destruction has no winner and transfers no token.',
'Owning all three tokens counts as one additional stronghold at victory checks. An alliance cannot combine separate token holdings to qualify: one member must own the complete set. Multiple sides reaching the victory target can share the win.',
'Token ownership and pending income are public and persist. Fresh registered selected-family all14 keeps original Tech3–6 Basic/Advanced and optional Advanced Strongholds2–6, including supported Worlds and independent cards, without an incidental Nexus or single-family E3 requirement. Original Nexus/Discovery/Semuta and role/effect guards remain. Rescue/board-spice precedes winner Tech and Face Dance. Mandatory normal Banker waits for Mentat, separate from phase-end Tech; fees/H returns are not revival/shipment. Native CHOAM opening income is not Charity. Two-player Tech and full combined acceptance remain unfinished.',
'Without other optional overlays, fresh normal selected-deck starts retain original Tech3–6 Basic/Advanced with registered paired/mixed/all-three native families or classic-only seats and unused decks. Advanced Strongholds2–6 optionally compose. Native payments, typed casualties, selected Ecaz lead rewards and existing captured-leader Moritani assassination remain separate; split allied holdings never form a complete set. Explicit Semuta keeps its earlier scope. Existing provisional Basic odd Occupy, Richese rulings and unrelated profiles are not newly decided; played games are not converted.',
'Clean independent-card selected-deck rosters include paired/mixed/all-three natives and classic-only unused families with optional Tech3–6 and Advanced Strongholds2–6. Recruits changes current native rates without repeating Axlotl or advancing payout. Harass deposits and reserve fees are not free Revival or off-planet shipment. Original phase income, mandatory coalition/assassination and winner rewards remain. Clean World cards retain registered occupation and original phase modules; unrelated module/role profiles keep separate admission.',
'Classic Nexus core composes original Tech3–6 Basic/Advanced and optional Advanced Strongholds2–6 with base33 or selected independent36, optionally all14. Real first-Storm owners and actual token counts set income. A paid fixed Tleilaxu force group does not become free because Recruits is active; subsequent genuine free returns accrue one Axlotl pile, not one pile per request. Pending spice cannot fund Revival before phase end. Harass returns and reserve fees are not token-triggering Revival or shipment; actual battle winners take one original opposing token.',
],
example:
'You own Heighliners and Axlotl Tanks. When Emperor ships from reserves, place two spice on Heighliners. A later shipment adds nothing. Collect the two spice when Shipping and Movement ends.',
related: [
'charity',
'revival',
'movement',
'battle',
'victory',
'ix-modules',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Original first-Storm ownership, owner-count pending income, matching phase-end payout and native winner transfer remain. Clean selected-deck phase rosters now include paired/mixed/all-three families and classic-only unused decks through normal lobby starts. Classic Nexus core admits original Tech with selected33/36 and optional14, preserving funded card shipment and fixed-versus-free Revival sources. Other module/native envelopes keep their bounds.', evidence: ['game/tech-tokens.ts', 'game/engine.ts', 'game/phase-resource-quote.ts', 'game/revival-resume.ts', 'game/faction-module-profile.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Normal mixed selected-deck module controls and Start reach original setup/Storm; separate existing five-module lobby reaches original training/Storm. Native fixed-five and ordinary-free controls show original prices, physical Tanks and pending pile separately; actual phase close pays it. Stronghold and card inspectors retain their own entitlements.', evidence: ['components/game-table.tsx', 'tests/fixture-nexus-core-tech.ts'] },
{ area: 'AI', status: 'Partial', detail: 'Four existing own-view policies legally claim funded card shipment, complete real Revival into phase-end payout and finish earned Stronghold/Nexus battles. No strategic calibration or fixed-choice pin.', evidence: ['game/bots.ts', 'tests/fixture-nexus-core-tech.ts', 'tests/fixture-nexus-core-strongholds.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed trigger/exception, owner count, pending-versus-spendable spice, original payout, winner reward and complete-set victory remain distinct. Current classic core phase scope and inherited timing are explicit; full module/faction combinations and assurance remain open.', evidence: ['game/reference.ts', 'docs/NEXUS_CARD_RULES.md', 'docs/STRONGHOLD_CARDS.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original-action consumers cover funded five-for-one delivery, paid fixed5 versus free2, a second genuine free request, pending-income affordability and Harass/winner transfer. Actual all14 Revival UI and four legal policies reach payout; older broader and saved evidence remains dated.', evidence: ['tests/selected-phase-recruits-runtime.test.ts', 'tests/independent-phase-modules-runtime.test.ts', 'tests/nexus-core-tech-runtime.test.ts', 'tests/fixture-nexus-core-tech.ts', 'tests/tech-tokens.test.ts', 'tests/nexus-module-payments-runtime.test.ts', 'tests/nexus-skills-modules-payments-runtime.test.ts'] },
],
},
{
id: 'captured-leaders',
title: 'Harkonnen captured leaders',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Capture, execution, borrowed battle leaders and private information.',
steps: [
'After a Harkonnen battle victory, finish casualties and played-card decisions, then choose whether to capture a leader. A cancellation window resolves before the random draw.',
'The draw includes eligible surviving leaders from the loser, including the leader just used if alive. A leader used in another territory this turn is excluded.',
'Inspect the captive privately. Execute it for two spice or retain it for one battle. Execution sends the leader face down to its original faction’s tanks; it counts as having died twice and normal revival restrictions apply.',
'A retained captive is available only to Harkonnen. Its territorial use restrictions remain. It can turn traitor, returns to its faction if it survives its one battle, and enters its original faction’s tanks if killed.',
'When all native Harkonnen leaders are dead, return every unused captive immediately. A new captive retained in that situation also returns immediately.',
'Only Harkonnen and the original owner know a concealed living captive’s identity. Tleilaxu can inspect a concealed executed leader. Using a captive in a revealed battle makes its identity public.',
'In original standalone Ecaz/classic Nexus without Skills, the separate Duke can enter that capture pool without a sixth native leader or Traitor card. Execute pays the same two spice and returns the dead disc to Ecaz Tanks. The provisional return policy restores only unused valid prior tenure; otherwise Duke is set aside. Actual Ecaz Nexus liberation removes captivity permanently, ending after one battle or the current turn rather than restoring Harkonnen.',
'Fresh bare Advanced E3/all14 Skills admits Harkonnen with Ecaz and/or Moritani and classics, two through six seats. A captured trained leader remains identified by its known attached Skill. Only its lower battle effect is available to the captor when actually used; the original assignment returns with a survivor, or its physical card returns once when the trainer dies. Other optional-module envelopes retain their separate gates.',
'The capture engine and private views have focused tests. The six classic factions can start Advanced preview; remaining Advanced rules and expansion interactions are unfinished.',
],
related: [
'advanced-harkonnen',
'battle',
'revival',
'card-karama',
'card-ghola',
],
},
{
id: 'special-karama',
title: 'Once-per-game faction Karama powers',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Native faction special powers have connected first versions, including Ecaz’s unarmed disc-difference and Moritani’s winner-card disposal; timing and combination refinement remain.',
steps: [
'Spend an actual Karama card to activate your faction’s special power once per game. The usage remains spent on later turns, but you may still use other Karama cards normally. These powers resolve directly without a normal faction cancellation window.',
'After Voice and ordinary Prescience finish, Atreides may spend its Advanced special Karama to inspect either combatant’s entire committed plan, even outside its own battle. Target seals first; only Atreides gets actual dial, leader, physical played cards, support and KH. The provisional supplied-source distinction includes No-Field plans: ordinary dial Prescience is still barred, but the separate special reads the sealed plan without revealing/materializing its marker early. Allies receive no automatic inspection.',
'The inspected plan remains privately visible in Atreides’ action panel while the other combatant prepares a plan. No inspection acknowledgement is required. This also applies when Atreides is outside the battle helping an ally; that ally does not receive the inspection automatically. Both committed plans trigger the public reveal, which ends the private inspection. The inspected plan stays committed. Atreides may retain the power by declining this battle’s offer. A canceled ordinary prescience request does not remove the special power.',
'The after-preparation offer, target-first commitment and private-read-versus-public-No-Field-reveal order remain explicit provisional timing interpretations, not a newly retrieved combined FAQ or certification of complete Karama/expansion interactions.',
'During Revival, Emperor may revive up to three of its own forces or one of its own dead leaders for free. These special returns do not use normal revival allowances, including the ordinary one-Sardaukar limit. Only real forces in the Tanks may return.',
'During Bidding, Harkonnen chooses another player and takes up to four unseen cards. Inspect the combined hand, then return exactly the same number of cards. Newly taken cards may be included in the return.',
'Harkonnen may temporarily exceed eight cards during this choice. The return restores normal limits. Other players see the exchange count, but only each hand’s owner sees its cards.',
'If every card in the combined hand must return, the return happens automatically with a brief notice. Larger hands retain their return choice. Your Harkonnen inspection keeps the cards actually drawn privately readable after the exchange and after refresh; this records what you saw then, not the target’s current hand. Older saved forced returns record the cards held before returning them without claiming which were originally drawn.',
'A hand exchange pauses the current auction action or response and resumes it after the return. If the exchange removes the only Karama backing an unfunded bid, the current auction recovery remains provisional pending primary-source confirmation.',
'During Shipment and Movement, the Guild may stop a declared off-planet shipment by spending its once-per-game special Karama. The decision happens before payment or arrival, so a stopped shipment earns no Guild income and triggers no accompanying advisor. Fremen’s on-planet reinforcements and cross-planet movement are excluded.',
'The stopped shipment uses the shipper’s shipment opportunity while retaining forces, spice, allied credit and any shipment-rate card; ordinary movement remains available. These settlement details remain provisional pending primary-source clarification. The Guild decision appears regardless of its hidden hand.',
'Fremen may call a worm in a sand territory during Spice Blow and Nexus. It destroys spice and unprotected forces immediately. Ally protection and Fremen survival have separate responses; a second Karama may cause Fremen to be devoured. The special summon itself consumes no spice-deck card.',
'Resume any interrupted spice draw, fresh-blow window or worm response after the summoned worm resolves. Its Nexus occurs at the end of the blow, followed by eligible Fremen rides. During an open Nexus, the new ride joins the existing queue. Destroyed fresh spice cannot later be doubled by Harvester.',
'During a quiet Revival boundary, Tleilaxu may spend its once-per-game special Karama to select any one player, including itself, an ally or a ready faction. It also retains the original decision before another faction’s normal revival completes, independently of card holdings. Declining that decision continues the original return and preserves later quiet use. A pending decision can select only its original recipient.',
'Prevention stops further force and leader returns in this Revival, including negotiated leaders, KH and Emperor-funded extra forces. It does not undo completed returns, payments or used allowances. A stopped pending request spends no spice or revival quota. Hidden leader identities and negotiated prices remain outside the public decision. Emperor’s special Karama is immune.',
'Provisional scope includes Ghola Treachery returns during the affected Revival and ends when that phase ends; Ghola is available afterward. This composes the revised prevention wording with Ghola’s free-return rule, rather than quoting a combined publisher ruling. Low Homeworlds provisionally retain their printed free rate while the whole qualifying return is prevented; no independent bonus-only return is created. Full expansion and combination acceptance remains open.',
'CHOAM cash-in, Richese acquisition and Ixian HMS relocation also have connected special-use paths. Ecaz’s supplied p30 unarmed disc difference and Moritani’s supplied p35 post-loss winner-card disposal now have owned controls and native cost/once-use, with explicit provisional numeric/disposal interpretations. Advanced preview remains six-classic only; broader timing and combinations are not certified.',
'Richese’s special purchase is available in development tables: spend a Karama and three spice to choose privately from the cache, with separate Emperor income and explicit full-hand/final-cache guards. See its acquisition guide for current controls and limits.',
'See Ecaz special Karama and Moritani special Karama for their source-bound first versions. Their declarations do not create a normal faction-cancellation window; existing Kull/BG handling remains in the shared special-intent pipeline.',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Tleilaxu proactive Revival is prototyped: quiet any-player selection and original target-bound interruption share current physical-cost validation; completed returns stay intact. Ghola inclusion and phase expiry are provisional; Emperor special immunity remains. Low Homeworld target eligibility now follows explicit event prevention while leaving its printed rate intact.', evidence: ['game/tleilaxu-special-karama.ts', 'game/engine.ts', 'game/card-availability.ts', 'game/revival.ts', 'tests/fixture-homeworld-revival-prevention.ts', 'tests/homeworld-revival-prevention-runtime.test.ts', 'docs/HOMEWORLD_BENEFITS_RULES.md'] },
{ area: 'Player controls', status: 'Partial', detail: 'Native Advanced owner has persistent card/target controls before a request and in the pending decision, including self, ally, ready and prior-return choices. Enclosing priorities and target restrictions retain readable reasons.', evidence: ['components/tleilaxu-special-karama.tsx', 'components/game-table.tsx', 'tests/tleilaxu-special-karama-controls.test.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four existing profiles reuse public-Tanks thresholds through the shared current quote; no strategic refinement or difficulty calibration.', evidence: ['game/bots.ts', 'tests/tleilaxu-special-karama-window.test.ts', 'tests/ghola-bots.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Proactive source cutover, provisional Ghola/phase scope, printed Special Karama immunity and remaining Homeworld/combination limits are explicit.', evidence: ['docs/TLEILAXU_SPECIAL_KARAMA.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Native setup, paid shipment and battle earn the actual cards and twelve Tanks; focused regressions cover declaration, original interruption, prior returns, stale intent and real phase expiry. Frozen14-file148/148, types/lint/build, six actual callback/engine/GameTable SSR journeys and four legal existing-profile paths pass. Genuine111/113-action sources earn original cards and casualties. Private-driver-only repairs reuse unchanged-source checks. Full modes, browser/deployed and final assurance stay open.', evidence: ['tests/fixture-tleilaxu-special-karama.ts', 'tests/tleilaxu-special-karama-window.test.ts', 'tests/tleilaxu-special-karama-quote.test.ts', 'tests/tleilaxu-special.test.ts', 'tests/karama-intents.test.ts', 'tests/ghola-lifecycle.test.ts'] },
],
related: [
'card-karama',
'richese-acquisition',
'ecaz-special-karama',
'moritani-special-karama',
'bidding',
'revival',
'faction-harkonnen',
'faction-emperor',
'faction-atreides',
'faction-guild',
'movement',
],
},
{
id: 'choam-gamont',
title: 'Trip to Gamont and Mentat victory',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Return one other player’s force to reserves before stronghold control is checked.',
steps: [
'If the completed return or empty No-Field reveal leaves Bene Gesserit advisors alone, their mandatory conversion has a separate Karama response before victory. The return and card use stay committed. The provisional continuously-alone cancellation duration still applies; final confirmation resumes only after this counter.',
'In basic or advanced play, CHOAM may use Trip to Gamont during Mentat Pause. Select another player, an occupied board sector and an ordinary or elite force. One physical token returns to that player’s reserves; it is not killed, revived or shipped. If the selected Richese sector has a No-Field, it must reveal first. Return one force if any are present; the card is still used if there are none.',
'You may select forces in storm, peaceful Bene Gesserit advisors, or occupants inside the Hidden Mobile Stronghold. An elite force remains elite in reserves. No spice, revival allowance, battle-loss count or transport income changes. If removing the last opposing force leaves advisors alone, their stance settles before victory.',
'The declared card, recipient, sector and force type are public before a Karama response. Cancellation leaves both card and force in place and prevents retrying that physical card’s effect for the phase. If the card or selected force disappears during an interruption, no return occurs and the card is not discarded for the effect.',
'At CHOAM tables, Mentat starts by settling bribes and Inflation, while victory remains pending. Play ordinary Mentat actions and mark ready, then finish the closing sales and allied exchange. CHOAM receives a final Trip to Gamont opportunity even with an empty hand. A copy acquired in the closing exchange can be used here.',
'After any final declaration and its response, CHOAM may make another available play or choose Finish and check victory. Normal stronghold wins, the tech-token bonus, Bene Gesserit prediction and final-turn special conditions use the resulting board. If nobody wins, the next turn begins. A prevented return does not skip this confirmation.',
'The implemented timing prevents premature victory, but ordering with later simultaneous Mentat powers, future force types and module exceptions remains under audit. Supported CHOAM starts are unfinished previews, and faction powers still need complete verification.',
],
related: [
'faction-choam',
'choam-worthless',
'choam-market',
'mentat',
'tech-tokens',
'card-karama',
],
},
{
id: 'choam-jubba',
title: 'Jubba Cloak and the moving storm',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Save CHOAM’s forces in one threatened territory when the storm moves.',
steps: [
'After the storm distance and storm-card choices are settled, CHOAM receives a decision if the storm will cross any of its exposed forces. This opportunity appears even with no Jubba Cloak in hand, so it reveals no private card information.',
'Choose one listed territory and declare Jubba Cloak. The target is public. Other factions may cancel the Worthless effect with Karama before the card is discarded. Successful protection covers CHOAM forces in the selected territory across the sectors crossed by this storm movement.',
'Protection does not cover spice, other factions or allied forces in that territory. Other CHOAM territories remain exposed. Sheltered forces need no Jubba protection. The current implementation protects against one storm movement, not later shipment or movement into the stationary storm.',
'If the effect is canceled, Jubba stays in hand and its effect is unavailable for the rest of the phase. If the declared card or threatened forces are no longer available, no card is discarded for this effect. CHOAM can then continue the storm, accepting any remaining losses.',
'A remaining-threat decision follows a successful or canceled play. Continue when finished; any Fremen storm-protection response and casualty choices follow before final movement settlement. Each successfully protected territory is listed. Protection ends when the storm finishes moving.',
'Exact simultaneous-power ordering and the territory-wide timing interpretation remain under audit alongside the other expansion interactions. Supported expansion starts are unfinished previews; complete-game validation remains open.',
],
related: [
'choam-worthless',
'storm',
'faction-choam',
'card-karama',
'card-weather',
'card-atomics',
],
},
{
id: 'choam-worthless',
title: 'CHOAM Worthless card powers',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Six printed effects cover range, revival, movement, storm protection, force return and Kull Wahad’s selectable Karama reaction.',
steps: [
'These CHOAM abilities work in basic and advanced games. Choose a printed Worthless card from the phase controls. Its name and intended effect are announced, then a Karama response occurs before discard. A canceled card remains in hand and cannot be retried for its effect during that phase.',
'On your own Shipment and Movement turn, play Kulon while a movement remains. It adds one territory to normal movement, including ordinary stronghold ornithopter access. Under the provisional Richese card policy, it does not raise the fixed one-group maximum of three, but extends both normal-range groups. It does not add a movement action or bypass storm/alliance/stronghold rules. Applying the bonus to both Hajr movements remains under audit.',
'During Revival, play La La La and select a player to prevent its free force revivals for the rest of the phase. Earlier revivals are unchanged. The prohibition also prevents a Fremen allied free allowance from providing free returns, even if granted later.',
'Whenever another faction requests a normal revival with a free portion, CHOAM receives a response decision independently of its private hand. Allow the request, or declare La La La for that requester. If the effect succeeds, the whole pending request stops without payment, force movement or quota use; a faction permitted to purchase normal revivals can submit a paid request. If the effect is canceled, the original quote resumes through any Tleilaxu and other applicable responses.',
'La La La does not prevent otherwise legal paid revivals or separate Ghola card effects. With Tleilaxu in the game, Fremen may submit a paid request within their current limit after free revival is prevented. Without Tleilaxu, Fremen’s base purchase restriction leaves no normal force return available. Emperor-funded extras remain separate. The prohibition resets when the next Revival phase begins. Card custody is checked at settlement: if CHOAM cashed in the declared card during the response, no Worthless effect occurs and the interrupted revival resumes.',
'During Shipment and Movement, use Baliset to select another player and a territory CHOAM occupies. The current implementation prevents that player from entering that territory by movement for the phase while CHOAM remains there; shipment is allowed. A declared move into a CHOAM territory pauses for CHOAM regardless of its private hand. Allow it or declare Baliset. A successful effect leaves the moving forces in place and the movement unspent; a canceled or unavailable card resumes the original move after checking its legality again.',
'Kulon, La La La, Baliset, Jubba Cloak and Trip to Gamont have engine, private controls and AI support. Printed Kull Wahad has a selectable Basic preview, on by default in new eligible lobbies, for CHOAM, Richese, Ixians, Tleilaxu, Ecaz, Moritani and classic factions with the CHOAM and Ix decks, each seated faction’s deck and no other modules; the explicit Nexus Kull profile adds Cunning fuel choices at that same reaction, not in every Nexus game. See both Kull guides for distinct counters, pre-conversion Bene Gesserit custody and the deferred winning-overbid boundary. Exact cancellation scope, Hajr/ornithopter combinations, Baliset duration and destination scope, simultaneous prevention and later module exceptions remain under audit. Complete expansion play remains unfinished.',
],
related: [
'faction-choam',
'choam-gamont',
'choam-jubba',
'choam-kull',
'nexus-choam-kull',
'choam-market',
'choam-revival',
'movement',
'revival',
'card-karama',
],
},
{
id: 'choam-kull',
title: 'Kull Wahad: Karama interception preview',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'React before a Karama is played; a distinct counter can stop Kull before its phase restriction begins.',
steps: [
'In a new supported Basic lobby with CHOAM and the CHOAM and Ix decks, printed Kull is enabled by default as a development preview. The host may turn it off to keep the broader non-Kull Truthtrance options. Basic supports Richese, Ixians, Tleilaxu, Ecaz, Moritani and classic factions with each seated faction’s deck and no other optional modules. In an Advanced preview lobby, the host may explicitly select printed Kull with CHOAM, classic factions and exactly the CHOAM and Ix decks, without optional modules. Advanced supports Bene Gesserit substitutions and legal special powers. Both previews withhold some structured questions and defer unfunded non-CHOAM Karama-dependent bids. Existing games are not retrofitted, and this warning does not certify complete rules.',
'In the supported Basic printed Kull preview without Richese, existing current-lot ordinary bid, Revival, alliance and bribe Truthtrance questions are available, including supported grouped and mixed forms. A pending Kull response holds their controls while the original transaction resolves. The existing Richese Semuta preview does not yet admit these structured commitments; phase-wide bid and combined turn-action questions and wider interactions remain incomplete.',
'Another player’s legal Karama cancellation, shipment-rate use, immediate auction purchase, winning-bid payment or supported special activation pauses before its card and other costs. CHOAM sees the attempted player and purpose and may decline or choose a legal held Kull Wahad. Each Use names its printed source explicitly. The separate Nexus Kull guide covers additional Cunning costs in its new profile only. The same public opportunity appears without Kull in hand, so waiting does not disclose hidden ownership. Invalid attempts never open this window; CHOAM does not receive a self-targeted Kull offer.',
'Decline resumes the original attempt once. Declaring Kull opens the ordinary CHOAM-effect response. Kull is still pending: its target may counter with a different eligible physical Karama before any phase ban applies. The interrupted card stays reserved and cannot serve as its own counter. Other eligible responders use their existing response controls.',
'If everyone allows Kull, CHOAM discards the exact Kull card. The original attempted card remains in its owner’s hand; its effect and additional costs do not occur, and an attempted special once-per-game use remains unspent. Basic prevents that player’s Karama activations for this phase. A new Advanced attempt instead prevents only the specific effect: shipment pricing, free Treachery purchase, that faction’s special, or cancellation of the particular advantage. Other effects remain available; printed and substituted Karama share the same restriction. An allied shipment recipient is not automatically the restricted player.',
'The successful restriction ends when the phase or turn changes, not during a temporary response, market or worm substep. Advanced effect scope follows the supplied rules; retaining phase expiry is a provisional interpretation. Immediate purchase and winning payment share one effect, as do force/leader or route variants of the same faction special. Old unstamped pending attempts and restrictions retain their original broad scope. Holding, acquiring, transferring and otherwise legal nonactivation discards remain available.',
'A successful distinct counter spends or converts its own card under ordinary rules. Kull then stays held and its exact physical card cannot use its CHOAM effect again that phase. No Karama ban is established on the original player, and the reserved original attempt resumes once with its normal costs. Prevention is not a refund of a counter card.',
'Advanced Bene Gesserit is intercepted before Worthless conversion or discard: successful Kull keeps that original unplayed Worthless card held. If CHOAM declines or Kull is countered, the original proceeds to its separate conversion response. Ordinary cancellation of that conversion still leaves its Worthless card discarded. A different BG Worthless counter has its own conversion response; it is never the reserved original.',
'Winning overbids whose Karama payment would become unplayable remain deferred. To avoid accepting a bid that the preview cannot settle, a non-CHOAM unfunded Karama-dependent bid is refused privately before commitment, independently of CHOAM’s hidden Kull ownership. CHOAM self-activations are outside interception; normal non-preview bidding is unchanged. An already unfunded winning activation remains guarded. Holding Karama alone is not a reaction trigger. This unfinished-composition fence does not restart bidding, award the lot free, supply new funding or change numeric UI bid limits.',
'A live Truthtrance battle or shipment promise also constrains original attempts, Kull costs and counters. A cost that cannot be proved compatible is unavailable before disposal; CHOAM may decline instead. Proven supported cancellations remain available. Pending Kull cannot release a suspended promise, and its counter choices exclude unproven costs so legal AI can progress. Unsupported continuations remain an incomplete preview composition, not a publisher ban or permission to release the promise.',
'The different-card counter and before-conversion custody are explicitly selected development policy, not a located publisher clarification. This printed-only profile still excludes Nexus. The separate Nexus Kull profile adds one bounded Cunning interaction without changing older games; Some nested Richese/Semuta parents, optional modules, unpayable-auction recovery and full CHOAM acceptance remain outside this printed preview. Nexus cards do not receive blanket immunity to Karama.',
],
example: 'Bene Gesserit attempts to use Baliset as Karama. CHOAM declares Kull. Baliset cannot also counter Kull; a different eligible Karama may. If Kull succeeds, Baliset stays held; in a new Advanced attempt BG cannot repeat that specific Karama effect this phase but may use another legal effect. If a distinct counter prevents Kull, the original Baliset attempt proceeds to its normal conversion response.',
related: ['choam-worthless', 'nexus-choam-kull', 'faction-choam', 'card-karama', 'advanced-beneGesserit', 'special-karama', 'bidding', 'choam-karama', 'nexus-cards', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Selectable Kull binds typed intents, distinct physical counters and Basic/legacy all-purpose or new Advanced semantic-effect restrictions. Different effects remain playable; phase expiry is provisional in Advanced. Basic printed Kull admits native Richese, Ixians, Tleilaxu, Ecaz and Moritani; supported clean Kull discards offer Semuta before their suspended parent resumes. Without Richese, supported current-lot bid, Revival, alliance and bribe commitments can coexist with the preview; deferred overbid recovery, phase-wide and whole-turn answers and broader module support remain excluded.', evidence: ['game/choam-kull.ts', 'game/kull-purpose.ts', 'game/bribe-promises.ts', 'game/engine.ts', 'tests/kull-bid-runtime.test.ts', 'tests/kull-truth-revival-runtime.test.ts', 'tests/kull-alliance-runtime.test.ts', 'tests/kull-richese-semuta-runtime.test.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Owner-only legal held costs and decline use the Kull event; counters reuse ordinary response controls. Public viewers receive purpose/actors, not private intent payloads or hidden choices.', evidence: ['components/choam-kull.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Legal preview participation uses projected reactor choices and ordinary distinct counter controls. Full strategy and difficulty calibration remain deferred.', evidence: ['game/bot-choam-kull.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Pending versus active restrictions, distinct custody, decline/prevention/success, BG-before-conversion and deferred overbid limits have internal explanations. Publisher-source and full-faction acceptance remain separate.', evidence: ['docs/CHOAM_KULL_DESIGN.md', 'docs/CHOAM_KULL_SOURCE_UPDATE.md', 'docs/NEXUS_CHOAM_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: '18 October Advanced scope:12-file111/111, types/lint/build and two genuine-action/rendered-table programmes pass. Selected unopened deal/auction/Spice positions yield real Baliset purchase, paid shipments, repeated-effect rejection and a different-effect cancellation; Basic retains broad scope. Four policies legally pass. Controlled intent tests cover shared auction/special variants and unstamped frames. Earlier SQLite/phone evidence concerns the old scope, not current recovery/browser certification. Original Nexus/alias programmes, wider combinations, final assurance and deployed acceptance remain open.', evidence: ['tests/kull-purpose.test.ts', 'tests/kull-purpose-intents.test.ts', 'tests/kull-purpose-engine.test.ts', 'tests/fixture-kull-purpose.ts', 'tests/choam-kull-engine.test.ts', 'tests/choam-kull-recovery.test.ts', 'tests/choam-kull-controls.test.tsx', 'tests/bot-choam-kull.test.ts', 'tests/choam-kull.test.ts', 'tests/kull-bribe-runtime.test.ts', 'tests/kull-bribe-controls.test.tsx', 'tests/prototype-room.test.ts'] },
],
},
{
id: 'choam-combat',
title: 'CHOAM combat funding and force income',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Finance an ally’s supported forces and receive a share of other players’ combat payments.',
steps: [
'In advanced play, CHOAM may pay some or all of its ally’s force support. At the start of an allied battle, choose the amount of unspent spice to reserve for the phase. CHOAM can update this pledge during ordinary Battle controls. Only a current mutual ally may use it.',
'A Karama response can prevent allied funding for the current battle. Reserved spice stays with the pledge, but the ally must plan with its own funds. Later battles get a fresh response and may use the remaining pledge.',
'When sealing a plan, choose total spice support and optionally CHOAM’s share. With no explicit share, your own spice is used first and the pledge covers the shortfall. The chosen amounts remain reserved until resolution; CHOAM cannot withdraw a committed share. Unspent pledged spice returns at the end of Battle, after the closing market.',
'When other factions support battle forces, add the eligible support from both sides, then halve the total and round down once. Payments of three and five produce four spice for CHOAM. Retain the Arrakeen Bank contribution, while excluding CHOAM’s own support and the spice it supplies for its ally. Free-supported forces and separate battle-strength spending add no support spice.',
'Any revealed traitor prevents all CHOAM force-payment income from that battle. A sole traitor winner pays no support, including its pledged allied share. If both sides reveal traitors, both pay their support but CHOAM still gets no income. A lasgun–shield explosion without a traitor still pays support and generates income.',
'After casualty and winner-card choices, a separate Karama response precedes CHOAM’s income. Cancellation sends the amount to the bank and does not refund the combatants. Complete the response before post-battle technology, capture and Face Dancer rewards continue.',
'Pledges and unrevealed payment splits stay private to their authorized viewers. Battle guides and all four AI levels account for reserved allied funds when finding legal plans. The precise ordering with later expansion powers, wider allied-payment compositions and the alliance cancellation window remain under final audit. CHOAM starts remain previews; complete faction and combination acceptance is unfinished.',
],
related: [
'faction-choam',
'choam-economy',
'choam-market',
'battle',
'card-karama',
'card-truthtrance',
],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Support income floors the eligible battle total once; original support, Arrakeen contribution, allied exclusions, Traitor and aftermath rules remain.', evidence: ['game/battle-resolution-quote.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Existing funding, plan and cancellation controls retain automatic uncontested income; no extra collection confirmation.', evidence: ['components/choam-battle-funding.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing minimal policies use shared resolution and payment rules; strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'tests/choam-combat.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Adopted total-rounding source and unchanged native eligible support are explicit.', evidence: ['docs/CHOAM_SUPPORT_INCOME.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused quote/payment regressions cover odd support sums and existing exclusions; full modes, wider compositions and deployed acceptance remain.', evidence: ['tests/battle-resolution-quote.test.ts', 'tests/choam-combat.test.ts'] },
],
},
{
id: 'choam-karama',
title: 'CHOAM special Karama cash-in',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Once per game, spend Karama to convert selected other cards into spice.',
steps: [
'In the advanced game, use the special Karama controls above your private hand. Choose the activating Karama and one or more other cards. Each selected card earns three spice, including Worthless cards or a second Karama.',
'The activating Karama is spent separately and earns no spice in this implementation. All selected cards must be distinct and still in your hand. The entire operation succeeds or changes nothing.',
'Cards fixed in your sealed battle plan or committed to prescience cannot be cashed in. You must also retain enough spice, committed allied funding or another Karama to honor a current winning auction bid.',
'Cash-in takes effect immediately and preserves a pending phase opening, revival, response, market sale or allied exchange. If it consumes a card already offered for a market sale or trade, that transaction later pays nothing or moves neither card. In the Kull preview, a declared original or counter cost remains reserved while that transaction is pending.',
'The battle preparation guide can find a cash-in that funds a promised plan while retaining required cards. Complete the listed preparation before reviewing and sealing the plan. This can combine with Ghola preparation when both remain possible.',
'The power is available in all nine playing phases. Finish an active Truthtrance question first. Its precise timing against other simultaneous effects, activation-card payment interpretation and remaining expansion interactions are still under audit; supported CHOAM starts are unfinished previews.',
],
related: [
'faction-choam',
'choam-market',
'card-karama',
'choam-kull',
'card-truthtrance',
'battle',
'bidding',
],
},
{
id: 'choam-market',
title: 'CHOAM end-of-phase sales and trades',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Convert surplus cards into spice or arrange a private two-way allied exchange.',
steps: [
'At the end of every phase, CHOAM has a closing opportunity for sales and trades. The next phase waits, including automatic auction, revival and collection effects. Choose Finish this phase when done. At the end of Bidding, an empty hand finishes automatically when public card counts also rule out an incoming gift; a short CHOAM notice explains the continuation.',
'Hand counts may remain secret outside Bidding, so those closing windows are preserved. A nonempty hand keeps its opportunity even without an immediately eligible sale: a card effect may prepare one. An empty hand also waits when another player could give a card. These checks preserve private counts and card identities.',
'Sell a Worthless card for two spice, or reveal two cards with the exact same printed name and sell one surplus copy for three. You retain the matching copy. Repeat to sell further surplus cards; cards sharing only a role do not qualify.',
'The sale reveals its card before a Karama response. If allowed, the card is discarded and CHOAM receives the spice. A canceled card stays in hand and cannot be offered for another sale during that closing window. Other eligible cards remain available.',
'Once per turn, offer one of your cards to your ally. The ally chooses a card to return or declines. CHOAM then confirms or declines the proposed exchange. Confirmation moves both cards together and spends the turn’s trade; a decline moves neither card.',
'Only the two allies see the proposed cards. A private exchange does not reveal the rest of either hand. Card counts stay unchanged. If an intervening effect makes a sale or exchange impossible, it pays nothing and returns to the closing decision.',
'Truthtrance can interrupt these decisions. Complete its question before returning to the sale or trade. Existing end-of-phase tech income and unspent allied escrow settle after the market closes.',
'These actions have focused tests. Batch-sale timing, exact Karama scope, ordering among simultaneous end-phase effects and the remaining Worthless special effects still require a combined-expansion audit; supported CHOAM starts are unfinished previews.',
],
related: [
'faction-choam',
'choam-economy',
'bidding',
'card-karama',
'card-truthtrance',
],
},
{
id: 'choam-inflation',
title: 'CHOAM Inflation token',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Double then cancel charity, or cancel then double, across two turns.',
steps: [
'During Mentat Pause, CHOAM can place its unused token with either side up. The selected effect begins at next turn’s Charity phase. Mark ready without placing it to save it.',
'Double multiplies CHOAM’s per-faction income and every eligible charity payout by two. This implementation keeps ordinary eligibility at zero or one spice and doubles the amount received: four from zero, two from one. Advanced Bene Gesserit receives four regardless of wealth.',
'Cancel prevents all charity, including CHOAM income and advanced Bene Gesserit. No zero-value income response or claim is required.',
'At the next Mentat Pause, the token flips automatically. At the following Mentat it is removed permanently. Amal’s phase-opening window resolves before those automatic changes.',
'Karama can prevent initial placement for this Mentat Pause. The token remains available for a later attempt. Karama cannot stop the mandatory flip or removal. Canceling CHOAM income during Double preserves doubled ordinary payouts from the bank.',
'Bribes are prohibited whenever the active token shows Double, including immediately after placement. Previously promised bribes still settle at Mentat. Spice Production’s payout is unchanged, and CHOAM’s automatic income alone does not trigger it.',
'Lifecycle, response, payment and AI scenarios have focused tests. The exact ordinary one-spice interpretation and interactions with unfinished expansion modules remain under audit; supported CHOAM starts are unfinished previews.',
],
related: [
'charity',
'choam-economy',
'faction-choam',
'card-karama',
'tech-tokens',
],
},
{
id: 'choam-auditor',
title: 'CHOAM Auditor',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'An additional strength-2 leader inspects unused opposing hand cards after battle.',
steps: [
'Advanced CHOAM adds the Auditor and its matching traitor identity before setup draws. The five ordinary CHOAM leaders are unchanged. The Auditor can also appear in the remaining Face Dancer pool.',
'Using the Auditor in a battle grants an optional inspection of two random opposing hand cards if it survives, or one if it dies. Victory is not required. Cards that opposing player used in the battle are excluded, including their retained weapon, defense, hero or late Portable Snooper. A later-acquired card used only by the other combatant can remain eligible; the current hand determines the pool.',
'Choose Audit or Decline after battle cleanup. The table completes battle income, tech claims and Harkonnen capture before this choice, then resolves Face Dancing afterward. Auditor survival is recorded from the battle itself.',
'Karama cancellation resolves first. If the power remains active, the opponent can pay CHOAM one spice per actually viewable card to cancel the entire inspection. A surviving Auditor with only one eligible card costs one spice to stop. There is no partial payment.',
'If the opponent cannot afford the full payment, inspection proceeds automatically. An empty eligible hand needs no decision. Sampling happens once after cancellation choices; no card is transferred or discarded.',
'Only CHOAM receives the inspected faces. Its private snapshot survives refresh and the transition out of Battle, and expires at the next battle or turn. It does not track later changes in the opposing hand and needs no confirmation to continue.',
'The Auditor cannot be captured, acquired as a foreign ghola by Tleilaxu, or receive a leader skill. CHOAM’s own Ghola card can revive it. Supplied Advanced p29 permits ordinary revival each turn even after repeated deaths, for two spice before discounts, using the usual one-leader allowance.',
'Against Moritani, a surviving actual Auditor2 win can open the distinct Advanced native-CHOAM assassination choice. Conversely its matching held Traitor may target Auditor for printed two when a different CHOAM disc survived. The played Auditor is excluded from its own card, while the uniform private opportunity still permits Continue with no spend. Original Mentat retires a revealed card face up and draws one distinct private replacement.',
'The ordinary-cycle first version explicitly excludes Auditor from the five ordinary CHOAM discs: its life or repeated deaths neither delay nor open that cohort. This is a visibly provisional policy, not a publisher clarification or numerical user ruling. Supported expansion starts are available as unfinished previews.',
],
example:
'CHOAM loses a battle but its Auditor survives. The opponent keeps a played Shield and has one unplayed Crysknife. Only Crysknife is eligible: the opponent can pay one spice to CHOAM or let CHOAM inspect it.',
related: [
'faction-choam',
'choam-combat',
'choam-revival',
'battle',
'moritani-assassinate-leaders',
'card-karama',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'Original identity, inspection, payment, Karama, each-turn revival and provisional ordinary cycles remain. Canonical Moritani played-disc and native-target lookup now includes the actual Auditor and matching Traitor2, excluding its played identity. Capture, foreign-Ghola and skill-assignment prohibitions remain.',
evidence: [
'game/choam-auditor.ts',
'game/engine.ts',
'game/moritani-assassinate.ts',
'game/revival.ts',
],
},
{
area: 'Player controls',
status: 'Implemented',
detail:
'Original offer/payment/private inspection and owned Revival controls remain. Actual390px native Moritani controls reveal Frankos4 after Auditor2 wins, reveal a different Auditor target2, or Continue without killing the played Auditor. Original private Hasimir replacement appears at Mentat.',
evidence: ['components/choam-auditor.tsx', 'components/game-table.tsx', 'components/moritani-assassinate.tsx'],
},
{
area: 'AI',
status: 'Partial',
detail:
'All four profiles retain original audit choices and use actual owner-only Moritani target or Continue in all three real Auditor positions. Fifteen accepted API/policy paths are minimal legal participation, not full faction strategy or calibration.',
evidence: ['game/bots.ts'],
},
{
area: 'Documentation',
status: 'Implemented',
detail:
'Printed matching Traitor, strength2 and absolute capture/Ghola/training exclusions remain distinct from provisional ordinary revival cycles. Moritani played-disc exclusion and native target/replacement are linked to their own source contract.',
evidence: ['docs/CHOAM_AUDITOR.md', 'docs/MORITANI_ASSASSINATE_LEADERS.md'],
},
{
area: 'Verification',
status: 'Partial',
detail:
'Current affected15-file134/134, types/lint, fifteen original Auditor API/policy cases and actual390px reveal/Continue/replacement controls pass. Earlier native revival, sampling and persistence evidence stays historical; no full combinations, saved-room or deployed acceptance claim.',
evidence: ['tests/choam-auditor.test.ts', 'tests/choam-auditor-lifecycle.test.ts', 'tests/moritani-auditor-winner.test.ts'],
},
],
},
{
id: 'choam-revival',
title: 'CHOAM force revival',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Pay one spice per force with no normal quantity limit; Karama cancels both benefits.',
steps: [
'CHOAM has no native free revival. Select any number of available forces and pay one spice for each. The table resolves the CHOAM power response before spice or forces move.',
'Karama restores the three-force total allowance and two-spice price for the rest of this Revival phase. Earlier revivals still count. Tleilaxu permission can raise the allowance to five and has its own response.',
'A canceled request within the new allowance uses the new price. If it is too large or cannot be paid, no forces or spice move; choose another request. Completed earlier revivals remain intact.',
'Fremen may grant their allied CHOAM three free revivals. The free allowance is tracked across requests. Tleilaxu may separately offer its ally half price, rounded up on the total payment; canceling that discount retains CHOAM’s native price if it is still active.',
'Emperor-funded extra revivals keep their separate allowance and price. Advanced Tleilaxu special Karama can prevent the normal request before either pricing response. Revival payments go to Tleilaxu when present, with a separate income response.',
'Force revival has tested support. Auditor’s each-turn return and provisional five-ordinary-disc cycles are described in its topic. Combined-expansion pricing and the complete faction audit remain unfinished; supported CHOAM starts are unfinished previews.',
],
related: [
'revival',
'faction-choam',
'tleilaxu-revival',
'card-karama',
'choam-economy',
'choam-auditor',
],
},
{
id: 'choam-economy',
title: 'CHOAM charity and hand limit',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'CHOAM collects before charity claims and holds up to five treachery cards.',
steps: [
'At the start of Charity, resolve CHOAM’s public Karama response. If allowed, CHOAM receives two spice per faction, including itself. In a six-player game this is twelve spice.',
'Other factions claim normally from CHOAM. Under an explicit provisional shortfall policy, CHOAM pays the available ordinary contribution and the Spice Bank supplies any remainder, preserving the full eligible claim. This unresolved funding choice can shift costs to the bank after voluntary transfers. Advanced Bene Gesserit receives two even when wealthy; its cancelable claim resolves before any payment.',
'Canceling CHOAM’s income sends all charity payments that turn to the bank. CHOAM’s own ordinary poverty claim also uses the bank, even after allowed opening income, because its faction payer rule names other factions. Every claimant still has one eligible claim per turn. Cancellation does not affect next turn’s income.',
'CHOAM may hold five treachery cards and can bid for a fifth. A full five-card hand prevents further purchases, including purchases with Karama.',
'Inflation retains its two-turn lifecycle and original wealth threshold. Homeworld additions remain bank-funded regardless of the ordinary payer. Controls explain the provisional shortfall rule without exposing private wallets. CHOAM starts remain labelled previews; full faction, combination and official insolvency acceptance remain unfinished.',
],
related: [
'charity',
'bidding',
'card-karama',
'faction-choam',
'choam-revival',
'choam-inflation',
'choam-market',
'choam-karama',
'choam-combat',
'choam-worthless',
'bg-charity-karama',
],
checklist: [
{
"area": "Implementation",
"status": "Partial",
"detail": "Beneficiary-aware payer fixes CHOAM self-claims. A private quote caps another CHOAM wallet at the ordinary contribution and supplies the provisional bank residual, retaining full entitlement, BG response, once-turn claims, Inflation and Homeworld bank portions. No debt or new persisted field.",
"evidence": [
"game/charity.ts",
"game/engine.ts"
]
},
{
"area": "Player controls",
"status": "Partial",
"detail": "Actual persistent claim controls distinguish ordinary bank payment from the constant provisional CHOAM fallback. Busy, pending income, completed/zero claims, Truthtrance and Nexus Traitor interruption remain blocked; no rival balance is read.",
"evidence": [
"components/charity-claim.tsx",
"components/game-table.tsx",
"tests/charity-claim-controls.test.tsx"
]
},
{
"area": "AI",
"status": "Partial",
"detail": "Eight existing-profile Basic/Advanced paths accept16 legal Charity proposals for both low factions through the same settlement. Strategy, full AI and difficulty calibration remain deferred.",
"evidence": [
"game/bots.ts",
"docs/CHOAM_CHARITY_FUNDING.md"
]
},
{
"area": "Documentation",
"status": "Partial",
"detail": "Separates the sourced self-bank composition from the unconfirmed bank-residual remedy, including the cost-shifting limitation and unfinished full-rule gates.",
"evidence": [
"docs/CHOAM_CHARITY_FUNDING.md",
"docs/RULE_DECISIONS.md"
]
},
{
"area": "Verification",
"status": "Partial",
"detail": "Nine files88/88, types/lint/build, eight actual control/gameplay/GameTable SSR journeys and eight minimal-policy continuations pass. Genuine24/27-action public setup/income/bribe sources preserve original claims, physical pieces/cards and deferred receipts through Bidding. Browser/deployed, complete modes, broader combinations and comprehensive assurance remain open.",
"evidence": [
"tests/fixture-choam-charity-funding.ts",
"tests/choam-charity-funding-engine.test.ts",
"tests/charity-funding-quote.test.ts",
"tests/charity-claim-controls.test.tsx",
"tests/choam-charity.test.ts",
"tests/homeworld-charity-engine.test.ts",
"tests/choam-inflation.test.ts",
"tests/tech-tokens.test.ts"
]
}
],
},
{
id: 'bg-charity-karama',
title: 'Bene Gesserit charity and Worthless cards',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Two charity spice and a cancelable conversion of Worthless cards into Karama.',
steps: [
'Advanced Bene Gesserit receives two spice during charity, including the first turn. At one spice this increases the total to three. A claim at two or more spice opens a Karama response; cancellation spends the turn’s claim without paying the bonus.',
'Every faction can claim charity only once per turn. Spending or giving away the proceeds does not allow a second claim.',
'A Worthless card can pay for a supported Karama use: cancel a faction power, grant a shipment benefit, take an auction card or pay a winning bid. Choose the particular card to spend. The card is discarded immediately; the effect waits for the conversion response.',
'If a Worthless cancellation is itself canceled, the original faction response resumes with its prior confirmations intact. Private details of that suspended response remain private. A real Karama resolves directly.',
'Holding a Worthless card permits an overbid without spending it when outbid. A full hand still prevents direct acquisition. Sealed battle cards and cards committed to prescience cannot also be spent as Karama.',
'While an auction conversion waits, its incoming card reserves one hand slot. A gift may still be accepted if room remains for that card and any cards due back from a hand exchange. Supported Box, gift, Truthtrance and hand-exchange interruptions restore the original conversion without repeating its cancellation, purchase or shipment benefit. A separately summoned worm can add its own ride before the original response resumes.',
'An unsupported cancellation must be rejected before beginning the conversion. Canceling Richese’s normal auction count remains unavailable pending its ruling; canceling an older saved Worthless attempt at that power instead restores the original Richese response.',
'An unfunded winning bid after a canceled conversion currently restarts bidding for the same card as provisional recovery. This exact auction edge case still requires primary-source confirmation before advanced play is enabled.',
],
related: ['charity', 'card-karama', 'bidding', 'faction-beneGesserit'],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
'New cancellations, shipments and normal-auction conversions preserve their original source. Incoming-card capacity includes pending exchanges and purchases. Richese settlement, Moritani cleanup, resumed movement, revealed battle resolution, ordered battle aftermath, aid refunds and collection, combat preparation, terminal income and knowledge, denied No-Fields and CHOAM sales, restored Richese gifts and purchase-income controls, canceled Moritani alliance offers and Ixian substitution, Ixian auction draws and technology, paid-auction income, bonuses and next lots, CHOAM Worthless restoration and unchanged revival requests, canceled Ecaz and Moritani placement and Duke acquisition with shared movement setup, phase income, refunds and victory, canceled movement, owner promises, revival repricing and storm or worm casualties have shared checks before supported cancellation costs. Exhaustive cancellation and pre-effect discard recovery remain unfinished.',
},
{
area: 'Player controls',
status: 'Partial',
detail:
'Existing selected-card, cancellation and payment controls resume after supported private interruptions. Invalid gifts and mismatched saved opportunities reject before changing the table.',
},
{
area: 'AI',
status: 'Partial',
detail:
'Every seat uses the same authoritative cost and capacity checks. Complete Advanced and expansion games at every difficulty remain unverified.',
},
{
area: 'Documentation',
status: 'Partial',
detail:
'This guide explains saved purchases, combined incoming capacity, nested cancellation and the remaining provisional payment rule.',
},
{
area: 'Verification',
status: 'Partial',
detail:
'Focused scenarios cover gifts, Box searches, hand exchanges, summoned worms, unchanged cancellation sources, battle cleanup, resumed movement, final allied traitor calls, revival prices, typed storm or worm losses, capture and technology cleanup, collection boundaries, promise feasibility, malformed saves and concurrent persisted allowance. These do not certify every cancellation suffix or full expansion play.',
evidence: [
'tests/karama-preflight.test.ts',
'tests/richese-settlement-preflight.test.ts',
'tests/bg-karama-opportunity.test.ts',
'tests/bg-karama-nested-controls.test.ts',
'tests/bg-karama-opportunity-recovery.test.ts',
'tests/bg-karama-cancel-context.test.ts',
'tests/karama-battle-preflight.test.ts',
'tests/karama-movement-preflight.test.ts',
'tests/battle-resolution-quote.test.ts',
'tests/battle-aftermath-quote.test.ts',
'tests/battle-aftermath-recovery.test.ts',
'tests/board-resolution-quote.test.ts',
'tests/karama-movement-cancellation.test.ts',
'tests/karama-promise-preflight.test.ts',
'tests/combat-response-quote.test.ts',
'tests/combat-terminal-recovery.test.ts',
'tests/terminal-cancellation.test.ts',
'tests/karama-no-field-cancellation.test.ts',
'tests/ix-substitution-cancellation.test.ts',
'tests/richese-cancellation.test.ts',
'tests/moritani-alliance-cancellation.test.ts',
'tests/restored-cancellation-recovery.test.ts',
'tests/ix-auction-draw-quote.test.ts',
'tests/ix-technology-cancellation.test.ts',
'tests/auction-continuation-quote.test.ts',
'tests/auction-unsold-custody.test.ts',
'tests/choam-storm-quote.test.ts',
'tests/choam-worthless-cancellation.test.ts',
'tests/revival-resume.test.ts',
'tests/placement-cancellation.test.ts',
'tests/phase-resource-quote.test.ts',
'tests/movement-phase-quote.test.ts',
'tests/victory-quote.test.ts',
'tests/placement-cancellation-recovery.test.ts',
'tests/choam-worthless-cancellation-recovery.test.ts',
'tests/auction-cancellation-recovery.test.ts',
'tests/choam-sale-cancellation.test.ts',
'tests/revival-cancellation.test.ts',
'tests/storm-worm-cancellation.test.ts',
'tests/disaster-revival-recovery.test.ts',
],
},
],
},
{
id: 'advanced-advisors',
title: 'Bene Gesserit advisors',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary:
'Peaceful occupation, matching token types, intrusion and preparing for battle.',
steps: [
'Bene Gesserit forces share one token type throughout a territory. The map marks advisors with a dashed outer ring and labels their stance in the territory details.',
'Advisors do not fight, contest stronghold victory, block another faction’s entry, collect spice, earn stronghold income, grant ornithopters or enable Family Atomics. Storms, worms, explosions and Atomics still destroy them.',
'In Advanced, advisors may coexist with their ally without triggering the end-turn alliance constraint in either direction. Neither the advisors nor the allied fighters are lost for that coexistence. Bene Gesserit fighters remain subject to ordinary separation; Basic receives no new advisor exception.',
'After Fremen setup, choose the starting advisor’s territory and sector. Setup conversions remain automatic. During play, advisors alone must become fighters. A ground move into an empty territory or the last outsider’s ground departure now offers Karama prevention after the physical move, before fighter benefits. Allow to convert once; cancellation leaves the completed movement intact.',
'A normal shipment enters as fighters unless joining existing advisors. Opposite-type normal ground arrivals and normal reserves joining advisors now offer Karama matching prevention before movement or payment. Residents keep their type. Provisionally stop a prevented packet into this territory for that action opportunity, leaving a legal replacement and the unused action available. Same-type moves need no flip. Advisors entering another occupied territory may keep their existing optional fighter choice.',
'An allied Fremen Ambassador relocation also offers incoming matching before any selected force moves or collects spice. Residents keep their type. Provisionally, prevention restores the same relocation chooser while denying that same packet here for this Ambassador event. The already-triggered token and ordinary movement/shipment remain unchanged; another legal packet or destination stays available.',
'Fresh Guild cross-transport and Junction board arrivals also offer incoming matching before their original permission, price, payment or transfer. Junction Homeworld groups provisionally enter fighter-side. Prevention leaves the original shipment and grant unused while that same packet here stays unavailable for this producer opportunity; choose another legal packet or destination. Junction permission and tariff remain immune. Secret Ally keeps its actual Nexus until the shipment commits.',
'Planetologist gathering into your residents offers one matching response per incoming origin that must change type. Two changing origins need two separate responses. Provisionally, neither group moves or changes type until every required allowance; preventing any group leaves both origins and the movement unused. That prevented origin packet here is also unavailable to a normal move during the same opportunity. Choose another legal packet or destination.',
'After Trip to Gamont completes during Mentat, the last outsider’s return or empty No-Field reveal can leave advisors alone. Karama can then prevent their conversion without undoing the completed effect or card use. The final CHOAM opportunity resumes afterward; victory waits for its original confirmation. Ordinary Mentat does not gain an extra final chooser.',
'A committed Guild cross-shipment or return to reserves can also leave advisors alone. Original transport permission, rate and any Guild income resolve first; payment, force transfer and shipment use stay committed if the later conversion is prevented. The ordinary ground move remains unused. Cross-shipment arrival follows the conversion once; a reserve return has no arrival.',
'After actual battle losses leave surviving bystanding advisors alone, Karama may prevent their conversion without undoing losses or costs. Mandatory card disposal, original skills and substitution finish first. Provisionally resolve this before optional winner-card cleanup and later aftermath, then resume the original cleanup once. An explosion that destroys the advisors creates no conversion.',
'Native Guild board-to-Homeworld and Junction board transfers can leave advisors alone after payment and physical transfer. Karama prevents only the resulting BG conversion; Junction permission and tariff stay immune. Original income resolves first, then any Junction board arrival resumes once. Original declaration snapshots stay private.',
'A completed Face Dance can leave advisors alone at remote board sources or, with zero replacement, at the battle target. Original force returns, replacement, leader death, revelation and any card cycle finish first. Karama can then prevent only the BG conversion; native Face Dance remains immune. Afterward the original aftermath resumes once.',
'After a storm sector removes the last outsider, surviving advisors elsewhere in that territory must convert. Provisionally finish every current-sector casualty choice first, then offer Karama prevention before the remaining traversal. Completed losses stay committed. Later sectors can still destroy advisors or fighters; advisors destroyed in the same sector create no conversion.',
'A completed Fremen Ambassador relocation or next-turn Discovery force transfer can leave advisors alone at its source. Ambassador movement can also bring advisors to an empty destination. Provisionally resolve their mandatory conversion after movement and any original collection, before the original arrival reactions continue. Karama keeps the transfer committed. Discovery free entry still admits non-advisor forces only.',
'Provisional cancellation duration: a prevented advisor group stays advisors while continuously alone, including across phase and turn changes. Another faction returning or the group becoming empty ends that held occurrence. Later arrivals joining that same group match its stance. Matching-group flip counters and wider combinations remain unfinished.',
'When another faction ships, moves or worm rides into your fighters, immediately choose whether to become advisors. The choice opens a Karama response. Repeated entry can offer a new choice.',
'After another faction’s eligible off-planet shipment, choose a free advisor at the shipment destination or Polar Sink. Retained fighters outside Polar Sink require Polar Sink or decline unless Intrusion already changed them to advisors. The free shipping counter comes first. Provisionally, Polar fighters require a separate incoming matching counter before placement; preventing matching restores the owned choice while that same packet here stays unavailable. Empty arrivals then have a separate committed alone-conversion counter. Earlier locked advisor rules still apply while others remain.',
'After Spice Blow and Nexus, use Prepare advisors for battle during Charity, Bidding, Revival or before the first actual shipment. Quiet boundaries retain current mandatory priority. Each whole-territory flip has its original Karama response; its direct continuation preserves the current phase, auction, readiness and active movement. Declining the initial phase-five chooser leaves this window open. Ordinary allied presence, storm and fresh-advisor locks still restrict eligibility; the recorded supported Ecaz co-side composition remains separate.',
'A current-turn window closes on a committed shipment, including a concealed zero No-Field, independent Ambassador shipment or positive Sneak Attack. Proposals, stopped shipments, ground movement and unshipped turns do not close it. Under the explicit provisional retry policy, Karama prevents that territory’s preparation for the rest of this window; Intrusion, Nexus and automatic flips remain independent. Focused evidence does not certify complete modes, broader priority/optional or remaining automatic-flip cancellation behavior.',
],
related: ['faction-beneGesserit', 'movement', 'battle', 'victory'],
checklist: [
{
"area": "Implementation",
"status": "Partial",
"detail": "Resident Planetologist gathers partition incoming physical origins, queue one normal-format matching counter per changing group and retain a private original order/approval batch until atomic commitment. Fresh Guild/native Secret Ally and Junction board/Homeworld arrival declarations now own precommit matching before their original permission/rate/settlement suffix. Original scope, funding and order stay private; prevention retains unused shipment and grant. Fremen Ambassador incoming matching now owns a separate precommit counter tied to the actual allied grant, with scoped denial and one original CHOAM/transfer/arrival suffix. Residents, consumed trigger and ordinary allowances are retained. Fresh Advanced Spiritual declarations share target legality and distinct shipping/matching/committed-alone stages. A public seven-field source binds a private original chooser/parent/order; late unavailability restores choice before placement, and committed callbacks never recheck withdrawn reserves. Ordinary/Guild continuation and prior alone holds stay intact. Basic and already-recorded legacy responses keep their old protocol.",
"evidence": [
"game/advisor-gather-matching.ts",
"components/planetologist-movement.tsx",
"tests/advisor-gather-matching.test.ts",
"tests/advisor-gather-matching-engine.test.ts",
"tests/fixture-advisor-gather-matching.ts",
"game/advisor-transport-matching.ts",
"game/transport-quote.ts",
"game/junction-transport-options.ts",
"tests/advisor-transport-matching.test.ts",
"tests/advisor-transport-matching-engine.test.ts",
"tests/fixture-advisor-transport-matching.ts",
"tests/fixture-advisor-secret-transport-matching.ts",
"game/advisor-ambassador-matching.ts",
"tests/advisor-ambassador-matching.test.ts",
"tests/advisor-ambassador-matching-engine.test.ts",
"tests/fixture-advisor-ambassador-matching.ts",
"tests/fixture-spiritual-advisor-flow.ts",
"tests/spiritual-advisor-engine.test.ts",
"tests/spiritual-advisor.test.ts",
"game/spiritual-advisor.ts",
"docs/SPIRITUAL_ADVISORS.md",
"docs/ADVISOR_MATCHING.md",
"game/advisor-automatic-flip.ts",
"game/advisors.ts",
"game/board-resolution-quote.ts",
"game/advisor-preparation-window.ts",
"game/engine.ts",
"game/movement-phase-quote.ts",
"game/karama-context.ts",
"game/karama-movement-cancellation.ts"
]
},
{
"area": "Player controls",
"status": "Partial",
"detail": "Gather drafts share normal/gather denial quotes; persistent progress identifies each required changing origin. Partial allowance keeps both groups in place. Seven native gather GameTable SSR journeys pass; callback/hydration/browser acceptance remains separate. Transport and Junction quotes share scoped packet denials and persistent before-payment matching guidance; twenty native GameTable SSR journeys and two controlled Truthtrance cases pass. Ambassador relocation drafts and persistent matching notices reuse the shared packet denial quote. Six native declaration/response/replacement GameTable SSR journeys pass; callback/hydration and browser acceptance remain separate. Shared projected target choices drive ordinary/Guild buttons and minimal bots. Persistent notices distinguish uncommitted shipping/matching from an already-arrived force awaiting conversion. Same prevented matching packet stays blocked when the original chooser returns. Fifteen native GameTable SSR journeys and two controlled late-stance cases pass; callback/hydration and browser acceptance remain separate.",
"evidence": [
"game/advisor-gather-matching.ts",
"components/planetologist-movement.tsx",
"tests/advisor-gather-matching.test.ts",
"tests/advisor-gather-matching-engine.test.ts",
"tests/fixture-advisor-gather-matching.ts",
"game/advisor-transport-matching.ts",
"game/transport-quote.ts",
"game/junction-transport-options.ts",
"tests/advisor-transport-matching.test.ts",
"tests/advisor-transport-matching-engine.test.ts",
"tests/fixture-advisor-transport-matching.ts",
"tests/fixture-advisor-secret-transport-matching.ts",
"components/ambassador-movement.tsx",
"docs/SPIRITUAL_ADVISORS.md",
"docs/ADVISOR_MATCHING.md",
"docs/ADVISOR_AUTOMATIC_FLIPS.md",
"components/advisor-preparation.tsx",
"components/game-table.tsx",
"tests/advisor-preparation-controls.test.tsx"
]
},
{
"area": "AI",
"status": "Partial",
"detail": "Minimal gather candidates reuse the partition quote so normal/gather prevented packets cannot bypass one another. Eight native gather paths across existing profiles accept sixteen response/replacement actions; no strategy refinement or calibration. Transport policies filter prevented packets through the same quotes; sixteen native transport paths across existing profiles accept32 response/replacement actions. No strategic refinement or difficulty calibration. Fremen Ambassador candidates reuse the public packet quote to omit prevented retries. Eight native existing-profile paths accept sixteen response/replacement actions after Ambassador matching; no strategy refinement. Minimal policies consume projected legal targets, including all-blocked matching fallback to decline. Twenty-four paths across four existing profiles, two native parents and three stances accept72 choice/response actions. This is legal participation; no strategy refinement or difficulty calibration.",
"evidence": [
"game/advisor-gather-matching.ts",
"components/planetologist-movement.tsx",
"tests/advisor-gather-matching.test.ts",
"tests/advisor-gather-matching-engine.test.ts",
"tests/fixture-advisor-gather-matching.ts",
"game/advisor-transport-matching.ts",
"game/transport-quote.ts",
"game/junction-transport-options.ts",
"tests/advisor-transport-matching.test.ts",
"tests/advisor-transport-matching-engine.test.ts",
"tests/fixture-advisor-transport-matching.ts",
"tests/fixture-advisor-secret-transport-matching.ts",
"game/advisor-ambassador-matching.ts",
"tests/advisor-ambassador-matching.test.ts",
"tests/advisor-ambassador-matching-engine.test.ts",
"tests/fixture-advisor-ambassador-matching.ts",
"tests/fixture-spiritual-advisor-flow.ts",
"tests/spiritual-advisor-engine.test.ts",
"tests/spiritual-advisor.test.ts",
"game/spiritual-advisor.ts",
"docs/SPIRITUAL_ADVISORS.md",
"tests/fixture-advisor-matching-move.ts",
"tests/advisor-matching-engine.test.ts",
"tests/advisor-matching.test.ts",
"game/advisor-matching.ts",
"docs/ADVISOR_MATCHING.md",
"tests/fixture-advisor-relocation-flip.ts",
"tests/advisor-relocation-flip-engine.test.ts",
"tests/storm-worm-cancellation.test.ts",
"tests/fixture-advisor-storm-flip.ts",
"tests/advisor-storm-flip-engine.test.ts",
"tests/advisor-face-dance-flip-engine.test.ts",
"tests/fixture-advisor-face-dance-flip.ts",
"tests/advisor-homeworld-flip-engine.test.ts",
"tests/fixture-advisor-homeworld-flip.ts",
"tests/advisor-battle-flip-engine.test.ts",
"tests/fixture-advisor-battle-flip.ts",
"tests/advisor-gamont-flip-engine.test.ts",
"tests/advisor-transport-flip-engine.test.ts",
"tests/advisor-automatic-flip-engine.test.ts",
"game/bots.ts",
"docs/ADVISOR_PREPARATION.md"
]
},
{
"area": "Documentation",
"status": "Partial",
"detail": "Resident gathering records one counter per changing origin, provisional atomic commitment, shared normal denials and preserved enemy-only/empty/legacy boundaries. Guild/Junction/World/Secret matching records provisional response priority, immune Junction tariff, private scope and fresh-declaration cutover. Source and native/control evidence remain separate from broader mode acceptance. Supplied physical28 redirects retained non-Polar fighters and starts Spiritual Advisors advisor-side, with no alone-conversion Polar exemption. Distinct physical17 counters, provisional Polar matching/restored-choice remedy, continuously-alone duration and the legacy source cutover are explicit. Wider combinations remain open.",
"evidence": [
"docs/SPIRITUAL_ADVISORS.md",
"docs/ADVISOR_MATCHING.md",
"docs/ADVISOR_AUTOMATIC_FLIPS.md",
"docs/ADVISOR_PREPARATION.md",
"docs/RULE_DECISIONS.md",
"docs/ECAZ_OCCUPY_RULES.md"
]
},
{
"area": "Verification",
"status": "Partial",
"detail": "Resident gather proof passes15 files274/274, types/lint/build, seven native group-response/replacement GameTable SSR journeys and eight existing-profile paths. Genuine78/73-action sources earn Planetologist, original Karama, paid origins and real funding/Intrusion. Partial allowance is physically inert; second prevention retains the whole movement, and normal/gather denials cannot be bypassed. Fixture type feedback is repaired. Earlier results retain their original scope. The fresh transport batch passes25 files437/437, types/lint/build, twenty native Guild/Junction/World/Secret GameTable SSR journeys, two controlled Truthtrance cases and sixteen existing-profile paths. Genuine85/82/36/74-action sources earn original grants; permission and actual-discount responses remain separate, and Secret spends Nexus once at commitment. Review repairs the owned Truthtrance shadow and price consistency; smoke/type feedback is repaired. Earlier results below retain their original scope. The new Fremen Ambassador batch passes17 files358/358, types/lint/build, six native declaration/response/replacement GameTable SSR journeys and eight existing-profile paths. Genuine81-action sources earn a Nexus alliance and actual allied grant; both directions and responses retain trigger/ordinary allowances. One zero/absence assertion is repaired. The following earlier frozen results retain their original scope. The frozen batch passes22 files390/390, types/lint/build, fifteen native ordinary/Guild declaration/response/GameTable SSR journeys, two controlled late-stance cases and twenty-four existing-profile paths. Public35/37-action ordinary and45/48-action Guild sources earn actual shipment/Intrusion; a second genuine grant preserves the held group. Four older matching/projection expectations are updated. Controlled legacy responses are format compatibility, not saved captures. Wider Homeworld/Tech/Nexus/No-Field combinations, other matching producers, full modes and final assurance remain open.",
"evidence": [
"game/advisor-gather-matching.ts",
"components/planetologist-movement.tsx",
"tests/advisor-gather-matching.test.ts",
"tests/advisor-gather-matching-engine.test.ts",
"tests/fixture-advisor-gather-matching.ts",
"game/advisor-transport-matching.ts",
"game/transport-quote.ts",
"game/junction-transport-options.ts",
"tests/advisor-transport-matching.test.ts",
"tests/advisor-transport-matching-engine.test.ts",
"tests/fixture-advisor-transport-matching.ts",
"tests/fixture-advisor-secret-transport-matching.ts",
"game/advisor-ambassador-matching.ts",
"tests/advisor-ambassador-matching.test.ts",
"tests/advisor-ambassador-matching-engine.test.ts",
"tests/fixture-advisor-ambassador-matching.ts",
"tests/fixture-spiritual-advisor-flow.ts",
"tests/spiritual-advisor-engine.test.ts",
"tests/spiritual-advisor.test.ts",
"game/spiritual-advisor.ts",
"docs/SPIRITUAL_ADVISORS.md",
"tests/fixture-advisor-matching-move.ts",
"tests/advisor-matching-engine.test.ts",
"tests/advisor-matching.test.ts",
"game/advisor-matching.ts",
"docs/ADVISOR_MATCHING.md",
"tests/fixture-advisor-relocation-flip.ts",
"tests/advisor-relocation-flip-engine.test.ts",
"tests/storm-worm-cancellation.test.ts",
"tests/fixture-advisor-storm-flip.ts",
"tests/advisor-storm-flip-engine.test.ts",
"tests/advisor-face-dance-flip-engine.test.ts",
"tests/fixture-advisor-face-dance-flip.ts",
"tests/advisor-homeworld-flip-engine.test.ts",
"tests/fixture-advisor-homeworld-flip.ts",
"tests/advisor-battle-flip-engine.test.ts",
"tests/fixture-advisor-battle-flip.ts",
"tests/advisor-gamont-flip-engine.test.ts",
"tests/fixture-advisor-gamont-flip.ts",
"tests/advisor-transport-flip-engine.test.ts",
"tests/fixture-advisor-transport-flip.ts",
"tests/advisor-automatic-flip-engine.test.ts",
"tests/advisor-automatic-flip-quote.test.ts",
"tests/fixture-advisor-automatic-flip.ts",
"tests/fixture-advisor-preparation.ts",
"tests/advisor-preparation-engine.test.ts",
"tests/advisor-preparation-window.test.ts",
"tests/advisor-preparation-controls.test.tsx",
"tests/moritani-force-leader.test.ts",
"tests/advisors.test.ts",
"tests/movement-phase-quote.test.ts",
"tests/karama-movement-cancellation.test.ts",
"tests/fixture-semuta-battle-karama.ts",
"tests/fixture-semuta-homeworld-battle-loser.ts",
"tests/fixture-semuta-homeworld-battle-winner.ts",
"tests/fixture-semuta-homeworld-choam.ts",
"tests/semuta-homeworld-battle-winner.test.ts"
]
}
],
},
{
id: 'homeworlds',
title: 'Homeworlds: population and occupation',
category: 'Advanced & expansions',
coverage: 'Partial',
summary:
'Inspect all thirteen Homeworld cards, their population faces and occupied effects. Gameplay integration is in development.',
searchText: HOMEWORLD_CARDS.map((card) =>
[
card.name,
...card.high.gameplay,
...card.low.gameplay,
...card.occupied.gameplay,
].join(' '),
).join(' '),
steps: [
'Homeworlds are an optional module from Ecaz & Moritani, available under the official rules with Basic or Advanced play. They are separate locations outside Arrakis; they do not receive ordinary storm movement or count as ordinary strongholds.',
'Clean World starts admit registered classic/no-deck and selected-family paired/mixed/all-three rosters with optional independent cards, Tech3–6 and Advanced Strongholds2–6. Skills or Nexus are not incidental prerequisites. Fresh setup includes original occupation qualification, bank/percentage benefits, native Tupile and Ecaz victory state alongside physical locations; existing played games are not retrofitted. Original module-specific profiles and complete-mode gates stay separate.',
'Fresh World all14 uses actual registered seats and selected ordinary decks in Basic/Advanced, including mixed Ecaz/Moritani with E1/E2 natives. Neither Nexus, independent cards, one exact family nor a seated native from every selected deck is required. Original Tech3+/Advanced Strongholds2+ may remain. Existing no-card Nexus/Discovery and Semuta keep their separate limits. Actual hands, Ix card-before-training and native five-disc assignment remain; Auditor/shared Duke never train. Native Suk saves stay at that home; external Emperor returns retain original typed destinations. Nested locations gain no ordinary Stronghold effect or invented saved history.',
'Fresh clean registered World/all14 starts also include original occupation benefit state beside normal Banker. Admission and native role limits remain. Real other-payer Bank payments can earn a deferred skill grant; occupied Collection and phase tokens do not become immediate Banker cash. Actual Mentat settles the original skill receipt once. Nexus/Discovery/Semuta contexts retain their own scope; played games are not retrofitted.',
'Existing admitted World starts with Nexus and/or Discoveries also initialize original occupation benefits through fresh setup, optionally with Skills and original phase modules. Occupied Collection, ordinary deposits, nested entry, earned Nexus/Stronghold cards and deferred Banker retain their separate events. Original start/role limits remain; existing occupation history is never replaced and played games are not converted.',
'Each faction uses its own card and matching world token. In Basic play the Emperor uses Kaitain alone. Advanced play adds Salusa Secundus for its Sardaukar; movement can transfer both force types between the two Emperor worlds.',
'Provisional physical Ornithopter composition permits independently legal Imperial transfers as first or second groups, mixed with ground movement or another distinct typed World group. Original normal/starred pools prevent counter reuse after merging; fresh World-aware snapshots and the recorded older-flight inference retain the card event. Range3 grants no new World route. Only completed two-group use earns the extra movement credit; one card is discarded, and actual later Hajr is independent.',
'Registered selected-family World all14 composes independent36/38/50-card setup and original Tech3+/Advanced Strongholds2+, including mixed E3. Clean bare World cards now use the registered selected-family profile with optional phase modules and original occupation state. Recruits uses current native rates/typed limits and recorded paid/free use; Banker and phase-end Axlotl remain separate. Reinforcements seals exact normal-first sources and excludes an own-World fee from dial/casualties while preserving original face/support. Suk rescues committed losses, not fees. Harass returns actual visitors through native custody and is forbidden on every own World. Original Nexus/Discovery/Semuta and role/effect guards remain.',
'Native reserves determine high or low population. Salusa counts Sardaukar, while the other cards count the faction’s reserves there. Reaching the high face’s minimum restores high population. Occupation also applies the low penalty.',
'Low population normally grants one additional free force revival and one additional bank spice when collecting CHOAM Charity. Salusa grants neither bonus; CHOAM’s Tupile reverses the usual pattern by granting an advantage while low and a penalty while high.',
'A qualifying charity claim separates its ordinary payer from the extra bank spice. Inflation doubles both portions or prevents the whole collection. Canceling Bene Gesserit charity prevents both portions of that claim.',
'Quote a group of normal revivals using population before that group returns. A later group uses the resulting population: a low Fremen group can return four free forces, but returning a smaller group that restores high population can remove the fourth allowance. La La La prevents the full free rate.',
'When Southern Hemisphere supports a revival that leaves Fremen at high population — including a return that first reaches the high side: the population resulting from the return decides the ability — Fremen may place newly revived starred forces in territories already containing their forces, or leave them in reserves. Fresh Basic multi-star returns provisionally permit separate portions and destinations: finish each arrival before choosing the next portion, or leave all remaining stars in reserves. The original revived batch and its entitlement stay fixed. Existing whole-group returns keep their earlier procedure. This includes supported ordinary, Emperor-funded and Ghola revivals. Evaluating the resulting population is a visibly provisional composition policy, not a located publisher timing ruling. Basic keeps the starred counters; Advanced still limits Fedaykin revival to one per turn.',
'Under the same provisional resulting-population policy, an ordinary Free Revival that leaves Tleilax at high population may send its newly revived free group together to one permitted territory or Homeworld, or leave it in reserves. This includes the return that first reaches the high side. Paid counters in the same return and Ghola returns do not join this group. An allied Homeworld is forbidden. Placement costs no additional spice and uses no ordinary shipment or movement allowance.',
'The revival placement choice shows unavailable destinations. A return that first restores high population is admitted under the provisional resulting-population policy above. Physical Arrakis entry provisionally earns Intrusion, eligible Terror and Ambassador reactions; off-planet Tleilax placement also earns BG Spiritual Advisors. Southern placement remains on-planet. Original revival income waits for those children, including a committed Sneak Attack reserve group, without another shipment fee or allowance. Preventing a BG power leaves the revived group committed. Terror and Ambassador owners act in storm order when both qualify. Fresh Basic Southern allocation shows exact remaining quantities and permits different current legal destinations under the provisional per-star interpretation. Southern uses sectors outside the storm and keeps the ordinary Hidden Mobile Stronghold entry route; Tleilax keeps its direct-entry restriction. Tleilax still sends the whole free group to one destination, and allied Homeworlds remain forbidden. These SEND compositions are explicit provisional interpretations, not a new publisher FAQ.',
'While Tupile has at least eleven native forces, CHOAM cannot discard Worthless cards for spice through either ordinary sale price or a CHOAM Ambassador. Non-Worthless duplicate sales, allied trades and the Advanced CHOAM Karama cash-in retain their own rules. If a Ghola revival raises Tupile before a declared sale settles, that Worthless card stays in hand and earns no spice.',
'At the end of Bidding, high-population Kaitain lets Emperor pay two spice per selected Treachery Card to discard it. This does not play the card or begin another auction. Emperor and CHOAM share the closing opportunity, so sales, allied trades and paid discards can occur in either order. Current hands, spice and native population determine each action. Finish when ready; a new action clears readiness.',
'In supported payment cases, low Kaitain halves Emperor’s Treachery payment income and low Junction halves eligible Guild shipping income, rounded up. The payer still pays the full cost. For example, a five-spice auction payment gives low-population Emperor three spice and leaves two in the bank. The income opportunity shows the original payment, current receipt and bank remainder. A population change before collection updates the split; ordinary Karama can still prevent the separate faction income.',
'Guild’s own shipment contribution goes to the Bank before any low-Junction reduction. The user-ruled low receipt rounds the whole eligible invoice once, including two odd contributions. Original payer costs do not change. Fresh occupation previews retain the printed occupier share; ordinary native income cancellation banks only its native portion and does not cancel the protected occupied share.',
'With at least seven native forces on Giedi Prime, Harkonnen automatically gains two bank spice after collecting positive desert spice during Spice Collection, once for the whole phase. Several deposits still earn only two. Shared Ecaz spice qualifies when Harkonnen actually receives a positive allocation; a zero share, stronghold income or technology income does not qualify. Refreshing preserves the completed bonus.',
'With fewer than eight native forces on Grumman, Moritani can reveal Terror only when at least three forces enter together. Count each incoming physical counter once, including advisors, and a concealed No-Field as one regardless of its hidden value. Forces already at the destination do not count. High Grumman’s separate Collection choice can add a token to an existing stronghold stack or return an unrevealed placed token to hidden supply for four bank spice, once per Collection.',
'While Ecaz has at least seven native reserves, it automatically receives three bank spice for each discarded poison weapon, including its own. Poison Blade and Poison Tooth qualify; Chemistry qualifies only when used as a weapon. Poison defenses and Residual Poison do not qualify. Ecaz sees its income in a private Homeworld record; private discarded faces stay private.',
'Battle cleanup checks population when each card is actually discarded. Losing-card disposal comes before winner casualties. Mandatory winning cards, including a used Poison Tooth, are discarded after winner casualties and any Ixian substitution, before optional winning-card cleanup. If Ecaz falls below seven during its winning losses, its later card discards earn no poison income.',
'If Tleilax starts Revival at low population, it receives no bank income for other factions’ ordinary free revivals throughout that phase, even if its population rises. Paid revival receipts and the separately named Ghola reward remain available.',
'Low Caladan prevents the phase-opening Spice Blow peek. Low Wallach IX prevents free Spiritual Advisors, while high Wallach IX allows one or two to Polar Sink after another faction’s qualifying shipment. Accompanying elsewhere still uses one. Low Ix prevents moving the mobile stronghold; low Richese prevents moving a No-Field token. Physical-force movement and ordinary paid shipments retain their separate rules.',
'Newly revived eligible placement permits Advanced BG Intrusion when entering fighters. Under the provisional SEND composition, Tleilax free forces sent from off-planet to Arrakis also earn ordinary Spiritual accompaniment; Southern on-planet placement does not. The original group stays placed through independent BG counters, and original revival income waits until arrival finishes. No fee, ordinary allowance, Guild stop or Revival-phase industry is added. Phase-four Spiritual sources retain the original return or actual Guild child. Terror-entry continuations remain unfinished.',
'After a supported Atreides victory, Caladan with at least six native reserves may add one reserve force to the battle location if an Atreides force survives there. The owned choice follows ordinary battle cleanup and offers an eligible sector or the original foreign Homeworld. This spends no spice or shipment allowance. Leaving the force in reserves is optional; a battle on Caladan itself cannot create an extra counter from reserves already there.',
'Caladan reinforcement keeps the original battle identity through refresh and supported Ambassador reactions, so the same victory cannot add a second force. Under the provisional order, reinforcement joins the original winning army before any later Face Dance; its surviving counter counts in the current replacement limit and returns with that army. A return that raises Caladan does not create a second grant. Provisional HMS placement adds to the surviving won interior without an ordinary shipment. Advanced Intrusion resolves before the original Ambassador/Terror entry; Terror classification is provisional. Storm-sector entry stays unavailable, and nested module interactions remain open.',
'A positive Sneak Attack after Caladan reinforcement is a separate off-planet group. Provisionally finish both owners of the original entry before its own BG and entry reactions. A declined Ambassador may react again to that new group. Zero creates no source. Basic free Polar and Advanced accompaniment retain their independent prevention/matching/alone decisions; none refunds or repeats the committed Moritani group or Caladan addition.',
'At low population, Tupile lets CHOAM learn an opposing faction’s current spice and either its weapon count or defense count, once per faction for the entire game. CHOAM must have forces on that faction’s Homeworld, or that faction must have forces on Tupile. Either Emperor Homeworld supplies the same single entitlement. The answer is recorded privately as a historical observation and does not update when that faction’s hand or spice changes.',
'Choose weapons or defenses in the private Tupile panel at a settled action boundary. The server answers immediately without an opponent confirmation, and does not expose individual cards. Count physical held Treachery cards by their default category: Weirding Way is a weapon, Chemistry is a defense, while Worthless cards and leader substitutes count as neither. Selecting the other category later cannot renew a faction’s used entitlement.',
'Occupation removes Tupile’s low advantage. New Homeworld games record qualifying foreign presence from setup, including brief sole occupation during ordered battle losses and presence at turn boundaries. Earlier saves without that history, or histories with a Tupile qualifier whose continuing entitlement is unresolved, cannot make a new intelligence request. Already learned observations remain readable. Recorded qualification does not itself award occupied income or settle its expiry.',
'During Spice Collection, Grumman with at least eight native reserves may add one available Terror token to an ordinary stronghold already holding Terror, or return one unrevealed placed token to hidden supply, then collect four bank spice. Hidden supply identities rotate without revealing the returned face. This opportunity is separate from Mentat placement and follows pending shared spice allocation. Declining collects nothing. Under the user-selected Cunning interpretation, an ordinary eligible addition must first exist; an unallied Moritani holder may then spend its Nexus to broaden that addition’s destination to static Arrakis.',
'When several Terror tokens share a stronghold, Moritani privately selects one for an eligible entry, then chooses whether to reveal it or offer an alliance. The other tokens remain hidden. The board shows the public stack count; refresh preserves the selected token and original arrival.',
'While Junction has high population, Guild may offer another faction transport at half or full price during that faction’s shipment. The recipient can choose exact forces from one territory or Homeworld, including a return to their own world. An allied Homeworld remains forbidden. Half-price totals round up; five forces to a Homeworld cost three spice. The Junction route and tariff resist Karama; payment recipients retain their separate rules. With an ordinary purchased price active, acceptance explicitly acknowledges that it ends unused without a card refund; only actual delivery consumes that grant. This selected product composition does not halve again or impose bank-only payment.',
'Homeworld shipment, battle and occupation have special rules. Occupiers receive the printed Collection income and card effects. An alliance can gain a special Homeworld victory through high-population Ecaz; this is separate from ordinary stronghold victory.',
'The fresh local homeworld-occupation profile uses original selected decks and no other modules. Advanced occupation begins with sole foreign presence and its benefits remain until the occupier’s last force leaves, including across contests, native population recovery and later turns. A later sole arrival after departure creates a new source epoch. Basic uses a visibly provisional current-sole policy: the present sole foreign faction controls occupied income, Bidding effects, defenses, percentage shares and the Ecaz-victory holding, and that entitlement ends immediately on departure, contested presence or native repopulation. Basic Tupile slot leasing keeps its own conservative original-epoch gate. Recorded history, never a live garrison snapshot, always proves entitlement.',
'Printed occupied bank income is collected once and can be immediately allocated to a reciprocal ally. Separate Kaitain and Junction paid-receipt shares and Richese’s actual net sale income use frozen original invoices without charging the payer again. Southern Hemisphere rounds one completed actual native Collection total, including settled shared and occupied-bank credits; it redistributes rather than collecting twice. Ordinary native income cancellation remains distinct from printed occupied effects.',
'Proved Wallach IX occupation protects the occupier and ally from native Voice; Tleilax prevents native Face Dancers against them; Grumman prevents revealing Terror on their entry. Occupied Salusa removes Sardaukar advantage without changing starred physical identity. These printed effects cannot be restored or canceled with Karama. Other occupied powers and full Homeworld acceptance remain open.',
'Caladan shares the admitted original Bidding inspection with the occupier, not its ally; native inspection can still be prevented independently. Ix gives the occupier the actual private drawn pool and selection, not unrelated setup or Technology. Richese sets its own method/direction before the occupier chooses only the physical cache card; seller, payment and other decisions stay native. Giedi gives one original purchase bonus to the occupier or its reciprocal ally with real receiver capacity, even when Harkonnen’s purchased card fills its hand.',
'The separately marked fresh Tupile entry grants one hand slot to the proved occupier and reciprocal ally. Every server-derived hand limit includes it, so Harkonnen can hold nine without receiving a tenth bonus. After a proved loss, each old holder privately selects exactly its excess original eligible cards to return to the normal limit; committed cards remain protected. Original phase opening and remaining movement resume without another shipment or payment. Basic unknown lifecycle blocks rather than guesses cleanup. Advanced departure can restore CHOAM’s low intelligence without clearing its previous answers or used factions.',
'The fresh native Ecaz high-card preview shows a separate prospective conjunction: native seven-plus population, at least one actual jointly held stronghold and proved current alliance holdings of two other native factions’ Homeworlds. This does not change the ordinary four-stronghold or three-joint Ecaz targets. Original Mentat decides the win before prediction/fallback; source uncertainty remains blocked. Duke authority and the Ecaz-only revival ruling are separate.',
'At High, Richese may send paid physical reserve forces beside one concealed No-Field. The persistent selector names only actual counters; the marker stays priced as one and its hidden value stays in reserves until reveal. One rounded invoice for marker plus paid group and pre-group High timing are provisional. Actual departure can cross Low; later reveal uses remaining reserves. The optional Smuggler force stays separately free. Original No-Field/Guild responses stay. A two-token Cunning pair now explicitly retains its paid group and original receipt: reserve paid counters first, then cap immediate faceup materialization by remaining stock; both tokens share one priced unit.',
'Ix High adds up to two physical Suboids from Tanks per actually paid Cyborg in an ordinary revival. The persistent quote follows selected free types. Its additional allowance, partial shortage and free-event income are explicit provisional compositions; prior La La La suppresses new bonuses, while native cancellation and atomic request-stop outcomes remain. Recruits does not multiply the bonus. Old accepted requests are not retrofitted.',
'The card collection below is available for reference. Homeworld starts are enabled in supported fresh preview envelopes; the remaining occupation variants and combinations stay under verification.',
'Original classic World/Nexus uses base33 or selected independent36 with optional all14, Tech3+ and Advanced Strongholds2+ with real first-Storm token owners and end-Mentat card claims. Guild World shipments and Cunning visitor returns pass native permission/rate before the funded fee; borrowed Caladan fee1/fee5 settles to the distinct holder while typed custody waits. Temporary-Sardaukar own-Kaitain battles keep ordinary-only casualties and true Salusa custody; Giedi native-call cancellation follows original capture/execution/cleanup and one private replacement. Normal Smuggler companions may also supply the fee in core. On an own World, Reinforcements provisionally spends ordinary non-role counters first, reducing temporary Sardaukar roles only when converted counters pay. Kaitain7 paying local3 leaves four temporary roles on four normals; the original five-counter declaration and pre-fee traits remain. Other envelopes and complete-mode acceptance stay separate.',
],
example:
'Atreides with six reserves on Caladan uses the high face. Dropping to five uses the low face and removes the next-Spice-Blow inspection advantage. Either face adds two to native battle strength on Caladan.',
related: [
'ecaz-modules',
'setup',
'revival',
'movement',
'battle',
'victory',
],
checklist: [
{
area: 'Implementation',
status: 'Partial',
detail:
"Fresh Basic Southern multi-star returns have provisional per-star allocation with exact child arrivals, a fixed original grant and one deferred income. All 13 cards, saved typed custody, supported-deck setup, Emperor movement, native Arrakis shipment sources, revival destinations, low charity/free-revival benefits, Tleilax’s phase-start income penalty and high-Salusa free Sardaukar support are connected. Low Salusa prohibits free Sardaukar revival from ordinary, Ghola, Emperor special Karama or Tleilaxu Ambassador sources; paid ordinary Sardaukar and eligible normal or leader returns remain. Retained occupation after repopulation is provisional. World-to-world invasion, Guild transport from Arrakis and Guild native returns use exact source pools, funding and interception. Homeworld battles connect native bonuses, limited explosion casualties, native-only Traitors and Face Dancers, and Ixian substitution. Junction offers connect sponsored board and Homeworld routes, including own returns, foreign departures and their distinct payments. Caladan foresight, Wallach advisor counts, Ix stronghold movement and Richese token movement now respect native population. High Tupile blocks Worthless sales and Ambassador payouts, including after an interrupted Ghola revival. Kaitain paid discards share the closing Bidding opportunity with CHOAM; Ecaz poison income uses actual physical disposal and current native population. Mandatory winning-card disposal follows winner casualties. Supported low Kaitain and Junction payment receipts preserve the payer’s cost and use current native population; divergent allied rounding remains guarded. Giedi grants its once-per-phase bonus on actual positive desert receipts, including settled Ecaz shares. Low Grumman uses original public entry counts across Terror and competing-reaction checks. Richese High now connects actual paid reserve companions, one combined provisional invoice, original marker proof/responses, physical withdrawal and later reserve-capped reveal. Nexus Cunning retains that explicit paid group in its pair receipt, reserving paid counters before immediate materialization; original counter and spent-card outcomes remain. Ix High now returns physical Suboids for paid Cyborgs with provisional additional allowance and shortage handling, retaining typed free allocation, original invoice and free-event income. Southern and Tleilax preserve the exact eligible revival group through one optional placement. Provisional physical entry now opens native BG, Terror and Ambassador responses, retaining the original held income, independent counters and ordered overlap; a committed Sneak group has its own arrival source. Southern placement provisionally retains the ordinary storm and HMS entry route; Tleilax retains the Ixian-only direct off-planet restriction. Fresh occupation additionally connects bank and percentage receipts, completed Southern Collection, immediate sharing, Caladan inspection, displaced Ix pool, Richese card-only choice with native terms, real Giedi receiver choice and native protections. Fresh native CHOAM entries additionally connect original Tupile slots, actual normal-limit cleanup and restored low-query authority without resetting usage. Advanced retains sole-qualified ownership until last departure. Basic Tupile provisionally follows current sole control: observed departure, contest or native high population ends its slot, while a new activation waits for earlier normal-limit cleanup. Continuous turns do not stack slots or reset intelligence use. Exceptional Duke, concealed transport and full/public acceptance remain unfinished. Already purchased ordinary Karama now composes with immune Junction through explicit unused-price acknowledgment; original tariff/payees stay unchanged and only delivered transport consumes its grant.",
evidence: [
'game/homeworld-module-profile.ts',
'game/faction-module-profile.ts',
'game/reinforcements-homeworld.ts',
'components/reinforcements-sources.tsx',
'tests/nexus-world-independent-cards.test.ts',
'tests/nexus-world-independent-battles.test.ts',
'game/caladan-arrival.ts',
'tests/caladan-sneak-source.test.ts',
'tests/caladan-sneak-engine.test.ts',
'tests/fixture-caladan-sneak.ts',
'game/homeworld-victory-reinforcement.ts',
'components/caladan-reinforcement.tsx',
'tests/caladan-arrival-engine.test.ts',
'tests/caladan-arrival-controls.test.tsx',
'docs/HOMEWORLD_VICTORY_REINFORCEMENT_RULES.md',
'game/homeworld-cards.ts',
'game/richese-homeworld-shipment.ts',
'game/homeworld-payment-options.ts',
'tests/fixture-richese-homeworld-cunning.ts',
'tests/richese-homeworld-cunning-runtime.test.ts',
'components/richese-homeworld-forces.tsx',
'tests/fixture-richese-homeworld-shipment.ts',
'tests/richese-homeworld-shipment-runtime.test.ts',
'tests/richese-homeworld-shipment-price.test.ts',
'tests/richese-homeworld-shipment.test.ts',
'tests/richese-homeworld-forces-controls.test.ts',
'game/ix-homeworld-revival.ts',
'components/ix-homeworld-revival.tsx',
'tests/fixture-ix-homeworld-revival-bonus.ts',
'tests/ix-homeworld-revival.test.ts',
'tests/ix-homeworld-revival-bonus-runtime.test.ts',
'tests/ix-homeworld-revival-continuation.test.ts',
'tests/ix-homeworld-revival-controls.test.ts',
'game/homeworld-game.ts',
'game/homeworld-native-reserves.ts',
'game/homeworld-revival-deployment.ts',
'game/homeworld-revival-destinations.ts',
'game/homeworld-revival-return.ts',
'tests/fixture-southern-allocation.ts',
'tests/southern-allocation-runtime.test.ts',
'game/homeworld-victory-reinforcement.ts',
'game/homeworld-victory-return.ts',
'game/grumman-collection.ts',
'game/grumman-collection-return.ts',
'game/grumman-collection-options.ts',
'components/grumman-collection.tsx',
'components/terror-board-markers.tsx',
'game/homeworld-arrival.ts',
'game/homeworld-shipment.ts',
'game/guild-homeworld-shipment.ts',
'game/junction-transport.ts',
'game/junction-offer.ts',
'game/homeworld-alliance.ts',
'game/homeworld-benefits.ts',
'game/homeworld-mobility.ts',
'game/homeworld-card-economy.ts',
'game/homeworld-payment-income.ts',
'game/homeworld-collection.ts',
'game/homeworld-occupation-history.ts',
'game/homeworld-stable-occupation.ts',
'game/homeworld-occupied-income.ts',
'game/homeworld-occupied-percentage.ts',
'game/homeworld-occupied-bidding.ts',
'game/homeworld-occupied-defenses.ts',
'game/homeworld-occupied-tupile.ts',
'game/basic-tupile-occupation.ts',
'game/ecaz-homeworld-victory.ts',
'game/victory-quote.ts',
'components/victory-progress.tsx',
'game/tupile-intelligence.ts',
'game/tupile-intelligence-answer.ts',
'game/tupile-intelligence-state.ts',
'components/tupile-intelligence.tsx',
'game/giedi-collection.ts',
'game/terror-entry-receipt.ts',
'game/bidding-end.ts',
'game/ecaz-poison-income.ts',
'game/choam-market-ghola.ts',
'game/charity.ts',
],
},
{
area: 'Player controls',
status: 'Partial',
detail:
"Southern allocation controls show original, remaining, placed and kept stars with current quantity/destination choices and an explicit provisional note. Card inspection is available in the reference. Development tables display native reserves, explicit Imperial shipment sources, world-to-world shipment and Guild transport from Arrakis with costs and pledged funding, Guild interception, optional Junction half/full offers and typed sponsored transport, transfers between Kaitain and Salusa, charity payment sources, current revival allowances, population-based movement restrictions and one/two-advisor choices, native battle bonuses, Homeworld casualties, replacement controls, Tupile sale explanations, shared end-of-Bidding actions, Ecaz’s private poison-income record, current low-population payment splits, automatic Giedi collection history, count-dependent Ambassador destinations and the optional revived-group placement. Fresh occupation adds bounded actual percentage allocation, real bonus receiver choice, source-authorized Ix pool/cache controls and separate native Richese terms. Supported starts remain previews. Basic Tupile controls explicitly show provisional current-sole loss and the earlier normal-limit discard. Four current original-action390px journeys show the unused-price warning, full3, poor2 then replacement half2, ordinary purchased2 alternative and full6 normal Guild income; movement remains available.",
evidence: [
'components/homeworld-cards.tsx',
'components/homeworld-table.tsx',
'components/homeworld-revival-deployment.tsx',
'components/caladan-reinforcement.tsx',
'components/homeworld-shipment.tsx',
'components/guild-homeworld-shipment.tsx',
'components/junction-transport.tsx',
'components/bidding-end.tsx',
'components/ecaz-poison-income.tsx',
'components/homeworld-occupied-income.tsx',
'components/homeworld-occupied-percentage.tsx',
'components/homeworld-occupied-bonus.tsx',
'components/ix-technology.tsx',
'components/richese-auctions.tsx',
'components/homeworld-tupile-cleanup.tsx',
],
},
{
area: 'AI',
status: 'Partial',
detail:
"All four profiles share legal Southern portion/destination choices and the remaining-reserves option. Shared public choices supply native shipment counters, Imperial transfers and current low revival allowances. All four profiles use Salusa’s per-type support legality and respect the remaining special-Karama and full-seal Ghola timing boundaries; before full seals, a real Salusa return updates the shared free-support descriptor and owned inspection-renewal path. Exact native force-group blocks preserve binding promises without duplicating the solver in a policy. All four profiles handle world-to-world shipment, Guild transport from Arrakis, native returns and interception, Homeworld battle choices, typed losses, late defense and supported replacement actions. All four profiles can offer and use Junction transport through public quotes, respect population-based movement restrictions and choose legal Spiritual Advisor quantities. Market choices exclude high-Tupile Worthless sales. All four profiles use eligible unused low-Tupile requests without reading opponents’ private hands or balances. All four profiles use the shared closing opportunity for CHOAM actions, affordable Kaitain discards and readiness. Ecaz income needs no separate claim. Fresh occupied decisions supply legal bank/percentage allocation, one eligible real bonus receiver, displaced Ix/cache selection and native Richese terms. Concealed transport, remaining card-effect strategy and difficulty calibration are unfinished. All four original profiles execute the immune full offered quote with its explicit acknowledgment. This is minimal legal participation, not strategy tuning.",
evidence: ['game/homeworld-options.ts', 'game/homeworld-shipment-options.ts', 'game/guild-homeworld-shipment-options.ts', 'game/junction-transport-options.ts'],
},
{
area: 'Documentation',
status: 'Partial',
detail:
"The Basic Southern per-star interpretation, exact original-batch scope and legacy/Tleilax/Advanced boundaries are explicit. All 26 faces, global rules and source discrepancies are documented. Imperial shipment and movement controls explain sources, costs and unavailable actions. Card-economy notes explain shared closing actions, private poison income, winner-discard ordering and low-population payment splits. The authorized Advanced sole/last-departure cutover, original occupied economic/Bidding ownership and user-ruled whole-invoice rounding are explicit. Remaining occupation variants and interactions stay separate; full guidance remains in progress. Current Junction source choice distinguishes printed immunity from the selected unused-price/no-refund product composition; failed or deferred transport retains the grant.",
evidence: [
'docs/HOMEWORLD_COMPONENT_AUDIT.md',
'docs/HOMEWORLD_RULES.md',
'docs/HOMEWORLD_RUNTIME_IMPLEMENTATION.md',
'docs/HOMEWORLD_BENEFITS_RULES.md',
'docs/HOMEWORLD_REVIVAL_DEPLOYMENT_RULES.md',
'docs/HOMEWORLD_REVIVAL_DEPLOYMENT_INTEGRATION.md',
'docs/HOMEWORLD_REVIVAL_DEPLOYMENT_RUNTIME.md',
'docs/HOMEWORLD_COMBAT_IMPLEMENTATION.md',
'docs/HOMEWORLD_BATTLE_RUNTIME.md',
'docs/HOMEWORLD_SHIPMENT_RUNTIME.md',
'docs/GUILD_HOMEWORLD_TRANSPORT_RUNTIME.md',
'docs/JUNCTION_TRANSPORT_RULES.md',
'docs/JUNCTION_TRANSPORT_RUNTIME.md',
'docs/HOMEWORLD_MOBILITY_RULES.md',
'docs/HOMEWORLD_MOBILITY_RUNTIME.md',
'docs/HOMEWORLD_CARD_ECONOMY_RULES.md',
'docs/HOMEWORLD_CARD_ECONOMY_RUNTIME.md',
'docs/HOMEWORLD_PAYMENT_INCOME_RULES.md',
'docs/HOMEWORLD_PAYMENT_INCOME_RUNTIME.md',
'docs/HOMEWORLD_COLLECTION_RULES.md',
'docs/HOMEWORLD_COLLECTION_INTEGRATION.md',
'docs/HOMEWORLD_COLLECTION_RUNTIME.md',
'docs/ECAZ_POISON_INCOME_RULES.md',
],
},
{
area: 'Verification',
status: 'Partial',
detail:
"Basic Tupile current-sole follow-up passes70/70 cases in10 files, types/lint/build, two original public gameplay/rendering programmes and four legal cleanup profiles. Its provisional policy and broader acceptance limits stay explicit. Earlier mixed E1/E2 and paired E3 Nexus added31 original physical programmes plus2 Loyalty-stock regressions. Final489/489 affected checks across42 files pass with types/lint. All64 original families finish258/288 six-seat games with338931 accepted/339426 attempted actions and9013 JSON across three frozen trees and preserved-prefix continuations. All30 remaining source-guard traces are read. Actual390px original Ixian offer/training, typed native and foreign-world payment/free Suboid plan and paired Ecaz foreign entry/living shared Duke preserve20 physical counters. Human Ixian loses, so no winning Suk rescue is claimed. Earlier qualified evidence remains canonical; full rules, assurance, calibration and deployed acceptance remain open. Current Junction follow-up passes131/131 affected cases and14 runtime/policy paths (11 original/3 controlled), with four actual original-action390px journeys. No saved/deployed acceptance is claimed.",
evidence: ['tests/world-sandtrout-runtime.test.ts', 'tests/homeworld-occupation-modules-profile.test.ts', 'tests/world-module-occupation-runtime.test.ts', 'tests/world-module-occupation-controls.test.tsx', 'tests/world-module-occupation-income.test.ts', 'tests/homeworld-occupation-skills-profile.test.ts', 'tests/world-skills-occupation-runtime.test.ts', 'tests/world-skills-occupation-controls.test.tsx', 'tests/world-skills-occupation-income.test.ts', 'tests/homeworld-module-profile.test.ts', 'tests/homeworld-phase-modules-runtime.test.ts', 'tests/homeworld-phase-modules-controls.test.tsx', 'tests/homeworld-phase-occupation-income.test.ts', 'tests/mixed-nexus-modules-runtime.test.ts', 'tests/paired-e3-nexus-modules-runtime.test.ts', 'tests/sample-custody.test.ts', 'tests/ambassador-terror-overlap-engine.test.ts', 'tests/single-nexus-e1-runtime.test.ts', 'tests/single-nexus-e2-runtime.test.ts', 'tests/homeworld-classic-skills-runtime.test.ts',
'tests/homeworld-classic-discovery-runtime.test.ts',
'tests/homeworld-skills-discovery-runtime.test.ts',
'tests/homeworld-optional-modules-runtime.test.ts',
'tests/homeworld-native-e1e2-modules-runtime.test.ts',
'tests/homeworld-native-e3-modules-runtime.test.ts',
'tests/homeworld-classic-nexus-skills-runtime.test.ts',
'tests/homeworld-classic-discovery-nexus-runtime.test.ts',
'tests/homeworld-paired-nexus-runtime.test.ts',
'tests/homeworld-standalone-nexus-runtime.test.ts',
'tests/e3-nexus-ecaz-runtime.test.ts',
'tests/e3-nexus-moritani-runtime.test.ts',
'tests/homeworld-custody.test.ts',
'tests/homeworld-cards.test.ts',
'tests/homeworld-payment-income.test.ts',
'tests/homeworld-payment-income-engine.test.ts',
'tests/homeworld-payment-income-recovery.test.ts',
'tests/homeworld-collection.test.ts',
'tests/homeworld-collection-engine.test.ts',
'tests/homeworld-collection-recovery.test.ts',
'tests/homeworld-grumman-engine.test.ts',
'tests/homeworld-grumman-recovery.test.ts',
'tests/homeworld-setup-engine.test.ts',
'tests/homeworld-actions-engine.test.ts',
'tests/homeworld-basic-counters.test.ts',
'tests/homeworld-salusa-engine.test.ts',
'tests/fixture-salusa-ghola.ts',
'tests/salusa-ghola-runtime.test.ts',
'tests/salusa-ghola-inspection.test.ts',
'tests/fixture-salusa-ghola-truth.ts',
'tests/salusa-ghola-truth.test.ts',
'tests/salusa-ghola-truth-controls.test.ts',
'tests/homeworld-combat.test.ts',
'tests/homeworld-battle-resolution.test.ts',
'tests/homeworld-battle-engine.test.ts',
'tests/homeworld-battle-recovery.test.ts',
'tests/homeworld-shipment-engine.test.ts',
'tests/homeworld-shipment-recovery.test.ts',
'tests/homeworld-shipment-controls.test.ts',
'tests/homeworld-shipment-review.test.ts',
'tests/guild-homeworld-shipment-engine.test.ts',
'tests/guild-homeworld-shipment-recovery.test.ts',
'tests/guild-homeworld-shipment-controls.test.ts',
'tests/junction-transport.test.ts',
'tests/junction-transport-engine.test.ts',
'tests/junction-transport-recovery.test.ts',
'tests/junction-transport-controls.test.ts',
'tests/junction-transport-review.test.ts',
'tests/homeworld-card-economy.test.ts',
'tests/homeworld-tupile-sales-engine.test.ts',
'tests/homeworld-tupile-sales-recovery.test.ts',
'tests/bidding-end-engine.test.ts',
'tests/bidding-end-controls.test.ts',
'tests/bidding-end-recovery.test.ts',
'tests/ecaz-poison-income.test.ts',
'tests/ecaz-poison-income-engine.test.ts',
'tests/homeworld-mobility.test.ts',
'tests/homeworld-mobility-engine.test.ts',
'tests/homeworld-mobility-recovery.test.ts',
'tests/homeworld-spiritual-advisors.test.ts',
'tests/homeworld-spiritual-advisors-recovery.test.ts',
'tests/homeworld-advisor-ambassador.test.ts',
'tests/homeworld-replacement-engine.test.ts',
'tests/homeworld-recovery.test.ts',
'tests/homeworld-charity-engine.test.ts',
'tests/homeworld-revival-benefits-engine.test.ts',
'tests/homeworld-revival-deployment.test.ts',
'tests/homeworld-revival-return.test.ts',
'tests/homeworld-revival-destinations.test.ts',
'tests/homeworld-revival-deployment-engine.test.ts',
'tests/homeworld-revival-deployment-controls.test.ts',
'tests/homeworld-revival-deployment-recovery.test.ts',
'tests/homeworld-victory-reinforcement.test.ts',
'tests/caladan-face-dance-engine.test.ts',
'tests/fixture-caladan-face-dance.ts',
'tests/caladan-face-dance-homeworld.test.ts',
'tests/fixture-caladan-face-dance-homeworld.ts',
'tests/caladan-face-dance-controls.test.ts',
'tests/caladan-reinforcement-controls.test.ts',
'tests/homeworld-victory-reinforcement-recovery.test.ts',
'tests/tupile-intelligence.test.ts',
'tests/tupile-intelligence-answer.test.ts',
'tests/tupile-intelligence-state.test.ts',
'tests/tupile-intelligence-controls.test.ts',
'tests/tupile-intelligence-engine.test.ts',
'tests/tupile-intelligence-recovery.test.ts',
'tests/homeworld-occupation-history.test.ts',
'tests/homeworld-occupied-income.test.ts',
'tests/homeworld-occupied-percentage.test.ts',
'tests/homeworld-occupied-bidding.test.ts',
'tests/homeworld-occupied-defenses.test.ts',
'tests/homeworld-occupation-runtime.test.ts',
'tests/homeworld-occupied-producers-engine.test.ts',
'tests/homeworld-occupied-private-lots.test.ts',
'tests/homeworld-occupied-tupile.test.ts',
'tests/homeworld-occupied-tupile-runtime.test.ts',
'tests/basic-tupile-lifecycle-engine.test.ts',
'tests/fixture-basic-tupile-lifecycle.ts',
'tests/ecaz-homeworld-victory.test.ts',
'tests/ecaz-homeworld-victory-runtime.test.ts',
'tests/grumman-collection.test.ts',
'tests/grumman-collection-engine.test.ts',
'tests/grumman-collection-controls.test.ts',
'tests/grumman-collection-recovery.test.ts',
'tests/grumman-supply-return.test.ts',
'tests/grumman-cunning-runtime.test.ts',
'tests/nexus-moritani-grumman.test.ts',
'tests/fixture-ruled-grumman.ts',
'tests/grumman-selection-integrity.test.ts',
'tests/homeworld-benefits-recovery.test.ts',
"tests/junction-purchased-price.test.ts"],
},
],
},
{
id: 'homeworld-ecaz-duke',
title: 'Occupied Ecaz: grant Duke Vidal',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'The qualified occupier of Ecaz grants the living shared Duke to self or a reciprocal ally.',
steps: [
'Use the existing original Homeworld qualification. Advanced retains occupied benefits until the occupier’s last force leaves; Basic uses the visibly provisional current-sole policy. A Homeworld benefit cannot be canceled by Karama.',
'When only the occupier is eligible, the native grant settles automatically. With a reciprocal ally, the occupier chooses a recipient in persistent controls at an otherwise quiet boundary before either Battle Plan seals. Finish committed interactions first.',
'The provisional ordinary grant permits one battle and expires unused at turn end. A continuing occupation gives a new recipient choice next turn. A choice is recorded once per turn and original qualification; current used-at history cannot be evaded by leaving and returning.',
'Loss of occupation, a changed qualifier or loss of the selected ally ends only this grant and never restores an old controller. Occupation overrides ordinary native Ecaz/Moritani Duke acquisition; living Nexus Cunning also respects that priority.',
'Only Ecaz may revive Duke Vidal under the user-selected rule, even while Ecaz is occupied. This grant cannot revive him. Fresh captured, concealed or foreign-Ghola acquisition stays guarded conservatively. Captivity does not extend an original occupied grant: the captor keeps normal capture rights, and a later return cannot restore tenure ended by public deadline or entitlement loss. The same shared disc, physical death history and native battle use remain.',
],
related: ['homeworlds', 'duke-vidal', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Stable source qualification, original recipient receipt, ordinary shared-disc tenure, native priority, automatic sole choice and settled loss/turn/use release are connected. Public captive lease expiry and actual-return entitlement checks preserve the existing capture; fresh liberation remains guarded.', evidence: ['game/homeworld-ecaz-duke.ts', 'game/duke-vidal.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Owner-only projected labels, persistent provisional guidance and event-bound busy/blocked recipient controls connect through GameTable.', evidence: ['components/homeworld-ecaz-duke.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four existing profiles use only the shared legal recipient descriptor; no strategic refinement or calibration.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed grant, user revival override and selected ordinary tenure are distinct from complete Homeworld/Duke acceptance.', evidence: ['docs/HOMEWORLD_ECAZ_DUKE.md', 'docs/RULE_DECISIONS.md', 'docs/DUKE_VIDAL_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Controlled pure/controls cases and a separate genuine native occupation source provide scoped evidence. Current frozen counts/runtime limitations are in the source contract; complete modes and final assurance remain open.', evidence: ['tests/homeworld-ecaz-duke-captive.test.ts', 'tests/homeworld-ecaz-duke-captive-engine.test.ts', 'tests/fixture-homeworld-ecaz-duke-captive.ts', 'tests/homeworld-ecaz-duke-quote.test.ts', 'tests/homeworld-ecaz-duke-controls.test.tsx', 'tests/homeworld-ecaz-duke-engine.test.ts', 'tests/fixture-homeworld-ecaz-duke.ts'] },
],
},
{
id: 'discoveries',
title: 'Discoveries: first playable functions',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'A development prototype connects Great Maker, six Discovery spice blows, private token inspection, stash rewards, revealed locations, next-turn entry, Cistern income, bounded Orgiz transfers, Ornithopter movement, Jacurutu income, Testing Station and Shrine. Remaining interpretations and normal public starts stay gated.',
searchText: 'Hiereg Smuggler Jacurutu Sietch Cistern Ecological Testing Station Shrine Orgiz Processing Station Treachery Card Stash Spice Stash Ornithopter',
steps: [
'The Discovery-only fresh entry supports classics, selected Ixian/Tleilaxu/CHOAM/Richese families or standalone Ecaz OR Moritani with classics, Basic/Advanced2–6, seven extra Spice Cards/eight tokens, optional unused Tech3+ and Advanced Strongholds. Its separate Nexus/Skills entries below admit their additional exact compositions; Discovery-only paired or mixed E3 and public starts remain gated.',
'Fresh Discovery retains original Homeworlds and native reserves in classic, supported E1/E2 or standalone E3 tables, Basic/Advanced2–6, optional Tech3+/Advanced Strongholds. Original Nexus entries additionally admit natives from BOTH Ix+CHOAM families/union47 or BOTH Ecaz+Moritani/ecaz33 with classics, with or without all14 Skills. Maker, actual parent/nested entry, source-local payments/rescue, phase-end industry and original-winner cleanup/Tech remain. Held benefits do not migrate into nested locations. Original capture/roster and unresolved-effect guards remain.',
'The original leader-skills --nexus-cards --discoveries entry composes all14 offered training/all12 Nexus/Discovery7/8 for classics/base33, single or paired one-family E1/E2, natives from BOTH selected Ix+CHOAM families/union47, or standalone OR paired Ecaz/Moritani/ecaz33 with classics. Original Homeworlds may be retained; Tech requires3+ and Strongholds Advanced. Hands/offers, native components and actual Maker/both-pile/alliance-change closing draws remain authoritative. Shared Duke never trains; Advanced paired E3/Moritani excludes Harkonnen. Mixed E3/three-family and pending effects/public starts/save conversion remain separate.',
'Connected native outcomes use original sources: Suboid Cunning and winning trained Suk settle typed fixed casualties before one equal actual Cyborg Tank substitution; original cleanup and mandatory winner Tech precede matching Face Dance, retaining its foreign-Homeworld suppression. Signed Richese two-marker one-invoice physical shipment requires a currently revealed nested site. Ecaz-selected coalition armies and Moritani skill-first assassination remain distinct from shared-Duke training. These programmes do not certify every skill or card band.',
'The original nexus --discoveries entry retains NO Skills with classics/base33, single or paired one-family E1/E2, both selected Ix+CHOAM native families/union47, or standalone OR paired Ecaz/Moritani/ecaz33 with classics. Original Homeworlds/Tech3+/Advanced Strongholds remain optional. Real native Traitors, Arrakis Occupy and Advanced assassination marks remain; no starting Nexus hand or training is added. Maker losses/votes/typed reserve rides, both Advanced piles and actual settled alliance change precede the closing card deal. Source guards and public/played-save boundaries remain.',
'Original Stronghold Cards are claimed only at end-Mentat. A held benefit applies in its named territory or the mobile stronghold through its actual declared copy; revealed Discovery locations do not inherit another territory’s defense or bank support. Jacurutu counts toward stronghold victory but creates no seventh Stronghold Card. Physical free entry, nested tariffs, trained or native force casualties, card cleanup and optional Tech reward retain their original sources.',
'Great Maker first resolves the ordinary worm consequences. All players then vote in storm order on creating a Nexus. A strict majority is required; a tie adds no Nexus and an existing Nexus in the phase stays recorded. Unless this turn’s predeclared Fremen Nexus worm-riding prohibition applies, Fremen may then ride with actual reserve forces to one legal destination for free, without using ordinary shipment or movement. Storm and occupancy restrictions still apply.',
'Each of the six Discovery territory cards destroys prior spice and forces in the named blow territory, including Fremen forces, before placing six new spice subject to the storm. It also places a random available face-down token of the printed type at the card’s separate token destination.',
'Fremen privately see placed Hiereg tokens; Guild privately sees placed Smuggler tokens. During Spice Collection, non-advisor forces in a token’s surrounding territory may inspect it privately, then choose whether to reveal it. The Discovery panel shows only authorized faces. Reading an already visible token’s rules does not reveal or use it.',
'Spice Stash grants seven bank spice and leaves play. Treachery Card Stash draws one private Treachery Card and leaves play; if the new hand is too large, choose any held card to discard, including the newly drawn card. The owned discard panel includes a card inspector.',
'Revealing Ornithopter records who carries it and the turn it was gained. On a later turn, its owner may spend it on one ordinary movement action to give that selected group a fixed range of three. It grants no extra action, adds no shipment and is removed only after the movement commits; saved arrival interactions retain the exact selected group.',
'The five revealed location tokens become separate, initially empty territories inside their surroundings. A private peek does not open the location. Normal ground movement enters through the surrounding territory, shipment uses stronghold prices, at most two factions may occupy it, and forces inside are protected from storms and sandworms. Only Jacurutu Sietch counts toward stronghold victory.',
'Native typed forces enter as their actual ordinary and elite groups, never as passengers from the mobile stronghold or the concealed value of a No-Field. Richese may ship or move a concealed marker into an actually revealed nested location at sector zero; it remains one effective presence until its original reveal materializes available reserves. CHOAM Card Stash uses its five-card limit, drawing first and choosing any held discard afterward.',
'A printed Discovery blow destroys all old spice and forces in its target territory, including Fremen. A concealed No-Field provisionally reveals, materializes only available reserves and loses those actual counters with its physical companions; zero creates no casualty. This destructive reveal is a selected interpretation. It preserves token history and the original new-spice, storm and face-down placement sequence. Separately identified nested locations and other territories stay outside the parent target. Continue through normal Ready and Accept spice blow controls.',
'At the start of the next turn, before the storm and mobile stronghold movement, each eligible faction may move any positive subset of its non-advisor groups from the surrounding territory into the newly revealed location. The signed choice preserves ordinary and elite forces across sectors, normal source storm and occupancy restrictions, and costs no spice, shipment or normal movement. The printed text gives no sequence and does not restate the source-storm restriction; processing tokens in reveal order and factions in storm order while excluding storm sources are source inferences.',
'Provisional free entry also offers your current owned concealed No-Field separately from physical counters, alone or in a mixed group. It enters the revealed location concealed, including zero, renews its owner event and preserves last-shipped identity and reserves. It spends no spice, ordinary shipment or movement. Select or clear the marker separately; declining or moving only physical counters leaves it outside. Current ownership/event, source storm, normal occupancy and arrival interactions remain. This combines the independent Discovery move grant with one-force marker presence, without a specific combined ruling.',
'After advisor releases, every Cistern fighter occupant receives two bank spice. Orgiz occupants resolve in original storm order using actual ordinary deposit receipts, not mere force presence or old wallets. Advanced charges once per territory; Basic provisionally charges once per positive deposit. The first actual foreign ordinary collector in storm order with available spice pays. Shared Ecaz lots in both modes wait for the actual split, then consider positive foreign recipients Ecaz first, ally second; Advanced counts the territory once and Basic counts actually reduced source deposits. Self, zero shares and empty purses do not qualify. Balances track each transfer without debt; ordering and Basic mapping remain provisional.',
'Jacurutu pays one bank spice for each opposing undialed physical force actually sent to the Tanks. Where an Advanced dial admits different physical counts, the defeated player chooses an exact ordinary/elite/paid reading before support, casualties or rewards settle; unique readings remain automatic. This choice timing is a visibly provisional implementation interpretation. Original Harass returns bind their physical dial and actual withdrawal/retreat counters do not earn spice.',
'Each non-advisor Testing Station occupant may decrease ordinary storm movement by one, keep it or increase it by one. The provisional order is the original storm order, once per owner, with cumulative adjustments on current distance. Choose after the ordinary card window; traversal/protection starts only after all choices. Weather Control is unaffected. Original natural source/base and existing sole-frame history remain authoritative; legacy movement without a source is not invented.',
'A current non-advisor Shrine occupant may play a physical Truthtrance card as Karama, or a physical Karama as Truthtrance, within the implemented timing and effect paths. The printed identity and actual card custody remain unchanged; a committed Truthtrance conversion survives departure. This does not create missing Karama powers or settle their pending rules.',
'All four AI profiles use the same offered inspection, reveal, stash-discard, Great Maker, free-entry, Ornithopter and Testing Station choices as the player controls. Private knowledge and unfinished decisions survive saved JSON continuations. These focused paths do not establish complete variant compliance or combined-module acceptance.',
'The independent three-card variant now composes original Discovery7/eight tokens with classic or registered selected0–3-family rosters, Basic/Advanced2–6, with or without Nexus12 and optional World/all14/Tech3+/Advanced Strongholds. Actual reveal/free entry, native Cunning into Cistern, Sandtrout suppression and purchased nested card battles retain original sources. Trained actual-E3/Harkonnen and unrelated previews remain guarded; broader interactions and full modes remain open.',
],
related: ['ecaz-modules', 'spice-blow', 'collection', 'movement', 'mentat', 'implementation-checklist'],
checklist: [
{
area: 'Implementation', status: 'Partial',
detail: 'Owned concealed No-Fields may also use the original next-turn free entry alone/mixed, with private metadata, public source-only signature, exact physical custody and no action/counter materialization. Concealed No-Fields now follow provisional destructive revelation at a printed Discovery blow through a distinct cause and all-player preflight; only actual reserve-capped counters are lost before original placement. Original classic and supported native Skills/Nexus/Discovery entries retain their selected modules and controls. Jacurutu uses an exact defeated-player reading before native settlement; Testing Station queues cumulative choices before one traversal. Cistern pays every fighter occupant. Orgiz uses actual ordinary receipts and bilateral shared allocations in both modes, grouping by territory in Advanced and positive source deposit in Basic without guessed payers or debt. Available balances track all transfers and cumulative overflow. Broader mode/module acceptance remains open.',
evidence: ['game/disaster-preflight.ts', 'game/discovery-module-profile.ts', 'game/richese-no-field.ts', 'game/discoveries.ts', 'game/discovery-actions.ts', 'game/discovery-entry.ts', 'game/discovery-collection.ts', 'game/board-resolution-quote.ts', 'game/discovery-flight.ts', 'game/discovery-battle.ts', 'game/discovery-storm.ts', 'game/shrine.ts', 'game/great-maker.ts', 'game/board.ts', 'game/engine.ts'],
},
{
area: 'Player controls', status: 'Partial',
detail: 'Free entry selects an owned marker separately from physical groups, with a distinct event fence and persistent provisional guidance. Private backs and readable authorized faces, optional inspection/reveal, owned stash discard, ordered Great Maker, free entry and carried movement use existing controls. Jacurutu offers exact physical readings only to the defeated owner before settlement. Testing Station offers cumulative legal distances to each current owner in original storm order. Unique rewards remain automatic; Shrine uses original card controls.',
evidence: ['components/discoveries.tsx', 'components/jacurutu-dial.tsx', 'components/discovery-entry.tsx', 'components/discovery-flight-movement.tsx', 'components/discovery-storm.tsx', 'components/truthtrance.tsx', 'components/great-maker.tsx', 'components/spice-card-inspector.tsx', 'components/game-table.tsx'],
},
{
area: 'AI', status: 'Partial',
detail: 'Minimal free-entry policies include the owned offered marker through the shared selection adapter. Four profiles share private quoted inspection, discard, vote, ride, entry and carried-flight actions. Properly configured policies select a legal Jacurutu physical reading and each current Testing Station owner uses the same cumulative controls. Shrine uses original Karama/Truthtrance policies. Strategy, combined games and calibration remain unfinished.',
evidence: ['game/discovery-options.ts', 'game/discovery-entry-options.ts', 'game/discovery-flight-options.ts', 'game/discovery-storm-options.ts', 'game/shrine.ts', 'game/great-maker-options.ts', 'game/bots.ts'],
},
{
area: 'Documentation', status: 'Partial',
detail: 'The destructive No-Field reveal and separate nested-territory interpretation are explicit provisional compositions, without a specific combined publisher ruling. Sourced identities and native/classic-skill boundaries are recorded. Advanced Orgiz uses territory Collection; Basic retains its provisional deposit mapping, including actual source reductions after bilateral shared settlement. Recommended occupant/payer ordering, Jacurutu allocation and cumulative Testing Station choices are visible interpretations, not publisher rulings. Great Maker and entry/source-storm inferences remain explicit; full acceptance stays open.',
evidence: ['docs/DISCOVERY_COMPONENTS.md', 'docs/DISCOVERY_PROTOTYPE.md', 'docs/RICHESE_NO_FIELD_RULES.md'],
},
{
area: 'Verification', status: 'Partial',
detail: 'Independent Discovery adds frozen15-file118/118, types/lint/build and six original-action/rendered-control programmes; broader modes, visual/deployed acceptance and final assurance remain open. Current Collection batch passes80/80 in6 related files, types/lint and build. Genuine Basic/Advanced cases cover shared equal/full/zero splits, acceptance timing, wrong actors and stale events; helper boundaries cover multiple deposits, exhausted recipients, self/zero-share exclusion and cumulative overflow. Actual390px Basic Red Chasm lot4 changes Ecaz7/Guild8 to8/11 with one transfer and Ready restored, no overflow or errors. Four legal policies complete that Basic allocation via actual actions. Earlier canonical-source and Jacurutu/Station evidence remains source-bound; combinations, assurance, strategy and deployed acceptance remain open.',
evidence: ['tests/fixture-discovery-no-field-entry.ts', 'tests/discovery-no-field-entry-engine.test.ts', 'tests/discovery-no-field-entry-quote.test.ts', 'tests/discovery-no-field-entry-controls.test.tsx', 'tests/fixture-discovery-no-field-blow.ts', 'tests/discovery-no-field-blow-engine.test.ts', 'tests/discovery-no-field-blow-preflight.test.ts', 'tests/independent-discovery-nexus-entry.test.ts', 'tests/independent-discovery-cards.test.ts', 'tests/independent-discovery-battles.test.ts', 'tests/mixed-nexus-modules-runtime.test.ts', 'tests/paired-e3-nexus-modules-runtime.test.ts', 'tests/sample-custody.test.ts', 'tests/ambassador-terror-overlap-engine.test.ts', 'tests/e3-nexus-ecaz-runtime.test.ts', 'tests/e3-nexus-moritani-runtime.test.ts', 'tests/single-nexus-e1-runtime.test.ts', 'tests/single-nexus-e2-runtime.test.ts', 'tests/homeworld-paired-nexus-runtime.test.ts', 'tests/homeworld-standalone-nexus-runtime.test.ts',
'tests/fixture-jacurutu-mixed-dial.ts', 'tests/jacurutu-mixed-dial-runtime.test.ts', 'tests/fixture-testing-station-contest.ts', 'tests/testing-station-contest-runtime.test.ts',
'tests/fixture-discovery-occupied-collection.ts', 'tests/discovery-occupied-collection-runtime.test.ts', 'tests/fixture-discovery-shared-orgiz.ts', 'tests/discovery-shared-orgiz-runtime.test.ts',
'tests/board-resolution-quote.test.ts', 'tests/ecaz-collection-quote.test.ts',
'tests/homeworld-classic-nexus-skills-runtime.test.ts', 'tests/homeworld-classic-discovery-nexus-runtime.test.ts', 'tests/homeworld-native-e1e2-modules-runtime.test.ts', 'tests/homeworld-native-e3-modules-runtime.test.ts', 'tests/homeworld-classic-discovery-runtime.test.ts', 'tests/homeworld-skills-discovery-runtime.test.ts', 'tests/homeworld-optional-modules-runtime.test.ts', 'tests/discovery-native-e1-skills-runtime.test.ts', 'tests/discovery-native-e2-skills-runtime.test.ts', 'tests/discovery-native-e3-skills-runtime.test.ts', 'tests/discovery-skills-strongholds-runtime.test.ts', 'tests/discovery-native-strongholds-runtime.test.ts', 'tests/ecaz-stronghold-runtime.test.ts', 'tests/e3-native-tech-runtime.test.ts', 'tests/discovery-classic-nexus-lifecycle.test.ts', 'tests/discovery-classic-nexus-effects.test.ts', 'tests/discovery-orgiz-advanced-runtime.test.ts', 'tests/discovery-classic-skills-runtime.test.ts', 'tests/discovery-module-profile.test.ts', 'tests/discovery-native-typed-runtime.test.ts', 'tests/discovery-native-marker-runtime.test.ts', 'tests/discovery-native-e3-runtime.test.ts', 'tests/discoveries.test.ts', 'tests/discovery-runtime.test.ts', 'tests/great-maker.test.ts', 'tests/discovery-board.test.ts', 'tests/discovery-admission.test.ts', 'tests/discovery-controls.test.ts', 'tests/discovery-entry.test.ts', 'tests/discovery-entry-runtime.test.ts', 'tests/discovery-entry-controls.test.ts', 'tests/discovery-entry-review.test.ts', 'tests/discovery-collection.test.ts', 'tests/discovery-flight.test.ts', 'tests/discovery-flight-engine.test.ts', 'tests/discovery-flight-recovery.test.ts', 'tests/discovery-battle.test.ts', 'tests/discovery-battle-recovery.test.ts', 'tests/discovery-storm.test.ts', 'tests/discovery-storm-recovery.test.ts', 'tests/discovery-shrine-engine.test.ts', 'tests/discovery-shrine-recovery.test.ts', 'docs/HOMEWORLD_RUNTIME_IMPLEMENTATION.md'],
},
],
},
{
id: 'nexus-choam-kull',
title: 'CHOAM Nexus Cunning: choose Kull Wahad',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'In the explicit Nexus Kull preview, choose one actual Treachery fuel card at a Karama attempt; the CHOAM Nexus is spent when the declaration is accepted, even if Kull is prevented.',
steps: [
'This is the fresh local nexus-kull development profile, not a public expansion start or an upgrade to existing saves. It admits two to six ready seats with native CHOAM and otherwise classic factions in Basic or Advanced, physical CHOAM and Ix Treachery decks, and Nexus alone. Other optional modules, expansion factions, Semuta and Richese Betrayal stay outside its boundary. The older kull profile remains printed-only and has no Nexus cards.',
'The CHOAM Nexus face says: Discard any Treachery Card to obtain a Worthless Card special effect of your choice. Basic uses the CHOAM phase-wide scope; new Advanced attempts use the supplied specific-effect scope with provisional phase expiry. Cunning changes the fuel identity, not the effect, target or timing. Neither text supplies a nested counter priority: distinct counters and BG-before-conversion custody are the recorded user-selected policy, not a publisher clarification.',
'Wait for another player’s validated Karama attempt. There is no proactive Kull choice in the generic Nexus panel. The public event, attempted player and purpose are the same whether CHOAM holds CHOAM Nexus, another Nexus, no eligible fuel or no Nexus at all. Only CHOAM receives its private source-aware plays and blocking reasons; opponents do not see the cost list or reserved original card.',
'Choose a cost through the shared selector and inspect that actual card before Use. Printed source requires a held printed Kull Wahad. Nexus source requires unallied native CHOAM holding the actual CHOAM Nexus in this profile and one uniquely held canonical Treachery Card: a weapon, defense, special, Karama or Worthless card can be fuel. Reserved or promise-incompatible fuel is unavailable. The card does not become a manufactured Kull, and Karama used as fuel does not activate its own power.',
'Use must identify the offered event, selected source (printed or nexus) and actual fuel card. Omitting the source, guessing another event or supplying someone else’s card is not a valid Use. Decline needs only the event and spends nothing; the exact original attempt resumes once. You do not choose a new target, price, effect or Nexus identity.',
'An accepted Nexus declaration discards the physical CHOAM Nexus once immediately. The selected fuel stays held while the ordinary CHOAM-effect response is pending. Pending Kull is not yet a phase ban. The interrupted original stays reserved; it cannot counter its own interruption. A distinct eligible printed Karama or Advanced BG substitution uses the existing response controls before any restriction begins.',
'If Kull succeeds, discard exactly the selected fuel once, retain the original unplayed Karama or BG Worthless card and leave the original special once-use and additional costs unspent. The activating player, not an allied shipment beneficiary, receives the stamped restriction: Basic/legacy all-purpose, or the new Advanced attempted effect only. Another legal Advanced effect remains available, using either printed or substituted Karama. This does not ban holding, acquiring, trading or otherwise legally discarding Karama.',
'If a distinct counter prevents Kull, the selected fuel remains held under the existing exact-cost phase prevention policy, but the accepted Nexus spend is not refunded. No Kull activation ban is established. Resume the original attempt once with its normal costs. A BG original resumes its separate ordinary conversion response; ordinary prevention of that conversion still leaves its Worthless card discarded. A BG counter likewise owns its separate conversion, never the reserved original.',
'The selected deferred-overbid policy still privately refuses non-CHOAM unfunded Karama-dependent bids before commitment, independently of hidden Kull or Nexus ownership. No auction restart, free award, invented funding or numeric UI cap is added. Own Truthtrance promises and reservations constrain the original, fuel and counters; unsupported continuations are guarded before an offer rather than silently releasing a promise.',
'Refresh restores the same event, selected source, physical costs, spent Nexus and original continuation, including a suspended BG response. Corrupt ownership rejects without changing the game. Verified older printed-only counter saves receive a bounded immutable binding migration, not Nexus choices or a source-omitting action shim. Frozen checks and actual Basic/Advanced CLI/runtime/phone success and prevention are verified locally; complete CHOAM/Nexus, wider combinations and deployed acceptance remain open.',
],
example: 'CHOAM selects a held weapon as Nexus fuel when BG attempts a Worthless-as-Karama activation. Accepted Use spends CHOAM Nexus but keeps the weapon pending. If everyone allows Kull, the weapon is discarded and BG keeps its original Worthless card unplayed. If a different Karama prevents Kull, CHOAM keeps the weapon but not the Nexus, and BG’s original conversion continues once.',
related: ['choam-kull', 'choam-worthless', 'nexus-cards', 'faction-choam', 'card-karama', 'advanced-beneGesserit', 'special-karama', 'bidding', 'privacy', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'The explicit new profile adds source-aware Kull fuel to the existing typed interception, with accepted-declaration Nexus spend and saved original continuation. It does not retrofit old games or admit wider module/faction compositions.', evidence: ['game/choam-kull.ts', 'game/nexus-choam.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Actual private weapon-fuel selection, fuel and Nexus inspectors, required source Use, distinct counter/allow and refreshed Basic/Advanced phone paths pass. Wider controls/presentation acceptance remains open.', evidence: ['components/choam-kull.tsx', 'components/choam-power-cost.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles complete source-aware legal choices, decline and distinct counter continuations from canonical own projections. These are bounded legal policies, not calibrated Nexus strategy.', evidence: ['game/bot-choam-kull.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'This guide separates the printed effect and Cunning fuel from user-selected priority/custody and application privacy/spend conventions. New-profile limits and old printed-only behavior are explicit; publisher clarification and full-family acceptance remain open.', evidence: ['docs/NEXUS_CHOAM_RULES.md', 'docs/NEXUS_CHOAM_RUNTIME.md', 'docs/CHOAM_KULL_DESIGN.md', 'docs/CHOAM_KULL_SOURCE_UPDATE.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Types/lint/6,022 offline tests/build, authenticated SQLite source ownership/restart/races and actual Basic/Advanced CLI/runtime/phone success/prevention/refresh pass. Review repairs protect canonical fuel, suspended native parents, reserved counters, payment coverage and old printed saves. Fresh profile omits Sandtrout. Local HTTP 49/55 retains four 503s and two timeouts; full combinations and deployed acceptance remain open.', evidence: ['tests/nexus-choam-kull-engine.test.ts', 'tests/nexus-choam-kull-recovery.test.ts', 'tests/nexus-choam-kull-controls.test.tsx', 'tests/bot-nexus-choam-kull.test.ts', 'tests/choam-kull-recovery.test.ts', 'docs/NEXUS_CHOAM_RUNTIME.md'] },
],
},
{
id: 'nexus-choam-trade',
title: 'CHOAM Nexus: Collection trade or victorious inspection',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'When CHOAM is absent, an unallied holder may spend the CHOAM Nexus card with a Worthless card for two bank spice during Spice Collection, or inspect one random unused opposing hand card after winning a battle.',
steps: [
'The Collection trade and post-victory inspection are available only while CHOAM is absent and you are unallied. This works in Basic and Advanced play.',
'During Spice Collection, choose one Worthless card from your own hand. The chosen card and your CHOAM Nexus card are discarded, and you receive two spice from the bank.',
'Finish any current choice, Truthtrance or automatic continuation first. Continuing the phase without trading keeps your cards.',
'In the explicit native Richese Semuta composition, the already-paid public Worthless discard offers claim or Continue before its original trade receipt retires. Taking that card never pays again or makes the spent Nexus a Treachery target.',
'After winning a battle, the private inspection choice may instead spend the Nexus card to reveal one random opposing hand card that was not used in that battle. Only you see the sampled face; if none is eligible, continue without spending the card.',
],
related: ['nexus-cards', 'collection', 'battle'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Collection trade has physical payment/discard custody; victorious inspection samples one unused opposing card privately after battle cleanup. Both retain saved receipts. Combined-module acceptance remains open.', evidence: ['game/nexus-choam-trade.ts', 'game/nexus-choam-inspection.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Private Worthless-card picker and inspector, plus a separate post-victory inspect-or-continue choice and owner-only sampled face.', evidence: ['components/nexus-choam-trade.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles take legal private trade and inspection choices; strategic choice between uses remains unfinished.', evidence: ['game/nexus-choam-trade-options.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Both alternatives and their timing, privacy and remaining combination boundaries are documented.', evidence: ['docs/NEXUS_CHOAM_SECRET_ALLY.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused rules, private controls, AI, saved continuation and competing SQLite actions for trade and inspection. Complete family acceptance remains open.', evidence: ['tests/nexus-choam-trade.test.ts', 'tests/nexus-choam-trade-recovery.test.ts', 'tests/nexus-choam-inspection.test.ts'] },
],
},
{
id: 'nexus-choam-betrayal',
title: 'CHOAM Nexus Betrayal: random discard',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'With CHOAM seated, an unallied rival may spend its CHOAM Nexus card to discard one random physical Treachery Card from CHOAM without paying spice.',
steps: [
'Hold the CHOAM Nexus card while CHOAM is seated and holds at least one Treachery Card. Finish other choices or automatic continuations before using Betrayal; the printed panel has no phase restriction.',
'The server chooses uniformly from CHOAM’s held cards, not from a client choice. Discard both the Nexus card and the selected Treachery Card; CHOAM receives no spice.',
'Only the holder sees the Betrayal control. CHOAM’s hand count is shown only during Bidding; no rival card identity is disclosed before the ordinary discard reveal. Outside Bidding an empty-hand attempt rejects without spending the card.',
'In the explicit native Richese Semuta composition, the committed random CHOAM discard offers a neutral reaction with its face hidden until commitment. Claim or Continue completes that original receipt without sampling or compensating again; the CHOAM victim remains the discarder.',
'Basic and Advanced share this bounded effect. Other Nexus effects and complete expansion combinations retain their separate gates.',
],
related: ['nexus-cards', 'choam-modules'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Physical random discard, spent Nexus custody, clean action boundary and saved discard receipt are connected. Full CHOAM Nexus family and module acceptance remain open.', evidence: ['game/nexus-choam-betrayal.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Private holder control shows CHOAM’s name, Bidding-only public hand count, blocked reasons and spent-card cost without a non-Bidding count leak.', evidence: ['components/nexus-choam-betrayal.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles use the legal server-quoted action during Bidding when CHOAM’s count is public. Other phases avoid blind hidden-hand attempts; the server samples the actual card.', evidence: ['game/nexus-choam-betrayal-options.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed outcome, bounded timing, custody, privacy and remaining gates are explicit.', evidence: ['docs/NEXUS_CARD_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused Basic/Advanced custody, rejected actions, private controls, legal bots and JSON discard continuation are covered; complete module acceptance is not.', evidence: ['tests/nexus-choam-betrayal-engine.test.ts', 'tests/nexus-choam-betrayal-quote.test.ts', 'tests/nexus-choam-betrayal-controls.test.tsx'] },
],
},
{
id: 'nexus-emperor-secret-ally',
title: 'Emperor Nexus Secret Ally: extra revivals and original purchases',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'With Emperor absent, an unallied holder can take the current eligible extra free group or retain a personally affordable original purchase price. The provisional shortage policy takes three whenever possible, otherwise all one or two eligible counters. Original classic/native bank, Richese cache/Advanced Black Market, Ambassador and joint special Karama have distinct connected paths. Full combinations and assurance retain separate gates.',
steps: [
'Use the private Emperor Secret Ally controls during Revival. Select the physical elite count when more than one legal group is available. The card returns three eligible forces whenever possible, otherwise all one or two eligible counters under the visible provisional shortage policy. It is discarded once; zero forces cannot spend it.',
'These returns cost no spice and do not consume ordinary force-revival or free-revival allowances. You may use the card before or after ordinary revivals, while Revival remains open.',
'The Advanced one-per-turn Fedaykin limit still applies across ordinary revivals and this card. The extra total allowance does not permit another elite revival. The visible provisional shortage policy uses the remaining positive eligible group without exceeding that cap.',
'The independent revival grant enters original pending revival. Under the visible provisional policy, native Tleilaxu prevention/income, typed reserves, Tech and eligible Homeworld handling remain; ordinary free-rate blocking does not reprice it. Keeping the card creates no extra public confirmation.',
'At an eligible original classic/native Nexus normal bank-auction winner payment, prove the positive final bid from your own spice and spend Emperor Nexus to receive the lot without losing spice. Every winner sees the same payment confirmation; the provisional privacy recommendation remains. Canonical native module envelopes preserve original card/capacity, bonus and next-lot inspection; ordinary spice or legal Karama remains available. No bank subsidy or Richese cache/seller route is invented. Strict old physical revival admission is separate and never broadens.',
'Original Richese cache and other-buyer Advanced Black Market offer Pay or eligible Emperor Nexus Use after original Richese Betrayal. The provisional seller-unpaid policy retains your full personally affordable price without bank reimbursement. One original lot, native Harkonnen bonus and source successor continue; legal self-cache is included. Already-held Black Market paid retention supplies no acquisition/free-seller source, so it does not invent this confirmation or spend a Nexus. Original self-purchase forced discard cannot consume this Nexus or acquire a card.',
'A committed Richese Ambassador trigger now offers its original beneficiary Pay or eligible Emperor Nexus Use, with no new decline. Under the visible provisional purchase composition, prove and keep three own spice while drawing one original deck card; no bank payment, reimbursement or fake auction is made. Original private inability, native bonus and entrant movement/worm continuation remain. Allies cannot Use; actual forming-alliance Nexus disposal stays original.',
'Original Advanced Richese special Karama has an eligible private joint option: spend the held Karama plus Emperor Nexus at native purchase commit after proving three own uncommitted spice, keep that spice and acquire one exact unreserved cache card. Native once-use, full-hand/final-cache and enclosing controls remain; no bank money, ally bonus or fake auction is created. An explicit Richese Betrayal preview pauses before either cost; veto keeps both cards and once-use, all-pass executes the same joint intent. Ordinary Pay3 remains available. These compositions are visibly provisional, not immunity or broader Kull admission.',
],
related: ['nexus-cards', 'revival'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Independent extra returns retain the full three-counter source and explicitly record positive short groups under the provisional policy. Seller/Ambassador/joint sources remain. Normal bank purchase now uses canonical native Nexus admission plus exact old classic parity, preserving its original price, card/capacity/bonus/successor and receipt format. Strict legacy physical revival stays classic. No subsidy or extra seller source; full combinations and assurance are open.', evidence: ['game/nexus-emperor-secret-ally.ts', 'game/nexus-emperor-purchase.ts', 'game/auction-continuation-quote.ts', 'game/engine.ts', 'game/ambassador-phase.ts', 'game/ambassador-resume.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Existing uniform bank payment, private eligible Use and original next-lot controls now work for native buyers. Actual390px Richese/Ecaz Homeworld-Tech and Basic Tleilaxu retain price; wrong-face CHOAM Pay and Atreides inspection remain. Existing typed revival and seller/Ambassador/joint controls stay connected; complete-mode acceptance remains open.', evidence: ['components/nexus-emperor-secret-ally.tsx', 'components/nexus-emperor-seller-purchase.tsx', 'components/nexus-emperor-ambassador-purchase.tsx', 'components/nexus-cards.tsx', 'components/game-table.tsx', 'components/richese-special-karama.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Minimal profiles use projected legal revival and original personally funded purchase choices, or Pay, without inspecting rival private custody. Complete strategy/calibration remain unfinished.', evidence: ['game/nexus-emperor-secret-ally-options.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed purchase panel composes with original bank/Richese seller/Ambassador/special purchase classifications under visible provisional recommendations. No fake money, auction, beneficiary veto or broader Kull admission. Full combination/assurance/publication gates remain; CHOAM closing sales/trades are not direct purchase producers.', evidence: ['docs/NEXUS_EMPEROR_RULES.md', 'docs/NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md', 'docs/RULE_DECISIONS.md', 'docs/RICHESE_AMBASSADOR_RULES.md', 'docs/RICHESE_AMBASSADOR_IMPLEMENTATION.md', 'docs/RICHESE_ACQUISITION_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Native bank16-file union217/217, types/lint/build and thirty-six real API profiles pass: all six natives Basic/Advanced Pay/Use and Advanced Homeworld/Tech Pay/Use. Four actual390px surfaces prove Richese5 to5/Ecaz12 to12 with modules unchanged, Basic Tleilaxu5 to5 and Guild-card CHOAM Pay14 to12, one card/index0 to1 and actual next Atreides inspection, no overflow/errors. Prior joint112/112, Ambassador111/111, seller108/108 and other evidence remains; broad assurance and deployed acceptance are open.', evidence: ['tests/nexus-emperor-short-revival.test.ts', 'tests/fixture-nexus-short-revival.ts', 'tests/nexus-short-revival-runtime.test.ts', 'tests/nexus-emperor-secret-ally.test.ts', 'tests/nexus-emperor-secret-ally-recovery.test.ts', 'tests/nexus-emperor-purchase-engine.test.ts', 'tests/nexus-emperor-purchase-recovery.test.ts', 'tests/nexus-emperor-secret-ally-purchase-controls.test.ts', 'tests/fixture-nexus-emperor-seller.ts', 'tests/nexus-emperor-seller-purchase.test.ts', 'tests/nexus-emperor-seller-runtime.test.ts', 'tests/fixture-nexus-emperor-ambassador.ts', 'tests/nexus-emperor-ambassador-purchase.test.ts', 'tests/nexus-emperor-ambassador-runtime.test.ts', 'tests/fixture-nexus-emperor-special.ts', 'tests/nexus-emperor-special-purchase.test.ts', 'tests/nexus-emperor-special-runtime.test.ts', 'tests/fixture-nexus-emperor-bank.ts', 'tests/nexus-emperor-bank-profile.test.ts', 'tests/nexus-emperor-bank-runtime.test.ts'] },
],
},
{
id: 'nexus-richese-betrayal',
title: 'Richese Nexus Betrayal: veto purchase or divert sale payment',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Before a supported Richese purchase settles, an unallied rival may spend the physical Richese Nexus to veto a Richese-family purchase or divert another buyer’s sale payment. A concealed ordinary lot uses a visibly provisional committed blind attempt; a miss still spends the Nexus.',
steps: [
'This is an explicit local Richese Betrayal preview, not a public expansion start. It supports fresh two-to-six-seat Basic or Advanced tables with CHOAM, Richese and otherwise classic factions, the physical CHOAM deck and Nexus alone. Other optional modules, expansion factions, Semuta and Kull previews remain outside this boundary; older games do not silently acquire the effect.',
'To use either alternative, remain unallied and hold the singleton Richese Nexus card while another seat is native Richese. Use commits that physical Nexus card once. It spends no ordinary Treachery card, hand slot, Karama or activation spice. Current own-card promises and committed-resource legality still apply.',
'The opportunity opens after a valid winning quote or prepared Karama acquisition, before payment, activating-card spend, source removal or delivery. It binds the original card, buyer, price, funding selection and native continuation.',
'Purchase veto applies to Richese winning its own public cache lot through Once Around or Silent bidding. The exact selected cache card enters ordinary Treachery discard instead of Richese’s hand. No buyer or ally spice is spent; no payment goes to Richese, Emperor or bank, and no purchase bonus is created. The original lot retires once.',
'A positive Richese win in the ordinary auction also opens the neutral response before payment choice, even when the face is concealed. Under the provisional blind-attempt convention, commit your Richese Nexus first. If the reserved card is a Richese-family card, it is discarded without payment, delivery or purchase bonus. Otherwise the Nexus remains spent and the original payment choice continues. There is no pre-spend family check, inspection or refund. The exact discarded face stays private.',
'An immediate ordinary Karama acquisition opens the same blind attempt before its held activation card is played. On a successful veto, that Karama stays held and the unbought lot retires once. On a miss or all-pass, the exact original Karama spends and Richese acquires the lot free once. A competing bid is not charged or awarded.',
'The Advanced private special purchase also pauses before costs, with no selected face or private funding disclosed. Its selected cache card is necessarily Richese-family. A veto discards only that card: Karama, three spice and once-use stay unspent. An intended joint Emperor Nexus stays held too. All-pass executes the original paid or joint intent once, including separate native Emperor income and any suspended parent response. Pre-cost ordering is visibly provisional, not a printed refund ruling.',
'Sale diversion applies when another buyer owes a positive payment to Richese for a cache auction or an Advanced Black Market auction using normal, Once Around or Silent bidding. The same buyer receives the same physical card for the same price and own/authorized-ally split. That original payment goes to the bank, with zero sale income for Richese; it is not an extra charge, refund or second purchase.',
'A diverted sale still earns the original buyer consequences. In particular, an applicable Harkonnen purchase bonus continues once. Losing offers do not spend spice. A vetoed purchase, zero/free cache keep or unsold Black Market retention does not fabricate a bonus or a positive sale.',
'Your voluntary Nexus spend must preserve your own binding shipment promises. If the involuntary purchase veto makes an opponent’s promise impossible, the existing native reconciliation may release that promise; it does not pretend Richese acquired the vetoed card or paid the price.',
'All publicly possible responders receive the same neutral acknowledgement: unallied non-Richese seats with public held-Nexus presence. A seat may pass even if its secret card is irrelevant; only a privately eligible Richese-card holder sees Use. If no seat is publicly possible, settlement is automatic. This privacy-preserving application protocol is not publisher-prescribed timing or a general Nexus/Karama priority ruling.',
'Pass spends nothing and keeps your Nexus card. Your recorded pass cannot be undone within this event. Once every required responder passes, the original purchase resumes its native payment choice and settles once with its original recipient, card delivery and earned consequences. An accepted Use closes the opportunity with its one selected outcome.',
'The panel shows the public Richese target, buyer and source. Auctions show their winning price; ordinary Karama shows an intended free acquisition and private special Karama its nominal three-spice price. Private funding stays concealed. No payer resources, ally balances, rival hands, secret Nexus identities or saved receipt are shown.',
'A public cache face remains inspectable through existing entitled Card controls. A concealed Black Market face stays unknown unless you already have a separate inspection entitlement; a seller’s public claim is not its face. Nexus inspection shows printed reference text, not anybody’s hidden custody. This response grants no new card inspection.',
'The normal-lot blind-attempt rule is online composition, not a printed general right to discard a Nexus card at any time. Its winning-bid boundary precedes the spice/Karama chooser; immediate ordinary and private special acquisitions retain their own exact unplayed activating-card and once-use boundaries.',
'Existing cache-count, ordering and special-acquisition boundaries remain. Already-held Black Market paid retention supplies neither a cache acquisition nor seller income, so no veto/diversion invoice is invented. Unsupported counters or any-time overlays must not enter this saved purchase boundary. Finish a real response before underlying bidding or other actions can change its reserved card or funding.',
'Refreshing resumes the same event, passes and original auction continuation. Saved pending and completed history must retain exact physical source and once-only payment without rerolls, raw-action replay or requiring old cards to remain forever in discard. Stale or foreign event submissions reject rather than selecting another lot.',
'All four AI difficulties use the same private legal Use/public Pass projection and pass blind ordinary attempts while strategic play is deferred. Prior cache/Black Market SQL and phone-browser evidence does not certify the new normal-lot source. Full Richese/Nexus games, wider compositions and deployed acceptance remain open.',
],
example: 'Richese wins a revealed cache lot for 4: Betrayal veto discards that card, charges nobody and delivers nothing. If Harkonnen instead buys it for 4, sale diversion charges the original four spice once, sends it to the bank, delivers the card and preserves the applicable Harkonnen bonus. If everyone passes, the original purchase settles unchanged: Richese’s self-buy pays Emperor/bank; the other buyer’s sale pays Richese.',
related: ['nexus-cards', 'richese-cards', 'richese-acquisition', 'bidding', 'alliance-funding', 'privacy', 'faction-richese', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Self-cache, ordinary winning-bid and immediate Karama veto, private special pre-cost veto and other-buyer cache/Black Market recipient override bind actual sources. Ordinary blind misses spend Nexus then resume native purchase. Successful pre-cost veto retains original costs; private joint funding and parent income resume once on pass. Wider profiles/responses remain unfinished.', evidence: ['game/nexus-richese-betrayal.ts', 'game/engine.ts', 'game/normal-auction-retirement.ts', 'game/auction-continuation-quote.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Mounted preview controls separate public neutral pass/wait from private legal Use, retain existing entitled inspectors and suspend the underlying auction panel without revealing the unknown Black Market face.', evidence: ['components/nexus-richese-betrayal.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four minimal legal policies consume canonical own-view eligibility and acknowledge publicly required opportunities; full strategy and calibration remain unfinished.', evidence: ['game/bot-nexus-richese-betrayal.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Prepayment veto, same-invoice diversion, singleton cost, pass behavior, neutral protocol, entitled faces and excluded producer/counter boundaries are explained without full-family or publisher-timing claims.', evidence: ['docs/NEXUS_RICHESE_RULES.md', 'docs/NEXUS_CARD_RULES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Focused invoice, unbought retirement, real producer and controls/profile cases cover ordinary winning bids, immediate Karama and private special/joint intent. Controlled ordinary recycling is labelled; private sources use native draws. Historical SQL/phone evidence remains dated legacy scope. Broader combinations, final assurance and deployed acceptance remain open.', evidence: ['tests/nexus-richese-betrayal-karama.test.ts', 'tests/normal-auction-retirement.test.ts', 'tests/richese-karama-betrayal-engine.test.ts', 'tests/nexus-richese-betrayal-karama-controls.test.tsx', 'tests/fixture-richese-karama-betrayal.ts', 'tests/richese-normal-betrayal-engine.test.ts', 'docs/NEXUS_RICHESE_RULES.md'] },
],
},
{
id: 'nexus-guild-betrayal',
title: 'Guild Nexus Betrayal: take one funded shipment payment',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'An unallied rival holding Guild Nexus may take one full original positive shipment payment, including their own pre-funded payment, instead of Guild, bank or occupied Junction income in fresh classic core or supported original standalone entries.',
steps: [
'Fresh classic2–6 Basic/Advanced Nexus core uses base33 or selected independent36, optionally all14 Skills, original Homeworlds, Tech3+ and Advanced Strongholds2+. Actual Guild receives original fee state at fresh setup alongside supported Harkonnen/Ixian reactions; played games are not reflagged. Original explicit native Guild/Homeworld entry retains its seeded boundary. Other selected families, Discovery/Semuta and reaction envelopes stay separate.',
'Remain unallied and hold the actual singleton Guild Nexus while another seated player is native Guild. Use spends that physical Nexus once, with no Treachery Card, hand slot or extra activation spice. Cunning and absent-Guild Secret Ally are separate modes. An empty Guild board or temporary leader control does not change the mode.',
'Within classic core, original Guild Cunning second shipments and Richese Secret Ally discounted shipments retain their actual signed grant, physical group, paid tariff and native continuation through the same funded fee gate. One Guild singleton cannot simultaneously fund native Cunning and rival Betrayal Use; other held faces retain neutral Pass. Outside core, original producer envelopes remain separate. Guild Secret Ally still requires Guild to be absent and is not another native-Guild producer.',
'Wait for a legal positive shipment fee after any applicable native stop and rate responses. The original source, tariff and physical forces must already be legal and fully funded. Stopped, declined, invalid or zero-cost shipments cannot award spice or spend this Nexus; ordinary free Fremen reinforcement and free Guild Ambassador transport stay distinct.',
'Use takes the full original charged payment, not merely eligible Guild income or its reduced half. The original payer and authorized ally contribution pay once, but Guild, bank and any occupied-Junction receiver get none of that invoice. This is replacement of one fee, not an extra award or second charge.',
'You may take your own payment, but you must afford it before receiving it back. A wholly self-funded payment is paid and returned for net zero spice; future receipt cannot finance the declaration. An ally’s pledge has already debited that donor into escrow: the original escrow is consumed once, not charged to the donor again. Taking the fee does not change the payer’s own remainder or donor split. Your live voluntary-spend promises and reservations still apply.',
'The printed occupied-Junction override delivers the entire fee: a four-spice payment gives the holder four, not two while an occupier gets two. It does not decide occupation entitlement after departure/replacement/contest or retained penalties. Ordinary low-Junction rounding now follows the separately ruled whole eligible invoice once. Non-overridden settlement preserves its native permissions; hypothetical Nexus play supplies no new ordinary invoice permission.',
'Supported original producers are ordinary physical reserve shipment onto Arrakis, native Guild cross-planet/return transport, existing native Homeworld shipment and an accepted Junction-sponsored transport. Keep the same tariff, physical elite/advisor group, selected native Homeworld reserve sources, source/destination custody and sponsor/offer. No new foreign Homeworld route or Secret Ally return permission is granted.',
'The original native shipment completes once: pay the bound fee, move the exact physical forces, mark that shipment used and finish applicable native arrival and response decisions. Ordinary movement afterward remains available under the shipper’s own rules. Betrayal does not grant another shipment, move, rate or sponsorship.',
'Every publicly possible unallied non-Guild seat with held-Nexus presence receives the same event and shipper, including an eligible shipper. A secret irrelevant face still uses Pass; only a privately eligible Guild-card holder sees Use and their own unavailable reason. This neutral acknowledgement is an application privacy protocol, not publisher timing authority, blanket Karama immunity or a new general response priority.',
'The response adds no price, source/family/world, destination, force count, donor, balance, recipient or saved-receipt disclosure. Existing own-source and public inspector entitlements do not expand. Neutral acknowledgement logs no secret fee or source; the original committed shipment retains its normal result logging. Inspecting a printed Nexus reference is not evidence of another player’s held card.',
'Pass spends nothing and keeps Nexus. A recorded pass cannot be undone for this event. All required passes settle the original shipment once with its original receiver; with no publicly possible responder it settles automatically. Accepted Use spends the physical Nexus and redirects the same fee. Both actions submit only the offered event: the server binds payment and recipient. Finish this gate before shipping, moving, pledging, playing cards or opening another decision.',
'Refresh resumes the same typed producer, original invoice, passes and pending/completed ownership without a second donor debit, fee, card spend or force move. Stale or foreign events, malformed/orphaned saves and competing Use/final-Pass requests cannot select a new shipment or replay a raw action. Bounded direct engine, authenticated SQLite and actual Basic/Advanced CLI/phone source paths are verified locally; this does not certify complete Guild or Nexus rules.',
'Easy, Medium, Hard and Brutal share canonical legal private choices. Current classic-core policies complete real Mentat replacement, purchased-card choice, discounted fee claim, third-party Bureaucrat and native Cunning return/turn closure. These are bounded playability paths, not strategy calibration. Complete families, wider combinations, comprehensive assurance and deployed acceptance remain open.',
],
example: 'Your original shipment costs four spice and you already have four available: Use pays that fee once and returns all four to you, spending Guild Nexus but granting no extra shipment. If another shipper pays four, you receive four instead of Guild, bank or an occupied Junction receiver. Passing leaves the original routing unchanged.',
related: ['nexus-cards', 'movement', 'alliance-funding', 'homeworlds', 'privacy', 'faction-guild', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Bounded reserve, native Guild transport, Homeworld and Junction producers bind the full funded invoice and original typed continuation with independent pending/completed ownership. Own refund, donor escrow and occupied-Junction replacement retain once-only native payment/delivery; wider producers remain excluded.', evidence: ['game/nexus-guild-betrayal.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'The bounded contract separates uniform acknowledgement from private Use and own blocked reason, with event-only actions, unchanged inspector entitlements and no new fee/source disclosure. Broader presentation and acceptance remain open.', evidence: ['components/nexus-guild-betrayal.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles use only canonical projected legal Use/Pass choices while the payment gate suspends underlying actions. Full strategy and calibration remain unfinished.', evidence: ['game/bot-nexus-guild-betrayal.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed full-fee and own-payment clauses, escrow funding, explicit occupied-Junction override, four native adapters and privacy protocol are recorded. Ordinary whole-invoice rounding follows the separate user ruling; unresolved occupation/priority boundaries and full-family acceptance remain open.', evidence: ['docs/NEXUS_GUILD_RULES.md', 'docs/NEXUS_CARD_RULES.md', 'docs/HOMEWORLD_PAYMENT_INCOME_RULES.md', 'docs/RULE_DECISIONS.md'] },
{area:'Verification',status:'Partial',detail:"Classic core base33 or selected36 with optional14 now initializes the original actual-Guild fee source. Ten combined consumer cases, three390px journeys and twenty-eight legal policy choices preserve discounted5/price1, full-fee claim, actual third-party Bureaucrat2, all three Cunning routes and native cancellation. Earlier native/HTTP/saved results remain dated in linked contracts; broader and deployed assurance stay open.",evidence:['tests/classic-nexus-core.test.ts','tests/fixture-classic-nexus-core.ts','game/faction-module-profile.ts','tests/nexus-guild-betrayal.test.ts', 'tests/nexus-guild-betrayal-engine.test.ts', 'tests/nexus-guild-betrayal-controls.test.tsx', 'tests/bot-nexus-guild-betrayal.test.ts', 'tests/nexus-guild-betrayal-recovery.test.ts', 'docs/NEXUS_GUILD_RULES.md']},
],
},
{
id: 'nexus-ixian-replacement',
title: 'Ixian Nexus Secret Ally: replace the just-purchased card',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'An unallied holder with Ixians absent may spend Ixian Nexus to replace the exact card just bought in a normal auction or supported native Richese sale, preserving original settlement and drawing the actual deck top privately.',
searchText: 'Ixian Nexus Secret Ally purchased card replacement normal auction cache Black Market Karama full hand empty deck same card',
steps: [
'Original standalone entries admit classic/base33, Tleilaxu plus classics/Ix47, or Richese plus classics/CHOAM35 and cache, with Ixians absent. Fresh classic2–6 Basic/Advanced Nexus core initializes the same effect with base33 or selected36, optional14, original Tech3+ and Advanced Strongholds2+; independent cards are not required. Other native/module envelopes keep their bounds; no played game gains a new stamp.',
'Nexus has no starting deal. A draw requires a qualifying closing Nexus with an alliance. A two-seat profile can continue its base game but cannot naturally create an unallied Secret Ally holder; actual replacement needs at least three seats, or four for two simultaneous unallied recipients.',
'The photographed publisher face grants an independent Secret Ally operation when Ixians are absent. Remain unallied and hold the actual singleton Ixian Nexus. Native Ixian allied replacement is a different cancelable advantage and is not removed or used as a fallback. The adopted unofficial Advanced rulebook supplies relevant core rules, not this absent Nexus face or a new Nexus ruling.',
'Normal paid/Karama purchases, genuine native Richese sold lots and actual Advanced special-Karama acquisition during Bidding supply their own purchase authority. A direct purchase has already spent its Karama, three spice and once-use; its target/price3 are not an unrelated row or sale. Use/Keep resumes original income, active player and suspended controls. Only unpaid bids remain reserved; already-delivered sale commitments are not held twice. Other phases keep native acquisition without a Bidding-only Nexus choice. Unbid keeps, gifts, bonus draws, Technology swaps and old hand cards supply no purchase.',
'Provisional cache scope: the independent absent-Ixian Nexus grant applies to a genuine cache purchase under the selected literal reading. It is not the native Ixian alliance advantage: that advantage’s printed cache exclusion is unchanged. The table explains this policy before Use; it is product interpretation, not a newly located publisher FAQ or an explicit user-selected rule.',
'Every publicly unallied supported buyer with public held-Nexus presence receives the same neutral Purchased card choice, irrespective of the secret face. An irrelevant-face buyer may Pass but cannot Use. This is an inferred development privacy convention, not publisher-prescribed timing or a general resolution of pending anytime and response-priority questions.',
'Only the buyer may inspect its already-owned purchased card in this choice. You may inspect your own actually held Nexus through the existing authorized inspector; the prompt does not identify anybody else’s Nexus. Rivals receive no purchased or replacement face, private price, receipt, deck order or eligibility reason. Earlier Atreides auction inspection does not grant a peek of the replacement.',
'Pass keeps your purchased card and Nexus and closes this purchase opportunity. Use spends your physical Ixian Nexus once and discards exactly that just-purchased Treachery Card before drawing the actual next deck card. You cannot select another held card, replacement face, price or recipient; both actions bind only the offered event.',
'A full legal hand can replace because the discard opens its slot first. If the draw deck is empty, recycle eligible Treachery discards including the card just discarded: the same physical card can legally return. The unsold auction row is not the draw deck, and no different-card guarantee or new auction is created.',
'Harkonnen uses a visibly provisional order matching the native Ixian ally sale pipeline: this replacement choice, original income response, original bonus-card response, then the next lot. It is product composition, not a printed priority ruling. Use draws the replacement before any allowed bonus; Keep leaves that top card for the bonus. Replacement grants no second bonus or slot at the eight-card limit. Canceling the later native bonus never undoes the replacement or original payment.',
'Keep the original payment, funded contribution and free/paid source. There is no refund or second debit. Original income and the native auction continuation finish once after the choice, preserving existing response and decision priority. Other lot, card, transfer and payment actions cannot bypass the pending source lock; independent own-seat autopilot changes remain available.',
'Refresh restores the same pending event or closed outcome without another payment, draw, shuffle or Nexus spend. A later genuine purchase may create a new event; closed, stale, foreign or malformed events cannot reopen an old one. Later transfers and reshuffles do not invalidate history merely because the old physical card has moved again. Receipt links are nonrecursive so saved history stays linear across retained purchases.',
'Easy, Medium, Hard and Brutal use their own projected legal Use/Pass choices, not calibrated strategy. Current classic independent-card controls preserve original paid settlement and native Harkonnen bonus through this same protocol. Earlier native, private and saved evidence remains dated. Full faction/module games, wider compositions and deployed acceptance remain separate gates.',
],
example: 'You buy a card for four spice and inspect it privately. Pass keeps it and the Nexus. Use keeps the original four-spice purchase settled, spends Ixian Nexus, discards that exact card and draws the next deck card. If the draw deck is empty, its new discard joins the actual recycled pile and can be drawn again.',
related: ['nexus-cards', 'bidding', 'ix-technology', 'card-karama', 'alliance-funding', 'privacy', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Normal, native sold-lot and Bidding-phase direct Richese receipts bind actual delivered card, native price and continuation. A special receipt takes authority over unrelated rows/income, preserving active player, once-use and controls without a fake auction. Only unpaid bids stay reserved. Other phases keep native special acquisition without a Nexus offer. Receipt v1 shapes and ordinary parents remain unchanged; other modules stay separate.', evidence: ['game/nexus-ixian-replacement.ts', 'game/engine.ts', 'tools/prototype-room.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Actual390px native special purchase controls are enabled at three remaining spice during older paid income. Direct Use preserves the older card and both credits; reserved-bid Keep reaches a distinct genuine normal offer, then one row advance. Guidance states original cost/once-use committed and no new auction. Provisional cache/Harkonnen scope remains visible. No overflow/browser/application error; broader acceptance remains open.', evidence: ['components/nexus-ixian-replacement.tsx', 'components/richese-special-karama.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four minimal legal policies use their own projected offer while original settlement waits. Sixteen original-state actions cover quiet Emperor/bank, reserved bid and nested paid income direct purchases; previous source-qualified paths remain in the contract. No strategy or difficulty calibration is claimed.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Actual auction/direct authority, native price3 and cost commitment, once-use, active/control restoration, paid-versus-unpaid reservations, source-v1 preservation and provisional cache/Harkonnen interpretations are documented. Outside Bidding the native special purchase adds no Nexus offer. Other modules and universal/publisher priority remain separate.', evidence: ['docs/NEXUS_IXIAN_REPLACEMENT_RULES.md', 'docs/NEXUS_CARD_RULES.md', 'docs/RULE_DECISIONS.md'] },
{area:'Verification',status:'Partial',detail:"Fresh classic core base33 or selected36 optional14 initializes original Ixian replacement without requiring independent cards. Actual paid base-card and selected independent purchases retain one invoice, exact discard/draw and original native bonus. Ten combined consumer cases and four legal policies pass; prior native/direct evidence remains dated. Broader modules, full games and deployed assurance stay open.",evidence:['tests/classic-nexus-core.test.ts','tests/fixture-classic-nexus-core.ts','game/faction-module-profile.ts','tests/classic-independent-nexus-reactions.test.ts','tests/fixture-classic-independent-nexus-reactions.ts','tests/nexus-ixian-replacement.test.ts', 'tests/nexus-ixian-replacement-engine.test.ts', 'tests/fixtures/nexus-ixian-native-depleted.json', 'tests/fixture-nexus-ixian-replacement.ts', 'tests/fixture-native-ixian-replacement.ts', 'tests/native-ixian-replacement.test.ts', 'tests/bg-ixian-replacement.test.ts', 'tests/fixture-bg-ixian-replacement.ts', 'tests/harkonnen-ixian-replacement.test.ts', 'tests/fixture-harkonnen-ixian-replacement.ts', 'tests/richese-ixian-replacement.test.ts', 'tests/fixture-richese-ixian-replacement.ts', 'tests/richese-ixian-special-replacement.test.ts', 'tests/fixture-richese-ixian-special-replacement.ts', 'tests/richese-ixian-direct-replacement.test.ts', 'tests/fixture-richese-ixian-direct-replacement.ts']},
],
},
{
id: 'nexus-ixian-betrayal',
title: 'Ixian Nexus Betrayal: prevent Bidding or Technology',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'In the fresh local ixian-betrayal preview, an unallied rival may spend the physical Ixian Nexus to prevent one original native Bidding inspection/draw attempt or one Advanced Technology exchange before its effect.',
searchText: 'Ixian Nexus Betrayal Bidding extra card inspection draw Advanced Technology exchange native counter neutral acknowledgement',
steps: [
'This fresh local profile admits two to six unique Basic or Advanced seats with native Ixians and otherwise classic factions or Tleilaxu, the physical forty-seven-card Ix Treachery Deck and Nexus alone. CHOAM, Richese, Ecaz, Moritani, Homeworlds, Leader Skills, Semuta, Discoveries and other optional overlays are excluded. It is not a public start, reset or upgrade to an old save.',
'Nexus has no initial deal or automatic draw. Finish a genuine qualifying closing Nexus with an alliance before an unallied seat may draw. One natural receiver needs at least three actual seats; two simultaneous receivers need four. A two-seat profile can continue ordinary play without fabricating an unreachable Betrayal card.',
'The photographed publisher face grants both alternatives, but one card cannot prevent both. Remain unallied and hold the actual singleton Ixian Nexus while another seat is native Ixians. Use discards that physical Nexus once, without a Treachery Card, Karama, activation spice, hand slot or force cost. Cunning and absent-Ixian Secret Ally remain separate modes.',
'The current original native attempt determines the alternative. Bidding works in Basic and Advanced; Technology requires Advanced and an actual accepted exchange declaration before bidding or Atreides inspection. You cannot choose a different source, provider, draw count, hand card, lot, price or completed attempt.',
'Resolve the original native Karama window first, including legal Advanced Bene Gesserit substitutions. A successful native counter takes the original denied transition once without opening a Nexus gate or spending Nexus. After all native passes, pause before the actual draw, exchange or Atreides peek.',
'Original native response ownership survives legal BG Worthless-Karama conversion and hand-exchange suspension. If a legal pre-offer Harkonnen exchange removes the declared Technology card, the native attempt completes without an exchange or Nexus offer; the declared attempt stays used. An already-open Nexus source still rejects changed card custody or parent state.',
'All publicly possible unallied non-Ixian seats with public held-Nexus presence receive the same Native Ixian advantage acknowledgement, irrespective of secret face. An irrelevant-face seat may Pass; only the canonical privately eligible owner sees Use and their own unavailable reason. Native-counter-first and neutral acknowledgement are explicit bounded privacy/ordering inferences, not publisher-prescribed universal priority or a ruling for other pending stacks.',
'Pass · allow the original advantage spends nothing and retains Nexus. Your saved pass cannot be undone for this event. All required passes allow the original native effect once; no publicly possible responders allow it immediately. Use Ixian Nexus · prevent this Bidding advantage or Technology advantage spends the singleton card and denies just this source.',
'Bidding prevention draws exactly the normal allocated count, without an extra inspection card, Ixian private inspection or return selector. All-pass retains the native extra draw, private top/bottom return and auction continuation. The real native deck allocation still governs depleted stock; Nexus does not manufacture cards or rebuild the pool.',
'Technology prevention keeps the selected Ixian hand card and unseen lot where they were, preserves the declaration’s spent once-per-turn attempt, then resumes the original normal Atreides/auction continuation once. All-pass performs the actual declared exchange and its continuation once. A native decline before declaration still saves the option.',
'This is one current attempt, not a whole-phase ban, removal of all Ixian powers or undo of already completed draws, selections, exchanges, inspections or purchases. A later legally available native attempt may open a new event, including after later physical card recycling. General duration over other multiple-lot situations remains outside this bounded profile.',
'The acknowledgement exposes only its public event, Bidding/Technology kind and native provider. It reveals no selected Ixian hand card, unseen lot, extra inspection faces, deck order, rival Nexus identity, private source or rival eligibility reason. Inspect only your own actually held Nexus through its existing inspector; a neutral prompt grants no new card entitlement.',
'Both actions submit only the offered event. Refresh resumes the same source and passes without another declaration, native counter cost, Nexus spend, draw, swap or suffix. Closed events expire; nonrecursive saved history remains valid when cards later move or recycle. Stale, foreign, malformed or orphaned sources reject instead of silently allowing the native effect.',
'Finish the pending source before ordinary bidding, draws, exchanges or competing card mutation. Existing responses, decisions and Truthtrance retain priority; independent own-seat autopilot changes remain available to every seat. No additional Karama counter to direct Nexus prevention is invented, and no blanket Nexus immunity follows.',
'Easy, Medium, Hard and Brutal use their own projected legal Use/Pass choices for minimal continuation, not calibrated Nexus strategy. Frozen native, private controls, bots, authenticated recovery, exact-version CLI and phone evidence verify this bounded path. Raw administrator progress follows the same public unfinished acknowledgements; full modes and deployment remain separate gates.',
'Advanced Technology on Richese cache/Black Market lots remains unresolved and excluded; its separate saved decline elsewhere is not an exchange ruling. General competing-effect priority, combined modules, complete Ixian/Nexus games, strategic calibration, public release and live deployment remain separate gates. The adopted unofficial Advanced PDF supplies core defaults, not this Nexus face or a new Nexus ruling.',
],
example: 'After native counters pass, a rival spends Ixian Nexus on Bidding: only the ordinary allocated auction cards are drawn and Ixians inspect none. On an Advanced Technology declaration instead, Use keeps both cards in place and the declared attempt used; the normal Atreides/auction suffix follows. Passing permits the corresponding original advantage unchanged.',
related: ['nexus-cards', 'bidding', 'ix-technology', 'ix-deck', 'card-karama', 'advanced-beneGesserit', 'privacy', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Both current-attempt alternatives bind original native source and continuation, separate singleton Nexus cost, native counters first, uniform public membership and nonrecursive pending/closed history. Wider producers, duration and combined modules remain excluded.', evidence: ['game/nexus-ixian-betrayal.ts', 'game/engine.ts', 'game/ix-auction-draw-quote.ts', 'game/ix-technology-cancellation.ts', 'tools/prototype-room.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Neutral native-advantage acknowledgement separates public Pass/wait from private eligible Use and own-held Nexus inspection, with event-only actions, no rival card/source disclosure and pending native controls suspended. Broader presentation acceptance remains open.', evidence: ['components/nexus-ixian-betrayal.tsx', 'components/game-table.tsx', 'game/table-turn.ts'] },
{ area: 'AI', status: 'Partial', detail: 'All four minimal legal policies consume only canonical own-view Use/Pass eligibility and preserve pending priority. Full Nexus strategy and difficulty calibration remain unfinished.', evidence: ['game/bot-nexus-ixian-betrayal.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Photographed face, native source order, both alternatives, current-attempt duration, physical cost, inferred privacy/ordering, fresh natural Nexus rights and explicit Richese/module/public/deployment boundaries are recorded without PDF Nexus authority or full-family claims.', evidence: ['docs/NEXUS_CARD_RULES.md', 'docs/NEXUS_CARD_RUNTIME.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Genuine native Basic/Advanced Bidding and Advanced Technology allow/prevent, printed/BG priority, exact stock/count/attempt/suffix, public face parity, legal bots and authenticated restart/races/rejection pass. Actual backed-up CLI/phone Use/Pass/partial refresh and saved stock prove both endpoints. Native Harkonnen/BG and public admin ownership regressions retain prior continuation; wider modes and deployment remain open.', evidence: ['tests/nexus-ixian-betrayal.test.ts', 'tests/nexus-ixian-betrayal-runtime.test.ts', 'tests/fixture-nexus-ixian-betrayal.ts', 'tests/nexus-ixian-betrayal-controls.test.tsx', 'tests/bot-nexus-ixian-betrayal.test.ts', 'tests/nexus-ixian-betrayal-recovery.test.ts', 'tests/prototype-room.test.ts', 'tests/ix-technology.test.ts', 'tests/admin-directory.test.ts'] },
],
},
{
id: 'nexus-harkonnen-betrayal',
title: 'Harkonnen Nexus Betrayal: cancel a declared traitor',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'Fresh supported classic starts cancel one original native Harkonnen traitor call, return that physical card immediately and give Harkonnen a private replacement during Mentat Pause.',
searchText: 'Harkonnen Nexus Betrayal revealed declared traitor ally caller beneficiary shuffle replacement Mentat neutral acknowledgement',
steps: [
'Original standalone preview requires native Harkonnen, classic2–6 Basic/Advanced, base33 and Nexus alone. Fresh classic Nexus core initializes the same effect with base33 or selected36, optional14, original Tech3+ and Advanced Strongholds2+, alongside actual Guild/Ixian reactions. Public selection binds the census; real held-card effects and cleanup stay native. No played game is reflagged; other native/module envelopes remain separate.',
'Nexus has no initial deal. An actual alliance-qualified closing Nexus must supply the unallied holder. An effect scenario needs at least three seats; two seats can continue ordinary play without inventing a card. Two simultaneous receivers need four actual seats.',
'The photographed publisher face cancels a revealed Harkonnen traitor, shuffles that exact card back immediately, and gives Harkonnen one replacement during Mentat Pause. It is not a draw-now exchange, whole-battle ban or refund of an already resolved outcome. Native Cunning and absent-Harkonnen Secret Ally remain separate effects.',
'Only a genuine legally matching native personal or allied Harkonnen call is a source. Preserve the actual caller, combatant beneficiary, target, original revealed plans and physical identity. A false or invalid call, protected leader, another faction or finished battle cannot offer this effect.',
'Resolve the original allied Harkonnen Karama counter first, including legal Advanced Bene Gesserit conversion. Native cancellation opens no Nexus gate or cost. A personal Harkonnen call gains no invented native counter. After native allowance, declare the actual matched traitor before its outcome and await the neutral acknowledgements.',
'Every publicly possible unallied non-Harkonnen held-Nexus owner sees the same declared-traitor acknowledgement, regardless of secret face. Only an actual privately eligible Harkonnen-card holder sees Use and their own unavailable reason. Native-counter-first and this uniform local preview timing are bounded inferences, not an answer to the outstanding universal reaction-policy question.',
'The classic independent-card and optional Skills entry inherits that same visibly provisional acknowledgement convention. Original allied printed Karama may prevent the call before any Nexus opportunity; allowing it preserves the actual caller and combatant beneficiary. No second counter window or new universal policy is invented.',
'Pass retains both cards and cannot be withdrawn for that event; all required passes retain the original call and resume it once. Use spends the physical singleton Nexus, returns only that declared Harkonnen traitor to the actual shuffled reserve, prevents only that call and resumes the surviving original battle once.',
'The replacement is automatic at the actual current Mentat opening, before optional actions and victory acceptance in this bounded profile. Draw the actual reserve top privately once; it may be the returned card after its shuffle. No extra confirmation, selected replacement, Treachery slot, activation spice, force or leader cost is added.',
'The public declaration exposes only its actual matched traitor and roles, not other held Harkonnen cards, rival Nexus faces, reserve order or private source. Inspect that declared Traitor Card through its public inspector, and inspect only your own actually held Nexus. A replacement identity remains private to Harkonnen; prior public history must not claim continued ownership of the returned card.',
'Both actions submit only the offered event. Refresh retains the same acknowledgement and partial passes; due and completed replacement provenance survives without reshuffling, redrawing or replaying native battle and phase effects. Stale, foreign, malformed or changed committed sources reject before any cost.',
'Finish the source before ordinary votes or competing card mutation. Existing response, decision and Truthtrance priority remain intact; every seat retains independent own autopilot control. Four difficulties use minimal legal projected Use/Pass, not calibrated strategy.',
'Frozen genuine personal/allied Basic/Advanced, exact retirement and actual Mentat continuation, private controls, legal bots, authenticated races/rejection, backed-up same-setup CLI and phone evidence verify this bounded path. Raw administrator progress follows the same sole public remaining acknowledgement. The separate universal response and competing-module questions remain open; this is not complete Harkonnen/Nexus or deployed acceptance.',
],
related: ['nexus-cards', 'battle', 'card-karama', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Original personal/allied call and native counter, exact immediate retirement, canceled call, surviving battle once and automatic private actual Mentat replacement are connected through a strict fresh local profile with bounded custody/history checks.', evidence: ['game/engine.ts', 'game/nexus-harkonnen-betrayal.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Public declared-Traitor inspector, own eligible event-only Use/Pass/Nexus inspector, sole/multiple public ownership and every-seat independent autopilot are connected. Actual phone Use, wrong-face Pass, partial refresh and raw administrator owner agree.', evidence: ['components/nexus-harkonnen-betrayal.tsx', 'components/game-table.tsx', 'game/table-turn.ts', 'db/admin-directory.ts'] },
{ area: 'AI', status: 'Partial', detail: 'All four minimal policies consume canonical own-view choices and native pending priority with legal paced continuation; full strategy and calibration remain separate.', evidence: ['game/bot-nexus-harkonnen-betrayal.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed immediate/delayed operations, personal/allied roles, inferred local counter/privacy convention, fresh natural card rights and unchanged outside-profile/module/public/deployment questions are explicit.', evidence: ['docs/NEXUS_HARKONNEN_RULES.md', 'docs/NEXUS_CARD_RUNTIME.md', 'docs/RULE_DECISIONS.md'] },
{area:'Verification',status:'Partial',detail:"Fresh classic core base33 or selected36 optional14 initializes the original actual-Harkonnen source without a card-variant dependency. Genuine base33 all14 Use reaches one real Mentat draw; earlier independent Harass, Pass and allied-counter cases remain. Ten combined consumer cases and four legal policies pass. Other modes, universal timing and deferred assurance remain open.",evidence:['tests/classic-nexus-core.test.ts','tests/fixture-classic-nexus-core.ts','game/faction-module-profile.ts','tests/classic-independent-nexus-reactions.test.ts','tests/fixture-classic-independent-nexus-reactions.ts','tests/fixture-nexus-harkonnen-betrayal.ts', 'tests/nexus-harkonnen-betrayal.test.ts', 'tests/nexus-harkonnen-betrayal-runtime.test.ts', 'tests/nexus-harkonnen-betrayal-controls.test.tsx', 'tests/bot-nexus-harkonnen-betrayal.test.ts', 'tests/nexus-harkonnen-betrayal-recovery.test.ts', 'tests/prototype-room.test.ts', 'tests/admin-directory.test.ts']},
],
},
{
id: 'nexus-fremen-ride-betrayal',
title: 'Fremen Nexus: prevent an impending worm ride',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Respond after an actual worm appears and before its native ride transfers forces.',
steps: [
'At an actual ordinary or Great Maker reserve ride, unallied non-Fremen seats with any public Nexus back respond in storm order. The opportunity does not reveal the hidden face. A publicly discarded Fremen card creates no needless pause; its valid pending Cunning ride already keeps that singleton in discard.',
'The current responder may Continue to retain every card and allow original ride choices. Only an actual held Fremen Nexus permits the private prevention option. After all Continue replies, the original unmade decision is restored unchanged.',
'Use spends the one original card and prevents remaining ordinary, native Cunning and Great Maker rides this turn under the existing source composition. It moves or kills no group and does not repeat worm destruction, protection, spice, votes or Nexus. Already committed transfers stay committed.',
'The public response frame retains its original event, source and ordered acknowledgments. Controls persist until a reply; underlying gameplay waits. Existing clean predeclarations, movement alternative and legacy receipts remain. A redrawn card cannot spend another alternative in the same turn.',
'The selected neutral priority is visibly provisional software composition. Existing native module admission, complete-mode gates and final assurance remain separate.',
],
related: ['nexus-cards', 'spice-blow', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Neutral original-source wrapper, signed progress, private real-card use, exact all-pass restore and native no-transfer prevention connect ordinary and Great Maker decisions.', evidence: ['game/nexus-fremen-ride-betrayal.ts', 'game/nexus-fremen-betrayal.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Persistent current-responder Continue/private Use, public waiting and busy suppression connect through GameTable.', evidence: ['components/nexus-fremen-ride-betrayal.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles submit the actual projected current event and legal private Use/Continue. Strategic refinement remains deferred.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed effect, selected neutral priority, preserved native effects and earlier timing boundary are distinguished.', evidence: ['docs/NEXUS_FREMEN_RULES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Controlled pure/controls cases accompany genuine ordinary Basic/Advanced and Advanced Maker sources. Current frozen counts and limits are in the canonical source contract; complete modes and final assurance stay open.', evidence: ['tests/nexus-fremen-ride-betrayal-quote.test.ts', 'tests/nexus-fremen-ride-betrayal-controls.test.tsx', 'tests/nexus-fremen-reactive-betrayal-engine.test.ts', 'tests/fixture-nexus-fremen-reactive-betrayal.ts'] },
],
},
{
id: 'nexus-cards',
title: 'Nexus Cards',
searchText: NEXUS_CARD_REFERENCE.map(card => `${card.faction} ${card.betrayal} ${card.cunning} ${card.secretAlly}`).join(' '),
category: 'Advanced & expansions',
coverage: 'Partial',
summary: 'A separate twelve-card deck rewards remaining unallied. Private draws and selected Atreides, Harkonnen, Tleilaxu, Ixian, Bene Gesserit, Emperor, Fremen, CHOAM, Moritani, Richese and Guild effects are connected. Other effects and complete module play remain in development.',
steps: [
'This optional module can be combined with Basic or Advanced rules independently of the factions and other expansion modules selected. Include one Nexus Card for each of the twelve factions.',
'Fresh classic2–6 Nexus core admits base33/independent36. Any selected E1/E2/E3 decks compose the independent three-card variant with Nexus12, optionally all14, original Homeworlds, Tech3+ and Advanced Strongholds2+. A selected deck need not seat its native faction. Ordinary stock is36/38/50 plus any native Richese cache10. Native Ecaz Occupy, Advanced Moritani Assassinate, Ambassador/Terror arrival and shared-Duke Cunning retain their original physical owners and continuation. Advanced actual E3 with Harkonnen and Skills remains guarded. Native Ixians get Betrayal; only their absence permits purchased-card Secret Ally replacement. Two seats can select Nexus but cannot earn a hand without the printed alliance condition. Ecaz Betrayal now returns typed native groups, advisors and concealed markers; Moritani Atomics follows actual original placements, including a Cunning-granted printed desert. Discovery/Semuta and other reaction envelopes remain required; this is not complete Nexus acceptance.',
'Recruits changes native Revival rates and the ordinary seven ceiling, not the fixed Tleilaxu Secret Ally group or its one-spice price. Five paid card counters may leave two ordinary free returns, using the one leader slot once. Emperor Cunning still makes five ordinary board counters temporarily Sardaukar: independent reserve fees use separate physical reserves, Harass returns actual undialed counters, and native Karama changes only the original Nexus effect. Native winner/inspection and Collection continue without extra cleanup prompts.',
'At the end of the entire Spice Blow and Nexus phase, if a Nexus occurred and at least one alliance exists, each unallied player may draw one card or discard their held card and draw a replacement. You may decline. The two Advanced spice piles do not grant two closing draws.',
'Keep your card secret until it is used. You may hold at most one Nexus Card. It is separate from your Treachery hand and does not occupy a Treachery hand slot.',
'Whenever you draw your own faction card, you may immediately discard it and draw again, in either Basic or Advanced play. A replacement is discarded before the new draw; when the deck is empty, shuffle its discard pile to refill it.',
'Before drawing, choose whether to keep your own faction card, redraw it once, or redraw whenever it appears. Its effect is available in the reference before making this choice. The server applies that preference immediately; the table never pauses in a way that identifies a card you chose to keep.',
'Entering any alliance discards your held Nexus Card, including alliances made through an Ambassador or Terror token. An offer that has not been accepted does not discard it.',
'Use Cunning for your own faction, Betrayal when another player controls the printed faction, and Secret Ally when that faction is absent. Used cards go to the separate Nexus discard pile. Each printed effect has its own timing.',
'Fresh original Nexus tables may retain Homeworlds, Discovery7/8, Tech3+ Basic/Advanced and Strongholds2+ Advanced, optionally all14 through leader-skills --nexus-cards. Original roster/deck envelopes include classics/base33, selected E1/E2 natives/union47 and standalone, paired or mixed E3 native families. Printed/native setup, first-Storm Tech, actual end-Mentat claims and all12 closing draws remain. Original no-Skills E3 Nexus now admits Advanced Harkonnen; Skills retains its Harkonnen exclusion and shared Duke never trains. Public starts, played-save conversion and pending effects remain separate.',
'Fresh nexus --discoveries uses the original no-Skills envelopes above with optional Homeworlds, Tech3+ and Advanced Strongholds. Seven Discovery Spice Cards/eight tokens, protected nested sites, next-turn physical entry and actual Maker losses/votes/reserve ride remain. The card draw follows both Advanced piles and actual settled alliance change; earlier Shai-Hulud losses never repeat. Source-clear quotas, borrowed Guild tariffs and signed native one-invoice pairs at revealed sites use original controls, not new transport adapters.',
'Without Skills, the existing generic Nexus initializer handles single and mixed selected E1/E2 natives, while paired one-family and paired E3 entries use their original paired initializer and require BOTH original natives. Native HMS/Face Dancers/Auditor/Richese cache, Ecaz ordinary discs/Loyalty/shared Duke and Advanced Moritani assassination remain physical. New overlays do not create a first Nexus hand, free native return, arbitrary marker companion or played-game conversion.',
'The separate fresh local leader-skills --nexus-cards entry combines classic base33/all14 Skills/all12 Nexus in Basic or Advanced, two through six seats, optionally adding original Discovery7/8 through --discoveries. Original Tech requires three or more seats; Stronghold Cards require Advanced. Starting hands/offers, actual end-Spice closing draws, first-Storm Tech and end-Mentat held custody remain. Extra/ordinary free-three returns earn original phase-end Axlotl without changing skill custody. Emperor Cunning composes skill posture, support and Suk rescue; Arrakeen reduces payer cost, not committed support or rescue eligibility. Winner cleanup precedes mandatory Tech reward. Unrelated overlays and public starts remain guarded.',
'The original all14 skill/Nexus envelope admits single or paired one-family E1/E2, BOTH selected Ix+CHOAM native families/union47, and standalone OR paired E3/ecaz33 with classics, Basic/Advanced2–6, optional Homeworlds/Discovery7/8/Tech3+/Advanced Strongholds. Full Suboid support composes winning typed fixed-loss Suk before equal actual Cyborg Tank substitution. Held subsidy changes debit, not rescue entitlement. Original cleanup/winner Tech precedes Face Dance; the replaced trainer dies/returns its skill once without another bounty, while earlier held rewards stay with the original winner. Original Auditor exclusion, signed Richese invoices, CHOAM fuel, native cache and pending-effect guards remain.',
'Standalone OR paired Ecaz/Moritani original skill/Nexus entries use ecaz33/all14/all12 and classics, Basic/Advanced2–6, optional Homeworlds/Discovery/Tech3+/Advanced Strongholds. Each original roster/capture guard remains, including Advanced Harkonnen exclusion and no shared-Duke training. Quiet living/unclaimed Duke Cunning and native Advanced assassination use original distinct discs and exact continuation. In paired tables, native Ecaz may be a different opposing-faction assassination target; normal foreign-world Traitor prohibition does not become an assassination ban. Exceptional Duke custody, mixed E3/three-family, enhanced Terror/HMS/Grumman and pending effects remain separate.',
'Original standalone, paired and mixed-family no-Skills E3 Nexus admits Advanced Harkonnen within its existing optional-module envelope. Native capture/Keep/Execute, qualifying Moritani captive takeover, original Karama, one-battle/turn release and Ecaz Cunning use one separate Duke. Takeover/public availability resolution is provisional; dead execution never becomes Moritani revival. Actual Harkonnen captive-Duke victory opens native Harkonnen Traitor assassination, not an Ecaz/Moritani target. Terror separately uses provisional living effective control/public-victim/spent-empty policies. Ecaz-only revival, Ambassador exclusions, native five-disc identity, original payments/Tech and supply-only Terror Cunning remain. Skills/Harkonnen, shared training, unrelated guards, public starts and save conversion stay separate.',
'Atreides Cunning adds a second, different opposing plan element after the first native answer. Both remain binding. Use it in your own battle before sealing your plan; Karama may cancel the extra attempt while preserving the first disclosure.',
'With Atreides absent, Secret Ally inspects one opposing element in your battle. A sealed plan supplies only that selected answer automatically. Otherwise the opponent chooses an answer that permits a legal plan. Other players receive no private answer.',
'The No-Field restriction names Atreides, so Cunning cannot inspect that dial. A non-Atreides Secret Ally holder may request it without learning the token denomination or other plan elements.',
'Residual Poison cannot follow a committed leader. After its actual random death, keep the original native nonleader answer if it can still be honored. The extra Cunning answer must permit the same legal plan and may need an answer to that original field again. If the native answer is impossible, reopen its original field first. Earlier private observations and the spent Nexus stay recorded. This native-first priority is provisional; the victim is never redrawn to preserve an answer.',
'Harkonnen Cunning draws one Traitor Card before you choose one held card to return. It can pause another action, including a response or decision. Finish the private return before that action continues; active Truthtrance takes priority. Returning an identity already declared as a traitor does not cancel that declaration.',
'With Harkonnen absent, Secret Ally draws two Traitor Cards during Mentat Pause, then you choose exactly two distinct held identities to return. Newly drawn cards may be returned. Tleilaxu receives Face Dancers and can return newly drawn or existing unrevealed dancers; previously revealed dancers stay protected.',
'The Harkonnen exchange spends the Nexus Card when you draw and shuffles the returned cards into the Traitor Deck after your selection. Your original hand size is restored. Other players see that the exchange is pending, without learning your drawn or returned identities.',
'Moritani victim cards permanently set aside are outside reserve, ordinary hands and Face Dancers, so Nexus draws and returns cannot recycle them. A card merely drawn as an earlier Moritani replacement is different: it may be legally returned and later drawn again, with the older receipt unchanged. Actual Hasimir6 return, resumed Mori placement and a later Esmar3 retirement/redraw are connected; two historical references still represent one physical card.',
'Harkonnen Betrayal follows an actual personal or allied native traitor call in its original standalone preview or fresh classic independent36/Nexus12 entry, optionally all14 Skills. After original allied counters allow it, public possible held-Nexus owners acknowledge the actually declared traitor before its outcome. Use returns that physical card immediately and schedules one private actual Mentat replacement; all-pass preserves the call. This inherited provisional convention does not settle universal reaction timing outside these bounds.',
'Tleilaxu Cunning sets aside all your revealed Face Dancers, draws replacements secretly, then shuffles that temporary group into the Traitor Deck. Unrevealed dancers stay held; permanent Moritani victim markers never enter that draw/return group. Original native Mentat and all-three-revealed usage/order remain distinct. Recorded source zones and old absent-zone history remain unchanged by later live markers.',
'Ixian Cunning is used in your battle before submitting your Battle Plan. Your Suboids then count as strength one without spice support in every battle for the rest of the turn, in Basic and Advanced. Cyborg strength and support are unchanged. Earlier inspected or promised plan elements remain binding; you cannot activate the card if the new strength would make them impossible.',
'Ixian Secret Ally uses the exact just-purchased card in supported original standalone entries and fresh classic independent36/Nexus12 starts, optionally all14 Skills. A supported unallied buyer spends its actual Nexus, discards only that purchased card and draws the real deck top privately; Pass keeps both. Full-hand replacement and same-card recycling remain legal, with original payment and continuation once. Native Harkonnen bonus and supported Richese sale/direct origins retain their dedicated source contracts and provisional order; already-owned paid retention creates no new acquisition. Neutral buyer acknowledgement is an inferred convention, not universal publisher timing. Other modules, complete modes and deployed assurance remain separate.',
'Ixian Betrayal has a separate fresh native-Ixian ixian-betrayal profile for both original Bidding inspection/draw and Advanced Technology attempts. Native counters resolve first; then every publicly possible unallied rival held-Nexus seat acknowledges uniformly before the effect. A legal Use spends one physical Ixian Nexus to deny only that attempt; all-pass preserves the native effect once. No completed-card undo or whole-phase ban is added. This bounded ordering/privacy is an inference, not universal publisher priority; see its bounded verified native/private/recovery/phone evidence and unchanged Richese/module/public/deployment gates.',
'With Tleilaxu absent, its actual unallied Nexus holder may use a quiet Revival control to return one mandatory own dead leader free and up to five exact physical counters for one bank spice each. The provisional policy uses the ordinary leader slot and expands the shared ordinary ceiling to at least five, counting prior returns and retaining larger native/Recruits allowance. Only the unopened roster trigger is waived: repeated deaths, actual stars/Cyborgs and special custody retain canonical rules, and ordinary cycle history is not fabricated. Zero forces is legal; force-only use is not. Spend the physical card once; native Tleilaxu income and cancellation are not imported.',
'In Advanced play, Bene Gesserit Cunning converts selected whole advisor territories during your own Shipment and Movement action. All your counters in each selected territory become fighters together across sectors. It spends the Nexus card once, with no spice, shipment or movement cost.',
'One Karama response covers the entire declared territory set. Cancellation preserves every original advisor group and lock while leaving the Nexus spent. Under the explicit recommended in-place card exception, Cunning may include freshly accompanied or storm-bound/separated territories. This is provisional, not publisher clarification. Ordinary flipping/arrival, allied capacity, storm movement/casualties and battle geometry remain unchanged; broader module acceptance remains open.',
'With BG absent, every fresh Nexus battle asks both combatants in attacker order before Prescience, Nexus inspection or sealed plans. Continue preserves the card. The actual unallied BG-card holder may spend it to require or forbid one canonical type against the opponent. Under the explicit provisional recommendation, original Karama can cancel this named Voice advantage; the Nexus stays spent, only Voice is removed and native preparation continues. Existing in-flight preparation is not retrofitted. Native compliance and special/mode restrictions remain; this does not complete other unfinished effects.',
'Bene Gesserit Betrayal can prevent the native Voice while the ordinary pre-plan response is open. In Nexus games every seat responds even without a canceling card, so the window does not reveal the hidden holder. An unallied opponent spends one physical Bene Gesserit Nexus card to remove only that declared Voice; Prescience and plan commitments continue. Truthtrance has priority. This path does not grant borrowed Voice.',
'Emperor Cunning requires a positive own ordinary battle pool and no actual Sardaukar in Advanced, before submitting your plan. The provisional shortage policy uses five when available, otherwise every eligible counter; zero and chosen underfill are unavailable. The played Nexus card opens one Karama response. Allowing it makes the quoted ordinary group count as Sardaukar for this battle; cancellation prevents the entire enhancement and leaves the Nexus card spent.',
'Temporary Sardaukar use applicable strength/support rules, including the Fremen exception, but remain physical ordinary counters. Losses go to Tanks as ordinary, without changing starred pools. Existing inspected/promised plans bind and the role ends after this battle; fewer-than-five remains unavailable. Secret Ally independent revival and original bank/seller/Ambassador/joint special purchases have connected controls; compulsory funding stays separate. Full combinations remain open.',
'Original normal bank-auction purchase now uses canonical native Nexus roster/module admission and exact prior classic parity. Uniform winner payment is private-face independent. Actual unallied holder proves a positive full own price, spends one Nexus and acquires one original lot without bank payment. Native card capacity, bonus and next Atreides inspection remain; Richese ordinary pool is not a seller/cache route. Bank receipt format is unchanged, and strict legacy physical revival remains separately classic without replay. Unsupported native aliases and full-mode gates stay closed.',
'Emperor Secret Ally revival selects three real counters when eligible, otherwise the full positive typed-eligible group under the visible provisional shortage policy. It is free and outside ordinary total/free and native allied-extra usage. Declaration spends one Nexus and enters original pending revival; no leader or absent native payer is granted. Under the visible provisional independent-source policy, native Tleilaxu may prevent it and actual free returns award income once; ordinary free-rate blocking and Recruits do not reprice or double this fixed grant. Denial keeps both spent cards without forces/income/Tech or refund. Native typed caps, reserve deposits, Axlotl and eligible newly returned Fedaykin placement continue. Tleilax ordinary Free Revival deployment is not extended to this extra source. Source receipts distinguish requested, returned and denied; old physical receipts never replay.',
'Original Richese cache and Advanced Black Market sold lots offer every buyer Pay after original Richese Betrayal. An eligible unallied Emperor Nexus holder, with Emperor absent and full price personally affordable, may Use to retain it and leave seller/bank unpaid under the visible provisional recommendation. Actual stock, hand limits, native Harkonnen bonus and successor run once. Legal self-cache is included; self-Black remains blocked. Original self-discard gives no acquisition or Emperor Nexus spend.',
'Original Richese Ambassador trigger offers the beneficiary uniform Pay or eligible Emperor Nexus Use, independently of hidden face or private availability. Under provisional purchase composition, an actual unallied holder proves/retains three own spice and acquires one original deck card, with no bank payment, reimbursement or fake auction. Native source phase/resume authority, private inability, draw/recycling, bonus and movement/worm suffix remain. An ally cannot Use; forming alliance disposes held Nexus originally. CHOAM closing sales/trades are not direct purchases.',
'Original Advanced Richese special Karama may jointly spend its held activation plus actual Emperor Nexus, after proving three own uncommitted spice. The provisional purchase composition retains that price and acquires one exact cache card at native commit, preserving original once-use, capacity, reserved-card and enclosing controls. Full hand exchanges within its actual limit; final depletion continues to ordinary Bidding. No bank payment, reimbursement, ally bonus, fake auction or public automatic pause. Ordinary paid use remains; broader Kull admission is not invented.',
'Emperor Betrayal has a battle alternative in Advanced play: an unallied opponent holding the Emperor Nexus card can spend it during the ordinary pre-plan Sardaukar response to suppress actual Sardaukar strength for this battle. Every seat receives the same response opportunity even with no card, keeping hidden custody private. The starred pieces remain physical Sardaukar; no card grants a new force or cancels their separate support benefit.',
'During an original positive normal-auction purchase by Emperor’s ally, possible unallied held-Nexus rivals acknowledge in storm order before winner payment, regardless of secret face. Only the current actual Emperor-card holder may Use; Pass keeps cards and original payment. Under the provisional conservative full-price interpretation, native Emperor covers the full original price, reusing prepaid aid and adding only missing own spice. The buyer keeps their own spice and acquires one original card. Native Emperor income remains separately cancelable without refund; original next-lot inspection continues. No excess gift, bank-created subsidy or future-income borrowing is granted. Underfunded/fully prepaid Use is unavailable; special seller lots and full combinations remain open.',
'With Fremen absent, an actual unallied Fremen-card holder may enable a fixed ordinary free quota of three at a quiet Revival boundary, then use normal partial/typed revival controls. Activation moves no counters, leader or spice. Actual prior free use counts; paid returns keep their cost and total usage. Native total limits, higher free rates, typed caps, prevention, Homeworld deposits/deployment, Axlotl activity and once-only Tleilaxu income remain original. Recruits doubles its native rate, not this fixed quota. Useless or unknown-ledger grants are unavailable. This is the visibly provisional recommended interpretation; strict old physical receipts adopt metadata without replay. Independent sandworm protection remains the separate operation below.',
'Before one accepted worm devours forces with Fremen absent, publicly possible unallied threatened held-Nexus seats acknowledge in original storm order regardless of secret face. Only the actual Fremen holder may spend to save their own groups. Pass keeps the card; all acknowledgements precede casualties. Under the explicit provisional independent-operation policy, no extra Karama provider or riding is invented. Original other casualties, spice removal, Great Maker vote and next blow/Nexus remain. Protected No-Field uses native protected-victim skipping; wider marker/module acceptance remains open.',
'Native Fremen Cunning now retains the original registered selected Nexus roster and optional modules: when a natural, accepted additional, or Advanced special-Karama summoned worm appears in a territory initially containing no forces, Fremen may spend their own Nexus card before the worm resolves. The special summon retains its original Spice Blow parent. After the applicable Nexus, choose some forces from one occupied desert territory and ride to a legal Arrakis destination without using normal movement or changing original component custody/income. The choice appears even without the secret card, so declining does not disclose custody. Karama provisionally prevents only the additional remote ride; the original worm still resolves and the card remains spent. An interrupted existing Cunning control is restored, and a selected ride waits for the summoned Nexus without granting a second Cunning offer; Revealed Discovery destinations and source-parent HMS entry use the shared legal quote. A living native Sandmaster may optionally collect one spice at the destination. Great Maker replaces ordinary board-origin riding; its own encounter adds no Cunning board ride, and a completed frame does not block a later ordinary appearance. Complete combinations remain open.',
'CHOAM Secret Ally has a working Collection trade: when CHOAM is absent, an unallied holder may discard one Worthless card and the Nexus card for two bank spice. After a battle victory, every winner in an eligible Nexus game receives the same use-or-continue window; an unallied CHOAM-card holder may instead spend that card to inspect one random unused card in the opposing combatant’s current hand. Played battle cards remain excluded even if retained. The inspected face is private, while use is public. The universal window protects concealed card custody; this is an interface interpretation, not a publisher-prescribed prompt. An ordinary Karama response to this Secret Ally inspection remains unestablished.',
'With CHOAM seated, an unallied holder may spend CHOAM Betrayal at a clean play boundary to discard one uniformly random held CHOAM Treachery Card without spice compensation. The target name is public, but its hand count is offered only during Bidding; the holder cannot pick or inspect the card before the ordinary discard reveal.',
'CHOAM Cunning spends its Nexus card to use one held Treachery Card for one chosen Worthless effect at that effect’s normal timing, in Basic and Advanced. Choose the physical card separately from the effect. Kulon, La La La, Baliset, Jubba Cloak and Trip to Gamont retain their existing runtime. The explicit new Nexus Kull profile adds Kull at the canonical Karama reaction only; it remains unavailable in other Nexus previews. The old printed Kull profile still excludes Nexus. See the source-aware Kull guide for cost custody, counters and pending verification.',
'One Karama response covers the CHOAM effect. Cancellation leaves the chosen Treachery Card in hand and the Nexus spent. An allowed use discards the actual card once, retaining its printed identity and applicable discard consequences; it does not create a named Worthless card or a turn-long conversion permission.',
'Moritani Cunning enhances supply placement only, not relocation, and never permits Homeworlds or the Hidden Mobile Stronghold. During native Mentat placement, choose one available supply token and a printed Arrakis territory, including one already holding Terror. The high-Grumman Collection controls additionally offer Cunning when an ordinary eligible supply addition to an existing stronghold stack is available. Cunning may then broaden the selected destination, but creates no underlying opportunity and does not spend the independent Mentat allowance.',
'With Moritani seated, an unallied holder of its Nexus card may spend Betrayal at a clean play boundary to return one placed Terror token to hidden Moritani supply without revealing its face. Choose the public location and token, not its secret effect; this does not use Moritani’s Mentat placement or trigger that token.',
'When Moritani is absent, a defeated combatant with an eligible publicly played card receives the same postbattle choice whether or not they hold Moritani Nexus. An unallied holder may spend it to retain one played card that a winner could keep; other played cards follow ordinary discard. Without a publicly eligible card there is no prompt. The choice is after the battle result and before later income/capture; the public prompt protects hidden custody and is an interface inference. This Secret Ally effect has no invented ordinary Karama response. Native Moritani allied retention remains a different, cancelable ability.',
'With actual Advanced Stronghold Cards, Arrakeen bank support changes the real payer debit, not personal income. Emperor Cunning temporary Sardaukar remain physically ordinary counters and retain ordinary Tanks custody. Original losing Moritani retention precedes mandatory original-winner Tech, then CHOAM inspection excludes used opposing cards even if retained. Ordinary city Collection remains separate; none of these windows repeats the original support, card cost or casualties.',
'Ecaz Betrayal is available to an unallied holder with Ecaz seated and reciprocally allied in a shared Arrakis territory. At the opening of Shipment and Movement, choose one such territory; the ally returns its entire normal and starred force group from every sector there to reserves, leaving Ecaz forces in place. The Nexus card is spent before a Karama response. Cancellation preserves the board but not the card. Original native and selected-independent Nexus profiles retain World, training and phase modules. Advisors return as native counters; a concealed No-Field provisionally returns face down without materializing counters. The full unspent opening remains available after an actual Guild first/wait or Sapho reorder.',
'Ecaz Cunning lets an unallied native holder spend its physical Nexus at an original quiet boundary in any phase to take the existing Duke for this turn, including living control, original captured custody or the set-aside disc in Tanks. Finish committed auctions, Battle, responses, Ambassador and other physical continuations first; no chooser or phase is stolen. New version3 records bind actual phase and custody; legacy ordinary/version2 Battle history remains strict. Tanks preserve deaths and independently clear old use without spice or ordinary allowance; living already-used Duke gains no fresh use. Standalone no-Skills Ecaz/Advanced Harkonnen connects original capture and provisional permanent liberation; one battle or unused current-turn expiry sets Duke aside, never back to the captor. Actual Ecaz Ghola returns set aside before separate Cunning; foreign-Ghola revival remains forbidden. Roster/module and shared-training guards remain.',
'Fremen Betrayal has two advance-declaration alternatives for an unallied holder in an original registered Nexus table with its selected modules. Before the first Spice Blow or worm appearance, spend the physical card to prevent Fremen ordinary and Cunning worm rides for the turn; worm survival, destruction and Nexus still resolve. Actual ordinary/Great Maker ride creation now adds a neutral public Nexus-back response in storm order. All-pass restores the same native choice; private actual Fremen-card Use suppresses remaining rides without replaying completed effects. This timing is provisional online composition, not an official post-appearance priority ruling. Instead, before Fremen move during Shipment and Movement, spend it to suppress their native two-territory advantage for that turn while ordinary movement and independent ornithopters remain. Only one alternative can be used even if the card is recycled later that turn. Owner controls show the currently available choice; Great Maker reserve riding is also prevented under the explicit source composition, while its original votes, casualties and Nexus continue. Existing predeclarations and legacy receipts remain; complete-combination acceptance stays open.',
'When Ecaz is absent, an unallied holder may spend its Nexus card at a quiet play boundary to ask whether any one player, including themself, holds one of the holder’s native faction leaders as an ordinary Traitor Card. The owner receives a private yes/no answer saved at the moment of use; no name or count is disclosed. Dead or captured native leaders count, but foreign Gholas, Duke Vidal, Cheap Hero and Face Dancers do not. Native-leader scope and private-only audience are explicit product interpretations, not publisher rulings; exceptional controlled-leader and public-disclosure combinations remain open.',
'When Richese is absent, its Secret Ally replaces your ordinary reserve shipment with up to five physical forces charged as one. Forces, elite identity, destination restrictions, native Homeworld sources and movement remain unchanged. Fremen retain free reinforcement. Native Guild rate cancellation changes the one-counter sand bill from1 to2 without canceling the Nexus source; an already canceled rate is reflected in the quote. Unfunded declared Nexus stays spent without refund/reusable coupon while ordinary shipment remains available under the selected affordability policy. An independently purchased ordinary price remains separate. This is no concealed marker or extra shipment.',
'Native Richese Cunning uses the original signed two-No-Field shipment in supported single/paired E2 or selected mixed Ix+CHOAM native Nexus tables with classics, optional Skills/Homeworlds/Discovery/Tech/Advanced Strongholds. Select two distinct unused physical tokens: one reveals immediately into reserve-capped forces, one remains concealed; pay one marker invoice and spend the Nexus. The previous shipment token cannot be either choice, and the concealed one becomes last-used. Native/Guild response and actual payer/counter sources remain; a nested destination must be revealed. Prevention keeps physical tokens and unpaid spice, after any printed card cost. Sandtrout, arbitrary companions, shared allocation and other pending combinations retain their guards.',
'An independently purchased Karama rate also applies to native unallied Richese Cunning: bill one pair unit plus any High paid companions, halve and round up once, and pay the Spice Bank. The original grant stays bound through responses. No-Field prevention leaves it available for a legal ordinary replacement while Nexus stays spent. Advanced Guild stopping uses the shipment and clears the grant, returning only its original unclaimed activation card still in discard under the existing provisional refund policy. A previously claimed cost cannot refund after rediscard.',
'Richese Betrayal has a separate opt-in auction preview. Before payment, an unallied rival may spend its physical Richese Nexus card to discard a public self-cache win without any purchase debit, or redirect another buyer’s cache/Black Market payment to the bank while preserving delivery and earned bonus. Every publicly possible holder acknowledges the same opportunity; private Use eligibility cannot determine public timing. Normal hidden self-purchases and private special-Karama acquisitions are not connected. See the dedicated guide for its existing local runtime/browser evidence and remaining release gates; that evidence does not verify Nexus Kull.',
'Guild Cunning is declared when finishing the ordinary Shipment and Movement turn. It spends the Nexus and opens its native Karama response. Allowance grants one second native shipment at normal Guild prices, including supported cross, return and Homeworld routes; cancellation preserves the first shipment and movement. Every later movement must spend an earned unused Hajr grant; there is no new ordinary move. A genuinely recovered and legally replayed Hajr adds another grant, with fresh post-movement timing in Advanced. Classic core retains original funding through Guild fee acknowledgement; other envelopes keep their source limits. The physical Ornithopter may provisionally replace one unused Hajr grant. Both original card groups remain legal until completed or abandoned, with extra credit only after both actually move. Earlier completed flight credits remain counted; declaring Cunning during an unfinished flight abandons its remaining group before the original Nexus response resumes. This adds no ordinary move.',
'Cunning native cross/return permission and rate use separate unpaid controls while original shipped history stays unchanged. A denial within its second opportunity allows a legal reserve replacement; denial of an earlier ordinary opportunity does not remove that new signed grant. Typed sources, original prices and approval stay bound; neither first payment nor ordinary movement reopens. Independent purchased price, immune Junction and other card sources remain distinct.',
'With Guild absent, its Secret Ally is an explicit optional source for one ordinary shipment at Guild prices. It supports physical reserve shipment, cross-shipment and return to the holder’s own reserves, including the native-Homeworld return when Homeworlds are enabled, plus half-price independently legal world-to-world shipment. Fremen may retain free reinforcement or choose the paid card route beyond its normal range, outside the storm. Native faction, typed sources and normal movement stay unchanged. Arbitrary foreign-world transport and concealed No-Fields are not granted.',
'Borrowed Guild/Richese tariffs do not change native faction or physical reserve origin. Non-Guild/non-Fremen off-planet arrivals can accrue Heighliners once for collection at the original phase end. A paid borrowed Guild route from Fremen southern reserves is still on-planet and does not trigger it; stopped and native-Guild-only shipments likewise remain excluded. The existing Emperor bank-auction purchase retains the actual buyer wallet and creates no industry activity.',
'Guild Betrayal in fresh classic core or supported original native-Guild entries replaces one fully funded positive shipment fee, including an already-affordable own payment. Original escrow and physical delivery occur once; neutral acknowledgement reveals no fee/source, while private actual card authority controls Use. Core preserves Richese five-for-one and Guild Cunning source records through this same gate. The single Guild card spent for Cunning cannot also be held for rival Use. Zero/stopped shipments create no fee or Nexus award; wider World and income boundaries retain their own contracts.',
'Cunning spends its Nexus card and uses the native Mentat placement opportunity. A Karama response precedes placement; cancellation leaves the token where it was and the Nexus spent. Later Terror entry still uses the existing one-token stack selection and supported effect rules. If Extortion was revealed this turn, its bank award and payment choices follow that placement response; this does not implement Atomics or complete Moritani games.',
'Hidden reactive timing remains unresolved outside supported original protocols. Fresh normal previews do not certify complete Nexus games, every combination, comprehensive assurance or deployed acceptance.',
'Independent36/38/50 now retains original Discovery setup, tokens and revealed destinations with optional World/all14/phase modules. Real Cunning lands in Cistern; actual Sandtrout breaks an earned alliance and suppresses its next worm without spending the held Fremen card. Transient encounter state does not remove unrelated card capabilities. Existing effect guards, complete-mode and final assurance gates remain.',
],
related: ['ecaz-modules', 'spice-blow', 'alliance-funding', 'choam-worthless', 'choam-kull', 'nexus-choam-kull', 'nexus-richese-betrayal', 'nexus-guild-betrayal', 'nexus-ixian-replacement', 'nexus-ixian-betrayal'],
checklist: [
{area:"Implementation",status:'Partial',detail:"Native Richese Cunning now binds the original purchased Karama source and its one rounded bank invoice, preserving live claimed-cost history and original cancellation/stop outcomes. Native Fremen Cunning/Betrayal now retains selected modules, original occurrences, typed rides, optional Sandmaster and source-parent HMS entry. Great Maker prevention and completed-history timing use original continuation. Ecaz Betrayal now composes typed World returns, advisors, actual HMS and provisional face-down marker recall; Guild/Sapho timing preserves a full unspent opening. Native module Atomics retains actual paid arrival and original Cunning desert grants. Selected E1/E2/E3 independent/Nexus now shares fresh setup and original native consumers: typed Ix fees/Harass/substitution, CHOAM fuel, Richese paired invoices, native Occupy/Assassinate, shared arrival order and Duke Cunning. Existing trained-capture and unfinished individual-effect envelopes remain. Native cross/return permission and rate remain separate; Cunning preserves its opportunity. Independent typed purchases and explicit immune Junction source choice retain their original tariffs/payees. Richese Secret Ally now keeps one billed counter and all five physical forces through native Guild rate allowance/cancellation; signed pending/settled sources stay bound. Unfunded release retains spent Nexus without debt/refund/reusable coupon and preserves ordinary shipment. Marker approvals still cannot silently increase; full acceptance remains open.",evidence:['game/fremen-nexus-profile.ts','game/nexus-fremen-cunning.ts','game/nexus-fremen-betrayal.ts','game/sandmaster-worm.ts','tests/e3-independent-nexus-occupy.test.ts','tests/fixture-e3-independent-nexus-occupy.ts','tests/e3-independent-nexus-cards.test.ts','tests/fixture-e3-independent-nexus-cards.ts','tests/e3-independent-nexus-duke.test.ts','tests/fixture-e3-independent-nexus-duke.ts','tests/e3-independent-nexus-arrival.test.ts','tests/fixture-e3-independent-nexus-arrival.ts','game/faction-module-profile.ts','tests/selected-independent-nexus-entry.test.ts','tests/fixture-selected-independent-nexus-entry.ts','tests/selected-independent-nexus-battles.test.ts','tests/fixture-selected-independent-nexus-battles.ts','tests/selected-independent-nexus-cards.test.ts','tests/fixture-selected-independent-nexus-cards.ts','tests/selected-independent-ixian-betrayal.test.ts','game/nexus-cards.ts', 'game/nexus-card-phase.ts', 'game/nexus-traitor-exchange.ts', 'game/traitor-declarations.ts', 'game/nexus-face-dancers.ts', 'game/nexus-suboids.ts', 'game/nexus-advisors.ts', 'game/nexus-sardaukar-options.ts', 'game/nexus-fremen-revival.ts', 'game/nexus-fremen-cunning.ts', 'game/nexus-ecaz-betrayal.ts', 'game/nexus-ecaz-inquiry.ts', 'game/nexus-ecaz-duke.ts', 'game/duke-vidal.ts', 'game/nexus-emperor-secret-ally.ts', 'game/choam-power-options.ts', 'game/nexus-moritani-options.ts', 'game/nexus-moritani-betrayal.ts', 'game/nexus-richese-options.ts', 'game/nexus-richese-betrayal.ts', 'game/nexus-guild-cunning-options.ts', 'game/nexus-guild-secret-ally-options.ts', 'game/nexus-module-profile.ts', 'game/engine.ts', 'game/nexus-tleilaxu-revival.ts', 'game/nexus-borrowed-voice.ts', 'game/combat-response-quote.ts', 'game/karama-context.ts', 'game/nexus-fremen-protection.ts', 'game/admin-seat-ai-shape.ts', 'game/richese-cancellation.ts', 'game/bot-mobility.ts', 'game/planetologist-movement.ts', 'game/revival.ts', 'game/nexus-fremen-revival-options.ts','game/nexus-emperor-payment.ts', 'game/nexus-emperor-secret-ally.ts', 'game/revival-resume.ts', 'game/revival-cancellation.ts', 'game/homeworld-revival-deployment.ts', 'game/homeworld-revival-return.ts', "game/nexus-emperor-purchase.ts", "game/auction-continuation-quote.ts", "game/nexus-emperor-purchase.ts", "game/ambassador-phase.ts", "game/ambassador-resume.ts", "game/battle-aftermath-quote.ts", "game/ecaz-duke-acquisition.ts", "game/ecaz-duke-revival.ts", "game/nexus-ecaz-duke-options.ts", "game/nexus-play-boundary.ts", "game/junction-transport-options.ts"]},
{area:"Player controls",status:'Partial',detail:"Richese pair controls retain the purchased combined tariff and persistent bank/rate/cancellation explanation. Fremen table SSR retains original Cunning spend/ride, Betrayal and Great Maker controls; an actual pending Sandmaster quote also renders its shared checkbox. Native Betrayal/Atomics table SSR retains typed/concealed return, revelation, ordered arrival, Aftermath and desert controls; CSS stubs mean no visual/browser acceptance. Earlier selected E3 lead/plan, assassination/revival and Duke controls retain their dated proof. Four earlier original-action390px journeys prove native Junction5/full2, poor1/full2 release plus ordinary one-force replacement, still-held source sand2 disabled then five-force stronghold1, and independent purchased1. The response explains the spent-card consequence. No overflow, browser error or application exception; two tool-only stale-node errors were resolved by fresh evidence without replay. Earlier Junction/loan/refund surfaces remain scoped evidence.",evidence:['components/nexus-cards.tsx', 'components/nexus-traitors.tsx', 'components/nexus-tleilaxu.tsx', 'components/nexus-suboids.tsx', 'components/nexus-advisors.tsx', 'components/nexus-sardaukar.tsx', 'components/choam-power-cost.tsx', 'components/moritani-terror.tsx', 'components/nexus-moritani-betrayal.tsx', 'components/nexus-ecaz-betrayal.tsx', 'components/nexus-ecaz-inquiry.tsx', 'components/nexus-ecaz-duke.tsx', 'components/nexus-richese-betrayal.tsx', 'components/game-table.tsx', 'components/nexus-tleilaxu-revival.tsx', 'components/battle-preparation.tsx', 'components/nexus-fremen-revival.tsx','components/nexus-emperor-payment.tsx', 'components/nexus-emperor-secret-ally.tsx', "components/nexus-emperor-seller-purchase.tsx", "components/nexus-emperor-ambassador-purchase.tsx", "components/richese-special-karama.tsx", "components/junction-transport.tsx"]},
{area:"AI",status:'Partial',detail:"The Richese minimal pair candidate and shared payment guard use the original beneficiary purchased rate; strategy remains deferred. All four policies retain original Fremen Cunning and both Betrayal declarations with shared destination legality. All four policies retain minimal legal Ecaz Betrayal and original Aftermath/Sneak participation. All four policies execute original selected E3 Duke Cunning and unused expiry, and legal Occupy plans with real World sources. All four original policies also execute a legal still-held Richese full-rate one-counter alternative after native cancellation, with actual physical delivery and card cost. Shared human/AI quotes no longer promise a canceled discount. Native permission alternatives, recipient-specific lender prices and immune Junction source choice remain. Optional non-reoffer is not forced. No strategic first-candidate pin, tuning or calibration.",evidence:['game/richese-cunning-rate.ts', 'game/homeworld-payment-options.ts', 'game/nexus-card-options.ts', 'game/nexus-traitor-options.ts', 'game/nexus-tleilaxu-options.ts', 'game/nexus-suboid-options.ts', 'game/nexus-advisor-options.ts', 'game/nexus-sardaukar-options.ts', 'game/choam-power-options.ts', 'game/nexus-moritani-options.ts', 'game/nexus-moritani-betrayal-options.ts', 'game/nexus-ecaz-betrayal-options.ts', 'game/nexus-ecaz-inquiry-options.ts', 'game/nexus-ecaz-duke-options.ts', 'game/nexus-richese-options.ts', 'game/bot-nexus-richese-betrayal.ts', 'game/nexus-guild-cunning-options.ts', 'game/bots.ts', 'game/nexus-fremen-revival-options.ts','game/nexus-emperor-payment.ts', 'game/nexus-emperor-secret-ally-options.ts']},
{area:"Documentation",status:'Partial',detail:"The native Richese pair/purchased rate composition and retained provisional exact-card refund are explicit in its canonical source contract. Selected E3 scope, printed two-seat no-alliance draw limit and remaining individual-effect envelopes are explicit in the canonical Nexus contract. Richese printed one-counter pricing and native Guild eligibility stay distinct from absent-faction cancellation, physical force count and independent purchased price. Unfunded spent-card/no-refund release is selected existing no-debt composition, not a new publisher worked example. Immune Junction and earlier permission/refund/loan interpretations remain explicit. Full rules and public gates stay open.",evidence:['docs/NEXUS_CARD_RULES.md', 'docs/NEXUS_ATREIDES_RULES.md', 'docs/NEXUS_HARKONNEN_RULES.md', 'docs/NEXUS_TLEILAXU_RULES.md', 'docs/NEXUS_IXIAN_CUNNING_RULES.md', 'docs/NEXUS_CUNNING_RUNTIME.md', 'docs/NEXUS_BENE_GESSERIT_RULES.md', 'docs/NEXUS_ADVISOR_RUNTIME.md', 'docs/NEXUS_EMPEROR_RULES.md', 'docs/NEXUS_SARDAUKAR_RUNTIME.md', 'docs/NEXUS_FREMEN_RULES.md', 'docs/NEXUS_ECAZ_RULES.md', 'docs/NEXUS_CHOAM_RULES.md', 'docs/NEXUS_CHOAM_RUNTIME.md', 'docs/NEXUS_MORITANI_RULES.md', 'docs/NEXUS_MORITANI_RUNTIME.md', 'docs/NEXUS_RICHESE_RUNTIME.md', 'docs/NEXUS_RICHESE_RULES.md', 'docs/NEXUS_GUILD_CUNNING_RUNTIME.md', 'docs/GUILD_RATE_KARAMA_RULES.md', 'docs/RICHESE_ALLIED_SHIPMENT_AUDIT.md', 'docs/GUILD_HOMEWORLD_TRANSPORT_RULES.md', 'docs/NEXUS_GUILD_RULES.md', "docs/NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md", "docs/RULE_DECISIONS.md", "docs/RICHESE_AMBASSADOR_RULES.md", "docs/RICHESE_AMBASSADOR_IMPLEMENTATION.md", "docs/RICHESE_ACQUISITION_RULES.md", "docs/DUKE_VIDAL_RULES.md", "docs/ECAZ_DUKE_ACQUISITION.md", "docs/ECAZ_REVIVAL_RULES.md", "docs/JUNCTION_TRANSPORT_RULES.md", "docs/JUNCTION_TRANSPORT_RUNTIME.md"]},
{area:"Verification",status:'Partial',detail:"Independent Discovery adds frozen15-file118/118, types/lint/build and six original-action/rendered-control programmes; broader modes, visual/deployed acceptance and final assurance remain open. Native Fremen modules pass frozen14-file86/86, types/lint/build and nine original-action/rendered-control programmes. HMS has genuine runtime proof; Discovery destination arrival remains quote-only evidence. Earlier native Betrayal/Atomics composition passes frozen16-file115/115, types/lint/build and eight finite original-action/table-SSR programmes, including original Cunning desert Aftermath; visual/browser and deployed acceptance remain open. Earlier selected E3 entry, Occupy, Assassinate/Recruits, Duke and arrival proof remains dated in the canonical contract. Earlier selected E1/E2 native card/cancellation proof remains dated in the canonical Nexus contract. Classic core retains original World/Tech/Stronghold modules with base33/selected36 and optional14. Independent World cases use native setup, population-sensitive Recruits, typed foreign Harass and actual own-Kaitain Reinforcements/Cunning. The local fee reduces only its paid temporary roles; original count5 and real stars remain. Earlier phase/card proofs are dated in the canonical contract. Native-family/Discovery/Semuta envelopes, full-mode and comprehensive assurance remain open.",evidence:['tests/nexus-short-sardaukar.test.ts', 'tests/fixture-nexus-short-cunning.ts', 'tests/nexus-short-cunning.test.ts', 'tests/independent-discovery-nexus-entry.test.ts', 'tests/independent-discovery-cards.test.ts', 'tests/independent-discovery-battles.test.ts', 'tests/fremen-cunning-modules.test.ts','tests/fixture-fremen-cunning-modules.ts','tests/fremen-betrayal-modules.test.ts','tests/fixture-fremen-betrayal-modules.ts','tests/nexus-fremen-cunning-modules-quotes.test.ts','tests/ecaz-betrayal-modules.test.ts','tests/fixture-ecaz-betrayal-modules.ts','tests/richese-no-field-hidden-return.test.ts','tests/nexus-ecaz-betrayal-quotes.test.ts','tests/moritani-atomics-modules.test.ts','tests/nexus-moritani-atomics-runtime.test.ts','tests/nexus-world-independent-cards.test.ts','tests/nexus-world-independent-battles.test.ts','tests/reinforcements-temporary-role.test.ts','tests/nexus-core-tech-runtime.test.ts','tests/fixture-nexus-core-tech.ts','tests/nexus-core-strongholds-runtime.test.ts','tests/fixture-nexus-core-strongholds.ts','tests/classic-nexus-core.test.ts','tests/fixture-classic-nexus-core.ts','game/faction-module-profile.ts','tests/classic-independent-nexus-utility.test.ts', 'tests/classic-independent-nexus-battle.test.ts', 'tests/fixture-classic-independent-nexus.ts', 'tests/mixed-nexus-modules-runtime.test.ts', 'tests/paired-e3-nexus-modules-runtime.test.ts', 'tests/sample-custody.test.ts', 'tests/ambassador-terror-overlap-engine.test.ts', 'tests/single-nexus-e1-runtime.test.ts', 'tests/single-nexus-e2-runtime.test.ts', 'tests/e3-nexus-ecaz-runtime.test.ts', 'tests/e3-nexus-moritani-runtime.test.ts', 'tests/homeworld-classic-nexus-skills-runtime.test.ts', 'tests/homeworld-classic-discovery-nexus-runtime.test.ts', 'tests/nexus-cards.test.ts', 'tests/nexus-card-engine.test.ts', 'tests/nexus-fremen-cunning.test.ts', 'tests/nexus-fremen-cunning-recovery.test.ts', 'tests/nexus-fremen-cunning-summon.test.ts', 'tests/nexus-fremen-cunning-summon-recovery.test.ts', 'tests/nexus-ecaz-betrayal-quotes.test.ts', 'tests/nexus-ecaz-betrayal.test.ts', 'tests/nexus-ecaz-betrayal-recovery.test.ts', 'tests/nexus-ecaz-inquiry.test.ts', 'tests/nexus-ecaz-duke-quote.test.ts', 'tests/nexus-ecaz-duke-engine.test.ts', 'tests/nexus-ecaz-duke-recovery.test.ts', 'tests/nexus-traitor-recovery.test.ts', 'tests/nexus-face-dancer-engine.test.ts', 'tests/nexus-suboids-engine.test.ts', 'tests/normal-free-support.test.ts', 'tests/nexus-suboid-controls.test.ts', 'tests/nexus-advisor-controls.test.ts', 'tests/nexus-advisor-bots.test.ts', 'tests/nexus-sardaukar-controls.test.ts', 'tests/nexus-sardaukar-bots.test.ts', 'tests/nexus-choam-controls.test.ts', 'tests/nexus-choam-bots.test.ts', 'tests/nexus-moritani-controls.test.ts', 'tests/nexus-moritani-bots.test.ts', 'tests/nexus-moritani-betrayal.test.ts', 'tests/nexus-richese-controls.test.ts', 'tests/nexus-richese-bots.test.ts', 'tests/nexus-richese-betrayal-engine.test.ts', 'tests/nexus-richese-betrayal-recovery.test.ts', 'tests/nexus-guild-cunning-controls.test.ts', 'tests/native-guild-rate-karama.test.ts', 'tests/native-guild-rate-modules.test.ts', 'tests/allied-marker-guild-rate.test.ts', 'tests/purchased-homeworld-rate.test.ts', 'tests/native-guild-transport-permission.test.ts', 'tests/native-guild-homeworld-rate.test.ts', 'tests/native-guild-rate-betrayal.test.ts', 'tests/nexus-guild-cunning-engine.test.ts', 'tests/nexus-guild-cunning-bots.test.ts', 'tests/nexus-module-payments-runtime.test.ts', 'tests/nexus-module-battles-runtime.test.ts', 'tests/paired-ix-nexus-modules-runtime.test.ts', 'tests/paired-choam-nexus-modules-runtime.test.ts', 'tests/classic-nexus-skills-payments-runtime.test.ts', 'tests/classic-nexus-skills-battles-runtime.test.ts', 'tests/nexus-skills-modules-payments-runtime.test.ts', 'tests/nexus-skills-modules-battles-runtime.test.ts', 'tests/paired-ix-nexus-skills-modules-runtime.test.ts', 'tests/paired-choam-nexus-skills-modules-runtime.test.ts', 'tests/ecaz-nexus-skills-modules-runtime.test.ts', 'tests/moritani-nexus-skills-modules-runtime.test.ts', 'docs/NEXUS_CARD_RULES.md', 'tests/nexus-tleilaxu-revival.test.ts', 'tests/fixture-nexus-tleilaxu-secret-ally.ts', 'tests/nexus-tleilaxu-secret-ally-runtime.test.ts', 'tests/nexus-borrowed-voice.test.ts', 'tests/fixture-nexus-borrowed-voice.ts', 'tests/nexus-borrowed-voice-runtime.test.ts', 'tests/nexus-fremen-protection.test.ts', 'tests/fixture-nexus-fremen-protection.ts', 'tests/nexus-fremen-protection-runtime.test.ts', 'tests/fixture-stronghold-factions.ts', 'tests/fixture-nexus-advisor-fresh.ts', 'tests/nexus-advisor-fresh-runtime.test.ts', 'tests/fixture-nexus-advisor-storm.ts', 'tests/nexus-advisor-storm-runtime.test.ts', 'docs/NEXUS_ADVISOR_RUNTIME.md', 'tests/nexus-fremen-free-quota.test.ts', 'tests/fixture-nexus-fremen-free-quota.ts', 'tests/nexus-fremen-free-quota-runtime.test.ts', 'tests/nexus-fremen-revival.test.ts','tests/nexus-emperor-payment.test.ts','tests/fixture-nexus-emperor-payment.ts','tests/nexus-emperor-payment-runtime.test.ts','docs/NEXUS_EMPEROR_RULES.md', 'tests/nexus-emperor-extra-source.test.ts', 'tests/nexus-emperor-extra-continuation.test.ts', 'tests/fixture-nexus-emperor-extra.ts', 'tests/nexus-emperor-extra-runtime.test.ts', 'tests/fixture-single-nexus-e1.ts', 'docs/NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md', "tests/fixture-nexus-emperor-seller.ts", "tests/nexus-emperor-seller-purchase.test.ts", "tests/nexus-emperor-seller-runtime.test.ts", "tests/fixture-nexus-emperor-ambassador.ts", "tests/nexus-emperor-ambassador-purchase.test.ts", "tests/nexus-emperor-ambassador-runtime.test.ts", "tests/fixture-nexus-emperor-special.ts", "tests/nexus-emperor-special-purchase.test.ts", "tests/nexus-emperor-special-runtime.test.ts", "tests/karama-intents.test.ts", "tests/fixture-nexus-emperor-bank.ts", "tests/nexus-emperor-bank-profile.test.ts", "tests/nexus-emperor-bank-runtime.test.ts", "tests/duke-captured-custody.test.ts", "tests/nexus-ecaz-duke-captured.test.ts", "tests/fixture-nexus-duke-capture.ts", "tests/nexus-duke-capture-runtime.test.ts", "tests/nexus-duke-timing-runtime.test.ts", "tests/junction-purchased-price.test.ts", "tests/richese-native-guild-rate.test.ts"]},
],
},
{
id: 'choam-leader-skills',
title: 'CHOAM with Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Native CHOAM connects full-deck skill actions, Basic suspended-sale revival and bounded Advanced support and aftermath.',
steps: [
'This development combination uses Basic CHOAM and base opponents, the full fourteen-skill deck and no other optional modules. Starting cards precede skills and Traitors. Its 35-card Treachery deck includes Poison Tooth and Artillery; neither is a green Special. Auditor belongs to Advanced and cannot receive a skill.',
'Connected movement, shipping, payment and battle skills share their normal controls and legal choices. CHOAM cannot spend a card already committed to a sale or sell a Special already discarded after Planetologist battle use.',
'Ghola may revive an eligible own leader while a declared sale waits. Finish the spent Ghola, optional private replacement draw or decline, and any required assignment before the original sale resumes. The replacement belongs to the actual revived leader.',
'The sale resumes with its original card, price and response passes. Canceling that sale preserves the completed free revival and does not return the spent Ghola.',
'Fresh Advanced CHOAM and/or Ixians plus classic tables use distinct required family decks and all fourteen skills. Auditor cannot be assigned a skill, including after its paid revival; original support income and bank-held allied funding remain distinct. Richese and further optional combinations retain separate boundaries. Remaining skill effects are unfinished; this prototype does not certify complete expansion rules or AI strength.',
],
related: ['leader-skills', 'choam-modules', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Existing genuine setup now connects ordinary skill actions, native card sales, mandatory disposal and exact interrupted-sale revival continuation.', evidence: ['game/leader-skill-profile.ts', 'game/choam-market-ghola.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Existing private draw, decline and assignment controls complete the revival before returning to the sale response.', evidence: ['components/leader-skills.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All profiles follow current private offers and legal action lists. Full strategy and calibration wait for feature completion.', evidence: ['game/bots.ts', 'tools/faction-games.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Exact configuration, inventory, source composition and remaining boundaries are recorded.', evidence: ['docs/CHOAM_LEADER_SKILLS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Full-deck setup, native powers, skill controls, card custody, saved-sale corruption, private concurrent recovery and bounded complete games have focused checks. Final acceptance remains open.', evidence: ['tests/choam-skills-integration.test.ts', 'tests/choam-skills-ghola.test.ts', 'tests/choam-skills-recovery.test.ts', 'tools/faction-games.ts'] },
],
},
{
id: 'ixian-leader-skills',
title: 'Ixians with Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Native Ixians connect the full skill deck to cyborg movement, the HMS and Basic or bounded Advanced battle aftermath.',
steps: [
'The private starting-card choice precedes the full skill deal, Traitors and real first-Storm HMS placement. Basic Ixians retain Tleilaxu and base combinations. Fresh Advanced Ixians and/or CHOAM plus classic tables use distinct required family decks; unrelated optional overlays and foreign gholas remain guarded.',
'Planetologist calculates each gathered origin separately using its selected cyborgs. Canceling native cyborg movement leaves the independent skill range available. Sandmaster routes can enter or leave the HMS through its current pointer.',
'Suk Graduate rescues finish before substitution. Select the original sectors of rescued cyborgs where needed; only cyborgs actually sent to the Tanks can return through substitution. Rihani also finishes before native substitution.',
'Planetologist may substitute the green Thumper, Harvester or Amal in its weapon role. Their normal effects do not execute, and mandatory disposal still follows allowed, declined or canceled substitution.',
'Sandmaster now connects owned one-pile-per-entered-territory collection during native HMS Storm relocation and Advanced special Karama, preserving native collection and cancellation. Sector allocation is provisional. Remaining skill boundaries and other combined configurations remain unresolved or unfinished; this prototype does not certify complete rules or AI strength.',
],
related: ['leader-skills', 'tleilaxu-leader-skills', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Genuine setup, per-origin range, HMS force routes, actual rescued/casualty custody and ordered battle cleanup are connected.', evidence: ['game/leader-skill-profile.ts', 'game/suk-graduate.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Private setup, typed movement, room-local routes and explicit rescue-origin choices retain saved decisions.', evidence: ['components/planetologist-movement.tsx', 'components/sandmaster-movement.tsx', 'components/suk-graduate.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing profiles use legal shared ranges and current choice lists. Full strategy and difficulty tuning remain deferred until feature completion.', evidence: ['game/bot-mobility.ts', 'game/bots.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Configuration, physical source inventory, source composition and remaining boundaries are recorded.', evidence: ['docs/IX_LEADER_SKILLS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Full-deck setups, controls, corruption/custody, authenticated concurrent recovery and two-through-six-player samples cover this bounded composition.', evidence: ['tests/ix-skills-movement.test.ts', 'tests/ix-skills-battle.test.ts', 'tests/ix-skills-suk.test.ts', 'tests/ix-skills-recovery.test.ts', 'tools/faction-games.ts'] },
],
},
{
id: 'tleilaxu-leader-skills',
title: 'Tleilaxu with Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Native Basic and bounded Advanced Tleilaxu retain fourteen skills, Face Dancers and original foreign-ghola ownership without a new skill.',
steps: [
'Basic Tleilaxu with base opponents retains its existing full skill deck. Fresh Advanced native Tleilaxu, optionally Ixians and/or CHOAM, plus classic tables use distinct required Ix/CHOAM decks and all fourteen skills. Starting choices, actual traitors and three native Face Dancers remain. Unrelated overlays and public starts stay gated.',
'Rihani draws become unrevealed Face Dancers. Keep one new card by revealing and returning one unrevealed old card; the other new card returns privately. Only the owner sees the inspection history and new identities.',
'A successful own-leader revival preserves the optional skill draw after revival responses. Winner skill and card cleanup precede Face Dance; a killed skilled leader returns its card once. Zoal copies the opposing disc value before the shared provisional Smuggler modifier cap.',
'Actual foreign revival pays its native half price and fills the controlled living pool only up to five, but never draws or assigns a skill. The original faction keeps the sole physical disc; Tleilaxu controls it. A native trainer can supply its normal role bonus to that different selected disc, not its trained lower bonus. Own revival still offers its eligible optional draw. Auditor and the Ecaz-only Duke/Ghola exclusions remain.',
'Foreign death and negotiated original-owner buyback use original handlers. Harkonnen capture temporarily overrides Tleilaxu control without moving the disc into another physical roster. Its actual plan reveal removes the concealed snapshot; surviving use returns the ghola to Tleilaxu. Execution preserves the original dead-ghola return path. No skill attaches to a foreign disc.',
'Other unfinished skill effects retain their stated limits. This development combination does not certify the full expansion or every optional-module interaction.',
],
related: ['leader-skills', 'tleilaxu-face-dancers', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Full native setup, own revival, Advanced foreign control/no-new-skill, original Harkonnen capture/revelation/use-return/execution, Rihani exchanges, death custody and copied Zoal collection compose. Other modules and pending skill rulings stay explicit.', evidence: ['game/leader-skill-profile.ts', 'game/leader-skills.ts', 'game/rihani-decipherer.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Private offers, Face Dancer keep/reveal inspectors and saved own-revival choices reuse the table controls.', evidence: ['components/rihani-decipherer.tsx', 'components/leader-skills.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing profiles follow their private legal offers. Full strategy and strength tuning wait for feature completion.', evidence: ['game/bots.ts', 'tools/faction-games.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'Entry, source contracts and remaining boundaries are recorded.', evidence: ['docs/TLEILAXU_LEADER_SKILLS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Original native role checks remain. Advanced own/foreign revival, normal versus lower bonus, death/buyback, Face Dance and captured use/execution cases pass with all fourteen cards and current JSON. Fourteen genuine games finish6,620 accepted actions/no rejection/171 JSON continuations, including62 battles and two foreign revivals. Actual manual/four-policy revival and captive revelation/return/execution smoke pass; complete module acceptance remains open.', evidence: ['tests/advanced-tleilaxu-skills.test.ts','tests/tleilaxu-skills-integration.test.ts','tests/tleilaxu-skills-revival.test.ts','tests/rihani-face-dancers.test.ts'] },
],
},
{
id: 'ecaz-leader-skills',
title: 'Ecaz with Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Five native trained discs, original Ambassador choices and ordinary battle effects, with the separate temporary Duke retained.',
steps: [
'Fresh Basic or Advanced native Ecaz with classic opponents retains the ecaz deck and all fourteen skills. Starting cards precede public skill assignments, Loyalty/Traitors and original six-force placement. Five native discs are eligible; the separate Duke is not an assignment disc. Supported normal-lobby previews now use this setup.',
'Ordinary native role scores, actual Suk casualties, trainer death and optional own normal-disc revival skills use their original rules. Normal rescue returns one physical casualty; surviving trained rescue keeps one and returns up to two more, without refunding support or creating extra forces.',
'Original paid Ambassador placement and entrant reactions keep the exact token, training and movement suffix. Emperor Ambassador grants five bank spice; it is income, not a qualifying bank payment from another player for Banker.',
'A temporarily acquired Duke has printed strength six. A different living face-up Warmaster may give him only the normal one-point bonus with a physical Worthless card, never the trained-disc three. Surviving release or actual Duke death leaves the native trainer and card intact; bounty remains printed six.',
'Ecaz-only paid five-spice Duke revival retains the same living set-aside disc under the earlier selected interpretation. These paths keep an existing native skill and do not authorize shared-Duke assignment. Advanced Harkonnen and other module/ruling boundaries remain explicit.',
'Fresh standalone Ecaz skill tables may preserve original Tech Tokens in Basic/Advanced with three through six seats, and Stronghold Cards in Advanced with two through six, optionally both. Original five-disc training, Ambassador/Duke acquisition, local held-card protection or income, Suk rescue and mandatory winner Tech remain. Allied Arrakis Occupy now uses the selected lead’s skill and separate fixed/variable army losses without needing Nexus or Worlds. Advanced Harkonnen, pairs, mixtures and other unsupported profiles stay guarded.',
],
related: ['leader-skills', 'duke-vidal', 'ecaz-ambassadors', 'spice-banker-income', 'implementation-checklist'],
checklist: [
{area:'Implementation',status:'Partial',detail:'Native five-disc profile composes original setup, Ambassador, ordinary rescue/death/revival, separate temporary Duke handlers and allied Arrakis Occupy with or without supported Worlds. Shared-Duke assignment and wider profile combinations remain guarded.',evidence:['game/leader-skill-profile.ts','game/engine.ts']},
{area:'Player controls',status:'Partial',detail:'Original skill offers, posture, battle slots, rescue, Ambassador acquisition and revival controls are reused. Human390px LQWE8TZM v18 exercises paid token/arrival/acquisition, Duke Worthless battle and original cleanup/refresh.',evidence:['components/leader-skills.tsx','components/duke-vidal.tsx','components/game-table.tsx']},
{area:'AI',status:'Partial',detail:'Existing legal native choices and all four physical Suk rescues compose. No new strategy or calibration.',evidence:['game/bots.ts','tools/faction-games.ts']},
{area:'Documentation',status:'Partial',detail:'Ordinary native and temporary Duke scope are separated from unresolved assignment, capture and combined force rules.',evidence:['docs/LEADER_SKILLS_RUNTIME.md','docs/DUKE_VIDAL_RULES.md']},
{area:'Verification',status:'Partial',detail:'Standalone coalition follow-up passes73/73 affected cases, types/lint/build, two Skills-only runtime programmes and390px lobby entry. Four policies in Basic/Advanced with/without Worlds complete real allied battles and preserve physical counters. Earlier67/67/native Duke, complete-game and CLI evidence remains historical; full combinations/assurance/deployed acceptance stay open.',evidence:['tests/homeworld-ecaz-occupy-runtime.test.ts','tests/fixture-homeworld-ecaz-occupy.ts','tests/native-ecaz-skills.test.ts','tests/native-ecaz-duke-skills.test.ts']},
],
},
{
id: 'richese-leader-skills',
title: 'Richese with Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Native cache setup, fourteen skills, capped concealed-force aftermath and exact green-card substitution in bounded development tables.',
steps: [
'Basic or Advanced native Richese retains its required CHOAM deck, separate ten-card cache and all fourteen skills. Native CHOAM may share the table; Advanced selected Ix decks and Tleilaxu retain their original inventory and explicit combination limits. Starting cards precede skills, public assignment and traitors. Public starts remain gated.',
'Marker-only zero, three and five battles use the owning private reserve-capped pool and reveal only after both plans seal. Actual force loss then feeds original Suk rescue; no token value is a second casualty or a phantom reserve. Ordinary forces are separate. Own mixed marker/physical battle stays guarded; voluntary reveal must occur before Battle.',
'A selected surviving Planetologist may use a canonical printed green Richese Special or Special - Movement in its weapon slot for two strength. Exact physical identity is required. Stone Burner, Mirror Weapon and Portable Snooper do not qualify. The green card is discarded once without its native effect, fee, search or early leader kill.',
'The normal Smuggler own companion is one separate force alongside the marker, not added to its hidden value. Ordinary allied No-Field cancellation and Guild stages retain their exact owner/recipient/token frame; an allied free companion is not granted.',
'The authorized Advanced recipient cutover keeps Richese ally contributions distinct: buyer four goes to Richese, funded Richese four goes to Emperor or bank. This also applies when Emperor is the buyer. Cancellation redirects only the original Emperor share, not unrelated buyer credit, with no second donor debit or card transfer. Basic keeps its publisher receipt.',
'Separate normal Banker income uses only actual bank-routed payer legs and remains unavailable until actual Mentat. Allowed Emperor income and ordinary seller credit are not bank payments. Bureaucrat evaluates Advanced buyer-to-Richese and Richese-to-Emperor receipts separately, retaining full original costs and one use per phase; Basic keeps its original seller receipt. Positive Black Market self-purchase is provisionally paid retention of the same card, with full native Emperor/Bank income and no extra hand slot. Supplied Advanced p34 excludes Richese auctions from Ixian Technology; other module and complete-mode boundaries remain explicit.',
],
related: ['leader-skills', 'richese-cards', 'richese-no-field', 'spice-banker-income', 'implementation-checklist'],
checklist: [
{area:'Implementation',status:'Partial',detail:'Original native setup, exact green role lookup, private capped marker outcomes, ordinary allied declaration and Advanced original payer/recipient continuation compose. Existing rule guards and Basic source remain.',evidence:['game/leader-skill-profile.ts','game/leader-skill-combat.ts','game/auction-continuation-quote.ts','game/engine.ts']},
{area:'Player controls',status:'Partial',detail:'Original skill offers, cache bidding, concealed shipment, original preparation and plan slots, physical rescue, partial income and deferred grant controls are reused. Actual human evidence is recorded separately.',evidence:['components/leader-skills.tsx','components/richese-no-field.tsx','components/game-table.tsx']},
{area:'AI',status:'Partial',detail:'Shared exact roles and native private pools supply legal candidates; all four policies perform actual capped Suk rescue. No new strategy or calibration. Source questions can still stop full games.',evidence:['game/bots.ts','game/leader-skill-combat.ts']},
{area:'Documentation',status:'Partial',detail:'Exact native skill, green disposal and Basic-versus-Advanced contribution source are documented without full-family certification.',evidence:['docs/LEADER_SKILLS_RUNTIME.md','docs/RICHESE_AUCTION_RULES.md','docs/SMUGGLER_NO_FIELD.md']},
{area:'Verification',status:'Partial',detail:'Final affected rule/CLI union151/151, types/lint/build and eleven controlled programs pass. Genuine29-game batch is not green:28 finish11,788 actions/303 JSON continuations/130 battles; one exhausted-cache guard is captured. Actual390px green battle358WLPYA v16 and funded sale/native Mentat E2K2U5ZW v26 retain original controls and refresh without repeated payment. Broader/full/deployed acceptance remains open.',evidence:['tests/native-richese-skills.test.ts','tests/native-richese-green-battle.test.ts','tests/richese-contribution-payments.test.ts','tests/faction-games-cli.test.ts']},
],
},
{
id: 'moritani-leader-skills',
title: 'Moritani with Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Native Basic and bounded Advanced Moritani compose fourteen skills with Terror, original assassination and skill-first aftermath.',
steps: [
'Assign skills after starting Treachery Cards and before Traitor choices. Moritani places its six starting forces last. All fourteen skills remain in the physical deck; each player keeps one of two private choices and publicly assigns it to an eligible leader.',
'Connected movement, shipping, payment and battle skills use the same controls and legal quotes as the base profile. Terror Assassination returns a killed leader’s exact skill once; a later own-leader revival offers the normal private optional replacement. Sabotage affects Treachery Cards, not skills.',
'An Enemy of My Enemy alliance preserves each faction’s assignments. A losing ally cannot retain a used Planetologist Special or the Worthless card used for a Diplomat copy, because those cards must be discarded.',
'Basic Moritani with base opponents keeps its existing entry, including Harkonnen. Fresh Advanced Moritani plus classic opponents except Harkonnen uses the ecaz deck and the original assassination preview with all fourteen skills. Winner Suk rescue and Rihani choice finish before post-loss assassination, without replaying casualties. The actual winning disc remains excluded; another eligible trained disc returns its skill once and pays only printed bounty. Normal traitor revelation forfeits assassination for the whole game. Ecaz/Duke skill assignment, other native families, optional modules and public starts remain separate.',
'The original standalone skill profile may additionally preserve Tech Tokens in Basic/Advanced three-through-six-seat tables and Stronghold Cards in Advanced two-through-six, optionally both. Actual normal winner Suk rescue finishes before unused trained-disc assassination and printed bounty; original winner cards/Tech, losing Tuek earnings, support and one real Mentat replacement remain. Ordinary Collection is separate. E3 pairs, mixtures, allied Occupy skills and other overlays remain guarded; public starts and save conversion stay excluded.',
],
related: ['leader-skills', 'expansion-faction-games', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Genuine setup, shared native skill quotes, original Terror/retention, skill-first Suk/Rihani continuation and actual trained-disc assassination/one Mentat replacement compose in the bounded Advanced roster. Basic and unresolved module/roster boundaries remain.', evidence: ['game/leader-skill-profile.ts', 'game/moritani-assassinate.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'Existing private offers, public assignments, battle and revival choices are reused; Planetologist controls share the expanded server predicate.', evidence: ['components/leader-skills.tsx', 'components/planetologist-movement.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Existing profiles retain minimal legal participation through shared public choices. Strategy and difficulty calibration remain deferred until game features are complete.', evidence: ['game/bots.ts', 'tools/faction-games.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The integration guide records entry, exact scope, existing source contracts and remaining effects without claiming full module compliance.', evidence: ['docs/MORITANI_LEADER_SKILLS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Affected64/64 and CLI2/2 pass. Five genuine Advanced games finish1,425 accepted actions/no rejection/37 JSON continuations/24 battles; none opens assassination. Nine actual controlled cases cover original skill-first decisions, manual/four-policy assassination death/card return/one replacement and private Mentat/Banker opt-ins. Actual human/checkpoint evidence is recorded separately; full module acceptance remains open.', evidence: ['tests/advanced-moritani-skills.test.ts', 'tests/advanced-moritani-skills-assassinate.test.ts', 'tests/moritani-skills-integration.test.ts', 'tests/moritani-assassinate-engine.test.ts'] },
],
},
{
id: 'spice-banker-income',
title: 'Spice Banker: front-shield income until Mentat',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'Fresh supported all-fourteen Leader Skills setups automatically gain one deferred spice once per phase when another player makes one qualifying payment to the Spice Bank, then collect at native Mentat.',
searchText: 'Spice Banker normal income bank payment four spice phase deferred front shield original owner death capture Mentat',
steps: [
'Normal income is mandatory in new ordinary supported all-fourteen Leader Skills setups, including their original supported Homeworld, Nexus, Discovery, Tech, Stronghold and native overlay envelopes. No separate income profile or toggle remains. This adds no new module combination, public start or played-game conversion.',
'Original native setup, decks, offers, phase controls and payment recipients remain. Only actual final Bank portions count; authorized donor contributions remain separate payer legs, and allowed Emperor, Guild or seller income does not become a Bank payment.',
'Original native/occupied receipts supply final Bank amounts. Bureaucrat diversion combines only with the same payer’s other Bank portions of one original invoice. Low native income rounds the eligible invoice once, with Bank rounding and the first eligible diversion contribution attributed primary-payer-first internally. Funding identities are not disclosed.',
'The printed normal band is mandatory once per phase: when another player makes a payment of at least four spice to the Spice Bank, gain one spice and place it in front of the shield. It is an additional bank grant, not a reduction of the payer’s payment or another player’s income.',
'Only an actual completed positive bank payment qualifies. A payment to a player, zero/free/waived cost, self-payment, invalid declaration or unfinished possible payment supplies no income. Several smaller payments do not combine to reach four.',
'Use the original actual bank portion after recipient and counter settlement, not a quoted fee or guessed wallet change. Paid auctions, funded shipments, paid revival and eligible resolved battle support keep their native continuation once. Canceled Emperor, Guild or Tleilaxu revival income can leave a real bank payment. Tleilaxu self-revival pays the Bank; other-player revival normally pays Tleilaxu. Its separate free-revival bank award is not payer debit: three paid plus that one reward never becomes four paid to the Bank. A stopped shipment supplies no payment.',
'Accepted Ecaz Ambassador placements and high-Kaitain selected-card disposals also use their actual Bank invoices. A fourth placement costs four; declaring it earns nothing until allowed and paid. An atomic two-card disposal costs four, while separate one-card payments of two never combine. Both keep the physical once-per-phase cap and original Mentat collection; deferred spice cannot fund another placement or disposal.',
'Actual payer contribution legs stay distinct. Two different players paying two each do not become one player paying four. The same payer’s Bureaucrat diversion and other final Bank portions of one original invoice do combine; unrelated invoices never do. Banker’s separate one-to-three battle payment does not combine with two support to manufacture a qualifying payment. Source conventions and user rulings are explicit, not a publisher split-payment example.',
'A new grant requires an actual available living native trainer. A captive grants no normal income. Hidden unselected skills do not supply their normal band; in the trainer’s own battle, its actual selected surviving leader supplies the appropriate eligibility after reveal/resolution, not private pre-reveal timing.',
'One physical Banker card has one use per turn and phase. Repeated payments, refresh, death, return or same-phase reassignment cannot reset that use; the next phase or turn permits a new grant.',
'The front-shield pile is not spendable spice. It cannot fund the triggering payment, a later bid, shipment, revival, support or lower-band Banker commitment before collection. Human and all four AI policies keep using their actual available balance.',
'At the real current Mentat opening, collect the uncollected grants automatically once before optional actions and victory. No extra response, counter, confirmation or collect action is added. Collection itself is not another player-to-bank payment.',
'This fresh local prototype provisionally keeps already-earned spice with the original gaining faction when the trainer dies, is captured or the skill changes owner. That is a conservative earned-currency custody choice, not an answer to the previously asked universal death/capture question.',
'Public projection shows only physical front-shield owner/count and current-phase use. Private payment receipts, exact hidden source amounts, plans, and future skill entitlement are not exposed. Current and collected history survive JSON/recovery without replaying either original payment or collection.',
'Current bounded proof exercises ordinary native World/Nexus/Discovery/Tech/Stronghold and Semuta/Skills setup, real Bank-four versus below-threshold or player-recipient payments, unavailable deferred budgets, native Hajr recovery and original Mentat collection. A played Skills save without income metadata retains its legacy behavior. Two 390px journeys complete 18 original actions, including eight native UI submissions, without app errors or root overflow. Four minimal policies legally continue both contexts. Earlier payment/custody evidence remains historical; comprehensive assurance, complete modes and deployment acceptance remain open.',
],
related: ['leader-skills', 'battle', 'bidding', 'revival', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Implemented', detail: 'Fresh ordinary all-fourteen Skills initializes the existing deferred-income ledger automatically; original supported module and native overlay setup stays authoritative. Accepted Ecaz placements and atomic Kaitain disposals join actual final Bank payer legs; one physical Banker phase grant and original-owner Mentat collection remain. Existing games are not retrofitted; the separate initializer/profile and opt-ins are removed.', evidence: ['game/engine.ts', 'game/spice-banker-income.ts', 'game/leader-skill-profile.ts', 'game/homeworld-payment-income.ts', 'tools/prototype-room.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'A full-width read-only public front-shield notice explains unavailable spice and automatic collection; genuine original payment and final Collection controls work at 390px through refresh. No new income action or confirmation.', evidence: ['components/spice-banker-income.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four minimal legal policies preserve identical available-budget actions with deferred income present or absent. Original wallets exclude front-shield currency; strategy/calibration remain deferred.', evidence: ['game/bots.ts', 'game/spice-banker.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed threshold/phase/collection, original payment separation, provisional earned custody and per-payer composition are explicit. The user-ruled same-payer diversion, primary-first private attribution and whole-invoice low rounding are documented without universal publisher claims.', evidence: ['docs/LEADER_SKILLS_RULES.md', 'docs/SPICE_BANKER_RUNTIME.md', 'docs/HOMEWORLD_PAYMENT_INCOME_RULES.md', 'docs/RULE_DECISIONS.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Ordinary native World and Semuta programmes cover actual payment, physical trainer, deferred spendability, threshold/recipient exclusions, overlay continuation and once-only Mentat collection. Legacy played saves are not retrofitted. Two actual phone journeys and four legal policies exercise these contexts; this is not exhaustive combination, recovery, strategy or deployed acceptance.', evidence: ['tests/fixture-banker-world-default.ts', 'tests/banker-world-default.test.ts', 'tests/fixture-banker-overlay-default.ts', 'tests/banker-overlay-default.test.ts', 'tests/homeworld-banker-income.test.ts', 'tests/homeworld-banker-transport.test.ts', 'tests/homeworld-bank-payment.test.ts', 'tests/spice-banker-income.test.ts', 'tests/fixture-banker-native-payments.ts', 'tests/banker-native-payments-runtime.test.ts', 'tests/native-banker-income.test.ts', 'tests/prototype-room.test.ts', 'docs/SPICE_BANKER_RUNTIME.md'] },
],
},
{
id: 'leader-skills',
title: 'Leader Skills',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Fourteen physical skills, private assignment choices, five battle disciplines, Planetologist movement/battle effects and Suk Graduate rescues, Mentat/Bureaucrat scoring and Bureaucrat payment redirection, Sandmaster victory spice, Rihani exchanges, optional Smuggler shipping and provisional modifier-inclusive battle collection, Sandmaster route and worm-ride collection, sealed Spice Banker battle spending and optional Diplomat base-defense copying in development tables. All twenty-eight independent bands have connected first versions; full interaction review, polish and combined-module acceptance remain unfinished.',
steps: [
'Fresh bare Advanced E3/all14 Skills may include Harkonnen with Ecaz and/or Moritani and classics, two through six distinct seats. The actual native trainer/card follows a random capture; its normal band is unavailable during captivity and only its selected lower battle effect applies. Surviving use returns the same assignment, while death returns the physical Skill. Mandatory Banker and native Moritani state remain; World/Nexus/Discovery/independent/Tech/Stronghold/Semuta gates are separate.',
'Sandmaster may collect along physical Ornithopter and carried Discovery routes using their actual range, exact declared path and current piles. Each different card movement has its own one-per-entered-territory opportunity; a concealed No-Field counts as one moving force without materializing its value. Choose one pile or decline per entered territory. Original source cohorts and disposal remain; allocation/reset are provisional.',
'Planetologist may provisionally compose either movement alternative with physical Ornithopter or carried Discovery. Fixed flight stays three, including both gather origins. In two-group card mode, each action chooses boosted normal range or ordinary-range gathering; a gather counts as one card movement. Different original counters must supply the second movement, even after merging. Current trainer, source events, earlier-turn token ownership and one disposal remain.',
'Fresh all14 uses one selected-deck capability for every registered actual seat, Basic/Advanced, including mixed native Ecaz/Moritani with selected E1/E2 families. Neither an expansion faction, independent cards, Nexus nor one exact E3 family is required just to use selected ordinary decks. An unused deck creates no seated faction. Original World/phase envelopes retain components and native power bindings; original Nexus/Discovery/Semuta and Advanced role limits stay separate. Ix drafts before training; Auditor/shared Duke never train. No Advanced power, income, owner or played-save history is invented.',
'Classic Nexus core with base33 or selected36 permits optional all14, original Tech3+ and Advanced Strongholds2+. Offers, starting-card order, mandatory normal Banker and native reactions remain. Actual third-party Bureaucrat sees the real Guild-card recipient. Tech pays only at its matching phase end; Banker waits for Mentat. Earned local support does not become personal money or reserve fees. Selection/printed roles are public capabilities; other native/module envelopes stay separate.',
'Explicit guild-betrayal --leader-skills remains a bounded classic preset of the original all14 setup. It does not require independent cards or another overlay. Native Mentat private questions, skilled-disc posture, Sandmaster collection and normal income retain their shared quotes; exact payer/recipient and printed Bureaucrat third-party conditions remain. Native cards, paid forces, Use/Pass and movement/plan continuation stay physical. Wider combinations and complete-mode acceptance remain separate.',
'Basic Moritani keeps legal Terror but gains no Advanced assassination, including registered mixed native Skills seats. Ecaz/Moritani with selected E1/E2 or unused decks keeps original Worlds/Tech3+/Advanced Strongholds2+ and optional independent cards without requiring Nexus. Advanced E3/Harkonnen remains guarded in those module envelopes; the fresh bare E3/all14 capture entry is separate. Winner Suk and Rihani precede a different unused trained-disc death, one skill return, printed bounty and one original Mentat replacement. Native card/force sources, normal-call forfeiture and shared-Duke exclusion remain; unrelated overlays retain their original envelopes.',
'Basic and Advanced selected-deck Skills admits registered base, Ixian/Tleilaxu, CHOAM/Richese and Ecaz/Moritani seats only when their family is selected. Unused decks neither create a seat nor require one. All14/native setup remain. Auditor is Advanced and unskilled; foreign-ghola authorization still explicitly requires Advanced, grants no new skill and retains original Duke/custody limits. Cyborg losses, native funding and capped markers stay physical. Supplied Advanced p34 excludes Richese auctions from Ixian Technology; existing capture/KH/copy/role guards keep their own rules.',
'Independent Recruits, Reinforcements and Harass compose registered selected-family all14 Basic/Advanced, including mixed E3, original Worlds and Tech3+/Advanced Strongholds2+. Bare E3 World cards keep their original roster envelope without requiring Skills. Original36/38/50, cache, native setup/prices and selected-hand capability stay. Own-World fee/dial pools are disjoint; visitor returns retain typed homes and Suk cannot rescue fees. Earned support is not personal money or reserve funding. Original Nexus/Discovery/Semuta, shared Duke and Advanced role/effect guards remain.',
'Fresh registered all14 keeps original Tech3–6 Basic/Advanced, optional independent cards and supported Worlds, including mixed E3 without a Nexus dependency. Starting hands/cache, offers/Traitors and printed/first-Storm owners stay genuine. Native rates use actual stock/population at acceptance; normal Banker records the accepted Bank invoice, not net wallet change after separate income. No token owner, premature spendable grant or victory credit is assigned to simulate earned play. Original Nexus/Discovery/Semuta and effect-specific envelopes remain; played games are not converted.',
'Fresh Advanced registered all14 retains six original Stronghold Cards, optional Tech3+ and independent cards within its envelope, including selected mixed E3. Actual end-Mentat earns custody; the benefit stays local to the selected holder-plan. Arrakeen changes payer debit, not physical commitment, Suk entitlement or Banker threshold. Native E1/E2 aftercare and Ecaz/Moritani coalition/assassination retain original order. Shared Duke, Advanced E3/Harkonnen, unsupported copied defenses and active skill/Stone retain their own guards.',
'Fresh classic Leader Skills may explicitly add Nexus through local leader-skills --nexus-cards, Basic/Advanced two through six players, retaining selected original Tech at three or more seats and/or Advanced Strongholds. --discoveries additionally composes original Discovery7/8 in this classic profile. Saved hands/offers remain authoritative; the actual end-Spice closing draw follows Maker votes/typed rides, both Advanced piles and settled alliance. Free-return ledgers, bank purchase and Traitor Deck declarations stay distinct from training. Original phase-end industry, held payer support/physical defenses, physical Suk rescue and subsequent mandatory winner Tech rewards retain their own timing. Homeworlds, Banker/Mentat previews, borrowed Smuggler arithmetic and unresolved interactions remain separate.',
'The same fresh entry also adds --nexus-cards --discoveries to paired Ixians+Tleilaxu, paired CHOAM+Richese or standalone Ecaz OR Moritani with classics, original all14/all12/Discovery7/8, Basic/Advanced two through six with optional Tech3+ and Advanced Strongholds. Original offers/hands/native components remain authoritative. E1 Suboid Cunning settles typed Suk rescue before one equal Cyborg Tank substitution, then original cleanup and mandatory winner Tech precede a matching Face Dance; E2 keeps its signed one-invoice pair; Ecaz keeps quiet living/unclaimed Duke then a real owner-labelled mandatory Occupy; Moritani keeps skill-first assassination and one private Mentat replacement. Mixed/E3 pairs, shared Duke, borrowed Smuggler/pair companions, native free returns, captured/foreign training, Basic odd Ecaz, Advanced Harkonnen and other pending rulings stay guarded.',
'Both original paired Ixian/Tleilaxu or CHOAM/Richese factions plus classics may add Nexus through that fresh local skill entry, with one family deck/all14/all12, Basic/Advanced two through six players. Selected original Tech requires3+; Strongholds requires Advanced. Full unsupported Suboids retain Cyborg support and skill posture; physical Suk rescue precedes equal actual Cyborg Tank substitution. Original winner cleanup and mandatory Tech precede Face Dance, which returns a matching killed trainer skill once without another bounty. Held custody stays with the original winner. Richese Cunning retains its signed two-marker/one-invoice operation and native phase-end industry; ordinary skill proofs and companion exclusions stay separate. CHOAM fuel precedes ordinary Planetologist movement without a second card effect or artificial combat Special.',
'Standalone Ecaz OR Moritani with classics can add Nexus through the original fresh skill entry, exact ecaz33/all14/all12, Basic/Advanced2–6, optionally preserving original Tech3+ and/or Advanced Strongholds2+. Ordinary assignment discs and native skill bands remain. Ecaz spends actual Cunning before Battle to acquire the living/unclaimed separate Duke for the turn; normal discipline may apply, never a Duke assignment. Moritani retains Advanced skill-first assassination and normal-Traitor forfeiture, printed post-loss bounty and one private actual Mentat replacement, while Basic keeps legal Terror without gaining that Advanced power. Supply-only Cunning placement stays distinct from ordinary relocation; its enhanced relocation/HMS/Grumman questions remain pending. No public or saved-game conversion.',
'In this standalone Ecaz Nexus/Skills profile, mandatory Advanced Occupy keeps the chosen faction’s own leaders, cards, payment and battle skill. Training is not lent between allies. Ecaz-led Suk rescues its own fixed casualties after the ally’s variable losses; Diplomat retreats the selected faction’s undialed own counters, not a remainder computed from the combined dial. Native cancellation restores that selected lead’s ordinary own pool. These owner-labelled compositions are explicit implementation inferences, not a new combined-skill FAQ.',
'With this optional module, starting Treachery Cards are dealt after prediction and before skill assignment. Every faction privately receives two skills, keeps one, returns the other to the shuffled deck, and assigns its chosen card to an eligible leader. Skill and leader become public before traitor selection.',
'Before Battle Plans, leave the skilled leader face up to keep its normal effect, or move it behind the shield for possible use. A face-up leader cannot be selected for the plan. Concealing it while choosing another leader gives neither effect. A leader that must be used because no alternative remains moves behind the shield automatically.',
'Warmaster, Master of Assassins, Swordmaster of Ginaz, Killer Medic and Prana-Bindu Adept are connected. They give another leader +1 for the matching physical card role, or the surviving assigned leader +3. These bonuses do not stack to +4. They change battle strength, not the printed disc value or leader bounty.',
'The assigned leader keeps its skill through capture and returns with it if it survives its captive battle. The known skill identifies that captured leader; Harkonnen receives only its lower battle effect. Normal effects remain unavailable to both the captor and original faction while it is captured. A killed skilled leader returns its card to the shuffled skill deck.',
'When reviving an own leader while you have no Skill Card, decide whether to draw before seeing two private cards. Once drawn, keep one and assign it to that revived leader. Under the 13 October 2026 ruling the original faction keeps its assignment while its trained leader is captured, so reviving a different own leader is legal but draws no replacement while that card exists.',
'Planetologist chooses either one extra movement range (maximum three) or forces from two territories to one destination at normal range. These alternatives do not stack. Provisional mixed BG advisor/fighter gather into an enemy-only territory declares one common fighter arrival before either group moves. Native Karama cancellation keeps both sources and the movement allowance unchanged, and blocks another advisor flip for that movement opportunity; fresh-advisor locks remain. Empty or already BG-occupied destinations keep their original common stance. The actual skilled leader can use an eligible green Special in the weapon slot for +2 if it survives; discard that Special without its ordinary effect. Other combined modules remain unfinished.',
'Suk Graduate returns one selected casualty to reserves while its leader stays face up, or lets its surviving battle leader save up to three: one stays in its original sector and the rest return to reserves. The effects do not stack. Rescued counters still count toward Advanced Atreides’ seven battle losses for Kwisatz Haderach; combined modules remain unfinished.',
'In the supported classic Nexus/Skills composition, Emperor Cunning counts five actual ordinary counters as temporary Sardaukar, or the full positive eligible short group under the provisional shortage policy. Normal or trained Suk rescue still saves physical ordinary casualties. The original casualty allocation remains pending while the rescue choice is open; physical counters move only when rescue settles. Original support is already paid and is not refunded or charged twice. A normal save returns one to reserves; a trained save keeps one and returns the rest. Actual starred reserves and Tanks remain unchanged.',
'A surviving selected Mentat adds two battle strength. A surviving selected Bureaucrat subtracts one from the opponent’s total per distinct stronghold occupied by that opponent; advisors do not count. Printed disc values and bounties stay unchanged.',
'A living native Sandmaster may collect one spice per entered territory along a declared legal ground route. With multiple positive piles, provisionally choose one debit sector per territory or decline; two piles never grant two spice from the same territory. Canceled moves earn nothing. The initial source and a sector-only reposition earn nothing. Separate movements have separate opportunities. Native worm rides and physical Fremen Ambassador relocation offer one selected destination pile before arrival reactions, without an invented route or normal movement use. Native Ixian HMS passengers choose one pile in each entered territory before faction collection, including supplied Advanced special Karama; its route preview reflects both transfers. These allocations are provisional. Other special relocation remains unfinished.',
'A surviving skilled Sandmaster winner adds three board spice to an existing pile in the battle territory, even with no surviving forces. No pile adds nothing; a single pile resolves automatically. With several remaining positive piles, the winner selects one sector after any Smuggler allocation. Owner selection is a visibly provisional placement policy, not a publisher ruling.',
'Rihani normally inspects two random Traitor Deck cards privately, then reshuffles them. A surviving selected native Rihani also offers a separate optional draw of two. Decide before seeing them: once drawn, keep one new card and publicly reveal and return one unused old card. The other new card returns secretly. A captured Rihani grants only the optional exchange. Your private history records both samples; a card just called to win is already used.',
'Smuggler can include one free accompanying force in an off-planet shipment into an empty territory. Select the entire physical total; three forces cost the ordinary price of two. The checkbox can decline this optional benefit. Guild rounding follows the free force. Richese may instead ship one separate free reserve force beside its owned No-Field into an empty territory; the marker retains its ordinary price and hidden value. Existing forces, including advisors, prevent the bonus; ordinary Fremen on-planet reinforcement has no bonus.',
'Spice Banker can commit one through three own spice with its Battle Plan, separate from force support. Only the surviving selected skilled disc gains that strength. The amount stays private until authorized plan inspection or public reveal. It is paid on win or loss, including leader death, except a sole traitor-call winner spends nothing. Mandatory normal deferred income is automatic in fresh supported ordinary all-fourteen Skills setups; existing games are not retrofitted. Earned-faction custody remains provisional.',
'Diplomat may use one committed Worthless as the opponent’s canonical printed defensive role when you played no actual defense: Shield, Snooper, Shield Snooper, defensive Weirding Way/Chemistry, or sealed/actually late-played Portable Snooper. Named protection stays distinct; copying the used role imports no activation, numeric modifier or late-play right. Sealed sources offer after reveal; a new late source may offer before the unresolved outcome, preserving prior false traitor decisions. No fresh opportunity follows a successful traitor declaration. The selected Worthless discards even after a win. Older base/printed-only battles keep their original source windows. Current World/Stronghold contexts retain independent original effects; own earned Carthag may add Snooper to a copied Shield but cannot create protection without a used source. A native Diplomat can protect its selected disc; captives grant no normal band. Surviving trained losers retain the separate printed/copied-strength retreat policy. Mirror/numeric inheritance remains separate.',
'Normal Mentat questions use the user-approved uniform private card-show step before posture and faction powers in supported Leader Skills games. The opponent shows the named held weapon or chooses another held card, even for an exact match or sole eligible card. Weirding Way is a nameable default weapon; Chemistry is not. Cards stay held and need not enter a Battle Plan. New battles activate the question without an extra opt-in; already-opened unversioned battles retain their original flow. Empty hands skip without an answer. Private history records an observation, not a later hand guarantee.',
'Bureaucrat may redirect two spice when one other player pays at least five to a player other than the skill owner, once per phase. Payer costs stay unchanged; declining preserves later use. Bribes qualify at transfer and remain unavailable until Mentat Pause. Supported ordinary/Richese auctions, Guild shipments and paid Tleilaxu revival have connected paths; a separate free-revival award cannot make a smaller price qualify. Allied payer shares never pool to reach five. Trainer or recipient contributions cannot qualify but do not hide an eligible other payer. Public prompts show gross and recipient, not private shares or which payer qualified. Supported classic and native E1/E2/E3 profiles and Homeworld Skills retain original costs and callbacks. Native Guild/Emperor/revival Karama cancellation resolves before Bureaucrat; Richese retains direct seller credit with no invented cancellation window. Basic has no Black Market; free Karama purchases remain normal-only. By user ruling Bureaucrat takes two off gross before occupied Homeworld allocation. Fresh classic occupation plus Skills now connects this: eight becomes two to Bank, three native and three occupied, with full original payer contributions retained. Decline gives four plus four; native income cancellation preserves the separate occupied share and creates no Bureaucrat offer. The low/occupied Guild two-odd contributor rounding boundary is unchanged. By user ruling Guild Nexus Betrayal also carries Bureaucrat on its holder receipt in the bounded classic Nexus plus Skills composition; the holder receives the fee minus two. Emperor gifts remain excluded by user ruling, without threshold disclosure. Other profiles, overlays and full-mode acceptance remain unfinished.',
'Registered all14 tables use one ordinary Bureaucrat receipt capability for both single and allied funding. Selected native E1/E2/E3 decks, original Worlds and supported phase modules need no incidental Nexus Cards or exact single-family selection. A native worm alliance is not a Nexus Card. Module and Advanced role admission remain separate; full combined-mode acceptance is unfinished.',
'Advanced Richese cache and Black Market purchases route the buyer’s share to Richese and Richese’s own allied contribution to Emperor or Bank. Bureaucrat checks each actual player-directed receipt separately, never pools them, and cannot divert a Bank payment. The inherited provisional sequence offers seller credit first, then the original Emperor Karama window and donor-receipt reaction. Declining the first leaves the second available; using either spends the physical skill’s one phase use. Controls show the original public price and recipient portion, not the private share or a false whole-price-minus-two receipt. Basic, native card custody and escrow costs stay unchanged.',
'Smuggler records existing positive battle-territory piles at public reveal. Provisional modifier policy: cap by copied/printed disc plus declared Leader Skill bonuses and Kwisatz2. Pending spice cannot fund plans. A surviving controller collects even when losing or no forces remain, unless an actual zero-strength weapon effect resolves. Artillery Strike supplies that effect; the ordinary projectile Stunner does not. A sole own Traitor bypasses weapons and retains collection. Partial multi-pile collection asks its owner for exact sectors; all/none and single piles stay automatic. Both the modifier and allocation policies are explicit interpretations, not publisher rulings. Collection precedes Sandmaster; a drained pile receives none. Other module guards remain.',
'In classic and supported E1/E2 native Tech composition, actual Smuggler prices and normal Banker qualifying fees remain distinct from phase-end Tech income. Tech piles cannot fund their triggering action; Banker front-shield grants still wait for actual Mentat. Winning physical Suk rescue and Sandmaster board spice precede original played-card cleanup and mandatory winner token reward. One token transfers automatically, several require a selection, and no token skips without an invented decline. A later Face Dancer retains the original winner’s cards, bounty and Tech reward, kills the matching trainer without another bounty and replaces only actual survivors from real sources. Native Tleilaxu-only free revival excludes Axlotl; CHOAM initial income is not Charity. Richese’s free companion does not change its marker price or create the concealed counters early.',
'Physical Fremen Ambassador relocation offers optional Sandmaster destination collection before arrival reactions, without an invented route or ordinary movement use. Same-territory repositioning earns none; concealed relocation and other special movement retain their own limits. Normal Banker income is mandatory in fresh supported ordinary Skills setups, with provisional original-earned-faction custody and no retrofit. Diplomat retreat retains its conservative outcome order. Native Advanced foreign gholas/Face Dancers, skill-first Moritani assassination and ordinary-disc Ecaz coalition skills follow their bounded contracts; shared-Duke assignment, exceptional roles and other combined modules remain unfinished. Normal module starts are labelled previews, not complete-mode acceptance.',
...LEADER_SKILL_CARDS.map(card => `${card.name}. Normal: ${card.normal.join(' ')} Skilled battle: ${card.battle.join(' ')}`),
],
related: ['spice-banker-income', 'choam-leader-skills', 'ixian-leader-skills', 'tleilaxu-leader-skills', 'richese-leader-skills', 'ecaz-leader-skills', 'moritani-leader-skills', 'setup','choam-modules','implementation-checklist'],
checklist: [
{ area:'Implementation',status:'Partial',detail:'Sandmaster flight/marker orders bind actual transport and source while preserving exact declared routes, live piles and original cohorts. Planetologist flight composes all six alternatives with exact original cohorts and signed Discovery origins; ordinary no-skill receipt bytes remain. Exact fourteen-card custody, source-ordered setup, public capture, concealment, death and own revival connect five role bonuses, Planetologist movement/Special substitution and Suk Graduate casualty rescue. Rihani inspection/exchange and lower Mentat/Bureaucrat/Sandmaster effects are connected. Smuggler shipping, No-Field accompaniment and provisional modifier-inclusive battle collection, plus Sandmaster ground, worm, physical Ambassador and native HMS allocation are connected. Normal Mentat private questions and historical observations use the user-approved uniform step in new supported battles without an extra opt-in. Spice Banker lower spending and native Diplomat printed-defense copying are connected; trained retreat transfers undialed forces before losing casualties. Normal Banker income is mandatory in fresh supported ordinary all14 setups; existing games are not retrofitted and other combined interactions stay open. Bureaucrat redirects supported third-party payments with saved once-per-phase use, while user-classified gifts stay outside payment handling.',evidence:['game/sandmaster-movement.ts','components/sandmaster-movement-action.tsx','tests/fixture-sandmaster-ornithopter.ts','tests/sandmaster-ornithopter-engine.test.ts','tests/fixture-sandmaster-discovery-flight.ts','tests/sandmaster-discovery-flight-engine.test.ts','tests/fixture-sandmaster-marker.ts','tests/sandmaster-marker-engine.test.ts','tests/sandmaster-flight-controls.test.tsx','docs/SANDMASTER_MOVEMENT.md','game/planetologist-flight.ts','game/bot-planetologist-flight.ts','game/discovery-flight.ts','components/planetologist-movement-action.tsx','tests/planetologist-flight-controls.test.tsx','tests/planetologist-flight-profile.test.ts','tests/fixture-planetologist-ornithopter.ts','tests/planetologist-ornithopter-engine.test.ts','tests/fixture-planetologist-discovery-flight.ts','tests/planetologist-discovery-flight-engine.test.ts','game/leader-skill-cards.ts','game/leader-skills.ts','game/leader-skill-combat.ts','game/suk-graduate.ts','game/rihani-decipherer.ts','game/mentat-question.ts','game/bureaucrat-payment.ts','game/leader-skill-battle-board.ts','game/smuggler-shipment.ts','game/smuggler-no-field.ts','game/smuggler-battle.ts','game/spice-banker.ts','game/spice-banker-income.ts','game/sandmaster-movement.ts','game/sandmaster-worm.ts','game/fremen-ambassador.ts','game/diplomat-defense.ts','game/diplomat-retreat.ts','game/engine.ts'] },
{ area:'Player controls',status:'Partial',detail:'Sandmaster shares projected transport selection, editable routes, pile/decline choices and a guarded actual submit leaf. Shared owned-flight selection supplies current fields, fixed ranges and whole-map cohorts to the existing form and guarded actual submit. Private card/leader selection, readable inspectors, public battle posture and revival draw/decline, Planetologist range/gather controls, Special weapon selection and Suk Graduate physical rescue choices are connected. Rihani has private history and separate keep-new/reveal-old controls; automatic battle effects need no confirmation. Smuggler has explicit ordinary shipping opt-out and No-Field companion opt-in with physical-versus-priced force counts, plus surviving-leader battle collection with reveal-time guidance and owned multi-pile allocations. Banker exposes separate sealed spending and authorized inspection. Sandmaster exposes explicit legal routes, per-territory collection choices, optional worm/physical Ambassador destination checkboxes and direct victory-pile placement when several piles remain. Diplomat offers a named committed Worthless choice or decline after public reveal, and a separate surviving-loser destination/normal/elite retreat or decline. Bureaucrat offers redirect or full payment with explicit recipient amounts and deferred bribe custody. Remaining combined-module and exceptional-timing controls are incomplete.',evidence:['components/leader-skills.tsx','components/planetologist-movement.tsx','components/suk-graduate.tsx','components/rihani-decipherer.tsx','components/mentat-question.tsx','components/bureaucrat-payment.tsx','components/leader-skill-battle-guide.tsx','components/smuggler-shipment.tsx','components/smuggler-battle-collection.tsx','components/spice-banker.tsx','components/sandmaster-movement.tsx','components/sandmaster-worm.tsx','components/sandmaster-victory-spice.tsx','components/ambassador-movement.tsx','components/diplomat-defense.tsx','components/diplomat-retreat.tsx','components/game-table.tsx'] },
{ area:'AI',status:'Partial',detail:'Minimal Sandmaster candidates retain deterministic legal collection on existing normal/card/token moves without tuning destination priorities. Minimal policies offer legal skill flights from the same projected selection and original quotas, without strategic tuning. All four profiles use private offers, legal visibility/revival actions and Planetologist movement/battle candidates and legal Suk Graduate rescues, Rihani exchanges, shared battle scoring, Smuggler reserve/owned No-Field shipments and modifier-inclusive collection plans, exact multi-pile Smuggler allocations, Sandmaster route, worm, physical Ambassador destination collection and victory-pile placement, funded Banker commitments and optional Diplomat copying from public revealed defenses or choosing legal losing-battle retreat. Bureaucrat uses the public payee alliance to redirect enemy income or preserve allied income. These are legal prototype paths; complete skill strategy and difficulty calibration remain unfinished.',evidence:['game/bots.ts'] },
{ area:'Documentation',status:'Partial',detail:'Sandmaster flight eligibility, concealed-one-force composition, existing provisional reset/allocation and legacy ordinary order compatibility are recorded. Gather-as-one-card-movement and fixed-three overrides are explicitly provisional; no joint FAQ or complete modes are claimed. All fourteen faces and common rules are recorded. Skilled capture follows public physical-card custody. The 13 October 2026 ruling resolves the captured-card replacement question: the original assignment is retained and no replacement is drawn while it exists; other material timing interpretations remain explicit.',evidence:['docs/LEADER_SKILLS_RULES.md','docs/LEADER_SKILLS_CAPTURE.md','docs/LEADER_SKILLS_RUNTIME.md','docs/PLANETOLOGIST_RULES.md','docs/SUK_GRADUATE_RULES.md','docs/LEADER_BATTLE_EFFECTS.md','docs/MENTAT_QUESTION.md','docs/BUREAUCRAT_PAYMENTS.md','docs/SMUGGLER_SHIPMENT.md','docs/SPICE_BANKER_RUNTIME.md','docs/SANDMASTER_WORM.md','docs/DIPLOMAT_DEFENSE.md'] },
{area:'Verification',status:'Partial',detail:"Native trained card/token sources use actual produced Spice piles; controlled marker and callback supplements cover the new route. Complete modes and final assurance remain open. Native paid-card and earlier-turn Discovery paths, controlled callbacks and receipt regressions cover the selected flight matrix. Browser/deployed and final assurance remain due. Classic Nexus optional14 now retains original Tech3+ and Advanced Strongholds2+ with selected33/36. Mandatory Banker remains separate from native phase income; actual third-party receipts, trained-disc posture, local bank support and original cleanup/replacement stay distinct. Real normal lobby, earned Carthag/Arrakeen and fixed/free Axlotl controls complete with four legal policies. Earlier native/Richese evidence remains dated; full modes, strategy and deferred assurance stay open.",evidence:['tests/nexus-core-tech-runtime.test.ts','tests/fixture-nexus-core-tech.ts','tests/nexus-core-strongholds-runtime.test.ts','tests/fixture-nexus-core-strongholds.ts','tests/classic-nexus-core.test.ts','tests/fixture-classic-nexus-core.ts','game/faction-module-profile.ts','tests/classic-independent-nexus-utility.test.ts', 'tests/classic-independent-nexus-battle.test.ts', 'tests/fixture-classic-independent-nexus.ts', 'tests/bureaucrat-richese-cache.test.ts','tests/bureaucrat-richese-black-market.test.ts','tests/fixture-bureaucrat-richese-funding.ts','docs/BUREAUCRAT_PAYMENTS.md','tests/diplomat-used-defense.test.ts', 'tests/diplomat-late-journey.test.ts', 'tests/fixture-diplomat-late-journey.ts', 'tests/diplomat-context-journey.test.ts', 'tests/fixture-diplomat-context-journey.ts', 'docs/DIPLOMAT_DEFENSE.md', 'tests/smuggler-kwisatz-journey.test.ts', 'tests/fixture-smuggler-kwisatz-journey.ts', 'tests/smuggler-artillery-journey.test.ts', 'tests/fixture-smuggler-artillery-journey.ts', 'docs/SMUGGLER_BATTLE.md', 'tests/homeworld-classic-nexus-skills-runtime.test.ts', 'tests/homeworld-classic-discovery-nexus-runtime.test.ts','tests/homeworld-native-e1e2-modules-runtime.test.ts','tests/homeworld-native-e3-modules-runtime.test.ts','tests/homeworld-classic-skills-runtime.test.ts','tests/homeworld-skills-discovery-runtime.test.ts','tests/homeworld-optional-modules-runtime.test.ts','tests/leader-skills-engine.test.ts','tests/leader-skills-capture.test.ts','tests/captured-skill-revival.test.ts','tests/fixture-captured-skill-revival.ts','tests/captured-skill-special-revival.test.ts','tests/fixture-captured-skill-special-revival.ts','tests/leader-battle-effects.test.ts','tests/suk-graduate.test.ts','tests/mentat-question.test.ts','tests/bureaucrat-payment.test.ts','tests/smuggler-battle.test.ts','tests/spice-banker.test.ts','tests/advanced-native-skills.test.ts','tests/fixture-advanced-native-skills.ts','tests/skills-tech-payments-runtime.test.ts','tests/skills-tech-battle-runtime.test.ts','tests/ix-choam-skills-tech-runtime.test.ts','tests/tleilaxu-skills-tech-runtime.test.ts','tests/richese-skills-tech-runtime.test.ts','tests/classic-skills-stronghold-runtime.test.ts','tests/native-skills-stronghold-runtime.test.ts','tests/ecaz-skills-modules-runtime.test.ts','tests/moritani-skills-modules-runtime.test.ts','docs/LEADER_SKILLS_RUNTIME.md','docs/HOMEWORLD_RUNTIME_IMPLEMENTATION.md']},
],
},
{
"id": "fremen-revival-grant",
"title": "Fremen allied free revival",
"category": "Factions",
"coverage": "Partial",
"developmentStage": "Prototyped",
"summary": "Grant the current ally its Fremen free-revival rate after a native Karama response, including after Recruits.",
"steps": [
"During Revival, Fremen may offer the current ally its ordinary free-force rate of three. The grant replaces the native ordinary rate; current bonuses, total limits and separate special-force limits still apply. It never moves counters by itself.",
"The original owner, ally and turn remain bound while another player may prevent the grant with Karama. All-pass commits once. Under the provisional prevention policy, cancellation denies this grant for the current Revival, preserving the ally’s intrinsic free rate, Recruits and completed returns/payments. The next native Revival clears the denial.",
"Recruits doubles the current granted rate including applicable bonuses before caps. With no other bonus, three becomes six. Provisionally accept grants before or after the card with the same calculation: deduct recorded free usage, preserve all earlier total returns and paid classifications, and give no refund. Finish a pending transaction before declaring a grant.",
"The Fremen panel keeps status and unavailable reasons visible. Your ally’s normal revival panel supplies the actual remaining amount. Complete modes, broader combinations and final acceptance remain unfinished."
],
"related": [
"revival",
"faction-fremen",
"card-recruits",
"card-karama"
],
"checklist": [
{
"area": "Implementation",
"status": "Partial",
"detail": "Original owner/mutual-ally/turn source validates before cancellation cost and both outcomes. Only all-pass commits; cancellation marks a phase-scoped denied grant without general free prevention. Existing native arithmetic retains limits, prices, bonuses and prior usage.",
"evidence": [
"game/fremen-revival-grant.ts",
"game/engine.ts",
"game/revival.ts",
"game/karama-context.ts",
"game/kull-purpose.ts"
]
},
{
"area": "Player controls",
"status": "Partial",
"detail": "Actual grant callback, native response and persistent status/policy guidance are integrated. Busy, interrupted, already granted and denied actions stay disabled; no private balance, Tanks or usage count is read.",
"evidence": [
"components/fremen-revival-grant.tsx",
"components/game-table.tsx",
"tests/fremen-revival-grant-controls.test.tsx"
]
},
{
"area": "AI",
"status": "Partial",
"detail": "Sixteen existing-profile native/Recruits paths accept80 legal own-view grant/response/return proposals. The same projected permission prevents repeat grants. Strategy and strength calibration remain deferred.",
"evidence": [
"game/bots.ts",
"tests/recruits-controls.test.tsx",
"docs/FREMEN_REVIVAL_GRANT.md"
]
},
{
"area": "Documentation",
"status": "Partial",
"detail": "Distinguishes printed native rates and general alliance cancellation from provisional digital response duration and late-Recruits current-rate symmetry.",
"evidence": [
"docs/FREMEN_REVIVAL_GRANT.md",
"docs/RECRUITS_RUNTIME.md",
"docs/RECRUITS_RULES.md"
]
},
{
"area": "Verification",
"status": "Partial",
"detail": "14 files305/305, types/lint/build, twelve actual control/gameplay/GameTable SSR journeys and sixteen minimal-policy paths pass. Genuine75–77 Basic/92–94 Advanced actions earn casualties and form a native Nexus alliance; Recruits is originally dealt and prior returns paid normally. Next actual Revival resets denial. Complete modes, visual/deployed and comprehensive assurance remain open.",
"evidence": [
"tests/fixture-fremen-revival-grant.ts",
"tests/fremen-revival-grant-engine.test.ts",
"tests/fremen-revival-grant-quote.test.ts",
"tests/fremen-revival-grant-controls.test.tsx",
"tests/recruits-engine.test.ts",
"tests/recruits-controls.test.tsx"
]
}
]
},
{
id: 'card-recruits',
title: 'Recruits and the Ecaz Treachery Cards variant',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'During Revival, Recruits doubles every faction’s current free rate and raises the ordinary force limit to seven for this turn.',
steps: [
'The separate three-card variant includes Recruits, Reinforcements and Harass & Withdraw. It does not require the Ecaz faction. A development preview includes all three physical cards before setup; Recruits, bounded Reinforcements and Harass & Withdraw controls are connected.',
'The holder may play Recruits from its Revival panel. Discard the card once, then all players use the increased rates while this Revival phase remains open, including players who had already marked themselves ready. Completed returns still count toward their turn totals.',
'Atreides rises from two free forces to four; Fremen from three to six; Guild from one to two. The ordinary force limit becomes seven. Native unlimited CHOAM and Tleilaxu allowances remain unlimited, and their free rates become zero and four. Paid prices and separate elite limits still apply.',
'Free prevention still prevents free returns. Prior paid ordinary returns now have a visibly provisional policy: preserve payment, deduct only recorded free returns from the doubled free allowance and all returns from the total cap. Two free plus one paid Atreides may take two more free without refund; this is not a numerical user ruling. Fremen may now grant after play under the same provisional current-rate policy, with its original Karama response settled before commitment. Missing/inconsistent ledgers, pending transactions and same-turn replay remain guarded.',
'Clean classic2–6 Basic/Advanced Homeworlds compose through the fresh independent36-card setup. Double current native free rates including low-population bonuses, within the seven-force total. Provisionally recheck population and recorded free use on each separate request: low Fremen may take7 together, but1 crossing high leaves5 further free and cannot buy a seventh without Tleilaxu. Original typed destinations and special-force limits stay. Other overlays/rosters, public activation and whole-mode acceptance remain unfinished.',
'Classic or selected Ix/CHOAM native/base rosters, including Homeworlds, may retain original unused Tech Tokens3–6 and/or Stronghold Cards2–6 Advanced. Setup, first-Storm Tech and actual end-Mentat custody remain original. Recruits changes current native free rates, not the once-per-phase Axlotl trigger/delayed payout. Harass returns are not free Revival.',
'Selected Ix/CHOAM native/base Basic/Advanced Worlds use original38/50 independent-card setup with optional original phase modules. Current native bonuses, typed deposits and accepted paid/free classifications stay. Ix keeps its multiple-Cyborg allowance; Tleilaxu and CHOAM remain unlimited rather than being reduced to seven. Other card/overlay/public-start gates remain.',
'Supported original all14/card rosters retain Tech3+ and Advanced Strongholds2+, including classic/E1/E2 Worlds. Current native free allowance doubles after recorded use; separate World groups re-observe native population. Typed elite caps, unlimited native allowances, paid Cyborg surcharges and any Tleilaxu recipient stay. Axlotl accrues once and waits for phase end; normal Banker uses the accepted final Bank invoice and waits for Mentat, not a net wallet delta after a separate native payout. No ledger, refund, owner or premature spendable income is invented.',
'Independent Discovery, with or without Nexus, retains original optional World/all14/phase modules. Purchased Recruits may double the native free rate against actual earlier nested-battle losses; accepted physical fee and dial casualties supply the Tanks. Existing late-play/current-rate policies stay provisional. Broader interactions and complete modes remain open.',
],
related: ['fremen-revival-grant', 'revival', 'homeworlds', 'ecaz-modules', 'expansion-faction-games', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Independent physical play/discard and public turn rates use shared revival quotes, including clean classic Homeworlds and native typed deposits. Separate requests provisionally recompute current thresholds; prior paid returns retain payment and recorded free use. A later Fremen grant now uses the same current-rate/free-use quote after native Karama settlement; unknown ledgers and pending repricing remain guarded; Reinforcements has its separate exact native-source fee composition.', evidence: ['game/ecaz-cards.ts', 'game/recruits.ts', 'game/revival.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Implemented', detail: 'The owned physical card has full inspection, a Revival action and explicit unavailable reasons. All seats see the effective public rates after play.', evidence: ['components/recruits.tsx', 'components/game-table.tsx', 'game/card-presentation.ts'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles use the same legal owned offer for useful own or allied revival, then existing authoritative revival choices. Complete card strategy and calibration remain unfinished.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Implemented', detail: 'The guide records examples, limits, independent-cap inference and the visibly provisional late-paid policy; source alternatives and late-rate questions remain explicit.', evidence: ['docs/RECRUITS_RULES.md', 'docs/RECRUITS_RUNTIME.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Independent Discovery adds frozen15-file118/118, types/lint/build and six original-action/rendered-control programmes; broader modes, visual/deployed acceptance and final assurance remain open. Earlier classic World/phase evidence stays dated in linked contracts. Selected native Worlds add real typed deposits/prices, current population crossings, prior-paid reopening, unlimited Tleilaxu/CHOAM returns and ordinary Richese/Imperial elite caps. One mobile11-force revival/9 actions and40 useful four-policy programmes/300 actions reach legal shipment. Policy card holders are explicit conserved staging. Complete modes/calibration remain open.', evidence: ['tests/independent-discovery-nexus-entry.test.ts', 'tests/independent-discovery-cards.test.ts', 'tests/independent-discovery-battles.test.ts', 'tests/native-world-recruits.test.ts', 'tests/fixture-native-world-recruits.ts', 'tests/world-phase-recruits.test.ts', 'tests/fixture-world-phase-recruits.ts', 'tests/recruits-modules.test.ts', 'tests/fixture-recruits-modules.ts', 'tests/fixture-independent-card-modules.ts', 'tests/recruits-homeworld.test.ts', 'tests/fixture-recruits-homeworld.ts', 'tests/recruits.test.ts', 'tests/recruits-engine.test.ts', 'tests/recruits-controls.test.tsx', 'tests/recruits-recovery.test.ts', 'tests/prototype-room.test.ts'] },
],
},
{
id: 'card-reinforcements',
title: 'Reinforcements',
category: 'Cards',
coverage: 'Partial',
developmentStage: 'Verified',
summary: 'Add two to battle strength while paying three own reserve counters into the Tanks when the physical card is revealed.',
steps: [
'In the independent Ecaz Treachery Cards variant, place your held Reinforcements card in either battle-card slot; it is neither a weapon nor a defense. A category Prescience answer is None, not the name of this card. One physical card cannot fill both slots.',
'Have three own forces in reserves when sealing. Classic/paired Ecaz/Moritani Basic/Advanced, clean selected Ix/CHOAM native/base rosters and explicitly selected native Advanced Occupy prototypes spend ordinary reserves first and then elite reserves, moving exactly three to corresponding Tanks subpools at resolution. These are the actual card holder’s reserves, not the variable ally’s pool; no extra forces arrive.',
'The normal-outcome score gains 2 without adding to the physical dial, spice support or on-board casualties. The card and its reserve cost are consumed even on a Traitor victory, a mutual Traitor result or a Lasgun/Shield explosion; successful Traitor calls still decide the outcome directly.',
'All-outcome payment, normal-first selection and reserve transfer counting as battle losses remain provisional, not publisher rulings. Same-plan Harass pays the original three-reserve fee before returns; returned reserves cannot fund it. In native Advanced Occupy, original/copied Stone ignores +2 normal score but still charges the fee. Basic mixed-marker co-sides, unprofiled armies and other card-specific limits remain guarded.',
'With your own concealed No-Field, the provisional native order materializes its reserve-limited counters before this cost. At least three own reserves must remain after that reveal, before any future Harass return; otherwise Reinforcements is unavailable before the first plan seals. This checks only the actual card user, never its ally’s marker or reserves.',
'Classic and selected Ix/CHOAM Basic/Advanced Worlds retain exact native normal-first sources, sealed when ambiguous; unique sources may derive. Own-World fees cannot also fund dial/casualties; original face/support stays, including explosion thresholds. Original phase modules preserve their own prerequisites and earned custody. Native-only World Traitors, typed Tanks and fee-before-Harass stay provisional composition, not a new card FAQ.',
'One canonical physical-name registry now includes the independent cards for current facts and named battle conditions. Naming Reinforcements in a weapon slot does not make it a weapon category. Native questions use actual combat-location labels. Source-aware legal completion, private full-plan/read-only review and the fill button retain exact native sources.',
'Selected Ix/CHOAM Worlds retain original38/50 setup and native stock, optionally with original Tech3+ and Advanced Strongholds2+. Cyborg substitution and Face Dance use their actual physical pools, never a duplicate fee origin. Native Richese must retain three World reserves AFTER its own projected No-Field reveal before R seals; rejection moves no counter or marker. Original phase rewards and earned held-card support stay; admitted Stone compositions retain their separate guards.',
'Supported all14/card World/phase profiles keep the same physical fee and score. An own-World fee cannot fund the same physical dial/casualty; pre-fee native traits/face remain original. Suk rescues actual committed losses, never fee counters, keeping native saves at that home or using original typed external destinations. Earned Arrakeen never subsidizes a World or reserve fee. A Richese marker must leave three after materialization; future Harass cannot fund a refused seal. Native E3 card Worlds and unrelated guards remain.',
'Independent Discovery, optionally Nexus/World/all14/phase, retains the printed three-reserve fee in actual revealed nested battles. Original Jacurutu entry and paid enemy shipment precede purchased R/Harass settlement; Kaitain normals pay before undialed Sardaukar return to Salusa. Future returns cannot fund the fee. Existing provisional ordering and full-mode gates remain.',
],
related: ['battle-cards', 'battle', 'homeworlds', 'card-recruits', 'card-harass-withdraw', 'card-truthtrance', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Physical slots, typed reserve cost, score-only bonus and discard connect. Clean selected Ix/CHOAM native/base Basic/Advanced rosters reuse original setup, No-Field funding and native aftercare. Classic World plans seal exact native sources, excluding own-World fees from the physical pool while keeping original traits/printed face. Shared legality and named questions retain source-bearing completions. Other profile/module gates remain.', evidence: ['game/reinforcements.ts', 'game/reinforcements-homeworld.ts', 'game/homeworld-native-reserves.ts', 'game/battle-resolution-quote.ts', 'game/battle-promises.ts', 'game/truthtrance-card-names.ts', 'game/truthtrance.ts', 'game/engine.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Owner-only cost/source choices, own-World physical bounds, wrapped exact allocation, source-aware legal-plan fill and earned private reviews connect; category answers remain None. Native named-question preview/answer/history uses canonical combat labels.', evidence: ['components/battle-preparation.tsx', 'components/reinforcements-sources.tsx', 'components/private-battle-plan.tsx', 'components/battle-promises.tsx', 'components/truthtrance.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'Four profiles consider legal physical slot candidates and the normal score bonus; strategy and calibration remain unfinished.', evidence: ['game/bots.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'The printed effect and unresolved Traitor, explosion, type-selection and accounting interpretations are distinguished from this temporary prototype.', evidence: ['docs/ECAZ_TREACHERY_RULES.md', 'docs/REINFORCEMENTS_RUNTIME.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Independent Discovery adds frozen15-file118/118, types/lint/build and six original-action/rendered-control programmes; broader modes, visual/deployed acceptance and final assurance remain open. Earlier classic/family/phase evidence stays dated. Native Worlds add1N2E fees before normal returns, own-Ix fee/dial disjointness/H ban, one board-Cyborg exchange versus fee casualties, native Face Dance/Auditor and marker funding/caps. Four mobile battle/marker journeys33 actions;52 four-policy programmes232 continuations5280 R-or-H proposals preserve normal outcomes. Before/after raw marker3/reserves5 proves unchanged first-seal rejection. No complete-mode/calibration/deployed claim.', evidence: ['tests/independent-discovery-nexus-entry.test.ts', 'tests/independent-discovery-cards.test.ts', 'tests/independent-discovery-battles.test.ts', 'tests/native-world-battle.test.ts', 'tests/fixture-native-world-battle.ts', 'tests/native-world-marker.test.ts', 'tests/fixture-native-world-marker.ts', 'tests/world-phase-battle.test.ts', 'tests/fixture-world-phase-battle.ts', 'tests/battle-card-modules.test.ts', 'tests/fixture-battle-card-modules.ts', 'tests/fixture-independent-card-modules.ts', 'tests/native-family-reinforcements.test.ts', 'tests/fixture-native-family-reinforcements.ts', 'tests/richese-reinforcements.test.ts', 'tests/fixture-richese-reinforcements.ts', 'tests/reinforcements-homeworld.test.ts', 'tests/fixture-reinforcements-homeworld.ts', 'tests/reinforcements-homeworld-arrakis.test.ts', 'tests/fixture-reinforcements-homeworld-arrakis.ts', 'tests/no-field-reinforcements.test.ts', 'tests/fixture-no-field-reinforcements.ts', 'tests/stone-reinforcements.test.ts', 'tests/harass-reinforcements.test.ts', 'tests/reinforcements.test.ts', 'tests/reinforcements-engine.test.ts', 'tests/ecaz-occupy-cards-runtime.test.ts', 'docs/ECAZ_OCCUPY_RULES.md'] },
],
},
{
id: 'card-harass-withdraw',
title: 'Harass & Withdraw',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Return your undialed forces to reserves when your Battle Plan is revealed; your leader still faces normal battle risks.',
steps: [
'Include the physical card in either battle-card slot. It is neither a weapon nor a defense and cannot supply either category for Chemistry or Weirding Way’s alternate role. A single card cannot occupy both slots.',
'When Atreides asks for that weapon or defense category, answer None without exposing Harass & Withdraw. The category is fixed, while the special card may occupy its physical slot. A literal Truthtrance promise that a slot is empty still means no physical card.',
'Return your undialed ordinary and elite forces to reserves. Your leader can still be killed. An opponent’s successful Traitor call cancels withdrawal, including mutual calls. A Face Dancer cannot replace the forces already returned.',
'Discard Harass after use, including a win by your own Traitor call. Reveal-before-explosion return and card-specific discard precedence are explicit implementation inferences; neither is a dedicated combined FAQ ruling.',
'For multiple legal physical allocations, choose all undialed ordinary and elite counters by sector after both plans reveal and before traitor declarations. Unique returns are automatic. The selected return is public; it is not an extra sealed plan element. Stone Burner provisionally compares the undialed forces remaining after successful withdrawal, including same-plan, opposing and copied Stone. Additional optional modules remain guarded. The printed card forbids use on your own Homeworld.',
'In supported native Basic/Advanced Occupy, only the actual card user’s undialed forces return. An Ecaz user preserves the original mandatory fixed count at free full strength; an allied user uses its native variable commitment, while canceled Occupy uses only the selected lead’s own pool. Returned reserves stay outside losses and Face Dance. Basic mixed markers, unprofiled co-sides and complete-mode acceptance remain guarded.',
'In supported same-plan Reinforcements, the provisional order pays three original own reserves before Harass returns undialed counters. Future returns cannot fund or change that reserve quote; neither the +2 score bonus nor that cost adds to the physical commitment. Both cards discard after use. An opposing successful Traitor cancels Harass but not the provisional Reinforcements cost.',
'With an own concealed No-Field, this prototype provisionally uses the original materialization-first order. Before sealing, privately forecast its actual ordinary counters at the original marker sector; do not move them early. Both plans seal before native revelation, then any return allocation uses actual counters. Marker0 remains legal with a leader/cards, reserve shortage caps materialization, and withdrawal does not return/reset the token. Opposing successful Traitor cancels Harass, not that native reveal.',
'Classic and selected Ix/CHOAM Basic/Advanced Worlds may choose the independent cards before original setup. Harass works on Arrakis or a foreign World, never an own World. Return actual undialed board/visitor types through native custody: normal/special to the original primary World except Advanced Emperor normal to Kaitain and Sardaukar to Salusa. Original commitment stays across thresholds; native-only World Traitors/Face Dancers, late defense/explosion and disposal stay.',
'Classic or selected Ix/CHOAM native/base rosters, including Homeworlds, compose original Tech3+ and/or Advanced Strongholds2+. An earned held Stronghold affects only its original eligible plan/actual support; +2 R adds no supported counters. Harass deposits are not off-planet shipment/free Revival. Original winner card cleanup/Tech reward and native queues retain their order.',
'Supported all14/card World/phase profiles keep actual typed undialed complements and selected-trainer effects. Ix returns Suboids/Cyborgs, then rescues only committed losses before original aftercare/Face Dance. Visitor returns use original native custody; Advanced Emperor normals go to Kaitain and elites to Salusa. Every own World still forbids native Harass. Earned held support is local to its eligible holder-plan, not a World subsidy or fee funding. Capped Richese may use legal Harass when R is unfunded; no token or reserve pool resets.',
'Independent Discovery, optionally Nexus/World/all14/phase, retains actual undialed typed returns in revealed nested battles. Paid cards, real reveal/free entry and ordinary enemy shipment precede fixed original settlement. Withdrawal creates no Tanks, free revival or shipment reward; only actual later losses fund Recruits. Existing own-World ban and provisional ordering remain.',
],
related: ['battle-cards', 'battle', 'card-recruits', 'homeworlds', 'ecaz-modules', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Original slots, secrecy, physical returns, costs and No-Field/Stone composition remain. Clean classic Homeworlds now withdraw exact visitor/board counters and deposit through native typed reserves. Own-World use is forbidden; committed Homeworld losses retain the full Harass complement across later population changes.', evidence: ['game/harass-withdraw.ts', 'game/stone-burner.ts', 'game/battle-card-slots.ts', 'game/battle-resolution-quote.ts', 'game/engine.ts', 'game/homeworld-native-reserves.ts', 'tools/prototype-room.ts', 'tools/start-prototype.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Either slot and native typed allocation remain. World names, Basic versus Advanced reserve destinations and fixed-commitment timing are explicit. Invaders no longer receive forbidden Traitor controls. Four actual390px journeys complete Basic foreign loss, Advanced foreign victory, Salusa threshold return and own-Salusa ban/plain alternative into Collection.', evidence: ['components/battle-preparation.tsx', 'components/harass-withdraw.tsx', 'components/revealed-battle.tsx', 'components/game-table.tsx', 'components/harass-withdraw-choice.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles use legal shared precommit quotes and exact after-reveal allocations without an invader vote. Sixteen native World programs accept36 continuation actions and validate original precommit proposals through normal/explosion/own-World alternatives. Retreat strategy and combined strength remain deferred.', evidence: ['game/bots.ts', 'tests/ecaz-battle-bots.test.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'Printed own-World restriction and explicit native destination/fixed-commitment composition are separated from original materialization/Stone policies and remaining faction/module/final gates.', evidence: ['docs/HARASS_WITHDRAW_RUNTIME.md', 'docs/ECAZ_TREACHERY_RULES.md', 'docs/STONE_BURNER_ENGINE_AUDIT.md', 'docs/RICHESE_NO_FIELD_RULES.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Independent Discovery adds frozen15-file118/118, types/lint/build and six original-action/rendered-control programmes; broader modes, visual/deployed acceptance and final assurance remain open. Earlier World/phase/No-Field/Stone proofs stay dated. Selected native Worlds add exact primary typed deposits, normal-first R payment before7 Suboids return, one eligible board-Cyborg exchange and native-only World Face Dance/Auditor. Four mobile battle/marker journeys33 actions;52 four-policy programmes232 continuations5280 R-or-H proposals reach original queues. Unfunded R stays unspent under legal H fallback. No complete-mode/deployed/calibration claim.', evidence: ['tests/independent-discovery-nexus-entry.test.ts', 'tests/independent-discovery-cards.test.ts', 'tests/independent-discovery-battles.test.ts', 'tests/native-world-battle.test.ts', 'tests/fixture-native-world-battle.ts', 'tests/native-world-marker.test.ts', 'tests/fixture-native-world-marker.ts', 'tests/world-phase-battle.test.ts', 'tests/fixture-world-phase-battle.ts', 'tests/battle-card-modules.test.ts', 'tests/fixture-battle-card-modules.ts', 'tests/fixture-independent-card-modules.ts', 'tests/harass-homeworld.test.ts', 'tests/fixture-harass-homeworld.ts', 'tests/harass-homeworld-arrakis.test.ts', 'tests/fixture-harass-homeworld-arrakis.ts', 'tests/harass-no-field.test.ts', 'tests/fixture-harass-no-field.ts', 'tests/no-field-reinforcements.test.ts', 'tests/stone-harass-quote.test.ts', 'tests/stone-harass-runtime.test.ts', 'tests/fixture-stone-harass.ts', 'tests/ecaz-occupy-harass-quote.test.ts', 'tests/harass-allocation-engine.test.ts', 'tests/harass-allocation-recovery.test.ts', 'tests/harass-withdraw-choice-controls.test.tsx', 'tests/harass-withdraw.test.ts', 'tests/ecaz-battle-controls.test.tsx', 'tests/ecaz-battle-bots.test.ts', 'tests/ecaz-battle-recovery.test.ts'] },
],
},
{
id: 'expansion-faction-games',
title: 'Expansion faction development games',
category: 'Advanced & expansions',
coverage: 'Partial',
developmentStage: 'Prototyped',
summary: 'Genuine setup connects selected expansion factions to development tables. Complete faction rules and combined-game acceptance remain unfinished.',
steps: [
'Development setup supports two through six distinct seats from the base factions and selected expansion sets. Expansion selection and optional modules are separate; supported public starts are unfinished previews.',
'Ecaz places six starting forces in Imperial Basin, allocated among sectors 9, 10 and 11, and keeps fourteen in reserve. Finish Fremen placement first; Bene Gesserit then places its Advanced starting advisor. Moritani places its six forces in an unoccupied territory after all other setup is complete.',
'Ixians keep their private starting-card selection and physical cyborg/suboid forces. Tleilaxu receives three private Face Dancers. Advanced CHOAM receives its Auditor. Richese has a separate ten-card cache and three private No-Fields. Ecaz and Moritani receive their Ambassador and Terror inventories and share one Duke Vidal disc.',
'Without Ix, CHOAM adds Poison Tooth and Artillery Strike to the 33-card ordinary deck; Ix or combined decks contain47. Ecaz faction selection adds no cards. Explicit independent variant adds Recruits/Harass/Reinforcements for36/50/38, with classic/paired controls and a separately verified native Advanced Occupy combined-army path.',
'Supplied Advanced p34 expressly excludes Richese auctions from Ixian Technology, so a Richese special lot begins directly with no Ixian exchange or decline prompt; the once-per-round Technology use remains available for ordinary lots.',
'Fresh unsupported movement arrivals still reject before opening prevention choices or reserving a new movement card. A saved CHOAM allow choice can return an uncommitted unsupported move for another choice, preserving its existing reserved Ornithopter. The bounded Ecaz/Moritani same-entry Ambassador/Terror overlap instead snapshots both eligible owners in storm order without replaying the original move.',
'Ordinary shipment checks unfinished arrival combinations before saving the Guild interception choice. An already saved ordinary shipment may return unspent when its still-gated arrival cannot commit; older No-Field, Smuggler, Nexus and Ambassador shipments retain their separate recovery boundaries. Classic plus Ecaz/Moritani Ambassador/Terror overlap has a provisional saved storm-order sequence, while other simultaneous priorities remain unfinished.',
'Remaining abilities and combined timing can still encounter explicit development guards. Setup and saved-continuation evidence does not certify complete expansion play.',
],
related: ['setup', 'ix-modules', 'choam-modules', 'ecaz-modules', 'implementation-checklist'],
checklist: [
{ area: 'Implementation', status: 'Partial', detail: 'Genuine setup for seven expansion selections reuses existing faction effects and corrects Ecaz starting placement. Supplied Advanced p34 excludes Richese auctions from Ixian Technology, so a Richese special lot begins directly. Optional variants and unfinished interactions remain separate.', evidence: ['game/engine.ts', 'game/cards.ts', 'game/ecaz-setup.ts', 'tools/prototype-room.ts'] },
{ area: 'Player controls', status: 'Partial', detail: 'Existing faction choices and private hands are reused. Ecaz has an owned sector-allocation control and setup waiting messages; Richese special lots open directly with no Ixian prompt. Public starts and full acceptance remain gated.', evidence: ['components/ecaz-setup.tsx', 'components/game-table.tsx'] },
{ area: 'AI', status: 'Partial', detail: 'All four profiles use genuine setup choices and the shared Ecaz allocation quote; no Ixian Richese-lot decision exists to answer. Combined gameplay strategy, guarded interactions and full-game reliability remain unfinished.', evidence: ['game/bots.ts', 'game/ecaz-setup.ts'] },
{ area: 'Documentation', status: 'Partial', detail: 'The faction profile records ordinary deck composition, independent variants, Ecaz territory allocation and deterministic setup-order interpretations, with unfinished play explicit.', evidence: ['docs/EXPANSION_FACTIONS_PROTOTYPE.md'] },
{ area: 'Verification', status: 'Partial', detail: 'Setup, inventory, private views, JSON/SQLite continuation, concurrent start and dirty-lobby rejection have focused checks. Sample gameplay and browser evidence are recorded separately, with remaining guards retained. Deferred movement and ordinary shipment checks cover arrival preflight, retained resources and saved concurrent recovery; special shipment receipts keep their separate guards.', evidence: ['tests/deferred-movement-arrival.test.ts', 'tests/deferred-movement-arrival-recovery.test.ts', 'tests/deferred-shipment-arrival.test.ts', 'tests/deferred-shipment-arrival-recovery.test.ts', 'docs/DEFERRED_SHIPMENT_ARRIVAL.md', 'tools/faction-games.ts', 'tests/expansion-factions-prototype.test.ts', 'tests/expansion-factions-recovery.test.ts', 'tests/ecaz-setup-controls.test.tsx', 'tests/ecaz-cards.test.ts'] },
],
},
...[
[
'ix-modules',
'Ixians & Tleilaxu modules',
'Additional treachery cards, tech tokens, sandtrout and faction rules.',
],
[
'choam-modules',
'CHOAM & Richese modules',
'Richese auctions, inflation, leader skills and stronghold cards.',
],
[
'ecaz-modules',
'Ecaz & Moritani modules',
'Ambassadors, terror, homeworlds, Nexus cards and discoveries.',
],
].map(
([id, title, summary]): RuleTopic => ({
id,
title,
summary,
category: 'Advanced & expansions',
coverage: 'Partial',
steps: [
...(id === 'choam-modules'
? [
'Richese cache and Black Market auction controls are integrated in development fixtures, alongside the ten-card reference collection. Remaining card-effect integration is incomplete and supported expansion starts are unfinished previews; source guards and pending verification are listed in the collection’s five-part checklist.',
]
: []),
...(id === 'ix-modules'
? [
'Tech tokens can be enabled for tables of three or more base factions. See the tech-token topic for ownership, deferred income and battle transfers.',
]
: []),
...(id === 'ecaz-modules'
? [
'Ecaz inventory, public Ambassador inspection, end-of-Revival placement, six entry effects with Bene Gesserit copies and direct Ecaz Duke acquisition have focused support. Storm/explosion token returns are supported. Other effects and competing arrival ordering remain unfinished. See the linked feature checklist; supported expansion starts are unfinished previews.',
'The Discovery prototype connects seven Spice Cards, eight tokens, Great Maker, private Collection inspection/reveal, stash rewards, revealed nested locations, next-turn free entry, sole-occupant Cistern income, bounded Orgiz transfers and later-turn Ornithopter movement. Jacurutu income, Testing Station and Shrine also have bounded prototypes. Mixed-force Jacurutu and contested benefits remain pending; see the Discovery checklist.',
]
: []),
'The expansion catalog is present. Expansion faction mechanics, remaining modules and their full interaction reference remain in development.',
],
related: [
'setup',
'advanced-combat',
...(id === 'ix-modules' ? ['tech-tokens'] : []),
...(id === 'choam-modules' ? ['stronghold-cards', 'leader-skills'] : []),
...(id === 'choam-modules' ? ['richese-cards', 'nexus-richese-betrayal'] : []),
...(id === 'ecaz-modules'
? [
'faction-moritani',
'moritani-terror',
'ecaz-ambassadors',
'homeworlds',
'discoveries',
'implementation-checklist',
]
: []),
],
}),
),
];