Offer Semuta after clean winner battle discard

This commit is contained in:
Quintine committed 2026-09-30 08:48:20 +10:00
1 parent b3e4f1babb
commit 34390bb78b
9 files changed
+224 -49

No files matched your search

+15 -15
View File
@@ -9,21 +9,21 @@ Expansion starts and full rules/publication acceptance remain gated.**
The explicit [Semuta development preview](SEMUTA_SOURCE_UPDATE_20260907.md#30-september-2026--bounded-clean-discard-runtime)
pauses a clean public ordinary-card discard, used Box after paid search,
either clean Ornithopter retirement, public used Distrans after private
transfer, final definite Truthtrance or movement-order Juice of Sapho.
Every seat sees the same neutral offer independently of hidden Semuta
possession. An early-ended flight advances the queue; a completed
flight with no BG/Ecaz/Moritani entry reaction resumes its one
committed arrival after claim or decline. Private gifts, Truthtrance
history and Sapho's first/last queue remain intact. A holder with a
free hand slot can recover the fresh other-player discard and dispose
Semuta. Minimal legal AI, exact JSON/SQLite continuation and
competing-room CAS are connected. Phone width showed owned Commit
and rival Continue without a private card face. BG/Ecaz/Moritani
arrival compositions, auction/battle Sapho, queued or promise-bound
Truthtrance, competing transactions, multi-card and most other
producers, full-hand ordering, normal Richese starts and deployed
acceptance remain unfinished. Neutral passes and the free-slot guard
are product safety choices, not publisher rulings.
transfer, final definite Truthtrance, movement-order Juice of Sapho
or one winner-selected battle card with no pending reward. Every seat
sees the same neutral offer regardless of hidden Semuta possession.
An early-ended flight advances the queue; a completed flight without
BG/Ecaz/Moritani entry reaction resumes its one committed arrival.
Private gifts, answer history, Sapho order and resolved battle remain
intact through claim or decline. A holder with a free hand slot can
recover the fresh other-player discard and dispose Semuta. Minimal
legal AI, exact JSON/SQLite continuation and competing-room CAS are
connected. Phone width showed owned Commit and rival Continue without
a private card face. Mixed arrival reactions, auction/battle Sapho,
queued or promise-bound Truthtrance, multi-card/reward-pending battle
discards, other producers, full-hand ordering, normal Richese starts
and deployed acceptance remain unfinished. Neutral passes and the
free-slot guard are product safety choices, not publisher rulings.
One [natural Advanced Moritani assassination](MORITANI_ASSASSINATE_LEADERS.md#29-september-2026--natural-revealed-card-game)
now proceeds from genuine battle loss to a dead-target Traitor reveal,
+32
View File
@@ -1,5 +1,37 @@
# Dune implementation status
## 30 September 2026 — Semuta after one winner-selected battle card
The explicit Richese Semuta preview now pauses a clean single public
winner-selected battle-card discard after the battle result and
mandatory cleanup are committed. The played card is physically on
the ordinary discard pile; every seat sees the same neutral event.
An eligible holder may recover exactly that card and discard Semuta;
all-seat decline leaves it in place. Neither path re-resolves battle,
re-awards casualties or bounty, nor lets an old card be claimed.
The existing `battleCleanup` frame retires before `finishBattle`
continues the phase once.
Genuine setup exercises a real two-combatant plan and traitor call,
mandatory loser-card retirement, optional winner discard, legal AI
claim, all-seat decline, physical card census and JSON views. An
isolated migrated SQLite room restores the pending reaction without
auto-advancing, authenticates the claim and preserves seat rows.
Multi-card winner selection, Moritani loser retention and pending
battle rewards remain automatic without Semuta; full-hand ordering,
normal Richese starts and deployed acceptance remain gated.
Independent rule/continuation and privacy/recovery reviews found no
scoped defect. A direct production-engine run completed genuine AI
setup, battle preparation and plans, a public winner discard, neutral
offer and bot claim without replaying the recorded winner. Phone-width
rules rendered the battle boundary as Partial. A recovery assertion
that searched the entire observer view for an earlier public card ID
was too strict; it now checks that the current recipient hand is not
projected. `npm run check` passed typecheck, lint and 5,809/5,809
offline cases; `npm run build` and all 55 Vite development HTTP
cases passed. No deployed revision was exercised.
## 30 September 2026 — Semuta after a clean completed Ornithopter flight
The explicit Richese Semuta preview now pauses a completed range-three
+9 -8
View File
@@ -12,7 +12,7 @@ Audited 6 September 2026. The ten physical identities and their readable face in
- Player controls show both original plans, exact undialed counts or honest possible totals, the mode choice and a complete internal guide. No victim/death confirmation is added. The card stays physically reserved until standard cleanup; stale events, duplicate requests and corrupted source custody fail before resources change. All four AI profiles use public force possibilities, legal low-dial plans and revealed leader/bounty information. They preserve leader value when Artillery suppresses bounty and leave traitor/explosion precedence intact.
- Semuta Drug now has an explicit bounded development preview for clean public ordinary-card, paid Box, either clean Ornithopter retirement, completed private Distrans, final definite Truthtrance and movement-order Sapho discards; private gifts, unresolved promises, BG/Ecaz/Moritani arrival reactions and auction/battle Sapho are not fresh targets. Other producers, full-hand ordering and normal Richese starts remain unfinished. Mirror Weapon and Juice of Sapho have separate bounded paths, not complete combined-mode certification. Other unfinished faction/module systems, mobile acceptance, difficulty-strength calibration and complete Advanced/expansion games still prevent goal completion. No start gate was removed.
- Semuta Drug now has an explicit bounded development preview for clean public ordinary-card, paid Box, either clean Ornithopter retirement, completed private Distrans, final definite Truthtrance, movement-order Sapho and one winner-selected battle-card discard; private gifts, unresolved promises, BG/Ecaz/Moritani arrival reactions, auction/battle Sapho and multi-card/reward-pending battle batches are not fresh targets. Other producers, full-hand ordering and normal Richese starts remain unfinished. Mirror Weapon and Juice of Sapho have separate bounded paths, not complete combined-mode certification. Other unfinished faction/module systems, mobile acceptance, difficulty-strength calibration and complete Advanced/expansion games still prevent goal completion. No start gate was removed.
The complete integrated validation checkpoint is recorded in [IMPLEMENTATION_STATUS.md](IMPLEMENTATION_STATUS.md).
@@ -113,10 +113,11 @@ explicitly opted-in Richese development profile. Neutral all-seat
responses, physical one-card recovery, a provisional free-slot guard,
minimal legal AI and saved continuation now work after clean public
ordinary-card discards, the used Box after a paid search, early-ended
Ornithopter or completed flight with no BG/Ecaz/Moritani entry reaction,
clean private Distrans, final definite Truthtrance and movement-order
Sapho after its first/last queue is committed. Queued questions,
promise-bound answers, reactive completed arrivals, auction/battle
Sapho and other semantic discard families remain unconnected; full-hand
ordering, ten-card inventory, cache custody and public expansion start
gate are unchanged.
Ornithopter or completed flight without reactive entry factions,
clean private Distrans, final definite Truthtrance, movement-order
Sapho and a single winner-selected battle discard without pending
rewards. Queued questions, promise-bound answers, reactive completed
arrivals, auction/battle Sapho, multi-card and reward-pending battle
batches and other semantic discard families remain unconnected;
full-hand ordering, ten-card inventory, cache custody and public
expansion start gate are unchanged.
+8
View File
@@ -35,6 +35,14 @@ sources. The final forces and move counter are held in the existing
bound flight frame; claim or decline retires that frame and logs the
arrival once. Mixed entry reactions remain unsupported for Semuta.
A single winner-selected public played card now pauses on the existing
`battleCleanup` frame after the battle is resolved and any earlier
mandatory discard has retired. Its winner, combatants and card custody
remain bound while every seat receives a neutral offer; claim or
decline retires the frame before `finishBattle` runs once. Multiple
cards, Moritani loser retention and pending Auditor, capture, tech,
Face Dance or CHOAM rewards remain automatic without this reaction.
## Main findings
A post-`applyAction` pile diff cannot implement immediate Semuta. Ix Ambassador and Ixian ally replacement discard then draw directly. Ordinary Karama cancellation/purchase can reach replacement, Harkonnen bonus or a new auction pool indirectly. A stopped frame must resume at a named stage, never rerun its original public action.
+17 -16
View File
@@ -65,17 +65,17 @@ The explicit `semuta` development profile starts a fresh Richese roster
without opening ordinary expansion starts. It interrupts **one public
ordinary-card discard, the used Box after a paid Nullentropy search,
either retirement of a played Ornithopter in a clean flight, the used
Distrans after a private transfer, a final definite Truthtrance after
its answer is bound, or movement-order Juice of Sapho after its queue
is committed**, provided the parent transaction is clean. Every seat
sees a neutral fresh-discard opportunity regardless of hidden Semuta
possession. An early-ended Ornithopter advances its saved movement
queue; a completed flight has already committed its forces and
resumes its one arrival afterward only in a roster without BG
intrusion, Ecaz Ambassador or Moritani Terror entry reactions.
Distrans's transferred card stays private with its recipient and is
not a fresh target. Truthtrance's public answer/history and Sapho's
first/last queue and protected Guild-last choice are already committed.
Distrans after a private transfer, a final definite Truthtrance,
movement-order Juice of Sapho, or one winner-selected battle card
without pending battle rewards**, provided the parent transaction is
clean. Every seat sees a neutral fresh-discard opportunity regardless
of hidden Semuta possession. An early-ended Ornithopter advances its
saved movement queue; a completed flight has committed its forces
and resumes its one arrival only without BG, Ecaz or Moritani entry
reactions. Distrans's gift stays private with its recipient. The
Truthtrance answer/history and Sapho first/last queue are bound.
The chosen winner battle card is already in the public discard; its
resolved battle and remaining phase transition resume once.
Each seat can Continue; only the canonical holder with a free hand
slot and a card discarded by another player can commit. The sole
@@ -93,11 +93,12 @@ free-slot requirement is a provisional safety guard, not the printed
resolution of full-hand take-before-discard. Auction, CHOAM market,
pending gifts, competing responses, completed Ornithopter arrivals
with BG intrusion, Ecaz Ambassador or Moritani Terror, queued or
promise-bound Truthtrance, auction/battle Sapho and other typed
discard producers retain their automatic continuation; Semuta cannot
claim those events yet. The completed Box's selected search card
stays private and its paid shuffle is not repeated when another seat
takes the used Box. No source ruling is inferred from this omission. The
promise-bound Truthtrance, auction/battle Sapho, multi-card or
reward-pending battle discards and other typed producers retain
their automatic continuation; Semuta cannot claim those events yet.
The completed Box's selected search card stays private and its paid
shuffle is not repeated when another seat takes the used Box.
No source ruling is inferred from this omission. The
separate [reaction privacy audit](SEMUTA_PRIVACY_REVIEW.md) explains why
auto-closing only when nobody secretly holds the card would leak
possession. The main game and public expansion gates remain closed.