18 KiB
Richese acquisition, transfer and discard-search audit
Audit: 2026-09-06. Scope: the advanced special Karama purchase, Richese alliance hand gift, Distrans and Nullentropy Box. This is an implementation contract and source-boundary record, not a completed gameplay or expansion certification. The source audit initially changed no runtime; the bounded special-purchase integration checkpoint below records subsequent work.
Primary evidence
- R2: GF9 CHOAM & Richese rulebook, p4 special Karama and discard secrecy; pp5–6 cache, disposal and alliance; pp10–11 Ixian/Harkonnen/Box FAQ; p12 Karama table. A readable publisher-authored mirror is
/tmp/dune-rules/choam-lelekan-mirror.pdfand its.txt, obtained from the retailer-hosted copy. SHA256:b628cef05b167953c2f192c8acfdefea92aee8f5497eea779edacf7be25e6299. Publisher-indexed paragraphs agree with the mirror. Direct GF9 downloads returned HTML errors; the older localchoam-primary.pdfandchoam-publisher-audit.pdfare not valid PDFs. - B19: GF9 base rulebook, p8 hand limits, p12 alliances, p14 special Karama, p19 Emperor income. Local
/tmp/dune-rules/base.pdfand.txt. - I20: GF9 Ixian & Tleilaxu rulebook, p9 allied replacement, read in
/tmp/dune-rules/ix-official-mirror.txt. - Physical faces: the photographed publisher components linked from the Tabletop Finder product gallery, full photograph. Local
/tmp/dune-rules/choam-cards-gallery1.jpg, SHA2569c1d3e65fa33489e7675055ed1fc932fefcb79f6053ee365ddee6737ae10b81f. Distrans, Nullentropy Box and updated Karama were independently enlarged and visually read again for this audit. R2 p5 also depicts Distrans, p11 corroborates Box exclusion, and p4 identifies replacement Karama cards. The gallery's photographer/date/printing provenance is unverified; the evidence is the visible physical text, not third-party rules commentary.
Targeted searches found discussion titles concerning full hands and alliance cancellation, but no retrievable designer answer resolving these cases. The November 2020 FAQ predates this expansion and was not freshly retrievable here. Do not cite inaccessible forum answers, tournament amendments, or community compilations as a verified resolution. In particular, a community rule adding a bidding exclusion to the Richese alliance gift is not the R2 wording.
1. Advanced special Karama purchase
Directly supported. Richese's once-per-game special Karama use spends a Karama and three spice to choose one card secretly from its own remaining cache. The new power is advanced-only; ordinary Karama acquisition cannot buy cache lots or Black Market lots. The special rule is its own exception and is not an auction. The selected card enters Richese's hand, not an ally's. The played Karama is discarded normally. The updated Karama face expressly prevents using Karama to cancel another special Karama power. This does not waive a separate prohibition on playing a Karama, such as an applicable CHOAM effect.
Normal composition, with provenance. The special paragraph does not name the payment recipient. B19 p19 sends payments by another faction for a Treachery Card to Emperor instead of the bank, and this special power explicitly purchases a card. Apply that general rule: three to Emperor when present and eligible, otherwise bank. This is a general-rule composition, not a Richese-specific FAQ answer. Do not silently treat it as the bank-only activation fee explicitly printed on Box. Any distinct Emperor-income cancellation must affect that income only, never cancel or repeat the special purchase.
Richese itself is the buyer. Harkonnen's extra-card-on-purchase power therefore does not trigger, including when Harkonnen is the ally. An ensuing hand gift is not a Harkonnen purchase either. Ixian allied replacement requires a bidding purchase and R2 expressly excludes direct-cache acquisitions; this purchase neither creates an auction nor changes its acquisition origin. Do not trigger Ixian allied replacement. Ordinary bidding aid does not automatically authorize spending an ally's funds on this separate action; use Richese's spendable spice unless a separately verified payment permission applies.
Still unresolved: B19's hand cap applies at all times, while special Karama is discarded after play. Neither retrieved special paragraph supplies a full-hand exception or specifies whether spending the Karama frees a slot before the new card arrives. The ordinary free-purchase Karama explicitly disallows a full hand, but that clause cannot simply be asserted to govern the different special power. A first implementation may require a pre-existing free slot and label the full-hand case unsupported, pending a ruling. Do not certify that guard as a printed prohibition. The special purchase also changes the remaining compulsory auction cache: a reserved/offered card cannot simultaneously be purchased, and taking the final card can enter the already documented empty-cache/count boundary.
Atomic contract. Validate advanced Richese ownership, unused special power, exact owned Karama, exact unreserved cached identity, funds, capacity policy and timing before paying or consuming either card. Persist a normalized intent if an independent response is required. Apply the purchase, discard and once-per-game flag once; resume the original phase/auction checkpoint without rebuilding pools. Project the selected face only to the entitled owner; other players do not receive the cache list or selected identity through pending intent, validation errors or logs. Cache/hand counts may update without naming the acquired face.
2. Richese alliance gift
Directly supported. R2 p6 permits Richese to give its ally a Richese-family Treachery Card already in Richese's hand when the recipient has capacity. Cache cards are ineligible. A base/Ix card held by Richese is not made a Richese-family card by ownership. Giving transfers custody without discarding, purchasing, collecting payment or drawing a Harkonnen bonus. The timing says any time; it has no printed Distrans-style bidding exclusion.
The updated physical Karama explicitly includes alliance abilities among cancellable faction powers. Consequently a declared gift has a cancellation opportunity under the general card rule. R2 p12 lists auction/No-Field/Black Market cases but does not expressly repeal alliance cancellation or explain the gift's response ordering. Use a separate gift intent and preserve its exact card/recipient across a counter window; on cancellation leave that card with Richese. The played cancelling Karama has its normal disposal. Do not silently reselect a gift after responses.
Recipient choice. The printed gift has no accept/refuse step. Do not invent a mandatory recipient acknowledgement or permission dialog. A recipient who can legally block an alliance power may have the ordinary Karama response choice; that is different from a free veto. Revalidate recipient capacity and reciprocal alliance before settlement. If those can change during an allowed interruption, preserve the pending operation and resolve that case explicitly rather than losing a card or exceeding the cap.
Timing boundary. Between ordinary actions, a supported gift can be offered during Bidding as well as other phases. During an active lot it can affect capacity, later bidder eligibility and existing commitments. During another response it could supply a Karama to a would-be blocker. These compositions require a response stack and stable auction reservations; “any time” is not permission to overwrite a pending decision. While a Truthtrance question is awaiting its answer, preserve the existing answer-first overlay rather than mutate the queried hand. Gifts must also respect committed battle cards, sale reservations and enforceable Truthtrance promises. These are explicit continuation/implementation guards, not a newly discovered general no-gifts rule. Already revealed plans cannot gain or replace a played card through a hand transfer.
Privacy. Donor and recipient need the exact transferred face. Other players need the public use/cancellation event and appropriate counts, not an automatic card reveal. A secret transfer's pending projection must not leak the face to countering players. No ordinary discard entry is created.
3. Distrans
Directly supported by the face. Its owner gives another player one Treachery Card from the owner's hand, provided the other player's hand is not full. Any other faction can receive it, without requiring an alliance. The effect has no printed spice fee. Distrans is discarded after use; the gifted card transfers without being discarded. The printed exception is “other than during a bid.” The effect is a card effect, not itself a faction/alliance power that generic Karama cancels. No recipient accept/refuse step is printed.
Unresolved exact span. No retrieved primary answer defines whether “a bid” means the complete auction of one card or only an individual bid declaration. Treating the whole Bidding phase as forbidden is broader than the face. A defensible bounded policy blocks Distrans throughout an unresolved lot, including Silent submissions and payment, while allowing it between lots when no bid is pending. Record that as an interpretation until clarified. Never permit it between Silent submissions to probe hidden commitments or invalidate fixed eligibility without a settlement policy.
Distrans itself as the gifted card is not resolved by the face's give-then-discard instruction. Do not put the same physical card in both the recipient's hand and discard; reject that target as unsupported pending clarification. Other reserved/committed-card and answer-first constraints are the same continuation concerns as the alliance gift. A successful ordinary transfer consumes exactly the chosen separate card plus Distrans from the donor's hand, adds the chosen card to the recipient, and puts only Distrans in normal discard. This produces a new discard event relevant to future Semuta integration.
4. Nullentropy Box
Exact printed sequence, in original prose:
- Pay two spice to the bank.
- Privately examine the Treachery discard pile and select a card other than any Nullentropy Box to add to the user's hand.
- Shuffle the remaining discard pile and return it face up.
- Discard the used Box on top of that pile.
R2 p4 supplies the private-search exception and p11 confirms that a Box cannot retrieve a Box. This searches discards, never the deck; no fallback deck draw is authorized. The fee goes to the bank, not Emperor: this is an explicit card activation payment, not a Treachery purchase. No Harkonnen purchase bonus or Ixian purchase replacement follows. Ordinary Karama does not cancel the card effect itself.
Capacity and empty search remain material gaps. The literal sequence adds a retrieved card before disposing of Box, whereas the base cap is continuous. No retrieved primary clarification decides a full-hand activation. Requiring a pre-existing free slot is a conservative unsupported-case boundary, not proof that a net-neutral exchange is officially disallowed. An empty pile or a pile containing only Boxes provides no legal selection; the sources do not say whether the user may deliberately pay and discard for no card. Reject that case atomically rather than invent a deck draw or silently waste the effect. Do not expose whether particular hidden discard faces exist through targeted guesses before paying for search; only expose the minimum action-availability information needed under the chosen policy.
Private, resumable search contract. A begin action validates and pays once, reserves the played Box and creates an event-bound search decision. Only that player receives eligible discard faces. A choose action names an eligible physical ID, verifies the same search event/custody, transfers that card, shuffles the remainder once with server randomness, and places Box last/on top. Persist the selected result/order and ordinary room version so refresh or retry never charges again, chooses a different card, or rerolls the shuffle. Other actions that could mutate discard custody must be paused or explicitly sequenced; the decision must not browse a stale arbitrary snapshot. Search permission ends on completion; no public discard browser or opponent/AI projection receives the list. Do not log the selected face publicly. The final top Box can be public without exposing the shuffled remainder.
Semuta's response to the final Box discard, multiple discard triggers, deck recycling during the search, battle/Truthtrance interruptions and future duplicate Box inventories need separate continuation tests or guards. The returned face-up pile is not a grant to search it: the specific R2 secrecy clarification remains in force.
Implementation and verification checklist
- Engine: distinct purchase, alliance transfer, card transfer and paid search intents; strict physical custody; no auction count changes from gifts/search; independent Emperor income versus special-power immunity; explicit unsupported timing/capacity guards.
- Player controls: exact eligible cache/hand/recipient choices and costs; gift recipient capacity; separate Karama response; no invented acceptance acknowledgement; paid Box search showing only authorized faces; stable event-bound reconnect state. Explanations should distinguish a development guard from a game rule.
- AI: consume only the owner's projected options; never inspect opponents' hands or the unsearched discard pile; make one valid search/transfer choice, preserve reservations and do not loop on guarded timing. Test all four profiles.
- Documentation: keep this source boundary and the card guides aligned when each path is activated. These cards' acquisition does not make their other effects functional. Selectable Richese/combined expansion starts remain gated.
- Verification: exact conservation and payments; full/empty/reserved/stale rejection leaves state unchanged; once-per-game use and reload; Emperor present/absent and independent income reaction; Hark ally receives no purchase bonus; Ix ally gets no cache replacement; gift counter cancellation and private identity; no invented recipient veto; Distrans lot/response/Truth guards; Box one fee, eligible-only private projection, one shuffle, all-Box exclusion and final top card. Validate saved games and every viewer, then inspect browser controls. This audit itself adds no runtime test-pass claim.
Bounded special-purchase integration checkpoint
The engine's existing SpecialKaramaIntent now has a Richese branch, with a separate Emperor purchase-income response. The owner-only richeseSpecialKarama projection supplies legal cache choices, spendable activating Karamas, a blocked reason and the payment recipient. Full-hand and final-cache acquisition remain guarded. This does not activate gifts, Distrans or Box.
components/richese-special-karama.tsx is integrated beside the private hand's other faction tools. It has separate activation/cache selectors and enlarged inspectors, a three-spice/once-per-game explanation, payment recipient and authoritative unavailable reason. It sends the exact activating and acquired physical IDs. There is no acknowledgement step or public cache projection. game/reference.ts adds richese-acquisition with all five checklist facets and source-boundary explanations.
The bot policy consumes the same private projection only after current response/decision/Truthtrance priority. With the other nine effects unfinished, it optionally acquires only the canonical usable Richese Karama. Easy/Medium/Hard/Brutal require respectively 6/7/8/8 available own spice before this optional purchase; the authoritative projection still validates actual spendable funds. This is a conservative development policy, not a claim of optimal strategy.
Four named scenarios in tests/richese-acquisition-bots.test.ts pass across all four profiles: actual engine acquisition and finite income continuation, persisted once-only state, blocked/low-budget/full/basic/used cases, strict identity and projected-information choice, and response/decision/Truthtrance priority. Ten reference tests, full typecheck and targeted lint also pass. Independent engine review, browser purchase controls, mobile and complete Richese games remain unverified at this checkpoint.
Integrated purchase checkpoint
The special Karama branch is now wired through the authoritative normalized-intent validator/executor. It validates exact canonical cache custody, unused Advanced Richese power, spendable owned Karama and three uncommitted own spice. A currently offered cache card cannot be taken out of its auction. Full-hand activation and acquiring the final cache card remain explicit unresolved development guards.
The completed purchase discards the activating Karama, moves the selected physical card to the hand and consumes the once-per-game power atomically. Its identity is absent from public response state and logs. An independent Emperor-income response preserves the exact parent response, decision and pending Bene Gesserit conversion; payment goes to Emperor or the bank after that response, without an auction bonus or Ixian replacement. Restored continuations never replay the acquisition.
Private controls and all four AI profiles are integrated. Current AI conservatively buys only the functional canonical Karama and retains spice; the other nine effects remain unfinished. Eight primary engine tests, nine independent review tests, four AI scenarios and two additional persisted concurrency/restart scenarios pass. A real desktop browser purchase and fresh-tab seat restoration across the controlled server restart passed in QPNV5XJJ. The broader full-hand/final-cache boundaries, gift, Distrans and Box remain unfinished; no full Richese game is certified.