Exercise Ecaz card variant and canonicalize advisor stances

This commit is contained in:
Quintine committed 2026-09-29 21:22:34 +10:00
1 parent 6ac5dabdee
commit c961a93f62
10 files changed
+185 -40

No files matched your search

+10
View File
@@ -6,6 +6,16 @@ Expansion starts and full rules/publication acceptance remain gated.**
## Current checkpoint and work
The independent Ecaz three-card variant now has a repeatable
[genuine-game sample profile](VERIFICATION_WORKFLOW.md#reusable-base-and-faction-sample-games)
for paired Ecaz/Moritani rosters from two to six seats. Ten Basic/Advanced
games at base seed `20260929` completed with 3,768 accepted actions, zero
rejected candidates and 95 JSON continuations; the six-seat Advanced game
actually played Recruits, Reinforcements and Harass & Withdraw. That run
exposed and confirmed a saved-view drift from unlocked Bene Gesserit advisor
stances, now corrected at four arrival/movement writers. These samples do
not certify all card interactions, full expansion modes or deployment.
The separate [Reinforcements card prototype](REINFORCEMENTS_RUNTIME.md)
now works in clean Ecaz/Moritani expansion battles as well as classic-faction
tables in Basic and Advanced. Genuine setup, owner-only two-slot controls,
+36
View File
@@ -1,5 +1,41 @@
# Dune implementation status
## 29 September 2026 — Ecaz card variant full-game integration samples
The reusable offline runner now has `--profile ecaz-treachery`: two through
six genuine paired Ecaz/Moritani seats, each Basic and Advanced, with the
independent three-card deck, physical custody checks, all four saved AI
profiles and explicit JSON continuation. Its default six historical games
and seed offsets remain unchanged; incomplete snapshots can resume only
under the exact saved variant/roster. Public starts remain gated.
The first same-seed matrix completed eight of ten games and caught an actual
saved-view mismatch: an unlocked Bene Gesserit advisor stance was stored as
`{lockedTurn:undefined}` by movement, Guild transport, Junction transport or
Fremen Ambassador relocation, but JSON restored it as `{}`. The four writers
now store a canonical empty stance or a numeric lock. Focused Guild,
Junction, ordinary move and Fremen relocation cases preserve view parity
after JSON; locked arrivals still retain their original turn. No saved room
or credential was altered.
The final source-bound run at base seed `20260929` completed all ten games:
3,768 accepted actions, no rejected candidates, 95 JSON continuations and
unchanged source fingerprint. The six-seat Advanced game used all three
physical Ecaz card effects. Report:
`/tmp/dune-ecaz-treachery-matrix-final-20260929/report.json`, based on
`6ac5dab` plus the uncommitted source changes of this checkpoint (source
fingerprint `466f801d36e8dc9aa1b14d2c9215813c8b4561926cc2ba43664d38e03ebbb081`).
This samples playable continuation, not complete card interactions,
combined-module acceptance, calibrated AI or deployed behavior.
The focused runner/advisor suites pass 101/101 cases. An independent
read-only review of the four writer changes, source custody and resume gates
found no concrete defect; it did not run tests or certify release readiness.
`npm run check` passes typecheck, lint and 5,765/5,765 offline cases;
`npm run build` passes. No database schema or HTTP route changed.
The last verified live image predates these changes.
## 29 September 2026 — Reinforcements in paired Ecaz/Moritani battles
The independently selected three-card Ecaz variant now allows its physical
+25 -7
View File
@@ -111,6 +111,7 @@ node --import tsx tools/faction-games.ts --out /tmp/dune-new-homeworld-nexus --p
node --import tsx tools/faction-games.ts --out /tmp/dune-new-choam-roster --profile choam-roster
node --import tsx tools/faction-games.ts --out /tmp/dune-new-ecaz-roster --profile ecaz-roster
node --import tsx tools/faction-games.ts --out /tmp/dune-new-ix-roster --profile ix-roster
node --import tsx tools/faction-games.ts --out /tmp/dune-new-ecaz-cards --profile ecaz-treachery
node --import tsx tools/faction-games.ts --out /tmp/dune-new-choam-nexus --profile choam-nexus
node --import tsx tools/faction-games.ts --out /tmp/dune-new-ecaz-nexus --profile ecaz-nexus
node --import tsx tools/faction-games.ts --out /tmp/dune-new-ix-nexus --profile ix-nexus
@@ -124,8 +125,9 @@ Default and `--profile all` retain the original six fixed CHOAM/Richese,
Ecaz/Moritani and combined Basic/Advanced samples. `--profile base` selects ten
additional samples: Basic and Advanced with two through six players.
`--players 2..6` narrows the base, Homeworld, Nexus, combined
`homeworld-nexus`, expansion-roster or paired-Nexus profiles. The
`combined-nexus` and `combined-homeworld-nexus` profiles support `--players 5`
`homeworld-nexus`, expansion-roster, paired-Nexus, independent Ecaz-card or
Leader Skills profiles. The `combined-nexus` and
`combined-homeworld-nexus` profiles support `--players 5`
or `6` only. Omission or `all` retains every roster in a selected profile. The fixed
base roster adds Atreides, Harkonnen, Fremen, Emperor, Guild and Bene Gesserit
in that order. These are sample rosters, not the only rules-permitted
@@ -136,6 +138,11 @@ respective physical expansion enabled: CHOAM/Richese start with CHOAM then
Richese, Ecaz/Moritani with Moritani then Ecaz, Ixian/Tleilaxu with Ixians
then Tleilaxu. Subsequent seats extend each to six without changing existing
fixed four-seat samples. Their seed offsets are 68–77, 78–87 and 88–97.
`ecaz-treachery` reuses the two-through-six-seat Ecaz/Moritani roster with the
independent three-card Treachery variant instead of Nexus Cards. Basic and
Advanced seed offsets are 136–145; default/all keeps its original six games.
The runner counts all three physical cards and resume requires the variant
marker and exact roster. This is still a gated development profile.
`choam-nexus`, `ecaz-nexus` and `ix-nexus` reuse the respective expansion
rosters with Nexus Cards enabled at seed offsets 98–107, 108–117 and 118–127.
`combined-nexus` selects five or six actual expansion factions and all three
@@ -153,6 +160,17 @@ rosters use 40–47. The combined module uses offsets 58–67. These samples
do not open public module or expansion starts or assert complete interaction
coverage.
At base seed `20260929`, the Ecaz-card profile completed all ten
two-to-six-seat Basic/Advanced samples with 3,768 accepted actions, no
rejected candidates and 95 JSON continuations. The six-seat Advanced trace
includes Recruits, Reinforcements and Harass & Withdraw actual uses. The
private source-bound report is
`/tmp/dune-ecaz-treachery-matrix-final-20260929/report.json`. The first
matrix exposed a non-serializable unlocked advisor stance; its corrected
writer paths are documented in
[the implementation log](IMPLEMENTATION_STATUS.md#29-september-2026--ecaz-card-variant-full-game-integration-samples).
This is not expansion release evidence.
All-AI Nexus samples now make public reciprocal offers as well as accepting
them, so an actual alliance can form without a human proposer. At the
20260927 seed, each six-seat sample made six alliance actions and completed;
@@ -181,11 +199,11 @@ Advanced requests fail before running. Its seed offsets are 16–20, leaving
existing samples unchanged. The full fourteen-card skill census and ordinary
Moritani/base Traitor census are checked throughout. `--resume` preserves this
explicit profile; other optional modules still fail its admission checks.
Homeworld, Nexus and combined snapshots resume only when their saved modules
and fixed rosters match a supported profile; other optional module
combinations remain excluded. An edited snapshot with a removed module can
match a different fixed profile, so verify its original private report
before relying on resumed provenance.
Homeworld, Nexus, independent Ecaz-card and combined snapshots resume only
when their saved modules and fixed rosters match a supported profile; other
optional-module combinations remain excluded. An edited snapshot with a
removed module can match a different fixed profile, so verify its original
private report before relying on resumed provenance.
All samples use genuine setup and saved AI profiles, cycling Easy, Medium,
Hard and Brutal by seat. Smaller games necessarily contain fewer profiles;