Preserve native Ixian casualties and Moritani retention across Semuta

This commit is contained in:
Quintine committed 2026-10-12 06:13:47 +11:00
1 parent a6869b0166
commit 74768647f4
14 files changed
+879 -9

No files matched your search

+21
View File
@@ -29,6 +29,27 @@ optional skill bands, combinations and public expansion starts remain open.
Rules implementation continues; comprehensive assurance and administration
remain deferred until all rules are implemented.
**Semuta / native casualty and retention continuations — 11 October.**
Mandatory loser discards now react while the original compulsory winner card
remains reserved. Native Ixian casualties/substitution still finish before
the used winning Tooth becomes its own fresh target. Basic native Moritani
additionally admits preceding compulsory/optional winner batches and completed
unkept allied-card disposal, preserving its original choice, Karama response,
kept card and played-card pool. Existing canonical aftermath validation and
reciprocal alliance checks bind the pending native opportunity; pending Ixian
substitution, `battleResolved` with retention, Advanced Moritani and Nexus
retention remain guarded. No module/profile or mode gate changed.
Targeted cases fail before and pass after; 162 affected unit cases across
thirteen files pass. Eighty-six isolated runtime cases prove both native modes,
actual ordering, claim/pass/four legal profiles, typed substitution/decline and
original cancellation. Real390px tables claim Snooper, confirm1/1 and inspect
the final Ixian counters; native Basic retention declines, commits and selects
Maula Pistol from two fresh cards. Both reach original phase7 with no overflow
or repeated effect. Types/lint passed; one fixture narrowing and the obsolete
Hero timing assumption were repaired rather than changing native behavior.
See [native retention contract](MORITANI_ALLY_RETENTION_RULES.md#semuta-composition--11-october-2026)
and [Semuta ordering evidence](SEMUTA_SOURCE_UPDATE_20260907.md#30-september-2026--bounded-clean-discard-runtime).
**Semuta / original native Tech — 11 October.** Fresh three-through-six-seat
Basic/Advanced Richese games with CHOAM and optional Ix now retain original
unused Tech under existing native roster prerequisites. Printed and first-Storm
+49
View File
@@ -1,5 +1,54 @@
# Dune implementation status
## 11 October 2026 — native casualty and allied-retention Semuta continuations
Two disjoint native slices supply genuine setup fixtures and consumer-visible
regressions; one owner integrates shared engine, table and guidance changes.
The actual Ixian blocker was the original compulsory-winner queue, not a
discard inside active substitution: loser disposal precedes winner casualties,
then native substitution/decline precedes winning used Tooth disposal. Allowing
that initial resolved-battle batch preserves the reserved Tooth and optional
Shield. The pending Ixian-substitution exclusion stays intact.
Basic native Moritani now admits winner compulsory/optional batches before the
original choose-stage retention and its completed unkept-card batch afterward.
Existing canonical aftermath validation plus reciprocal alliance binds the
preceding native opportunity. The original selected kept card, unrelated hand
card and a newly acquired winner card never enter another claim/retention pool.
Native Karama finishes before final disposal. All losing played cards are
reserved here, so `battleResolved` with retention remains gated, as do Advanced
native Moritani and Nexus retention. No original handler, source ruling,
module/profile composition or public mode gate is changed.
Types/lint pass; 162 unit cases across thirteen affected files pass. The initial
native cases reproduce missing offers. A test fixture lacked a physical rival
Karama but expected its response; conserving one original Karama repairs that
fixture. A nullable-shape assertion became a public no-reaction assertion and
one captured union narrowing was repaired. The original Hero consumer test now
passes the preceding loser offer before claiming the later reserved Hero;
the former immediate-Hero assumption was obsolete, not an engine regression.
Setup/default-copy tests and the proposed malformed-save campaign were removed.
Forty-eight Ix runtime cases cover both modes, both fresh boundaries,
claim/pass/four legal profiles and substitution/decline; four more cancel
the original exchange with a real rival Karama. Typed counters, payment,
casualties, winner and physical Treachery inventory remain intact once.
Thirty-four Moritani cases cover keep either/none, both preceding winner
frames, claim/pass/four legal profiles and native enemy/ally allowance/cancel.
The first throwaway probe mixed IDs from independently shuffled fixtures;
binding each action to its actual fixture corrected that probe only.
Real GameTable at390px claims Snooper, confirms1Suboid/1Cyborg, allows native
Karama, completes later Tooth acknowledgements and keeps Shield. Actual force
inspection shows board1Suboid+1Cyborg, Tanks1Suboid and reserves17 at the original
phase7 Ix opening, with Snooper still Richese-owned. Basic native retention
declines, commits and privately selects Maula Pistol from two fresh cards, then
reaches phase7 without another retention choice. Both surfaces have no
horizontal overflow. Warning, card tooltips, internal reference and contracts
match these boundaries. Temporary probes/services/tabs removed; existing games,
storage, user PDF and deployment untouched. Complete Semuta/mode acceptance
remains unfinished.
## 11 October 2026 — original native Tech after Semuta battle discards
The fresh CHOAM/optional-Ix Semuta entry now retains original unused Tech at
+23
View File
@@ -104,3 +104,26 @@ The engine now implements this flow with `moritaniRetention` and the shared `can
`spendKarama` and `cashInCards` reject reserved cards, including during winner cleanup and nested Worthless conversion. The interface and bot response choices also honor the reservation. A public declared-card projection enables response-stage inspection without exposing unrelated hand contents. The linked internal reference and general battle-card guide now explain the exception.
Eighteen focused real-battle/server tests and five AI tests cover the integrated ability. The full suite reached935 passes;45 persisted multiplayer checks, TypeScript, lint and build passed. Independent review additionally exercised both nested Worthless cancellation and counter-cancellation through JSON reloads. Desktop browser QA completed declaration, response refresh and final exact-card settlement in S85SLVRR. Complete Moritani/expansion acceptance remains unfinished and faction starts remain gated.
## Semuta composition — 11 October 2026
The existing Basic Richese/Moritani CHOAM/Ecaz entry now offers Semuta after
completed native allied-card disposal. The losing ally's original choice and
native Karama response finish first; only unkept played cards form the fresh
batch. A sole card completes automatically after commitment; multiple cards
require one private selection. Kept and unrelated hand cards remain unavailable.
Compulsory/optional winner-card batches may also pause before the original
choose-stage retention. Existing aftermath validation and reciprocal alliance
checks preserve that native opportunity. A loser acquiring the winner's card
through Semuta cannot add it to the original played/eligible pool. All losing
played cards are reserved in this envelope, so no losing `battleResolved`
batch precedes retention; that distinct pending-retention path stays gated.
Advanced native Moritani and Nexus/Skills compositions are not opened.
Thirty-four isolated runtime cases cover keep either/none, claim/pass/four legal
AI profiles, both preceding winner batches and original enemy/ally Karama
allowance or cancellation. Actual GameTable at390px declines native retention,
commits Semuta, privately selects Maula Pistol from two fresh cards and reaches
phase7 without another retention choice or horizontal overflow. No source
ruling, original native behavior outside the Semuta entry or public gate changed.
+13 -1
View File
@@ -202,7 +202,19 @@ once. Native capture, Face Dance, quoted CHOAM force income and Auditor remain
pending across the offer; original native Tech is also supported in the fresh
three-to-six-seat CHOAM/optional-Ix entry. Token custody stays unchanged until
card cleanup completes and the original winner takes one loser-owned token,
still before Face Dance. Other rewards remain automatic without Semuta.
still before Face Dance. The original compulsory winner-card queue may remain
reserved during the earlier loser batch. Native Ixian casualties/substitution
finish before the used winning Tooth becomes its own later fresh discard.
Basic native Moritani additionally admits preceding compulsory/optional winner
batches with the original choose-stage allied retention still pending, then
the completed `battleCleanup` with `source: 'moritani'`. The chosen kept card
never enters that batch. Native Karama finishes first; claim/pass neither
re-offers retention nor expands its original played-card pool. Canonical
aftermath validation and reciprocal alliance bind the preceding native choice.
`battleResolved` with pending retention, Nexus retention, Advanced native
Moritani and a pending Ixian substitution remain outside this bounded offer.
Other rewards remain automatic without Semuta.
The explicit Richese preview also accepts a fresh physical Ix deck.
Clean Thumper disposal stages `thumperDiscard` before `blowSpice`
+29
View File
@@ -636,3 +636,32 @@ claims Hunter Seeker, offers Axlotl Tanks/Heighliners to Atreides, takes only
Heighliners, then restores Tleilaxu's Decline Face Dancer control. Phase7 original
Ix opening retains the card and all three owners with no horizontal overflow.
This is local changed-path evidence, not complete Semuta or deployed acceptance.
**11 October 2026 — native casualties and allied retention.** A completed
mandatory loser-card batch may now offer Semuta with the original compulsory
winning-card queue still reserved. Native Ixian casualty settlement and
one-for-one substitution keep their original position before the winning used
Tooth is physically discarded. That later Tooth is a separate fresh opportunity
before optional Shield cleanup, not an early target at the first reaction.
The pending Ixian-substitution guard remains: no actual discard was moved into
that active decision. Forty-eight runtime scenarios cover both modes, both
discard boundaries, claim/pass/four legal profiles and substitution/decline;
four more preserve the native rival Karama cancellation instead of substituting.
Actual 390px GameTable claims Snooper, confirms1/1, allows the original power,
retires the later Tooth offer and keeps Shield. The force inspector proves
Arrakeen1Suboid+1Cyborg, Tanks1Suboid, reserves17, with the claimed Snooper still
held at phase7 original Ix opening and no horizontal overflow.
The Basic native Moritani entry now offers its completed unkept-card batch,
plus preceding compulsory/optional winner batches while the original native
choose-stage retention remains pending. Existing canonical aftermath validation
and reciprocal alliance checks preserve the original choice. Kept/unrelated
cards and a newly Semuta-acquired winner card cannot enter its original pool.
Native Karama still finishes first; taking one fresh card cannot repeat the
choice, combat or bounty. `battleResolved` with pending retention, Advanced
native Moritani and Nexus retention remain separate. Thirty-four runtime cases
cover keep either/none, claim/pass/four legal profiles, both preceding winner
frames and original enemy/ally Karama allowance/cancellation. Real390px table
declines native retention, commits and privately selects Maula Pistol from the
two fresh cards, then reaches phase7 without re-offering retention or overflow.
These are local bounded continuation proofs, not complete Semuta/mode acceptance.