Before genuine Advanced Ecaz Traitor dealing, randomly set aside one of the five native Ecaz cards face up for the game. Store its owner and exact identity once; exclude it from the initial deck, Tleilaxu Face Dancer setup and Nexus replacement universes. Do not change leader custody or add choices, payment or Karama windows. Absent markers preserve older already-dealt saves without taking held cards away. Validate owner, timing and distinct physical custody before actions, normalization and projection. Expose a detached public card identity, never private deck order. Show the named card, portrait and enlarged Traitor inspection above the table. A dedicated Loyalty context explains public set-aside custody and cannot-call rules; browser review caught and fixed the generic held-Traitor guidance. Add internal help, checklist, shared Advanced faction text and source documentation. The official page8 requirement and page16 noKarama entry support the effect; relative pre-Traitor prediction/skill sequencing is an explicit composition. Gated Skills/Ecaz and Moritani assassination/Ecaz are not certified. Twelve new cases plus related regressions cover candidate selection, immutable invalid-state rejection,2..6 genuine deals, Basic/noEcaz, completed Tleilaxu setup, Harkonnen/Tleilaxu Nexus draws, full physical census, detached public views, all4 legal AI setups, JSON continuation, legacy custody and public rendering. Independent review found no material issue after genuine setup/legacy test fixes and the focused inspector correction.50 related focused cases pass. A mistyped filename filter failed closed before the corrected union ran successfully. Types, lint, all 5012 offline tests, production build and 49 HTTP tests pass on stable source. Earlier type/lint findings were corrected before this run. Six genuine faction-game samples finish with no rejected actions and repeated JSON restoration: CHOAM Basic1054/Advanced225 actions, Ecaz Basic91/Advanced245, combined Basic476/Advanced704. Existing physical Treachery/force custody checks pass; focused Loyalty tests cover expansion Traitor census. These bounded legal samples are not strength calibration or complete expansion acceptance. Browser QA created a fresh Ecaz/Easy Harkonnen ready lobby and initialized its Advanced setup before dealing using backup and CAS. Bindikk Narvi was public before choices and remained excluded through actual human Traitor/force setup, Storm and refresh. The saved human Traitor is Beast Rabban; a pointer action just after viewport reset differed from its intended Feyd target, so exact-target pointer acceptance across viewport changes is not claimed. Ordinary source bindings remain name/ID-specific. One hand card,12spice,14reserves and the pending Storm dial restore; both public projections agree and saved seat records match. The Loyalty inspector shows correct card-specific guidance; Escape restores focus. At390px its panel has no horizontal overflow,16px text and44/48px controls; the expanded scroll body fits342px. Internal help opens its complete checklist topic. Normal viewport restored. Screenshot capture timed out; full visual, long-inspector keyboard and broader module acceptance remain open. All 1539 pre-existing rooms, 3259 human seat records and auxiliary rows remain unchanged. SQLite integrity and foreign keys pass. Only isolated QA/HTTP fixtures add rooms. No server restart, database reset, migration, recurring automation, AI strategy change or mode/publication gate change. Private evidence: 20260921-gameplay-review. Verified source tree: 881bf1912665350086d80be664d479a1b2724146da6ccc9576790c07e0449ee6
70 lines
4.0 KiB
Markdown
70 lines
4.0 KiB
Markdown
# Ecaz Loyalty
|
|
|
|
Connected Advanced development prototype, 21 September 2026. This does not
|
|
certify the complete faction, open public Advanced starts or change AI strategy.
|
|
|
|
## Authority and interpretation
|
|
|
|
The official [Ecaz & Moritani rulebook, printed page 8](https://www.gf9games.com/dune/wp-content/uploads/EcazMoritani-Rulebook-LOWRES.pdf#page=8)
|
|
requires a random native Ecaz Traitor Card to be set aside publicly before the
|
|
initial Traitor draw and excluded for the rest of the game. The
|
|
[page 16 Karama table](https://www.gf9games.com/dune/wp-content/uploads/EcazMoritani-Rulebook-LOWRES.pdf#page=16)
|
|
lists no Karama effect for Loyalty. Five ordinary Ecaz cards are candidates;
|
|
Duke Vidal has no Traitor Card. This is a card movement, not a change to leader
|
|
ownership, availability, death or revival. Independent source review confirmed
|
|
the indexed official rulebook text; direct PDF retrieval failed in this audit.
|
|
|
|
The implementation resolves this automatic step immediately before the existing
|
|
initial shuffle and deal. Bene Gesserit prediction and any supported pre-Traitor
|
|
skill setup therefore precede it. That relative sequencing is an implementation
|
|
composition of the printed before-draw requirement, not a separately printed
|
|
ordering ruling. No optional choice, payment, Karama window or acknowledgment
|
|
is introduced.
|
|
|
|
## State and physical custody
|
|
|
|
`game/ecaz-loyalty.ts` owns the selector, deck exclusion and saved invariant.
|
|
New genuine Advanced setup with native Ecaz records the player and a pending
|
|
card, then chooses exactly once before initial dealing. The selected physical
|
|
card stays in this separate public location. Its identity is removed from initial
|
|
Traitor dealing, the Tleilaxu setup reconstruction and Nexus replacement
|
|
universes. Later Face Dancer cycling uses the remaining physical cards.
|
|
|
|
Validation rejects invalid owners, Basic/lobby markers, late pending draws and
|
|
duplicated cards across the reserve, held Traitors, setup choices, Face Dancers
|
|
or recorded Moritani assassination cards. Action, normalization and view
|
|
boundaries validate before mutating or exposing state. JSON continuation keeps
|
|
the selection and does not replay the notice. A save without the marker is
|
|
legacy state: no already-dealt card is retroactively taken away.
|
|
|
|
The player view returns only a detached public player/card pair once chosen.
|
|
Every viewer sees the same identity. The table renders the existing enlarged
|
|
Traitor inspector and an internal help link; no private hand or deck order is
|
|
added to this public component. The automatic chronicle entry uses the existing
|
|
Ecaz action notice.
|
|
|
|
## Evidence and limits
|
|
|
|
- `tests/ecaz-loyalty-engine.test.ts`: genuine two-through-six-player deals,
|
|
prediction ordering, Basic/no-Ecaz absence, completed Harkonnen/Tleilaxu setup,
|
|
all four legal AI profiles, JSON continuation and completed legacy saves.
|
|
- `tests/ecaz-loyalty.test.tsx`: random candidate bins, physical inventory,
|
|
immutable invalid-state rejection, public rendering and internal inspection.
|
|
- `tests/nexus-traitor-engine.test.ts`: actual Harkonnen and Tleilaxu Nexus
|
|
replacement draws keep the same excluded card and full physical census.
|
|
- Existing expansion setup and Nexus fixtures count the separately held card
|
|
instead of treating it as a loss or reconstructing it into the deck.
|
|
|
|
Leader Skills plus Ecaz and the Moritani assassination preview plus Ecaz remain
|
|
outside their currently supported combined rosters. Compatible code does not
|
|
establish combined-game acceptance. The no-Ecaz Leader Skills regression checks
|
|
only that existing setup is unchanged. Broader card/leader effects retain their
|
|
own guards and pending rulings.
|
|
|
|
Private source-bound check/build/HTTP logs, six faction-game samples, browser
|
|
inspection and saved-game preservation are recorded outside the checkout under
|
|
`20260921-gameplay-review`. The commit message records actual final results.
|
|
The browser uses a newly created ready Ecaz/Harkonnen lobby initialized through
|
|
the genuine Advanced audit seam before any draw; it does not retrofit a game
|
|
that has already started. Existing rooms and saved seats are preserved.
|