Files
Dune/docs/MORITANI_LEADER_SKILLS.md
T
Quintine 489bd3265d Connect Basic Moritani to the full Leader Skills prototype
Admit the genuine private setup profile for Basic Moritani with base opponents,
exactly the Ecaz expansion and no other optional modules. Keep all14 physical
skills, private two-card offers, starting-card/Traitor order and Moritani's final
six-force placement. Public starts and complete-mode/publication gates remain.

Share public profile eligibility across Banker, Diplomat, Sandmaster movement
and worm riding, Smuggler shipping/collection, Bureaucrat payments, Planetologist
controls/bots and Suk/Rihani/Sandmaster battle settlement. Admission reads no
hidden cards or random deal. Preserve base/CHOAM boundaries and existing source
questions; no full AI implementation, strategy or calibration changes.

Genuine setup regressions cover all14 assignments, legal profiles and guards,
Terror Assassination death and exact skill return, optional own
revival draw/privacy, Sabotage, movement controls/bots, Smuggler shipment and
Bureaucrat paid bribes. Battle actions cover Rihani exchange, Sandmaster spice,
Banker funds, Suk casualties and Smuggler collection. Actual enemy alliances
prove losing-ally retention excludes mandatory Planetologist Special and
Diplomat-copy disposal. A real worm/Nexus ride collects Sandmaster spice once.
Authenticated in-memory SQLite restarts and concurrent skill choices preserve
one assignment, private offers, saved seats and final Moritani placement.
Conserved staged positions are explicitly distinct from played phase histories.

Add a reproducible moritani-skills profile to the existing faction-game runner,
including fixed2-6-player Basic rosters, seed offsets16-20 and saved resume.
Verify expected module presence, all14 physical skills and ordinary Traitor
custody alongside existing card/force/private-view checks. Default six expansion
samples and base samples retain their rosters/ordinals. No live DB is used by
these complete-game samples. CLI regressions check interrupted continuation
and Advanced refusal; corruption tests catch lost cards and entire module loss.

Independent review caught an old all-base worm guard and a sample checker that
missed whole-module deletion; both fixed with meaningful regressions and reviewed.
Initial edits had a stale helper reference and final lint found an unused import;
these were corrected. Types, lint, all 5034 offline tests and build pass on
stable final source. Five genuine complete-game samples passed with no rejected
actions:2 players189 actions/5 restores,3 players53/1,4 players862/23,
5 players116/3 and6 players1338/36. These are legality samples, not calibration
or exhaustive faction/card acceptance. No endpoint/auth/storage changes; existing
HTTP suite not repeated, while new authenticated storage and live browser actions
exercise the newly admitted profile through production boundaries.

Browser created a fresh Basic human Moritani/Easy Emperor lobby, then the existing
backed-up local initializer started that named ready room without replacing seats.
Human inspected both Killer Medic bands, assigned Lupino Ord, chose a private
Traitor and placed six in Polar Sink after all other setup. Refresh preserved
the two public skills, own hand/Traitor and6 deployed/14 reserves at pending
Storm. Mobile skill panel339px, client/scroll337; viewport restored afterward.
Screenshot capture timed out, so full visual/screen-reader acceptance stays open.

All 1580 opening games, 3348 saved seats and auxiliary rows
remain identical. One isolated QA game adds one human seat and entry receipt;
its row is unchanged after setup through refresh, with all seats unchanged.
SQLite integrity and foreign keys pass. No server restart, migration, reset or
recurring automation. Existing unfinished Leader Skill bands and material
rulings remain explicit in the new integration guide and internal checklist.

Private evidence: 20260921-moritani-skills.
Verified source tree: d5078661ecc2199b2bbfebd18034b16585d06410a697a78dc514bfa5b3b77a1c
2026-09-21 13:43:27 +10:00

5.2 KiB

Basic Moritani with Leader Skills

Connected development prototype, 21 September 2026. Basic rules, Moritani and two through six total seats with base-faction opponents now use the full fourteen-card Leader Skills deck. Public starts and publication remain gated; this integrates existing effects, not complete Leader Skills compliance.

Public configuration and setup

The existing leader-skills local initializer accepts exactly ['ecaz'], Basic rules, Moritani plus base factions, and no other optional modules. It does not enable Ecaz, Advanced assassination, the separate Ecaz Treachery variant, Homeworlds, Nexus, Discoveries, Tech Tokens or Stronghold Cards with this roster. Existing base and CHOAM/Richese profiles retain their boundaries. Admission uses only public configuration, never hidden hands or the random deal.

Starting Treachery Cards and the ordinary private two-card skill offers precede Traitors. Every physical skill remains eligible for Basic Moritani assignment; there is no reduced deck or card-specific admission workaround. Moritani places its six starting forces after the other setup choices. Existing human controls, private offers, public assignments and minimal legal AI choices are reused.

Connected interactions

Shared public-profile checks connect Banker spending, Diplomat base-defense copying, Sandmaster ground/worm collection, Smuggler shipping/battle collection, Bureaucrat payment redirection and Planetologist movement across engine, projection, controls and bots. Suk casualty rescue, Rihani exchanges and Sandmaster victory spice use the same expanded battle boundary. Printed leader strength stays distinct from skill bonuses and bounty calculations.

Terror Assassination kills an ordinary skilled leader under the existing Terror rules and returns its exact physical skill once. A later own-leader revival offers an optional draw before revealing either card; the drawn choice remains private through saved continuation. Sabotage affects Treachery custody only. An Enemy of My Enemy alliance changes allies without transferring assignments. The losing ally's retention choice excludes a used Planetologist Special and a Diplomat copied Worthless card, since both must be discarded after use.

These are compositions of the recorded Leader Skills contract, Terror Assassination, enemy alliance, ally retention, Planetologist and Diplomat contracts. No new publisher ruling is asserted. Existing Atomics/Extortion, exceptional assassination pools and competing-arrival questions remain explicit.

Remaining work

The Leader Skills runtime retains unfinished normal Banker income, ordinary Mentat-question activation, Diplomat retreat, modified Smuggler collection, captured replacement entitlement and other source gaps. The private Mentat question preview has not been enabled for this roster. Basic Moritani admission does not settle those effects or certify every valid expansion/module combination. Advanced Moritani, Ecaz, Ixians and Tleilaxu need their own integration, including the recorded deferred Tleilaxu revival timing. Full AI strategy and difficulty calibration still wait for feature completion.

Reproducible entry and verification

Create a fresh Basic lobby with Ecaz & Moritani selected, seat Moritani and only base opponents, and ready every human. Preserve the room cookie and run the existing backed-up, version-checked local tool:

node --import tsx tools/start-prototype.ts --profile leader-skills \
  --db PATH_TO_LOCAL_D1_SQLITE --room EIGHT_CHARACTER_CODE \
  --version CURRENT_LOBBY_VERSION --out /private/new-moritani-skills
node --import tsx tools/faction-games.ts --profile moritani-skills \
  --out /private/new-moritani-skills-samples
npm test -- moritani-skills

The sample profile runs Basic games at two through six seats, adding Emperor, Guild, Harkonnen, Fremen and Bene Gesserit in that order. It preserves all four existing difficulty profiles and verifies Treachery, skill, Traitor and force custody, rejected-action immutability and periodic JSON/private-view restoration. Separate genuine-setup focused tests include Atreides. These are legal-play samples, not calibration or exhaustive roster/skill coverage. Interrupted games can use the existing --resume path, which retains the full module and roster.

Focused regressions exercise every physical skill assignment, public guards, movement controls, legal bot choices, Terror death/Sabotage, revival, payment, battle effects, real alliances and mandatory retention exclusions. Authenticated in-memory SQLite restart and concurrent choices verify one physical assignment, private offers, preserved seats and the final Moritani placement. Conserved staged phase/battle positions are labeled rather than claimed as played games.

Private source-bound final checks, sample results, browser observations, saved-game preservation and Git delivery live under 20260921-moritani-skills outside the checkout. Actual outcomes and remaining limitations are recorded in the commit message; no saved game is reset or discarded for verification.