Prototype neutral Semuta reactions on clean ordinary discards

This commit is contained in:
Quintine committed 2026-09-30 01:07:03 +10:00
1 parent 55b47ce039
commit 9ea50a792e
18 files changed
+908 -20

No files matched your search

+13
View File
@@ -6,6 +6,19 @@ Expansion starts and full rules/publication acceptance remain gated.**
## Current checkpoint and work
The explicit [Semuta development preview](SEMUTA_SOURCE_UPDATE_20260907.md#30-september-2026--bounded-clean-discard-runtime)
now pauses a clean public ordinary-card discard with the same neutral
offer for every seat, independently of hidden Semuta possession. A
holder with a free hand slot can commit to the one fresh other-player
card; its physical claim and Semuta disposal resume the original
effect once. All-seat decline, four minimal legal AI profiles, exact
JSON/SQLite continuation and competing-room CAS are connected. Phone
width showed the owned Commit control and the identical rival Continue
event without a private card face. Multi-card and other discard
producers, full-hand ordering, normal Richese starts and deployed
acceptance remain unfinished; the neutral passes and free-slot guard
are product safety choices, not publisher timing 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,
face-up retirement and private Mentat replacement. The six-seat game
+43
View File
@@ -1,5 +1,48 @@
# Dune implementation status
## 30 September 2026 — neutral Semuta clean-discard prototype
The [bounded runtime](SEMUTA_SOURCE_UPDATE_20260907.md#30-september-2026--bounded-clean-discard-runtime)
uses an explicit fresh Richese development profile. A real Hajr discard
after genuine setup opens an identical public event for all seats;
only the actual holder sees Commit, no one inspects a fresh face
before commitment, and the sole eligible other-player card transfers
automatically with Semuta's physical disposal. All-seat passes preserve
the card and effect. Free hand space is a conservative, provisional
guard. Other discard producers and full-hand sequencing remain
unfinished; normal Richese/public starts remain closed.
Focused engine cases preserve exact custody through JSON, hide possession
under an equal-card-count private swap, reject stale/forged actions and
corrupt saved reactions, and complete each original effect once.
An isolated production room module with migrated SQLite restored the
same owner-private offer and committed one of two competing Semuta
requests under room CAS; the fixture's seat rows remained intact.
The actual `start-prototype.ts --profile semuta` CLI started a fresh
disposable ready lobby with its seat preserved. Mobile browser GET
fixtures showed the owned Commit button and rival Continue-only panel
at the same event; no browser POST or real local room was mutated.
Independent privacy review found no scoped leak. Rules review identified
and prompted fixes for a deleted-reaction auto-retire, duplicate
Semuta custody, a suspended CHOAM sale crossing the clean gate, and a
forged all-passed deadlock. Deleted-reaction, duplicate-card and
all-passed corruption each have failing-before/passing-after regressions;
the CHOAM sale exclusion was source-reviewed without a direct fixture.
A final read-only review found no remaining scoped issue. Focused
Semuta/ordinary-continuation and room-start tests pass; full-game and
deployed acceptance do not follow from this bounded preview.
An unstaged six-seat Basic Richese preview at RNG seed `20260930`
completed 916 accepted actions, zero rejected candidates, 24 JSON view
restores and six neutral passes at one ordinary-card discard. No
natural Semuta acquisition/commitment occurred in that game; the
focused genuine-setup and production-D1 fixtures cover the committed
claim. `npm run check` passes typecheck, lint and 5,801/5,801 offline
cases; `npm run build` and all 55/55 local development HTTP tests pass.
These results and one complete sampled game do not certify the
remaining card sources, full Richese mode or deployment.
## 30 September 2026 — owner key rotation and safe re-enable
The [account panel](ADMIN_ACCOUNTS.md) now rotates another enabled or
+11
View File
@@ -104,3 +104,14 @@ Five physical effects now have bounded development handlers: Karama, Distrans, N
## Portable Snooper and retention clarification (2026-09-06)
Six effects now have bounded development handlers: Karama, Distrans, Nullentropy Box, Ornithopter, Residual Poison and Portable Snooper. Portable supports normal and late poison defense with separate public played-card custody and ordinary winner/Moritani retention. The November 2020 official FAQ corrects the earlier overly strict assumption that a discard footer always denies winner retention; Mirror’s copied mandatory-discard exception remains a separate pending ruling. Four effects and complete combined games remain unfinished. See [PORTABLE_SNOOPER_ENGINE_AUDIT.md](PORTABLE_SNOOPER_ENGINE_AUDIT.md) and [MIRROR_WEAPON_ENGINE_AUDIT.md](MIRROR_WEAPON_ENGINE_AUDIT.md).
## 30 September 2026 — Semuta clean-discard preview
The [bounded Semuta runtime](SEMUTA_SOURCE_UPDATE_20260907.md#30-september-2026--bounded-clean-discard-runtime)
supersedes the older inactive-card observations above for one
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 other semantic discard families and
full-hand ordering are not connected; the ten-card inventory, cache
custody and public expansion start gate remain unchanged.
+27
View File
@@ -58,3 +58,30 @@ Useful acceptance test: hold public state and clock/event progression fixed; rep
The existing unresolved **Guild-stopped shipping-Karama refund** also constrains claiming that exact provisionally refundable card. Do not ask it again as a new Semuta question. Fence its competing custody or resolve the existing underlying ruling; this does not prohibit every shipment-phase Semuta event. Current Box guard in `game/engine.ts` near `:1209` already identifies this composition.
Do not ask again about normal targets, forced-discard owner bookkeeping, simultaneous selection, zero fee, automatic singleton selection or semantic batch implementation. Do not repeat the three pending Sapho questions. No new authoritative capacity/priority ruling was obtained by this review.
## 30 September 2026 — bounded clean-discard runtime
The explicit `semuta` development profile starts a fresh Richese roster
without opening ordinary expansion starts. It now interrupts **one public
ordinary-card discard** from a clean transaction with a neutral
fresh-discard opportunity for every seat, regardless of hidden Semuta
possession. Each seat can Continue; only the canonical holder with a
free hand slot and a card discarded by another player can commit. The
sole eligible fresh card transfers automatically in the same accepted
action, then Semuta goes to the normal discard pile. The saved ordinary
card effect resumes once; passing by every seat preserves the original
discard and effect. No face from an undisclosed event is projected before
commitment. Owner-only multi-candidate selection support exists in the
reaction component and bot adapter, but no multi-discard producer is
activated in this first boundary.
This neutral all-seat acknowledgement is a conservative **application
policy**, not a newly discovered publisher timing rule. The explicit
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 and other typed discard producers
retain their existing automatic continuation; Semuta cannot claim those
events yet. 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.