Integrate CHOAM Nexus Cunning Kull with source-aware costs
This commit is contained in:
1 parent
fc5cbcd720
commit
0d9d0a72d6
32 files changed
+2502
-193
No files matched your search
+16
-12
@@ -22,7 +22,9 @@ The wider publisher cancellation scope across other physical copies or Worthless
|
||||
|
||||
The explicit `kull` development profile admits Basic or Advanced CHOAM with classic factions, the physical CHOAM and Ix Treachery decks, and **no optional modules**. It does not introduce Ixian/Tleilaxu factions merely because their physical deck is present. Basic uses ordinary printed Karama; Advanced additionally admits BG substitutions and the existing legal special powers of that roster. `initializeKullGameForAudit` opts the newly initialized Game into `kullPreview`; older saved games and ordinary public starts are not retrofitted.
|
||||
|
||||
The visible preview warning and closed expansion/module gates remain mandatory. Printed Kull's preview is not Nexus Cunning Kull, complete CHOAM, full expansion certification or deployed evidence. Checkpoint verification belongs to the integration owner, not this source/guidance update.
|
||||
The separate `nexus-kull` profile admits fresh two-to-six-seat Basic or Advanced native CHOAM plus classic factions, exactly the physical CHOAM/Ix Treachery decks and **Nexus alone**, without physical Sandtrout. `initializeNexusKullGameForAudit` sets `nexusKullPreview` and shared `kullPreview`; it does not retrofit new choices into saved games. Unallied native CHOAM with the actual CHOAM Nexus may choose eligible own canonical Treachery fuel at the pending Karama opportunity. Other expansion factions/modules, Semuta and Richese Betrayal remain excluded; other Nexus previews retain the Kull guard. See the [source/cost boundary](NEXUS_CHOAM_RULES.md#kull-source-cost-and-action-boundary) and [runtime evidence](NEXUS_CHOAM_RUNTIME.md#bounded-nexus-kull-profile).
|
||||
|
||||
Both profiles require the visible preview warning and closed public expansion/module gates. The old `kull` profile remains printed-only without Nexus. This bounded Cunning interaction is verified locally, with broader verification **Partial**, not complete CHOAM, full Nexus/expansion certification or deployment evidence. Prior printed-Kull evidence remains scoped to the older preview.
|
||||
|
||||
Ordinary cancellation with a live Truthtrance battle or shipment promise must pass the existing pure `assertKaramaPromiseFeasibility` post-cost proof. An unsupported/unprovable suffix is rejected actor-privately before a Kull offer or cost. Proven supported Voice, Prescience, elite, support and aid cancellation paths remain interruptible; no-obligation paths remain unaffected. This is an incomplete preview composition, **not** a publisher prohibition. Do not publicize an unvalidated attempt, release its promise or speculatively execute random effects merely to prove feasibility.
|
||||
|
||||
@@ -59,27 +61,27 @@ Special branches bypassing `spendKarama()`:
|
||||
|
||||
## State and API responsibilities
|
||||
|
||||
The pure [Kull module](../game/choam-kull.ts) owns `KullPhaseRestriction`, `activeKullRestrictions`, `kullBlocksKarama`, restriction/attempt-stamp validation, `distinctKullCounter`, `kullNativeCostCards` and `kullCounterCards`. It validates stamped phase policy and conserved canonical physical-card binding without mutating a Game. The engine remains authoritative for live custody, validated ordinary uses, prepared `SpecialKaramaIntent`, response ownership and once-only continuation. A saved attempt must not contain an arbitrary client `Action`, function closure, cyclic state or whole-Game rollback snapshot.
|
||||
The pure [Kull module](../game/choam-kull.ts) owns `KullPhaseRestriction`, `activeKullRestrictions`, `kullBlocksKarama`, restriction/attempt-stamp validation, `distinctKullCounter`, `kullNativeCostCards`, `kullNexusCostCards` and `kullCounterCards`. It validates stamped phase policy and conserved canonical physical-card binding without mutating a Game. `kullNexusCostCards(held, physicalCards, reservedIds)` returns uniquely held canonical any-Treachery fuel excluding reservations; it infers neither Nexus presence, profile, phase nor promises. The engine remains authoritative for live source-specific promises/custody, actual Nexus and mode authorization, validated ordinary uses, prepared `SpecialKaramaIntent`, response ownership and once-only continuation. A saved attempt must not contain an arbitrary client `Action`, function closure, cyclic state or whole-Game rollback snapshot.
|
||||
|
||||
The original and counter cards have different obligations. The original stays reserved until Kull settles; ordinary counter eligibility excludes that exact physical ID. A different printed Karama or eligible BG substitution may counter while Kull is pending. A BG counter's own conversion response must not overwrite the original intent or its suspended response.
|
||||
|
||||
The consumer interface is `GameView.kullReaction`: `null` or `{ event, player, target, intent, cards, canDecline, blocked }`. It is present during the offer stage; the counter stage uses existing `responseControls`. `player` is the public CHOAM reactor, `target` the attempted activating player, and `intent` the ordinary purpose kind or the generic `special` label, never a special selection. All viewers see the same event/actors/intent; only CHOAM sees actual legal `cards` and `canDecline: true`. The current offer uses `blocked: null`, including no-card offers that CHOAM can decline. Countering reuses ordinary `card/mode: cancel` or `passResponse` actions. Never project raw special choices, saved response secrets, signatures, funding or either hidden hand.
|
||||
The consumer interface is `GameView.kullReaction`: `null` or `{ event, player, target, intent, plays, canDecline, blocked }`. The old `cards` array is removed. Each private play is `{ source: 'printed' | 'nexus', effect: 'kull', card: Card, event: string, blocked: string | null }`, separating the real selected fuel from the effect and source. It is present during the offer stage; the counter stage uses existing `responseControls`. `player` is the public CHOAM reactor, `target` the attempted activating player, and `intent` the ordinary purpose kind or generic `special` label, never a special selection. All viewers see the same event/actors/intent; only CHOAM receives its plays and `canDecline: true`; others get empty plays. The offer remains declinable with no legal cost. Countering reuses ordinary `card/mode: cancel` or `passResponse`. Never project special choices, saved secrets, signatures, funding or hidden hands, and never derive public opportunity timing from a secret Nexus or cost.
|
||||
|
||||
`GameView.kullCounterEvent` is `null` or the same opaque public attempt event while the distinct-counter stage owns control, including a BG `worthlessKarama` overlay. Controls and bots use it only for precedence; legal physical choices still come from native `responseControls`. It reveals no original card, Kull cost or saved response payload. `GameView.karamaBlocked` is the current viewer's stamped activation-block reason or `null`, separate from a pending declaration; `kullPreview` supplies the visible opt-in warning.
|
||||
`GameView.kullCounterEvent` is `null` or the same opaque public attempt event while the distinct-counter stage owns control, including a BG `worthlessKarama` overlay. Controls and bots use it only for precedence; legal physical choices still come from native `responseControls`. It reveals no original card, Kull cost or saved response payload. `GameView.karamaBlocked` is the current viewer's stamped activation-block reason or `null`, separate from a pending declaration; `kullPreview` supplies the shared interception warning and `nexusKullPreview` identifies the new source capability.
|
||||
|
||||
CHOAM submits `{ type: 'kullDecision', event, decline: true }` or `{ type: 'kullDecision', event, card }`. Bind event and actor before costs. The declared Kull is a real held printed card, not a manufactured card or a free power. Nexus Cunning is not admitted by this preview.
|
||||
CHOAM submits `{ type: 'kullDecision', event, decline: true }` or `{ type: 'kullDecision', event, source: 'printed' | 'nexus', card }`. **Source is mandatory on Use**, including the old printed path; no omitted-source compatibility remains. Bind actor, event, source and physical cost before mutation. Printed source is a held printed Kull; Nexus source is real eligible Treachery fuel plus the actual held CHOAM Nexus under the explicit new profile. No client effect, target, price or Nexus ID is admitted. Generic proactive `choamPowerAction` cannot play Kull.
|
||||
|
||||
## Settlement flow and cancellation
|
||||
|
||||
1. Validate an actual activation before discard, payment, physical movement, once-use flags or random effects. Reject an already effective stamped phase restriction before costs. Invalid plays create no public offer and reveal no private payload.
|
||||
2. Save the exact typed intent and its parent ownership. Offer the same neutral CHOAM opportunity whether Kull is held or absent. Mere holding, transfer or nonactivation discard is not an attempted play.
|
||||
3. Declining resumes the original intent once, without another offer for that same attempt. Declaring Kull opens the ordinary CHOAM-effect response; **pending is not active**.
|
||||
3. Declining spends nothing and resumes the original intent once, without another offer for that same attempt. Declaring Kull opens the ordinary CHOAM-effect response; **pending is not active**. Accepted Nexus source immediately spends its physical CHOAM Nexus once using the existing Cunning receipt/history, while fuel remains held until success. A prevented declaration does not refund that Nexus.
|
||||
4. Resolve legal distinct counters using existing response ownership. The reserved original cannot cancel Kull. A valid counter follows its own ordinary consumption/conversion rules; it does not consume the original card as payment for the counter.
|
||||
5. On successful Kull, discard the exact Kull cost once, retain the original unplayed printed/BG card, leave the original special once-use unspent, and abort its effect. Restrict the **activating player**, not an allied shipment recipient, for the current turn/phase.
|
||||
6. If Kull is prevented, retain its cost and prevent that physical cost's effect for the phase under existing native CHOAM semantics. Resume the original attempt once. Recheck custody rather than substituting another same-name card.
|
||||
5. On successful Kull, discard the exact selected printed or Nexus fuel once, retain the original unplayed printed/BG card, leave the original special once-use unspent, and abort its effect and additional costs. Restrict the **activating player**, not an allied shipment recipient, for the current turn/phase. A Nexus fuel's actual canonical identity is unchanged; no Kull card is minted and Karama fuel is not also activated.
|
||||
6. If Kull is prevented, retain its selected fuel and prevent that physical cost's effect for the phase under existing native CHOAM semantics. An accepted Nexus declaration remains spent and its Cunning history completes canceled. Resume the original attempt once. Recheck exact custody rather than substituting another same-name card or restoring a whole Game.
|
||||
7. Stamp comparison expires the effective restriction on phase/turn change, not a temporary response, market or worm substep. It blocks Karama activations including substitutes, not ownership, trades or otherwise legal nonactivation discards.
|
||||
|
||||
This is the approved development interpretation, not an official nested-priority clarification. JSON continuation must preserve the same ownership and exact physical cards without a second random draw, payment or replayed effect.
|
||||
This is the approved development interpretation, not an official nested-priority clarification. Accepted-declaration Nexus disposal and retained pending fuel reuse the existing Cunning application convention, not a newly located publisher Kull transaction rule. JSON continuation must bind original attempt, chosen source/fuel and Cunning receipt/history through suspended `pendingKull.resume`/Worthless or `pendingKarama` parents. Deleted/orphaned source, original or receipt ownership must reject before view, normalization, actions or SQL writes, not auto-resume or expose a private cost. Completed history must not require spent cards to remain forever in discard. There is no second random draw, payment, Nexus spend or replayed effect.
|
||||
|
||||
## Bene Gesserit conversion
|
||||
|
||||
@@ -105,10 +107,10 @@ Ordinary conversion behavior remains different: `spendKarama()` discards the BG
|
||||
## Projection, UI, and AI
|
||||
|
||||
- Public attempted-play metadata can include actor, purpose category, public recipient, and attempt ID. Do not expose raw continuation frames: they can contain private plans, hidden hand choices, revival terms, or future card transfers.
|
||||
- The CHOAM opportunity must not depend on its hand containing `ix-kull-wahad`; otherwise the presence of a prompt leaks possession. Its available reaction card and exact pending CHOAM card ID belong only in its private projection. Existing public `g.decision` projection must be reviewed before placing private fields in a new decision variant.
|
||||
- The CHOAM opportunity must not depend on holding `ix-kull-wahad`, CHOAM Nexus or eligible fuel; otherwise the prompt leaks possession. Its source-aware plays and exact selected fuel belong only in its private projection. Public viewers receive the same attempt metadata for CHOAM Nexus, an irrelevant Nexus, absent Nexus and no-cost hands. Saved private ownership must not enter public `g.decision` output.
|
||||
- Kull's settled target and stamped phase expiry are public. Selecting another player's shipment beneficiary must not change which player is restricted. Do not silently extend CHOAM's powers to an ally.
|
||||
- Bots must handle offer/decline, distinct counters, restored underlying decisions and blocked-activation filters. A card remaining physically in hand is not evidence the bot can play it. Prevent repeated invalid-action generation from proactive special and ordinary cancellation branches.
|
||||
- Preserve `choamWorthless.pending` during pending Kull and nested responses, just as with Jubba; an AI should not cash in the card it is currently using as protection/prevention unless it deliberately chooses to abandon that effect.
|
||||
- Preserve `choamWorthless.pending` during pending Kull and nested responses, just as with Jubba; it binds the actual selected printed/Nexus fuel so an AI does not accidentally cash in the card currently committed to prevention. The already spent Nexus is separate from that retained physical fuel.
|
||||
- Human controls describe the attempted purpose and distinguish pending Kull from a successful active restriction. The opt-in preview warning must remain visible; approved timing is product policy, not official completeness. Card inspection must not expose unplayed opponents' hands.
|
||||
|
||||
## Minimum validation plan
|
||||
@@ -118,11 +120,13 @@ Ordinary conversion behavior remains different: `spendKarama()` discards the BG
|
||||
3. Successful block rejects a second activation in the same phase and permits one next phase; distinguish actor/beneficiary. Verify unsupported acquisition/holding restrictions were not added accidentally.
|
||||
4. Payment with enough spice, alternate usable Karama, blocked held Karama, stale funding, hand-limit changes and losing card custody. Confirm the deferred winning-overbid guard rejects before costs with the same private result whether hidden Kull is held or absent; no auction remedy is certified.
|
||||
5. Pending CHOAM cash-in, Fremen summon, Harkonnen exchange, revival-income preparation and Truthtrance feasibility; assert no response overwrite, false promise release, clone-search loop, duplicate random draw, or deadlock.
|
||||
6. Compare two states differing only in CHOAM's private Kull possession: rival/public opportunity shape must match. Check private selected special payloads and suspended contexts never appear in rival or spectator views.
|
||||
6. Compare printed-held/absent and CHOAM-Nexus/irrelevant-Nexus/absent-Nexus/no-fuel states: rival/public opportunity shape must match. Check private selected special payloads, source choices and suspended contexts never appear in rival or spectator views.
|
||||
7. All four AI difficulties must complete each new continuation, including no-Kull/blocked-Kull decline and a response resumed after cancellation. Browser-check the new decision and its pending/canceled state after reconnect.
|
||||
|
||||
The original 6 September pass was a source/engine and document audit, not runtime verification. Its unanswered counter/BG proposals are superseded by the explicit 30 September selections above. The minimum validation plan remains a coverage contract, not a claim that every combination is verified.
|
||||
|
||||
The new interaction has its own frozen evidence: types, lint, 6,022 offline tests, build, authenticated source-aware SQLite restart/races, four legal bot policies and actual Basic/Advanced CLI/runtime/phone weapon-fuel success and distinct prevention with refresh. Review repairs protect canonical descriptors, native suspended parents, reserved parent counters and CHOAM auction funding. Verified old printed counter saves migrate source binding without mutating callers or enabling Nexus; corrupt new-profile selections still reject. Local HTTP 49/55 retains four 503s and two timeouts; proxy-free CI and deployed acceptance remain separate. Historical printed-Kull and Richese results are not substituted for this proof. Full combinations and deferred auction remedies remain open.
|
||||
|
||||
|
||||
## Implemented prerequisite: prepared special intents
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Kull Wahad: official-source update
|
||||
|
||||
Checked 2026-09-07 for classic GF9 Dune and CHOAM & Richese; preview policy updated 30 September 2026. This supplements [CHOAM_KULL_DESIGN.md](CHOAM_KULL_DESIGN.md) and the Kull section of [CHOAM_REMAINING_RULES.md](CHOAM_REMAINING_RULES.md). The source audit itself did not change runtime behavior; the later opt-in development implementation follows the explicit selections below.
|
||||
Checked 2026-09-07 for classic GF9 Dune and CHOAM & Richese; preview policy and source-aware Nexus cost boundary updated 30 September 2026. This supplements [CHOAM_KULL_DESIGN.md](CHOAM_KULL_DESIGN.md), [native CHOAM Cunning](NEXUS_CHOAM_RULES.md) and the Kull section of [CHOAM_REMAINING_RULES.md](CHOAM_REMAINING_RULES.md). The source audit itself did not change runtime behavior; later opt-in development implementations follow the explicit selections below. This update does not claim a newly fetched publisher ruling.
|
||||
|
||||
## User-selected preview timing — 30 September 2026
|
||||
|
||||
@@ -19,6 +19,20 @@ These are explicit provisional product interpretations, not a
|
||||
publisher clarification. They supersede the older unanswered
|
||||
counter/BG proposals below; full CHOAM starts remain gated.
|
||||
|
||||
## Source-aware Cunning composition — 30 September 2026
|
||||
|
||||
The [CHOAM Nexus face](NEXUS_CHOAM_RULES.md#authority-and-printed-scope) says **“Discard any Treachery Card to obtain a Worthless Card special effect of your choice.”** This is the source for allowing any actual Treachery fuel, not for inventing a nested priority. Kull's [printed CHOAM rule](https://www.gf9games.com/dune/wp-content/uploads/2021/11/CHOAM-Rulebook-low-res.pdf#page=7) supplies the attempted-Karama timing and phase restriction; [E3 p.11](https://www.gf9games.com/dune/wp-content/uploads/EcazMoritani-Rulebook-LOWRES.pdf#page=11) supplies native/unallied Nexus conditions and disposal of a played Nexus. None is presented as an official resolution of the counter/BG/overbid questions below.
|
||||
|
||||
The older `kull` profile stays printed-only without optional modules or Nexus. Only a fresh explicit `nexus-kull` profile adds this bounded interaction: two to six ready Basic/Advanced seats, native CHOAM and otherwise classic factions, exactly physical CHOAM/Ix Treachery decks and Nexus alone. Older games and other Nexus previews are not retrofitted; other expansion factions/modules, Semuta, Richese Betrayal, complete games and public/deployed release remain outside scope.
|
||||
|
||||
Every Use now names its source: `{ type: 'kullDecision', event, source: 'printed' | 'nexus', card }`. Decline is `{ type: 'kullDecision', event, decline: true }`. The private `kullReaction.plays` replaces `cards` and distinguishes real fuel from the effect. Printed source spends only a real held Kull on success. Nexus source requires actual unallied native CHOAM Nexus custody and uniquely held canonical Treachery fuel compatible with reservations and binding own promises. No omitted-source fallback or proactive generic Nexus Kull is admitted.
|
||||
|
||||
The **application transaction convention** is the existing Cunning one: accepted declaration spends the physical Nexus once immediately, retains fuel while the response is pending, and discards fuel once only if the effect succeeds. Prevention retains fuel but does not refund Nexus. This is distinct from the source-supported requirement to discard a played Nexus and is not attributed to a publisher Kull priority ruling.
|
||||
|
||||
The same **user-selected** distinct-counter, BG-before-conversion and deferred-overbid policies apply to both sources. The original stays reserved and cannot be its own counter; success retains its unplayed card/special once-use and stamps the activating player's turn/phase ban. Decline or prevention resumes the exact original once. The public offer is independent of Nexus identity and fuel eligibility; only CHOAM receives its private source choices. That neutral timing is application privacy policy, not publisher-prescribed acknowledgement.
|
||||
|
||||
New Nexus Kull is **verified locally within its boundary**, with broader verification **Partial**. Frozen types/lint/6,022 offline tests/build, authenticated SQLite ownership/races and actual Basic/Advanced CLI/runtime/phone Use, distinct prevention and refresh are recorded in the [runtime checkpoint](NEXUS_CHOAM_RUNTIME.md#bounded-nexus-kull-profile). Prior printed-Kull, five-effect Cunning and Richese evidence remains scoped. Local HTTP is 49/55 with four POST 503s and two timeouts; proxy-free CI/live deployment, wider cancellation scope, combined modules, unpayable-auction recovery and full-family acceptance remain separate.
|
||||
|
||||
|
||||
## Result and provenance
|
||||
|
||||
@@ -45,6 +59,7 @@ Targeted official-domain and named-designer searches also surfaced a BGG discuss
|
||||
| BG substitution and custody | Ordinary prevention of BG conversion discards the Worthless card. The [base rulebook, printed p. 14](https://www.gf9games.com/dunegame/wp-content/uploads/Dune-Rulebook.pdf#page=14) discards a Karama after play. | **Before conversion** is selected: successful Kull retains the still-unplayed printed Karama or BG Worthless card and leaves an attempted special once-use unspent. If Kull is declined or countered, the original attempt resumes, including the separate ordinary BG conversion/discard rules. |
|
||||
| Blocked overbids | Holding permission and actual Karama play are distinct in the FAQ. | **Defer interaction** is selected for a winning overbid whose only Karama payment would become unplayable. Preflight the unsupported composition before costs or an unfinishable transaction. Do not restart the auction, award a free card, invent funding or add a hidden-Kull-dependent bid cap. |
|
||||
| Countered CHOAM discard | The expansion supplies a phase-scoped prevention provision. | Preserve native prevention-of-discard semantics: retain the selected Kull cost and phase-block its effect. The wider official scope across different physical copies or Worthless names remains unclarified; the preview does not resolve it. |
|
||||
| Nexus source cost | CHOAM's Cunning allows any Treachery Card for a selected Worthless effect; E3 requires native unallied use and disposal of a played Nexus. | The new explicit profile uses real fuel plus the physical CHOAM Nexus, spent at accepted declaration even if prevented; fuel remains held until success. This transaction boundary reuses existing application convention, not an official nested Kull ruling. The printed-only profile is unchanged in scope. |
|
||||
|
||||
The counter/BG choices are no longer unanswered user questions. They are approved preview policy with an unresolved **publisher-source** distinction. Unfunded-auction recovery was deliberately not selected. Full CHOAM, combined-module and publication acceptance therefore remain gated; an opt-in Kull preview is not official rules certification.
|
||||
|
||||
@@ -54,7 +69,7 @@ An additional engineering admission boundary is the existing pure post-cost feas
|
||||
|
||||
The runtime fence is before bid commitment, not only before payment:
|
||||
non-CHOAM unfunded Karama-dependent bids are privately unavailable in
|
||||
this explicit preview. The former late guard accepted such a bid and
|
||||
both explicit Kull profiles. The former late guard accepted such a bid and
|
||||
then could not settle it. The fence is independent of hidden Kull,
|
||||
does not change numeric UI bid limits or non-preview rules, and
|
||||
does not select an auction recovery. CHOAM self-activation stays
|
||||
@@ -63,4 +78,4 @@ Kull costs also receive a cloned post-cost own-promise check; counters
|
||||
are projected only when their same authoritative proof is available.
|
||||
|
||||
|
||||
Validation: reviewed both prior documents, publisher text and the local rulebook extract; repeated focused official searches; verified the designer FAQ redirect. No gameplay tests were run for this documentation-only update.
|
||||
Historical source validation reviewed publisher text, prior documents and a local rulebook extract, repeated focused official searches and checked the designer FAQ redirect. That documentation-only update ran no gameplay tests. The 1 October runtime integration adds the separately recorded frozen checks, actual CLI/source/phone evidence and independent review repairs; it claims no fresh publisher priority clarification or full-mode/deployed acceptance.
|
||||
+18
-1
@@ -1,11 +1,28 @@
|
||||
# Current development status
|
||||
|
||||
Updated 30 September 2026. **The full twelve-faction goal is unfinished. Basic
|
||||
Updated 1 October 2026. **The full twelve-faction goal is unfinished. Basic
|
||||
is playable and the six classic factions have a user-authorized Advanced preview.
|
||||
Expansion starts and full rules/publication acceptance remain gated.**
|
||||
|
||||
## Current checkpoint and work
|
||||
|
||||
Five implementation lanes connect [CHOAM Nexus Cunning Kull](NEXUS_CHOAM_RUNTIME.md#bounded-nexus-kull-profile)
|
||||
through the new fresh `nexus-kull` profile. Actual canonical Treachery fuel
|
||||
and physical Nexus are distinct costs: Nexus spends at accepted declaration,
|
||||
fuel remains held pending response, and only success disposes fuel and bans
|
||||
the original actor for the phase. Distinct prevention retains fuel, leaves
|
||||
Nexus spent and resumes the reserved original once; BG is still preconversion.
|
||||
Review repaired counterfeit descriptor trust, native suspended-parent
|
||||
ownership, nested reserved counters and CHOAM winning-payment coverage.
|
||||
Verified old printed counter saves migrate their binding immutably without
|
||||
enabling new choices or accepting source-omitting Use; new corrupt Nexus
|
||||
selections remain rejected. The fresh Spice Deck excludes Sandtrout.
|
||||
Types, lint, **6,022 offline tests**, build and actual Basic/Advanced
|
||||
CLI/runtime/phone success/prevention/refresh pass with conserved physical
|
||||
cards and unchanged spice. Local HTTP is **49/55**, four POST 503s plus two
|
||||
timeouts, not green. Proxy-free CI/live deployment and full-mode acceptance
|
||||
remain separate; no public release or deployed claim.
|
||||
|
||||
Five implementation lanes now connect the bounded
|
||||
[Richese Nexus Betrayal](NEXUS_RICHESE_RULES.md#bounded-betrayal-auction-contract--30-september-2026)
|
||||
preview: original public self-cache purchase veto without payment,
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 1 October 2026 — source-aware CHOAM Nexus Cunning Kull
|
||||
|
||||
Five implementation lanes connected runtime, canonical fuel/receipt policy,
|
||||
real source/fuel controls and legal bots, authenticated SQLite recovery and
|
||||
internal source guidance. The safe fresh `nexus-kull` CLI admits native CHOAM
|
||||
plus classic 2..6-seat Basic/Advanced rosters with CHOAM/Ix Treachery and Nexus
|
||||
alone; it supplies no physical Sandtrout or new public/retrofit gate.
|
||||
|
||||
Use now requires source/event/card and private `plays` replaces old `cards`.
|
||||
Nexus declaration spends actual CHOAM Nexus once; canonical retained fuel
|
||||
is reserved until success. Distinct prevention keeps fuel but not Nexus and
|
||||
resumes the original once. Success discards fuel, retains the original and
|
||||
special once-use, and stamps the actor's activation ban. BG original
|
||||
interception remains before conversion; decline spends neither source cost.
|
||||
|
||||
Independent reviews found and repaired canonical self-authorization,
|
||||
native Nexus response discoverability through Kull parents, reserved parent
|
||||
fuel advertised as a nested counter, and loss of CHOAM winning-payment
|
||||
coverage. A retained Karama's canceled Cunning effect is not ordinary payment
|
||||
ineligibility. Verified old printed counter saves receive a bounded immutable
|
||||
source-binding migration; malformed signatures and new Nexus missing-selection
|
||||
frames still reject. There is no source-omitting action shim. Fresh setup's
|
||||
Ix Treachery requirement no longer accidentally admits Sandtrout.
|
||||
|
||||
Final `npm run check`: types, lint and **6,022 offline tests** pass.
|
||||
`npm run build` passes. Engine/production authenticated SQLite cases include
|
||||
native Atreides, Sardaukar, advisor and Guild parents, BG overlays, actual
|
||||
auction payment, races, no-write corrupt/orphan rejection and later recycled
|
||||
custody. The existing Fremen remote-Cunning pre-offer scope guard remains;
|
||||
native special summon and its unsupported remote offer boundary are exercised.
|
||||
Both final scoped independent re-reviews report no remaining finding.
|
||||
|
||||
Four actual CLI entries continued owned ready QA rooms from version 5 to setup
|
||||
6. Genuine setup/Storm/Spice completed before conserved pre-action resources
|
||||
were arranged. Standalone runtime and 390-pixel controls prove Basic/Advanced
|
||||
weapon fuel success and distinct prevention. Actual selectors and separate
|
||||
fuel/Nexus inspectors pass; rivals see no private fuel inspector. Success
|
||||
retains Karama/BG Baliset and bans activation; prevention retains fuel, spends
|
||||
Nexus and resumes original shipment/conversion. Refresh/direct saved-state
|
||||
proof retains full physical inventory, exact source history and unchanged spice.
|
||||
No existing human games, seats or credentials were reset/modified.
|
||||
|
||||
Current local built-worker HTTP is **49/55**: four POST 503s and two timeouts
|
||||
retain the Wrangler-dev limitation, not green acceptance. Exact proxy-free
|
||||
container CI/publication is recorded after the push; live NAS, wider modules,
|
||||
full CHOAM/Nexus games and calibrated AI remain open. No public gate changes.
|
||||
|
||||
## 30 September 2026 — bounded Richese Nexus Betrayal auction integration
|
||||
|
||||
Five implementation lanes delivered pure source/invoice/custody policy,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# CHOAM Nexus Cunning
|
||||
|
||||
Source audit: 2026-09-10. This source audit defines native Cunning and its saved-receipt contract. The separate [runtime checkpoint](NEXUS_CHOAM_RUNTIME.md) implements five effects; this audit does not resolve the other CHOAM Nexus panels or lift any [Nexus/expansion release gate](NEXUS_CARD_RUNTIME.md).
|
||||
Source audit: 2026-09-10; bounded Kull integration contract updated 30 September 2026. This source audit defines native Cunning and its saved-receipt contract. The separate [runtime checkpoint](NEXUS_CHOAM_RUNTIME.md) preserves the earlier five-effect evidence and records the new explicit `nexus-kull` profile separately. Neither scope resolves the other CHOAM Nexus panels or lifts any [Nexus/expansion release gate](NEXUS_CARD_RUNTIME.md).
|
||||
|
||||
## Authority and printed scope
|
||||
|
||||
The [original GF9 Nexus component photograph](https://boardgamegeek.com/image/7767032/dune-ecaz-and-moritani), independently inspected at `/tmp/dune-nexus-cards.jpg`, permits native CHOAM to discard any Treachery Card to use any Worthless Card special effect. The choice is one held physical card and one effect. It does not require holding the corresponding named Worthless card, transform the chosen card's printed identity, grant money, or supply a phase-long conversion permission.
|
||||
The [original GF9 Nexus component photograph](https://boardgamegeek.com/image/7767032/dune-ecaz-and-moritani), independently inspected at `/tmp/dune-nexus-cards.jpg`, gives CHOAM Cunning this printed instruction: **“Discard any Treachery Card to obtain a Worthless Card special effect of your choice.”** The choice is one held physical card and one effect. It does not require holding the corresponding named Worthless card, transform the chosen card's printed identity, grant money, or supply a phase-long conversion permission.
|
||||
|
||||
The [GF9 Ecaz & Moritani rulebook, p.11](https://www.gf9games.com/dune/wp-content/uploads/EcazMoritani-Rulebook-LOWRES.pdf#page=11) classifies Cunning as enhancement of a native advantage. The holder must remain unallied, and a played Nexus Card is discarded. Those common conditions still apply. Publisher-indexed text and the previously fetched [publisher-authored E3 mirror](https://gamers-hq.de/media/pdf/0f/7a/86/Dune_EcazMoritani_Rulebook_EN.pdf) were used; no community compilation supplies a ruling.
|
||||
|
||||
@@ -12,7 +12,7 @@ CHOAM's Treachery advantage is on the ordinary faction-rules page, before its Ad
|
||||
|
||||
## Six effects and their timing
|
||||
|
||||
E2 lists **six**, not five. Five have current Cunning engine effect handlers. The separate opt-in [printed Kull preview](CHOAM_KULL_DESIGN.md) does not admit Nexus Cards and does not enable Cunning's sixth effect.
|
||||
E2 lists **six**, not five. The earlier Cunning runtime implemented five. The separate opt-in [printed Kull profile](CHOAM_KULL_DESIGN.md#opt-in-development-scope) still does not admit Nexus Cards. Only the new explicit `nexus-kull` profile enables Cunning's Kull choice at the existing attempted-Karama opportunity; other Nexus previews retain their Kull guard. This is one bounded interaction, not a silent retrofit or a full-family release.
|
||||
|
||||
| Chosen effect | Printed outcome and timing |
|
||||
| --- | --- |
|
||||
@@ -39,10 +39,33 @@ The effect choice and native use may be public without revealing the rest of CHO
|
||||
|
||||
## Existing boundaries to preserve
|
||||
|
||||
- **Kull:** the [source update](CHOAM_KULL_SOURCE_UPDATE.md#user-selected-preview-timing--30-september-2026) records approved distinct-card counters and BG-before-conversion custody as product policy, not publisher clarification. Unpayable winning-overbid recovery is deliberately deferred. The printed-card Kull development profile excludes optional modules, so Cunning Kull remains unavailable. Five supported Cunning effects must not be presented as all six.
|
||||
- **Kull:** the [source update](CHOAM_KULL_SOURCE_UPDATE.md#user-selected-preview-timing--30-september-2026) records approved distinct-card counters and BG-before-conversion custody as user-selected product policy, not publisher clarification. The new `nexus-kull` profile composes those policies with physical any-Treachery fuel and CHOAM Nexus Cunning. It reserves the interrupted original, retains it and any special once-use on success, and resumes it once on decline or prevention. Unpayable winning-overbid recovery is deliberately deferred; the existing private precommitment fence remains independent of hidden ownership. The old `kull` profile still excludes Nexus, and other Nexus previews do not gain this choice.
|
||||
- **Phase cancellation scope:** the existing [Worthless continuation audit](CHOAM_WORTHLESS_CONTINUATION_AUDIT.md) records unresolved scope across other physical copies or effects. Current runtime binds a canceled physical card for the phase. A new Nexus use should preserve the selected policy rather than silently broaden or erase that historical restriction. The spent Nexus itself cannot be retried.
|
||||
- **Inherited effect boundaries:** fixed Ornithopter range versus Kulon, reactive movement/Revival/storm parents, special force custody, No-Field Gamont and other already documented exclusions remain properties of the selected effect. They are not reasons to reject an ordinary source-supported Cunning use with a different effect.
|
||||
- **No fresh hidden reaction policy:** native CHOAM's existing effect opportunities and public circumstances supply the interaction points. Extend those owner's controls without pausing only because a secret Nexus card exists, adding compulsory no-choice confirmations, or reopening another player's completed action. Printed Kull uses a neutral attempted-play opportunity; adding a Cunning Kull cost still requires genuine Nexus integration and acceptance.
|
||||
- **No fresh hidden reaction policy:** native CHOAM's existing effect opportunities and public circumstances supply the interaction points. Kull reuses the same neutral validated-attempt opportunity regardless of CHOAM's Nexus identity or eligible fuel. Do not pause only because a secret Nexus card exists, expose private cost lists to opponents, add compulsory no-choice confirmations, or reopen another player's completed action. This privacy protocol is application policy, not publisher-prescribed priority.
|
||||
|
||||
## Kull source, cost and action boundary
|
||||
|
||||
Fresh Basic or Advanced `nexus-kull` games require two to six ready seats with native CHOAM and otherwise classic factions, exactly the physical CHOAM and Ix Treachery decks, and Nexus alone. `initializeNexusKullGameForAudit` sets the explicit `nexusKullPreview` capability together with the shared `kullPreview` interception capability. It is not an in-play upgrade. No other expansion faction, Homeworld, Leader Skills, Discovery, Tech Token, Stronghold, Sandtrout, Ecaz variant, Semuta or Richese Betrayal composition is admitted by this profile.
|
||||
|
||||
| Source | Required physical cost | When spent |
|
||||
| --- | --- | --- |
|
||||
| `printed` | One eligible held printed Kull Wahad | That card remains held while pending; discard once only on successful Kull. No Nexus is spent. |
|
||||
| `nexus` | Unallied native CHOAM's actual singleton CHOAM Nexus **and** one eligible held canonical Treachery fuel card | The Nexus is spent once at accepted declaration, even if Kull is later prevented. Fuel remains held until successful settlement and is retained on prevention. |
|
||||
|
||||
Any Treachery fuel identity is eligible in principle; live physical custody, reservations and own binding promises remain authoritative. This is not a free effect or a manufactured Worthless card. The pure `kullNexusCostCards(held, physicalCards, reservedIds)` helper classifies uniquely held canonical fuel and excludes reserved IDs; it does not authorize a profile, Nexus ownership, alliance, phase or promise. The engine proves those separately. A declaration must not reuse the original reserved attempt as a cost or counter.
|
||||
|
||||
The API uses `kullReaction.plays`, not a bare `cards` list. Each private choice is `{ source: 'printed' | 'nexus', effect: 'kull', card, event, blocked }`. The selected `card` is the real fuel descriptor. Other viewers receive an empty plays list and the same public event/player/target/purpose. Client Use supplies only the canonical event, source and actual card ID; decline has no source or cost:
|
||||
|
||||
```ts
|
||||
{ type: 'kullDecision', event, decline: true }
|
||||
{ type: 'kullDecision', event, source: 'printed', card }
|
||||
{ type: 'kullDecision', event, source: 'nexus', card }
|
||||
```
|
||||
|
||||
**Source is required on every Use, including printed Kull.** There is no omitted-source fallback and no client-selected effect, target, price or Nexus ID. The generic any-time Nexus action does not play Kull: the validated pending Karama opportunity is required. Reject stale/foreign events, malformed costs or broken saved ownership before costs or writes.
|
||||
|
||||
The accepted-declaration Nexus spend and retained pending fuel reuse the existing native Cunning application convention. E3 establishes that a played Nexus is discarded; it does not prescribe this internal transaction boundary or a Kull nested-response priority. A distinct eligible counter acts before the stamped phase ban; the original remains reserved. Success discards fuel once, keeps the original printed/BG card unplayed and special once-use unspent, and restricts its activating player for the current turn and phase. Prevention retains fuel under the existing exact-cost phase policy, leaves Nexus spent and resumes the saved original once. Decline spends neither cost and resumes it once. BG interception is before conversion; the original ordinary conversion and its FAQ disposal rules resume only after decline or prevention.
|
||||
|
||||
## Pure saved receipt and integration contract
|
||||
|
||||
@@ -65,12 +88,12 @@ type NexusChoamReceipt = {
|
||||
};
|
||||
```
|
||||
|
||||
[game/nexus-choam.ts](../game/nexus-choam.ts) exports the six-name `CHOAM_NEXUS_EFFECTS` map, `NexusChoamEffect`, `NexusChoamContext`, `NexusChoamReceipt`, `createNexusChoam(context, owner, phase, card, effect)` and `validateNexusChoam(context, receipt)`. Context contains the current turn and ID/faction roster only. Intrinsic validation checks exact keys, effect/phase compatibility, original native owner/roster, nonempty card ID, safe numbers and signature. The event is `JSON.stringify(['nexusChoam', turn, phase, owner, card, effect])`. Kull's intrinsic timing admits phases 0–8; this does not authorize playing its unavailable Cunning effect. Historical validation neither reads private hands nor requires the card still held, CHOAM still unallied or the old Nexus still present.
|
||||
[game/nexus-choam.ts](../game/nexus-choam.ts) exports the six-name `CHOAM_NEXUS_EFFECTS` map, `NexusChoamEffect`, `NexusChoamContext`, `NexusChoamReceipt`, `createNexusChoam(context, owner, phase, card, effect)` and `validateNexusChoam(context, receipt)`. Context contains the current turn and ID/faction roster only. Intrinsic validation checks exact keys, effect/phase compatibility, original native owner/roster, nonempty card ID, safe numbers and signature. The event is `JSON.stringify(['nexusChoam', turn, phase, owner, card, effect])`. Kull's intrinsic timing admits phases 0–8; only the engine's explicit profile and canonical pending attempt authorize its use. Historical validation neither reads private hands nor requires the card still held, CHOAM still unallied or the old Nexus still present.
|
||||
|
||||
The engine should separately bind progress (`pending`, `canceled`, `discarded`, `complete`) and the exact original resume context. An independently retained latest-progress marker prevents deleting or rewinding the detailed frame from restoring the Nexus or causing another discard. Bind target, territory/sector, elite type, No-Field event and movement/revival/storm parent only where the selected effect uses them. Avoid freezing unrelated hidden hands, resource changes or nested response passes in a signature.
|
||||
|
||||
Integrate through the existing native effect validator with an explicit selected effect, preserving the original selected Card. Do not construct a fake Worthless hand entry merely to satisfy name-based checks. On cancellation, validate and resume the existing denied suffix without applying or paying for the chosen effect. On allowed disposal, record the physical event before yielding to a fresh-discard child; the continuation must know whether the card and effect have already committed. Reject stale actor/event/effect/target/custody before costs or private output.
|
||||
|
||||
Four focused pure tests in [tests/nexus-choam.test.ts](../tests/nexus-choam.test.ts) pass: six-effect timing, later-turn/reordered-roster recovery with private getter traps, edited receipt rejection, and malformed/foreign creation. Type-aware lint and whitespace checks pass. These are receipt checks, not gameplay integration certification.
|
||||
At the source-audit checkpoint, four focused pure tests in [tests/nexus-choam.test.ts](../tests/nexus-choam.test.ts) passed: six-effect timing, later-turn/reordered-roster recovery with private getter traps, edited receipt rejection, and malformed/foreign creation. Type-aware lint and whitespace checks passed then. These are preserved historical receipt checks, not new Kull gameplay integration certification.
|
||||
|
||||
Meaningful integration tests should cover all five currently supported effects in their genuine producers, Basic/Advanced parity, arbitrary canonical card families, successful and canceled selected-card custody, normal Worthless parity, denied-card phase behavior, poison-income and fresh-discard children, real BG/Box interruption, exact saved parent, private owner projection, bots, JSON/CAS recovery and failed-action immutability. Kull remains a named **Cunning integration** boundary, not an unanswered counter/BG product choice. Pure receipts alone do not establish gameplay acceptance or blanket Nexus immunity to Karama.
|
||||
The historical five-effect matrix remains separate from the new source-aware Kull evidence. The frozen Kull checkpoint passes types, lint, 6,022 offline tests and build, plus actual Basic/Advanced CLI/runtime/phone Use and distinct prevention with refresh and conserved source costs. Authenticated SQLite cases cover saved source ownership, races, corrupt rejection and bounded old printed-counter migration; other Nexus profiles do not gain Kull. Wider verification remains **Partial**: local HTTP is 49/55 with four POST 503s and two timeouts, and full-mode/deployed acceptance stays open. See [current evidence and boundaries](NEXUS_CHOAM_RUNTIME.md#bounded-nexus-kull-profile). Pure receipts alone do not establish publisher priority or blanket Nexus immunity to Karama.
|
||||
@@ -1,6 +1,6 @@
|
||||
# CHOAM Nexus Cunning runtime
|
||||
|
||||
This checkpoint integrates native CHOAM Cunning with five Worthless effects, in Basic and Advanced. It does not complete CHOAM, Nexus or the expansions. The [source contract](NEXUS_CHOAM_RULES.md) lists **six** effects: Kull Wahad remains unavailable **as a Cunning choice**. The later opt-in [printed Kull preview](CHOAM_KULL_DESIGN.md) excludes Nexus Cards, so it does not expand this five-effect runtime. CHOAM Secret Ally and Betrayal have separate later contracts and are not implemented by this Cunning checkpoint.
|
||||
The historical checkpoint below integrated native CHOAM Cunning with five Worthless effects in Basic and Advanced. The separately verified 1 October 2026 `nexus-kull` profile adds bounded source-aware Kull, with broader verification **Partial**. The [source contract](NEXUS_CHOAM_RULES.md) lists all six printed effects, not a full-family release. The older [printed Kull profile](CHOAM_KULL_DESIGN.md) still excludes Nexus; other Nexus previews still reject Kull. CHOAM Secret Ally and Betrayal retain separate contracts. No profile silently enables new choices in older games or certifies complete CHOAM, Nexus or expansions.
|
||||
|
||||
## Physical cost and timing
|
||||
|
||||
@@ -20,24 +20,61 @@ Playing Cunning spends its physical Nexus card and opens one ordinary CHOAM-effe
|
||||
|
||||
The engine's owner-only `choamWorthless.plays` separates `source`, `effect`, the actual `card`, an optional Nexus `event`, and a blocking reason. The original printed-card descriptor remains available. [Shared options](../game/choam-power-options.ts) construct ordinary card actions unchanged and add the explicit effect/event only for a Nexus use. They fence stale events, actor identity and current interruptions, and use the server's source-specific blocking reason.
|
||||
|
||||
The [cost selector](../components/choam-power-cost.tsx) is reused by the existing [storm](../components/choam-storm.tsx), [revival/range](../components/choam-worthless.tsx), [movement prevention](../components/choam-baliset.tsx) and [force return](../components/choam-gamont.tsx) panels. It names and inspects the real cost card separately from the effect, supports transport-busy state, and exposes blocked choices without offering an illegal action. Cunning Kull Wahad has a visible unavailable explanation; approved printed-Kull timing is not Cunning runtime authorization. Public reaction windows and controls disclose neither hidden Nexus ownership nor CHOAM's private cost list.
|
||||
The [cost selector](../components/choam-power-cost.tsx) is reused by the existing [storm](../components/choam-storm.tsx), [revival/range](../components/choam-worthless.tsx), [movement prevention](../components/choam-baliset.tsx) and [force return](../components/choam-gamont.tsx) panels. It names and inspects the real cost card separately from the effect, supports transport-busy state, and exposes blocked choices without offering an illegal action. The new Kull panel uses this source-aware convention only in its explicitly enabled reaction profile; generic proactive Nexus Kull remains unavailable. Public reaction windows and controls disclose neither hidden Nexus ownership nor CHOAM's private cost list.
|
||||
|
||||
All four bot profiles use the same projected plays. They preserve printed effects first, then prefer lower-value legal Nexus fuel, retaining their existing public-target policies. Easy's existing policy of allowing free revival remains unchanged. The ordinary Trip to Gamont preservation policy still reserves that printed card during a closing market or cash-in even though playing it must wait for the next legal window. These are legal policy extensions, not a new AI calibration claim.
|
||||
|
||||
Existing reactive windows depend on public circumstances rather than whether CHOAM holds a matching card. Cunning uses those same windows, so holding a private Nexus card does not introduce an identifying public wait. Opponents receive no private cost list. Saved engine receipts, cancellation and physical disposal are handled by the engine; consumer code does not reconstruct an opportunity from card names or old saves. Later bounded Semuta integration does not establish every Cunning fresh-discard composition. Native Cunning remains subject to its ordinary Karama response; neither this checkpoint nor the separate printed-Kull preview grants blanket Nexus immunity.
|
||||
|
||||
## Recovery evidence
|
||||
## Bounded Nexus Kull profile
|
||||
|
||||
Create a fresh local `nexus-kull` room through genuine setup with two to six ready seats, native CHOAM plus classic factions, Basic or Advanced, exactly the CHOAM/Ix Treachery decks and Nexus alone. `initializeNexusKullGameForAudit` identifies this capability with `nexusKullPreview` and the shared `kullPreview`. No optional module beyond Nexus, other expansion faction, Semuta or Richese Betrayal is admitted. The `kull` profile remains printed-only; existing saves and other Nexus previews do not inherit the new choice. The visible warning and closed public expansion start gate remain.
|
||||
|
||||
At the canonical validated Karama opportunity, CHOAM's private `kullReaction.plays` contains `{ source, effect: 'kull', card, event, blocked }` choices. The old `cards` field is removed. Printed source requires actual held Kull Wahad; Nexus source requires unallied native CHOAM's physical CHOAM Nexus and any eligible actual Treachery fuel. Canonical unique custody, reservation exclusion and source-specific own-promise feasibility apply before acceptance. A Karama fuel discard does not also activate Karama. Other viewers get empty plays and identical public event/actors/purpose regardless of secret Nexus identity or fuel; controls never infer an offer from the hand.
|
||||
|
||||
Use submits `{ type: 'kullDecision', event, source: 'printed' | 'nexus', card }`, with **source required** even for printed Kull. Decline submits `{ type: 'kullDecision', event, decline: true }`. There is no old omitted-source fallback, extra client-selected effect/target/price/Nexus ID or proactive any-time Kull action. The event is the pending attempted-play event, not a guessed generic Cunning receipt.
|
||||
|
||||
| Outcome | Physical Nexus | Selected fuel | Interrupted original |
|
||||
| --- | --- | --- | --- |
|
||||
| Decline | Retained | Retained | Resume exactly once with normal costs. |
|
||||
| Accepted Nexus declaration, response pending | Spent once immediately | Held/reserved pending success | Held/reserved; a distinct eligible counter may act before the ban. |
|
||||
| Kull prevented | Remains spent; no refund | Retained under existing exact-cost phase prevention | Resume exactly once; no Kull activation ban. |
|
||||
| Kull succeeds | Remains spent | Discarded exactly once | Retained unplayed; effect/additional costs and special once-use unspent; activating player phase-blocked. |
|
||||
|
||||
Printed declarations spend no Nexus and retain their existing printed-card settlement. The original attempted card cannot serve as its own counter. Advanced BG originals are intercepted before conversion/discard; decline or prevention resumes their separate ordinary conversion, while success keeps the original Worthless card. A distinct BG counter has its own conversion ownership. The successful ban is stamped to turn/phase and applies to activations, not holding, trades or nonactivation disposal.
|
||||
|
||||
Distinct-counter priority, pre-conversion custody and deferred unpayable-overbid recovery are the user's selected policies. The neutral offer and Nexus-spent-at-accepted-declaration boundary are existing application conventions, not a located publisher response-order ruling. The private non-CHOAM unfunded Karama-dependent bid fence remains **before commitment**, independent of hidden Kull/Nexus ownership; no restart, free lot, funding remedy or numeric UI cap is introduced. Live original/fuel/counter promises must remain satisfiable; unsupported continuations are guarded before offering rather than releasing a promise.
|
||||
|
||||
The saved pending Kull and existing Cunning receipt/history must bind chosen source/fuel, accepted Nexus spend and the exact original typed continuation, including suspended BG or Karama parents. Refresh must not replay raw actions, double-discard, refund Nexus or restore a mutable whole-Game snapshot. Stale, foreign, malformed, deleted or orphaned source/receipt/history/original ownership must fail before view/normalization/action/SQL writes. Completed historical receipts do not require old spent cards to remain forever in discard.
|
||||
|
||||
### Five-part status for the new interaction
|
||||
|
||||
| Area | Status | Bounded claim |
|
||||
| --- | --- | --- |
|
||||
| Implementation | Partial | Explicit source-aware interception and fresh-profile boundary; wider faction/module continuations and complete games remain outside scope. |
|
||||
| Player controls | Partial | Actual private fuel selection and fuel/Nexus inspectors, source-required Use, distinct counter/allow and Basic/Advanced phone refresh pass; wider accessibility/presentation acceptance remains open. |
|
||||
| AI | Partial | Four profiles use private canonical legal plays and existing counters; no full strategy/calibration claim. |
|
||||
| Documentation | Partial | Source/effect, real fuel, spend timing, user policies, privacy protocol and old/new profile boundaries are recorded; publisher clarification/full-family acceptance remain open. |
|
||||
| Verification | Partial | Types, lint, 6,022 offline tests and build pass, with actual fresh CLI entry, source runtime, Basic/Advanced phone success/prevention and saved physical-cost proof. Local HTTP is 49/55, not green; wider/deployed acceptance remains open. |
|
||||
|
||||
The frozen suites cover non-Worthless/printed fuel, successful phase ban, distinct prevention/original resumption, BG preconversion, decline and identity-neutral offers, physical conservation, reservations/promises, four legal bots and authenticated SQLite restart/races/immutable malformed or orphan rejection. Independent review repaired canonical descriptor trust, suspended native Nexus parents, nested parent-cost counters and CHOAM winning-payment coverage, including retained ordinary Karama with a canceled Cunning-effect block. Fresh setup excludes physical Sandtrout. Verified old printed-only counter saves receive a bounded immutable selection-binding migration; new Nexus-profile missing selections still reject. No source-omitting action shim or new-choice retrofit is introduced.
|
||||
|
||||
Actual `nexus-kull` CLI continued four owned fresh QA rooms from version 5 to setup 6. Genuine setup/Storm/Spice completed before conserved pre-action resources were arranged. Standalone runtime and 390-pixel controls prove Basic/Advanced weapon fuel Use followed by success or a distinct printed counter: Nexus spends once on declaration, success discards fuel/retains original/bans the actor; prevention retains fuel/leaves Nexus spent/resumes the original once. BG success keeps Baliset before conversion; prevention resumes its normal conversion. Refresh and direct saved-state checks preserve exact inventory, source history and unchanged spice. Fuel and CHOAM Nexus inspectors show their distinct actual components; rival views expose no private fuel inspector.
|
||||
|
||||
Local built-worker HTTP passes 49/55: four POST 503s and two timeouts retain the known Wrangler-dev limitation. Proxy-free container CI and live deployment are recorded separately after the checkpoint push. Full optional-module/faction modes, calibrated AI, complete games and deployed acceptance remain separate gates.
|
||||
|
||||
## Historical five-effect recovery evidence
|
||||
|
||||
The saved receipt binds the physical card, selected effect, original phase and owner, declared target and the specific suspended movement, revival, storm or Mentat context. Independent review reproduced legal-looking replacements of a pending movement quantity, revival quantity/price and storm distance. Those edits now reject before reads, automatic normalization or either outcome can write state. Historical completed records do not freeze unrelated future resources.
|
||||
|
||||
Actual paid Nullentropy searches can suspend and restore the response. If CHOAM legitimately consumes the selected card in an intervening cash-in, Cunning fizzles with its Nexus still spent and resumes the original operation once. Cancellation retains the card and applies the existing phase block. Production SQLite tests cover private refresh and simultaneous cancellation versus the final pass; exactly one version wins.
|
||||
|
||||
## Verification
|
||||
## Historical five-effect verification
|
||||
|
||||
Five new consumer regressions are in [controls](../tests/nexus-choam-controls.test.ts) and [bots](../tests/nexus-choam-bots.test.ts). They exercise actual fixture-generated windows for all five supported effects, submitted source actions, the real cost-card inspector, blocked Kull and reserved cards, stale events, actor/interrupt fences, private-field traps, all four policies, and unchanged printed actions. The combined consumer, existing Worthless/storm/movement/Gamont, Nexus guidance and reference selection passed **150/150** tests. Type-aware lint passed for all owned code and tests; all nine local links in this document resolve. The log is `/tmp/dune-choam-consumer-tests.log`.
|
||||
Five consumer regressions at that checkpoint were in [controls](../tests/nexus-choam-controls.test.ts) and [bots](../tests/nexus-choam-bots.test.ts). They exercised actual fixture-generated windows for all five supported effects, submitted source actions, the real cost-card inspector, Kull unavailable outside the new profile and reserved cards, stale events, actor/interrupt fences, private-field traps, all four policies, and unchanged printed actions. The combined consumer, existing Worthless/storm/movement/Gamont, Nexus guidance and reference selection passed **150/150** tests. Type-aware lint passed for owned code/tests at that checkpoint; its then-existing nine local links resolved. The log is `/tmp/dune-choam-consumer-tests.log`. This is preserved historical evidence, not a fresh check of the new Kull interaction.
|
||||
|
||||
Final integrated checks pass: **types, lint, all 4,042 offline tests, production build and 40 HTTP/session tests**. Thirty new cases cover the pure receipt, engine, consumers, independent saved-parent review and production SQLite matrices. Logs are `/tmp/dune-choam-{check,build,http}.log`.
|
||||
That checkpoint's integrated checks passed: **types, lint, all 4,042 offline tests, production build and 40 HTTP/session tests**. Thirty new cases covered the pure receipt, engine, consumers, independent saved-parent review and production SQLite matrices. Logs are `/tmp/dune-choam-{check,build,http}.log`. These results are not rerun totals or proof for the later Nexus Kull profile.
|
||||
|
||||
Two isolated three-seat browser rooms passed actual phone declarations, desktop/phone response inspection and all six private refreshes. `GDP8NNRE` version 4 allowed Baliset: the pending two-force movement was prevented, the three original source forces remained and the real Stunner payment was discarded. `WJTUH62T` version 5 canceled Jubba Cloak: Slip Tip stayed held, the Nexus stayed spent, and continuing the original storm removed four CHOAM and three opposing forces. No phone overflow or page errors were observed. `/tmp/dune-choam-restore.cjs` performs read-only private restoration checks.
|
||||
|
||||
The opening backup and final comparison preserve all **3,484** older room versions and state hashes. Only two browser rooms and thirty HTTP-test rooms were added, for 3,516 total. The existing server was reused; no hourly restart was due. Automation remains removed. These checks do not certify a complete six-effect CHOAM advantage or full module play.
|
||||
The opening backup and final comparison at that checkpoint preserved all **3,484** older room versions and state hashes. Only two browser rooms and thirty HTTP-test rooms were added, for 3,516 total. The existing server was reused; no hourly restart was due. Automation remained removed. Those historical checks did not certify a complete six-effect CHOAM advantage or full module play, and the later new-profile contract does not expand their evidence.
|
||||
@@ -48,7 +48,7 @@ Updated 30 September 2026. This is the authoritative navigation index for existi
|
||||
| Homeworld effects | Keep original payment/revival/placement identities and qualification observations; observations alone do not choose an occupied-benefit owner. | [Payments](HOMEWORLD_PAYMENT_INCOME_RULES.md), [card economy](HOMEWORLD_CARD_ECONOMY_RULES.md), [Collection](HOMEWORLD_COLLECTION_RULES.md), [revival deployment](HOMEWORLD_REVIVAL_DEPLOYMENT_RULES.md), [victory reinforcement](HOMEWORLD_VICTORY_REINFORCEMENT_RULES.md), [replacement](HOMEWORLD_REPLACEMENT_RULES.md), [Tupile](HOMEWORLD_TUPILE_INTELLIGENCE_RULES.md) |
|
||||
| Duke Vidal revival custody | The user selected set-aside custody after Ecaz revives the shared disc: revival clears the Tanks but does not itself grant battle control. Ecaz still needs a separate Ambassador or Nexus acquisition; only Ecaz may revive Duke, including by Ghola. This resolves one post-revival product interpretation, **not** the separate six-disc repeated-cycle, exceptional capture or battle-used Ghola questions. No publisher clarification assigning a post-revival controller was located. | [Publisher Ecaz/Moritani pp. 7–9](https://gamers-hq.de/media/pdf/0f/7a/86/Dune_EcazMoritani_Rulebook_EN.pdf#page=9), [revival readiness](ECAZ_DUKE_REVIVAL_READINESS.md) |
|
||||
| Mirror Weapon copied-card cleanup | The user selected ordinary winner retention for the physical Mirror even if its effective copy activates Tooth or Artillery. The original Tooth/Artillery cards retain their named mandatory-discard exceptions. This is a product interpretation, **not** a located publisher ruling. Independent copy-first Tooth/Stone choices and physical cleanup now have a bounded CHOAM/Richese-deck battle runtime; combined modules and full Richese games remain gated. | [Printed Mirror face and source audit](MIRROR_WEAPON_ENGINE_AUDIT.md#user-selected-cleanup-interpretation-28-september-2026) |
|
||||
| Kull Wahad preview timing | User selected a **distinct eligible counter** while the interrupted physical card stays reserved, and BG Worthless interception **before conversion/discard**. A declaration is pending; only successful settlement activates the stamped phase ban. Decline or prevention resumes the original once; success retains its unplayed card and special once-use. The explicit Basic/Advanced CHOAM-plus-classic preview excludes optional modules/Nexus, leaves older games unchanged and retains native exact-cost cancellation semantics. An unplayable sole-Karama winning overbid is privately guarded before costs; no auction remedy was approved. This is product policy, not publisher clarification; full CHOAM starts remain gated. | [Selected preview policy](CHOAM_KULL_SOURCE_UPDATE.md#user-selected-preview-timing--30-september-2026), [runtime and remaining limits](CHOAM_KULL_DESIGN.md) |
|
||||
| Kull Wahad preview timing | User selected a **distinct eligible counter** while the interrupted physical card stays reserved, and BG Worthless interception **before conversion/discard**. Pending declaration is not a ban; only success stamps turn/phase and retains original/special once-use. Decline or prevention resumes the original once. Old `kull` stays printed-only; fresh `nexus-kull` admits native CHOAM plus classic Basic/Advanced seats, CHOAM/Ix Treachery and Nexus alone, without physical Sandtrout. Nexus Use needs actual unallied CHOAM Nexus and canonical eligible own fuel: accepted declaration spends Nexus even if prevented, fuel stays held until success. Use requires source/event/card, with no old-source action shim or proactive Kull. Verified prior printed counter saves migrate only their selection binding; no new-choice retrofit. Reservations, promises and remaining winning-payment coverage constrain fuel/counters; ordinary retained Karama payment is not a canceled Cunning effect. Priority/custody/overbid are user policy; neutral timing/spend conventions are application policy. Bounded checks/CLI/runtime/phone cases pass; broader verification is Partial and no full/public/deployed gate opens. | [Selected preview policy](CHOAM_KULL_SOURCE_UPDATE.md#user-selected-preview-timing--30-september-2026), [source/cost boundary](NEXUS_CHOAM_RULES.md#kull-source-cost-and-action-boundary), [runtime and remaining limits](CHOAM_KULL_DESIGN.md), [new evidence](NEXUS_CHOAM_RUNTIME.md#five-part-status-for-the-new-interaction) |
|
||||
| Semuta full-hand exchange | User selected **Allow exchange**: acquisition followed by Semuta disposal is an atomic net-zero hand exchange at the faction limit. Existing incoming reservations still consume capacity; this does not permit an already overfull hand or settle Box/Richese purchase timing. | [Selected capacity policy](SEMUTA_SOURCE_UPDATE_20260907.md#user-selected-full-hand-exchange--30-september-2026) |
|
||||
|
||||
Shipment-only AND/OR now follows the FAQ's whole-question truth: Yes to AND
|
||||
|
||||
Reference in new issue
Block a user