Files
Dune/docs/MORITANI_ASSASSINATE_LEADERS.md
T

166 lines
9.8 KiB
Markdown

# Moritani: Advanced Assassinate Leaders preview
14 September 2026. **Prototyped / Partial**, in an explicitly opted-in local
preview. Normal game-start and publication gates remain closed. This is the
battle-loss ability, separate from the random Assassination Terror token.
## Authority and Advanced duration cutover
The [GF9 Ecaz & Moritani rulebook](https://www.gf9games.com/dune/wp-content/uploads/EcazMoritani-Rulebook-LOWRES.pdf),
pp. 6, 14 and 16, supplies the ability, captured-own-leader answer and Karama table.
The historical publisher review found no official duration clarification.
The user-authorized revised Advanced PDF now supplies an explicit game-long
condition, recorded below. The runtime retains the following sequence:
1. Native Advanced Moritani loses a normal battle against a surviving opposing
leader disc, with no traitor called.
2. Moritani may reveal a held Traitor Card of the opposing player's printed
faction, naming a different leader from the disc just opposed.
3. A living named leader goes to the Tanks and pays its printed strength from
the Bank. An already-dead named leader remains a legal reveal: no repeated
death or spice, but the faction use and replacement still occur.
4. Keep the revealed physical card through battle cleanup. During Mentat Pause,
set it aside face up as that faction's permanent use marker and draw one
private physical replacement. Use the advantage once per opposing faction.
Karama has no effect on this ability.
**Authorized Advanced cutover — 2 October 2026:** the supplied
`UNOFFICIAL_Revised_Dune_Rulebook_v.2.3_web.pdf`, physical p35 / logical p33,
Assassinate Leaders D condition(d), says Moritani must **“not yet [have]
revealed your Traitor Card normally this game.”** A normal own-card reveal
therefore forfeits the advantage for the rest of this game, across later turns
and all opposing factions. The existing persisted normal-call flag already
enforced this scope; owner guidance and public reveal history now describe
the sourced forfeiture rather than an unresolved-duration guard.
This resolves the old duration question under the authorized Advanced source,
not as a newly located GF9 erratum. Basic, exceptional leader interactions and
the independent private-step UX/public-preview gates remain unchanged. See
[source identity and precedence](RULE_DECISIONS.md#authorized-source-amendment--1-october-2026).
The captured-own-leader answer preserves original faction identity: a Moritani
leader used by Harkonnen does not become a Harkonnen-faction assassination card.
It does not define every other captured or foreign-ghola target interaction.
## Connected scope and private information
The preview supports native Moritani with Atreides, Bene Gesserit, Emperor,
Fremen and Guild opponents, Advanced rules and the Ecaz faction expansion, without
optional modules. Harkonnen presence is excluded uniformly from public configuration
so candidate availability cannot reveal secret captures. Other expansion factions,
Nexus, Leader Skills, Stronghold Cards, Homeworlds and Discoveries require further
custody, ordering and integration work. A first-version scope is not a printed
restriction on those combinations.
Every publicly qualifying loss gets the same private reveal-or-continue opportunity,
regardless of the hidden eligible card. Only Moritani sees its candidate identities
and blocked reason; rivals see the same decision and no private options. This
requires Continue even for an ineligible hand, conflicting with the user's usual
automatic-action preference. A uniform-private-step UX question is pending, shared
with Mentat. Until resolved, activation requires an explicit development preview;
no ordinary action or room API enables it. A publicly spent faction or prior
normal traitor call can be skipped without consulting hidden eligibility.
All four AI profiles use the same owner-only quote. They choose a legal card or
decline and do not inspect rival hidden state. The public history shows only
revealed cards and face-up set-aside markers; replacement identities remain private.
Dead-target inspection retains the printed leader strength despite its zero bounty.
## Save and physical custody
The resolved battle binds the opportunity's event, opposing faction and surviving
leader. Its saved continuation is also bound to a separate battle obligation before
the decision opens. Reveal/decline resumes that exact cleanup once. A normal
traitor call has a separate event ledger; its explanatory log waits until the
normal public reveal, preserving sealed submissions.
A physical Traitor Card belongs to one of three zones: reserve deck, player hands,
or this ability's public set-aside markers. Revealed cards stay held until Mentat;
retired cards never return to the deck in this profile. A replacement remains with
Moritani or becomes the card consumed by a later-turn assassination against another
faction. Cross-zone duplication, missing replacements, duplicate draws, forged
same-turn chains and altered continuation receipts fail validation.
Replacement runs automatically when Mentat begins. In this bounded profile it does
not compete with other traitor draws, and Terror placement does not alter traitor
custody. Ordering with Face Dancers, Nexus/Rihani draws, Extortion and other modules
remains an explicit integration boundary, not an inferred universal ordering.
## Reproduction and evidence
Use the existing private backup/CAS workflow with a fresh ready lobby:
```sh
node --import tsx tools/start-prototype.ts --profile moritani-assassinate --db /absolute/games.sqlite --room ABCDEFGH --version 1 --out /private/new-checkpoint
npm test -- moritani-assassinate prototype-room
```
Rules and engine tests use genuine Advanced setup followed by explicitly staged,
conserved forces and physical traitor swaps. They cover living and dead targets,
no-use paths, all four profiles, private indistinguishability, sealed normal calls,
per-faction limits, a real later-turn replacement chain, rejected-action immutability
and corrupt saves. Authenticated SQLite tests exercise pending restoration,
Truthtrance interruption, competing submissions and the actual Mentat replacement.
The local writer test preserves seats and unrelated rooms and rejects repeat starts.
Independent rules/privacy/persistence review and the 32-case focused union pass:
eight pure quote cases, eleven engine cases, three controls cases, five authenticated
SQLite cases and five prototype-writer cases (one added for this profile).
Two genuine Advanced four-player samples, with all four AI profiles rotated, finish
in 296 and 101 accepted actions with no rejected candidates. Neither sample stages
hands, decks, forces or phases. Ten periodic JSON rounds and all eight final seat
views restore; physical Treachery, Traitor, force and elite custody hold throughout.
The first game offers two assassination opportunities, both declined; the second
offers none. These samples prove continuation, not natural reveal/replacement use.
A separate browser exercise starts from genuine setup with explicitly staged,
conserved battle forces and one physical traitor swap. Real battle actions produce
the pending choice. Revealing Master Bewt kills that live leader and pays three
spice once; the card stays held until automatic Mentat replacement, then becomes
a public set-aside marker. Pending and resolved refresh preserve the human seat.
Choice and retired-card inspectors show readable, context-correct guidance. Exact
card/force custody and private projections pass; Guild separately collects two
spice from Arrakeen. The game remains saved at human Terror placement.
All 801 opening games remain unchanged after the reported power failure. The healthy
server is reused. Broad checks, source fingerprint, final saved-game preservation
and Git delivery are recorded with the checkpoint. Focused and staged evidence
does not certify a complete faction, all combinations or public
Advanced readiness.
## 29 September 2026 — five-roster game continuation
The reusable [faction-game runner](VERIFICATION_WORKFLOW.md#reusable-base-and-faction-sample-games)
now exercises this exact gated Advanced preview from two through six seats
with Moritani and only the supported classic opponents except Harkonnen.
Five games at seed `20260929` completed in 2,511 accepted actions, with
zero rejected candidates and 65 JSON continuations. The six-seat game
opened two genuine private assassination decisions; both were declined.
The existing staged battle/replacement cases and the external physical
custody check cover the actual reveal, retirement and new-card draw, but
the natural full-game samples do **not** demonstrate a reveal. The source
boundaries and pending user timing/UX questions above remain unchanged.
## 29 September 2026 — natural revealed-card game
An additional unchanged-source six-seat Advanced game using base seed
`20261307` and the existing `moritani-assassinate` profile completed
1,666 accepted actions, zero rejected candidates and 45 JSON view
restores. A genuine turn-six battle loss first produced a private offer
that Moritani declined. A second loss let its Easy bot reveal its
actually held `emperor-1` Traitor Card against a different Emperor leader.
That named leader was already dead, so the legal reveal paid no second
bounty. The physical card remained held at accepted action 987; automatic
Mentat replacement at action 995 set it aside and privately drew
`fremen-4`. A separate Node replay JSON-restored every seat view at
both boundaries; the whole-game runner checked physical custody
after every accepted action through final turn ten.
Source-bound private report:
`/tmp/dune-assassinate-natural-reveal-20261307/report.json`, based on
`583cd97a250bce4b2a9f570bc1e2893e9d49db41`. This establishes one
natural dead-target reveal and replacement, not a natural living-target
kill, full module composition, an official resolution of normal-traitor
duration, or public Advanced Moritani readiness.