Scope Advanced Kull to the attempted Karama effect
Adopt the supplied Advanced specific-effect wording, preserving Basic and legacy phase-wide semantics. Bind signed semantic purposes through ordinary/special activations, counters, feasibility and settlement; retain unrelated human controls and minimal bot actions. Phase expiry remains provisional; prior counter, BG and deferred-overbid choices stay. Validation: frozen12-file111/111, types/lint/build and two original-action/rendered-table programmes. Explicit unopened deal/auction/spice order supports real paid Baliset and shipments; Advanced retains Karama for Baliset cancellation while Basic stays blocked. Four minimal policies remain legal. Correct stale exchange/phase-market/Fremen fixture assumptions. Recovery schema expectations maintained without running deferred SQL assurance. No full modes, browser/deployed acceptance, saved-game/reset/restart or deployment operation.
This commit is contained in:
1 parent
b82441c834
commit
884a09fa92
24 files changed
+951
-64
No files matched your search
@@ -2,6 +2,64 @@
|
||||
|
||||
Source audit: 2026-09-06; opt-in preview contract updated 30 September 2026. This is an engineering and product-policy record, not a rules-completion claim. The source audit in [CHOAM_REMAINING_RULES.md](CHOAM_REMAINING_RULES.md) remains applicable. The user-approved counter and BG choices supersede the original proposal; publisher-source uncertainty and full expansion gates remain.
|
||||
|
||||
## Advanced effect scope — 18 October 2026
|
||||
|
||||
New Advanced attempts use the supplied rulebook’s specific-effect scope;
|
||||
[exact source and duration interpretation](CHOAM_KULL_SOURCE_UPDATE.md#advanced-specific-effect-scope--18-october-2026).
|
||||
Basic and previously unstamped pending/settled frames retain all-purpose phase
|
||||
scope. The older phase-wide descriptions below apply to that path.
|
||||
|
||||
`game/kull-purpose.ts` defines finite semantic keys and readable labels.
|
||||
`KullPhaseRestriction.purpose` and the signed pending frame’s optional `purpose`
|
||||
select the new scope. Omission retains the original meaning. Four-argument
|
||||
`kullBlocksKarama` asks only about an all-purpose ban; a fifth key checks that
|
||||
ban or the matching effect. Active restriction copies retain keys and exact
|
||||
same-effect duplicates reject. Source feasibility and final settlement use the
|
||||
same restriction factory; all committed activations check the intended effect.
|
||||
|
||||
`GameView.karamaBlocked` remains only the all-purpose message. Its own
|
||||
`karamaPurposeBlocks` lists `{purpose,label,message}` for active scoped effects.
|
||||
`kullReaction` adds public `scope: effect | phase` and a readable effect name,
|
||||
without exposing the private intent payload. Response controls, auction payment,
|
||||
shipment pricing and faction specials consult the same scope. No restriction
|
||||
removes physical ownership or legal nonactivation transfers/discards.
|
||||
|
||||
Genuine-action fixtures select the unopened original deal and unopened Baliset/
|
||||
Spice positions explicitly, then use real setup, normal1 purchase, CHOAM1
|
||||
shipment, Kull, normal desert shipment and ground movement. No postdeal hand,
|
||||
wallet, force or clock is installed. Advanced can use the retained original to
|
||||
cancel native Baliset in the same phase; Basic keeps its broad ban. Separate
|
||||
controlled intent tests check Emperor variants, purchase/payment and original
|
||||
unstamped semantics. These are not full combinations or persistence assurance.
|
||||
|
||||
Frozen **12 files111/111**, types/lint/build and two original-action/rendered-table
|
||||
programmes pass. Basic uses62 source+8 continuation actions; Advanced70+14.
|
||||
Actual Baliset1 purchase, CHOAM1 city shipment and normal desert2 shipment lead
|
||||
to the real Baliset response. Advanced’s retained original cancels it, while
|
||||
Basic’s unavailable control stays disabled. All four minimal policies legally
|
||||
pass that response; no strategy calibration. Controlled intent tests also prove
|
||||
shared purchase/payment and Emperor variants, different special/cancellation
|
||||
use, and the original unstamped frame behavior.
|
||||
|
||||
The source-bound aggregate is outside Git at
|
||||
`~/.local/share/dune/checkpoints/20261018-kull-purpose/frozen-integrated-final/report.json`:
|
||||
base `b82441c834ebf6c59a3b09a22a4e8821f4b7ccf8`, source tree
|
||||
`7624106ac78c036d15c74ef3a226b4dfea52e51cfebe7b36f378c10736fea177`.
|
||||
All passed checks bind that exact source. The first union exposed two fixture
|
||||
expectations (forced Harkonnen return and an obsolete Fremen Cunning fence);
|
||||
those repaired cases passed before the frozen union. The initial native case
|
||||
also corrected a final active-seat assumption at CHOAM’s real phase-end market.
|
||||
Types caught one nullable fixture guard. The external table smoke’s Basic
|
||||
expectation and enabled-button matcher were then corrected; only that smoke was
|
||||
rerun on the unchanged tree, preserving the earlier successful check reports.
|
||||
Only checkpoint prose/reference evidence changed afterward.
|
||||
|
||||
Recovery schema expectations were maintained but SQL assurance was not run.
|
||||
Runtime table rendering uses framework aliases/CSS stubs and does not establish
|
||||
visual/browser/deployed behavior. Original Nexus/alias programmes, wider
|
||||
combinations, full modes and comprehensive assurance remain due. No saved-game/
|
||||
database/reset/restart or deployment operation occurred.
|
||||
|
||||
## Authoritative boundary
|
||||
|
||||
[GF9 CHOAM & Richese rulebook](https://www.gf9games.com/dune/wp-content/uploads/2021/11/CHOAM-Rulebook-low-res.pdf), printed p. 7: Kull reacts to an attempted Karama play and prevents that player from playing Karama for the phase. Printed p. 12 permits Karama to prevent CHOAM's special-effect discard of a Worthless card during that phase. These clauses establish both directions of interaction, but do not specify a nested-response protocol.
|
||||
@@ -65,7 +123,7 @@ The pure [Kull module](../game/choam-kull.ts) owns `KullPhaseRestriction`, `acti
|
||||
|
||||
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, 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.
|
||||
The consumer interface is `GameView.kullReaction`: `null` or `{ event, player, target, intent, scope, effect, 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 shared interception warning and `nexusKullPreview` identifies the new source capability.
|
||||
|
||||
|
||||
@@ -2,6 +2,47 @@
|
||||
|
||||
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.
|
||||
|
||||
## Advanced specific-effect scope — 18 October 2026
|
||||
|
||||
The authorized supplied Advanced rulebook, physical29/logical27, describes
|
||||
preventing the attempted Karama for a **specific effect**, with a reference to
|
||||
physical16/logical14. It omits the publisher CHOAM rule’s phase-wide wording.
|
||||
The referenced Karama rules distinguish advantage cancellation, shipment pricing,
|
||||
free Treachery purchase and a faction special. This is a supplied-source cutover,
|
||||
not a newly located GF9 clarification. Basic retains the publisher-wide scope.
|
||||
|
||||
New Advanced Kull attempts bind the interrupted semantic purpose. Successful
|
||||
settlement restricts that purpose for the remainder of the turn/phase; another
|
||||
Karama purpose remains usable. **Effect-specific scope is sourced; phase expiry
|
||||
is provisional**, composed with the publisher duration under the 14 October
|
||||
choose-recommended policy. No text was found that specifies a replacement expiry.
|
||||
|
||||
| Attempt | Bound effect |
|
||||
| --- | --- |
|
||||
| Guild-price shipment | `shipment-price`, independent of beneficiary, amount and route |
|
||||
| Immediate free purchase / winning Karama payment | Shared `auction-free-purchase` |
|
||||
| Faction special | `special:<actual faction>`; Emperor force/leader and Guild route variants share one key |
|
||||
| Cancel a native ability | Canonical response power; native/enhanced Prescience and advisor conversion share keys |
|
||||
| Cancel a CHOAM Worthless ability | The actual effect, so Baliset and Kull are distinct |
|
||||
| Cancel special-force strength | The affected faction’s strength advantage |
|
||||
|
||||
Guild price and cross/return permission remain distinct powers; so do advisor
|
||||
accompaniment/conversion and own/allied worm protection. No key contains a
|
||||
physical card, hidden plan, price, force quantity, route or recipient. Substituted
|
||||
and printed Karama for the same effect share the restriction.
|
||||
|
||||
Each new Advanced pending frame signs its purpose before costs; original CHOAM
|
||||
parents are derived through the saved original context, not the temporary Kull
|
||||
counter declaration. Existing unstamped pending frames and restrictions retain
|
||||
the original all-purpose scope. No played save is rewritten. Own table guidance
|
||||
names scoped restrictions; unrelated controls and legal minimal policies remain
|
||||
available. Neutral offers still appear without an eligible Kull cost.
|
||||
|
||||
The explicit distinct-counter, BG-before-conversion and **Defer interaction**
|
||||
overbid selections remain. This does not open any profile, module, full-faction
|
||||
or publication gate. [Current implementation/proof boundary](CHOAM_KULL_DESIGN.md#advanced-effect-scope--18-october-2026)
|
||||
tracks the connected function separately from historical broad assurance.
|
||||
|
||||
## Native fixture integration maintenance — 16 October 2026
|
||||
|
||||
The BG Semuta-cost integration selection exposed three stale Nexus Kull
|
||||
|
||||
@@ -16,6 +16,32 @@ open mode gates.
|
||||
|
||||
|
||||
## Current checkpoint and work
|
||||
**Advanced Kull effect scope — 18 October. Prototyped / Partial.** New
|
||||
Advanced attempts adopt the supplied specific-effect wording. Basic and
|
||||
unstamped older pending/settled restrictions remain all-purpose. Semantic keys
|
||||
keep another effect available, normalize purchase/payment and native variants,
|
||||
and bind the original CHOAM parent rather than its temporary Kull counter.
|
||||
Retaining phase expiry is explicitly provisional; prior counter/BG/deferred
|
||||
winning-overbid choices remain.
|
||||
|
||||
Two disjoint implementation lanes, bounded source review and owner integration
|
||||
pass **12 files111/111**, types/lint/build and two original-action/rendered-table
|
||||
programmes. Selected unopened deal/auction/Spice positions use62 Basic/70
|
||||
Advanced source actions plus8/14 continuations: actual Baliset1 purchase,
|
||||
CHOAM1 city shipment, Kull, normal desert2 shipment and real movement. Advanced
|
||||
cancels Baliset with the retained original; Basic keeps it unavailable. Four
|
||||
minimal policies legally pass the different-effect response; no tuning.
|
||||
|
||||
Feedback corrected fixture assumptions about automatic Harkonnen return,
|
||||
CHOAM’s phase-end market and already-supported Fremen Cunning, plus one nullable
|
||||
fixture guard. The external smoke was repaired to distinguish disabled actions
|
||||
from enabled ones and CSS classes from actual attributes; only that smoke was
|
||||
rerun after types/lint/build, against identical source. Recovery expectations
|
||||
were updated without running deferred SQL assurance. Original Nexus/alias/wider
|
||||
combinations, full modes, final assurance and browser/deployed acceptance remain
|
||||
open. No saved-room/database/reset/restart/deployment operation.
|
||||
[Source cutover and exact proof](CHOAM_KULL_DESIGN.md#advanced-effect-scope--18-october-2026).
|
||||
|
||||
**Recovered Hajr replay — 18 October. Prototyped / Partial.** The deck contains
|
||||
one Hajr. Real paid Box recovery now permits playing that same held card again,
|
||||
counting one extra allowance per accepted use. Advanced needs a fresh completed
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
# Dune implementation status
|
||||
|
||||
## 18 October 2026 — Advanced Kull specific-effect scope
|
||||
|
||||
New Advanced attempts now restrict the semantic Karama effect named by the
|
||||
supplied source; Basic/unstamped frames retain their original broad phase scope.
|
||||
Other effects remain usable through connected engine validation, counters,
|
||||
feasibility, own guidance, human controls and legal bots. Purpose keys normalize
|
||||
purchase/payment and native variants without binding private card/route/amount
|
||||
choices. Phase expiry remains an explicit provisional composition; previous
|
||||
counter/BG/deferred-overbid selections and preview/publication gates stay.
|
||||
|
||||
Two disjoint lanes plus bounded source review and owner integration pass12-file
|
||||
111/111, types/lint/build and two real-action/rendered-table programmes.
|
||||
Selected unopened deal/auction/Spice order uses62 Basic/70 Advanced source plus
|
||||
8/14 continuation actions, with actual Baliset1 purchase and paid shipments.
|
||||
Advanced’s retained original cancels Baliset; Basic keeps cancellation blocked.
|
||||
Four minimal policies legally pass. Feedback corrected stale/automatic fixture
|
||||
expectations and nullable typing; the external enabled-control matcher was
|
||||
repaired and rerun alone on the same verified source. No code changed afterward.
|
||||
[Canonical source, exact proof and limits](CHOAM_KULL_DESIGN.md#advanced-effect-scope--18-october-2026).
|
||||
Recovery schema assertions were maintained without running deferred SQL audits.
|
||||
Original Nexus/alias programmes, wider combinations, full modes/assurance and
|
||||
browser/deployed acceptance stay open. No saved-room/reset/restart/deployment.
|
||||
|
||||
## 18 October 2026 — Recovered physical Hajr replay
|
||||
|
||||
The original inventory has one Hajr; genuine paid Box retrieval now allows that
|
||||
|
||||
@@ -76,7 +76,12 @@ The API uses `kullReaction.plays`, not a bare `cards` list. Each private choice
|
||||
|
||||
**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.
|
||||
New Advanced Kull attempts adopt the supplied specific-effect scope with
|
||||
provisional phase expiry. Basic and unstamped older attempts/restrictions retain
|
||||
phase-wide scope. Cunning changes fuel, not the selected effect’s scope. See the
|
||||
[18 October source cutover](CHOAM_KULL_SOURCE_UPDATE.md#advanced-specific-effect-scope--18-october-2026).
|
||||
|
||||
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 using the Basic/legacy broad or new Advanced effect scope above. 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
|
||||
|
||||
|
||||
@@ -843,6 +843,7 @@ dedicated retrieved worked FAQs. [Contract and remaining limits](HOMEWORLD_OCCUP
|
||||
| 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 living set-aside custody after Ecaz revives Duke; a separate Ambassador/Nexus acquisition grants battle control. Only Ecaz may revive him, including Ghola. Native repeated returns now use the separately labelled provisional identity-cohort policy, not a new publisher example or user number. Captured scope and broad combinations remain separately bounded. | [Selected custody](ECAZ_REVIVAL_RULES.md#selected-product-interpretation-28-september-2026), [current cohort policy](ECAZ_REVIVAL_RULES.md#identity-tracked-repeated-cohorts--14-october-2026) |
|
||||
| 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) |
|
||||
| Advanced Kull specific effect | Supplied physical29/logical27 restricts the attempted Karama for a specific effect, unlike publisher Basic phase-wide wording. New signed Advanced attempts bind semantic purpose; purchase/payment and native special variants normalize, as do enhanced Prescience/advisor conversion. CHOAM effects and special-force faction powers stay distinct. Retaining turn/phase expiry is explicit provisional composition under the 14 October policy, not supplied wording. Legacy unstamped pending/restriction frames retain broad scope. Prior distinct counter, BG-before-conversion and deferred overbid selections stay. | [Source cutover and keys](CHOAM_KULL_SOURCE_UPDATE.md#advanced-specific-effect-scope--18-october-2026), [connected implementation and limits](CHOAM_KULL_DESIGN.md#advanced-effect-scope--18-october-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**. 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) |
|
||||
| Semuta / native Basic Terror | Fresh local `semuta` additionally admits Basic Richese/Moritani plus classics, CHOAM/Ecaz decks and no optional modules. Private Sabotage/Robbery overflow after clean ordinary shipment/movement arrivals uses the existing neutral all-seat response and committed-only face access. Original victim/draw, removed token, payment, forces and optional gift remain original. Other arrival parents, Advanced Moritani and wider family mixtures remain implementation boundaries, not printed Semuta prohibitions. | [Source and bounded evidence](SEMUTA_SOURCE_UPDATE_20260907.md), [native suffix](TERROR_DISCARD_CONTINUATIONS.md) |
|
||||
|
||||
Reference in new issue
Block a user