Offer Semuta after clean pre-plan Sapho aggressor discard

This commit is contained in:
Quintine committed 2026-09-30 10:45:56 +10:00
1 parent dffbe7b9f7
commit 9872efcc1d
11 files changed
+297 -61

No files matched your search

+29 -29
View File
@@ -10,19 +10,20 @@ The explicit [Semuta development preview](SEMUTA_SOURCE_UPDATE_20260907.md#30-se
accepts a fresh Richese roster with CHOAM & Richese and optionally
the physical Ix deck. Clean public ordinary-card, paid Box, retired
Ornithopter, private Distrans, final Truthtrance, movement-order
Sapho, battle-card and Ix-deck Thumper/Amal discards open the same
neutral offer regardless of hidden Semuta custody. Thumper pauses
before its injected worm or spice draw; Amal pauses after halving
personal spice and clearing earlier opening passes, before phase
initialization. Claim or decline resumes each saved suffix once.
Mixed-owner battle cards require committed, owner-only selection of
another player's fresh card. Mandatory and optional winner cleanup
remain separate. Minimal legal AI, JSON/SQLite continuation and
competing-room CAS are connected. Mixed arrivals, auction/battle
Sapho, queued or promise-bound Truthtrance, pending rewards, other
discard producers, full-hand ordering, normal Richese starts and
deployed acceptance remain unfinished. Neutral passes and free-slot
guard are product safety choices, not rulings.
or pre-plan aggressor Sapho, battle-card and Ix-deck Thumper/Amal
discards open the same neutral offer regardless of hidden Semuta
custody. Pre-plan Sapho has already committed ordinary tie priority;
claim or decline restores the unsealed shared battle preparation
without another aggressor change. Thumper waits before its injected
worm/spice draw; Amal waits after halving personal spice and clearing
earlier opening passes. Mixed-owner battle cards require committed
owner-only selection of another player's fresh card; mandatory and
optional winner cleanup remain separate. Minimal legal AI, JSON/
SQLite continuation and competing-room CAS are connected. Mixed
arrivals, Once Around/remaining battle-choice Sapho, queued or
promise-bound Truthtrance, pending rewards, other producers, full-hand
ordering, normal Richese starts and deployed acceptance remain
unfinished. Neutral passes and free-slot guard are product choices.
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,
@@ -285,21 +286,6 @@ AI policies and concurrent SQLite continuation are connected. Other expansion
payment families, gifts and combined modules remain gated; this is not a
complete Leader Skills or Tleilaxu certification.
The main page
labels its build's Git commit in the lobby and active-table masthead; local
Git HEAD does not represent uncommitted work. The main-branch container
workflow publishes an image but does not deploy the live site automatically.
Current work adds [discussion moderation](ADMIN_DISCUSSION.md): owners/operators
can mute or unmute new public/private messages from a human seat. History,
incoming messages, game state and credentials remain saved; the setting follows
recovery/handover. Atomic authority/version fences, durable audit and exact
admin/message retries are connected. This is partial participant support;
access revocation, participant removal, assisted recovery, permanent deletion,
bulk actions and backup/operations tools remain unfinished.
[Participant AI](ADMIN_PARTICIPANT_AI.md) checkpoint `2cddf03` is pushed. Types/lint,
Earlier [complete-game integration samples](IMPLEMENTATION_STATUS.md)
finished 62 genuine games: Basic Leader Skills with Tleilaxu, Moritani,
Ixians or CHOAM; Basic/Advanced classic Homeworld + Nexus; all three paired
@@ -346,6 +332,20 @@ regardless of hidden card custody; this privacy-preserving timing is
allied splits, non-Bidding sources, Betrayal and complete Nexus remain gated.
This source is not in the live image.
The main page
labels its build's Git commit in the lobby and active-table masthead; local
Git HEAD does not represent uncommitted work. The main-branch container
workflow publishes an image but does not deploy the live site automatically.
[Discussion moderation](ADMIN_DISCUSSION.md): owners/operators
can mute or unmute new public/private messages from a human seat. History,
incoming messages, game state and credentials remain saved; the setting follows
recovery/handover. Atomic authority/version fences, durable audit and exact
admin/message retries are connected. This is partial participant support;
access revocation, participant removal, assisted recovery, permanent deletion,
bulk actions and backup/operations tools remain unfinished.
[Participant AI](ADMIN_PARTICIPANT_AI.md) checkpoint `2cddf03` is pushed. Types/lint,
5,408 offline tests, 52 HTTP tests, build, twenty-two administrator HTTP groups
and desktop/mobile browser acceptance passed. Deployment delivery was
unconfirmed at that checkpoint; the current production revision is recorded
@@ -541,7 +541,7 @@ These links define bounded working behavior, not complete module certification.
| Expansion factions | [Ixians/Tleilaxu](IX_PROTOTYPE.md) and [all seven faction selections](EXPANSION_FACTIONS_PROTOTYPE.md): genuine setup, Ecaz six-force placement and [Advanced Loyalty](ECAZ_LOYALTY.md), separate optional card variants, private controls and saved per-lot Ixian/Richese decline. Actual special-lot exchange remains pending. |
| Leader Skills | [Common lifecycle](LEADER_SKILLS_RUNTIME.md), [known skilled capture](LEADER_SKILLS_CAPTURE.md), [Mentat question preview](MENTAT_QUESTION.md), [Bureaucrat payments](BUREAUCRAT_PAYMENTS.md), five battle disciplines, [Planetologist](PLANETOLOGIST_RULES.md), [Suk Graduate](SUK_GRADUATE_RULES.md), [Rihani and other battle effects](LEADER_BATTLE_EFFECTS.md), [Smuggler shipment](SMUGGLER_SHIPMENT.md), [No-Field](SMUGGLER_NO_FIELD.md) and [battle collection](SMUGGLER_BATTLE.md), [Sandmaster routes](SANDMASTER_MOVEMENT.md) and [worm rides](SANDMASTER_WORM.md), [Banker spending](SPICE_BANKER_RUNTIME.md), [Diplomat defense](DIPLOMAT_DEFENSE.md) and [bounded retreat](LEADER_SKILLS_RULES.md#bounded-diplomat-retreat-interpretation). Remaining bands and combinations are explicit in those contracts. |
| Discoveries | [Prototype](DISCOVERY_PROTOTYPE.md): genuine setup, Great Maker, seven cards/eight tokens, inspection and stash rewards, nested sites, signed later free entry, carried Ornithopter, sole Cistern, bounded Orgiz transfers, Jacurutu income, Testing Station and Shrine. Orgiz's per-deposit interpretation, contested/shared benefits and mixed physical allocation remain provisional or pending. The Orgiz path in current source is not yet deployed. |
| Nexus/Homeworlds | [Decision index](RULE_DECISIONS.md) links each integrated faction family, native/borrowed effects, physical custody, private choices, payments and transport. [CHOAM Secret Ally trade and bounded after-victory inspection](NEXUS_CHOAM_SECRET_ALLY.md), [Moritani Secret Ally losing-card retention](NEXUS_MORITANI_RULES.md#secret-ally-losing-card-retention-prototype), [Ecaz private yes/no traitor inquiry](NEXUS_ECAZ_RULES.md#bounded-secret-ally-traitor-inquiry-runtime) and [Emperor extra revival](NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md) are connected. Uniform CHOAM winner/Moritani loser windows and Ecaz inquiry scope/audience are explicit product inferences, not publisher rulings; Emperor purchase remains pending. A source audit or helper alone is not a completed effect. |
| Nexus/Homeworlds | [Decision index](RULE_DECISIONS.md) links each integrated faction family, native/borrowed effects, physical custody, private choices, payments and transport. [CHOAM Secret Ally trade and bounded after-victory inspection](NEXUS_CHOAM_SECRET_ALLY.md), [Moritani Secret Ally losing-card retention](NEXUS_MORITANI_RULES.md#secret-ally-losing-card-retention-prototype), [Ecaz private yes/no inquiry and bounded native Duke Cunning](NEXUS_ECAZ_RULES.md#bounded-native-cunning-duke-vidal), [Emperor extra revival and bounded bank-auction purchase](NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md) are connected. Uniform CHOAM winner/Moritani loser windows, Ecaz inquiry scope/audience and Ecaz Cunning's Battle-only window are product inferences, not publisher rulings. Source audits or helpers alone do not certify full module games. |
| Truthtrance | [Spice facts](TRUTHTRANCE_SPICE_FACTS.md), [card counts](TRUTHTRANCE_CARD_COUNT.md), [hand inventory](TRUTHTRANCE_HAND_INVENTORY.md), [recorded knowledge](TRUTHTRANCE_KNOWLEDGE.md), and [Basic/no-Guild Advanced reserve-shipment promises](TRUTHTRANCE_SHIPMENT_PROMISES.md) use authoritative private state. Earlier readiness audits do not supersede these follow-ups. |
| Other cards | [Sapho runtime](JUICE_OF_SAPHO_RUNTIME.md) includes first among remaining unstarted movement turns after Advanced Guild has finished. [Recruits](RECRUITS_RUNTIME.md) connects clean Revival play; [Harass & Withdraw](HARASS_WITHDRAW_RUNTIME.md) and [Reinforcements](REINFORCEMENTS_RUNTIME.md) connect bounded battle effects in the same independent three-card preview. Richese card contracts and the checklist identify other connected effects and explicit gaps. |
| Multiplayer | [Public and private discussion](TABLE_DISCUSSION.md), saved rooms/seats, [recovery](../README.md#saved-seats-and-reconnecting), uncertain-request retry, [own-seat AI](AUTOPILOT.md), [named-player AI permission](SEAT_AI_PERMISSION.md) and [voluntary seat handover](SEAT_HANDOVER.md) have connected controls and recovery evidence. |
+47 -3
View File
@@ -1,5 +1,29 @@
# Dune implementation status
## 30 September 2026 — Semuta after pre-plan Sapho aggressor
The explicit Richese preview now stages a clean pre-plan Juice of
Sapho discard after its public card and single aggressor/tie-priority
choice commit, before either combatant closes shared preparation.
Every seat sees the same neutral offer; a different held Semuta owner
may recover exactly that card or all seats may decline. The saved
receipt binds the battle event, Sapho event, committed priority,
unsealed readiness, hands and force custody. A resolved response
retires the frame without replaying the aggressor choice or battle;
both combatants can still declare ready and choose plans.
Genuine faction setup, owner-only projection, saved JSON, authenticated
SQLite room CAS/restart and legal AI claim/pass were exercised. A direct
production-engine smoke run observed `offer`, an unsealed battle and
one recovered card with unchanged priority. Focused tests passed;
`npm run check` passed typecheck, lint and 5,816 offline tests;
`npm run build` passed; all 55 development HTTP tests passed. The
phone-width local rules page rendered the pre-plan guidance. Two
independent read-only rules/privacy reviews found no scoped defect.
No deployed revision was exercised. Once Around and remaining
battle-choice Sapho, competing parents, full-hand sequencing, normal
Richese starts and publication acceptance remain gated.
## 30 September 2026 — Semuta after Ix-deck Amal
In the explicit Richese preview with the physical Ix deck, playing
@@ -1041,7 +1065,8 @@ validated restore, server health display or unified action-history entry yet.
Twelve isolated in-memory D1 backup cases pass, including exact replay, revoked
access, unversioned concurrent changes, highly escaped state rejection, the
32,768-record download-audit capacity boundary and duplicate snapshots. A throwaway genuine game created in an isolated store was
32,768-record download-audit capacity boundary and duplicate snapshots.
A throwaway genuine game created in an isolated store was
captured, listed and downloaded once; its room version remained zero and its
export receipt count was one. The signed-out local browser showed the owner
gate. A separate intercepted local UI view showed an older snapshot available
@@ -1054,7 +1079,8 @@ passed 5,662/5,662 cases with zero failures.
missing `Player.fremenNexusMovementBlockedTurn` type field. The 1,800,000-byte
per-snapshot cap, 16 MiB per-room and 64 MiB global quotas, bounded export
ledger without archival, absent chunked backups, and unavailable live NAS Apps
session keep saved-game and deployed acceptance open. No production game or credential was modified.
session keep saved-game and deployed acceptance open. No production game or
credential was modified.
## 28 September 2026 — rules-reference duplicate links
@@ -1339,7 +1365,25 @@ force creation bug that was reproduced and fixed. Browser QA exercised natural
and summoned offer/response/ride controls from genuine projected views with
isolated GET interception and blocked POST; no room was mutated. Full module
games, second Cunning offers during interrupted controls and Great Maker,
combined modules and the absent-faction protection remain gated.
combined modules and the absent-faction protection remain gated. A disconnected
Moritani Atomics quote is not a runtime effect.
## 26 September 2026 — Unified administrator action history
[Action history](ADMIN_ACTION_HISTORY.md) reads the nine existing durable audit
sources with date/group/search filters, pagination, actor/target attribution and
public recorded settings. Live owners/operators receive reasons; viewers receive
none, and reasons are never searched. No saved-game or message table is read.
Records remain available after target removal, with malformed metadata handled
without leaking raw contents or breaking the page.
Independent review found and corrected unsafe role coercion, a rejected-field
search oracle, affected-account name lookup and missing player-circle changes.
Focused source/SQL regressions and genuine configuration receipts cover these
boundaries. Real-runtime HTTP checking exposed workerd’s five-term compound-query
limit; materialized source groups and an isolated D1 regression cover the fix. Required checks, HTTP/browser acceptance and preservation accompany
the checkpoint separately. This is successful-operation history; failed attempts,
full operational diagnostics and the remaining admin/game goal are unfinished.
## 26 September 2026 — Administrative discussion moderation prototype
+12 -9
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 has a bounded preview for clean public ordinary-card, paid Box, retired Ornithopter, private Distrans, final Truthtrance, movement-order Sapho and three separate battle discard stages. A fresh Richese roster may include the physical Ix deck: Thumper pauses before worm/spice draw and Amal pauses after halving spice before phase initialization. Multi-owner battle batches reveal candidates only after holder commitment and transfer one other-player card. Private gifts, unresolved promises, reactive arrivals, auction/battle Sapho and pending battle rewards remain outside scope. Other producers, full-hand ordering and normal Richese starts are unfinished. Mirror Weapon and Juice of Sapho retain separate bounded paths, not combined-mode certification. Other systems, mobile acceptance, difficulty calibration and complete Advanced/expansion games still prevent goal completion. No start gate was removed.
- Semuta Drug has a bounded preview for clean public ordinary-card, paid Box, retired Ornithopter, private Distrans, final Truthtrance, movement-order and pre-plan aggressor Sapho, and three separate battle discard stages. A fresh Richese roster may include the physical Ix deck: Thumper pauses before worm/spice draw and Amal pauses after halving spice before phase initialization. Multi-owner battle batches reveal candidates only after holder commitment and transfer one other-player card. Private gifts, unresolved promises, reactive arrivals, Once Around/remaining battle-choice Sapho and pending battle rewards remain outside scope. Other producers, full-hand ordering and normal Richese starts are unfinished. Mirror Weapon and Juice of Sapho retain separate bounded paths, not combined-mode certification.
The complete integrated validation checkpoint is recorded in [IMPLEMENTATION_STATUS.md](IMPLEMENTATION_STATUS.md).
@@ -113,11 +113,14 @@ opted-in fresh Richese profile, optionally with the physical Ix deck.
Neutral all-seat responses, physical one-card recovery, provisional
free-slot policy, minimal legal AI and saved continuation work after
clean ordinary-card, paid Box, retired Ornithopter, private Distrans,
final Truthtrance, movement-order Sapho, Ix-deck Thumper/Amal and
three battle discard stages. Thumper pauses before its injected worm
or spice draw; Amal resumes its already-halved phase opening once.
Multi-owner batches require committed owner-only selection of one
other-player card. Queued questions, promises, reactive arrivals,
auction/battle Sapho, pending battle rewards and other sources stay
unconnected. Full-hand ordering, ten-card inventory, cache custody
and public expansion start gate are unchanged.
final Truthtrance, movement-order/pre-plan aggressor Sapho, Ix-deck
Thumper/Amal and three battle discard stages. Pre-plan Sapho commits
aggressor tie priority before the neutral offer and resumes unsealed
battle readiness; Thumper pauses before worm/spice draw, and Amal
resumes its already-halved opening once. Multi-owner batches require
committed owner-only selection of one other-player card. Queued
questions, promises, reactive arrivals, Once Around/remaining
battle-choice Sapho, pending battle rewards and other sources stay
unconnected.
Full-hand ordering, ten-card inventory, cache custody and public
expansion start gate are unchanged.
+9 -5
View File
@@ -21,12 +21,16 @@ promise or competing parent qualifies. A claim may move that consumed
card, never re-answer the question or rewrite its history; other
Truthtrance continuations remain automatic.
Clean movement-order Sapho now stages `saphoMovementDiscard` after
its finite first/last queue and public card disposal are committed.
Clean movement-order Sapho stages `saphoMovementDiscard` after its
finite first/last queue and public card disposal are committed.
The reaction retires before `movementTurn` opens the new actor's turn;
the queue, prior active seat and protected-last receipt bind saved
continuation. Once Around and Battle Sapho remain outside this
Semuta preview.
the queue, prior active seat and protected-last receipt bind its suffix.
Clean pre-plan aggressor Sapho stages `saphoAggressorDiscard` after
the aggressor event, ordinary tie priority and card disposal commit.
The receipt binds the same unsealed battle, readiness, player hands
and reserves. Claim or decline restores shared pre-leader preparation
without rerunning the aggressor change. Once Around and remaining
battle-choice Sapho remain outside this preview.
Completed Ornithopter movement now offers the same retired public card
before its already committed arrival suffix only in a roster without
+11 -6
View File
@@ -65,15 +65,19 @@ The explicit `semuta` development profile starts a fresh Richese roster
with CHOAM & Richese and optionally the physical Ix deck, without
opening public expansion starts. It interrupts **clean public
ordinary-card, paid Box, retired Ornithopter, used Distrans, final
Truthtrance, movement-order Sapho, battle and Ix-deck Thumper/Amal
discards**, provided the parent transaction has no competing response.
Truthtrance, movement-order or pre-plan aggressor Sapho, battle
and Ix-deck Thumper/Amal discards**, provided the parent transaction
has no competing response.
Every seat sees the same neutral fresh-discard opportunity regardless
of hidden Semuta custody.
An early-ended Ornithopter advances the saved queue; a completed
flight resumes one committed arrival only without BG, Ecaz or
Moritani entry reactions. Distrans's gift remains private with its
recipient; Truthtrance answer/history and Sapho first/last order are
already bound.
already bound. A clean pre-plan Sapho aggressor choice commits its
ordinary tie priority and physical card before the Semuta offer; the
unsealed battle's shared readiness then resumes without another
aggressor change.
For a genuine Ix-deck Thumper, its played physical card reaches
the discard before an injected worm or actual spice-card draw.
@@ -108,9 +112,10 @@ 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, pending battle
rewards and other typed producers retain their automatic continuation;
Semuta cannot claim those events yet. The completed Box's selected
promise-bound Truthtrance, Once Around or remaining battle-choice
Sapho, pending battle rewards 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