Honor allied Fremen victory and prevent deferred shipment deadlocks

Reciprocal allied Ecaz and Fremen with fighters in Sietch Tabr now satisfy that part of the Fremen final-turn victory, as explicitly clarified by the GF9 Ecaz/Moritani p15 FAQ. One public board quote drives automatic victory and the table guide; the chronicle explains the result. Other blockers, ordinary stronghold/BG prediction precedence, Guild fallback, advisor posture and concealed marker privacy remain intact. Habbanya symmetry and full mode/publication acceptance remain unfinished.

A genuine Advanced sample also exposed a pre-existing accepted Guild shipment which could never finish: allowance opened BG accompaniment and then hit the Ambassador arrival guard. Prior HEAD replay reproduced the exact 90-action failure. Fresh shipment preflight now rejects unsupported arrival combinations before accepting their pending windows. A valid legacy ordinary Guild allowance can return its unspent declaration to choose another destination; special parent/card receipts retain their separate gates. The change does not invent simultaneous reaction order or refund spent cards.

Independent rules/privacy/persistence review and focused engine/controls tests pass. Seventeen Fremen/Ecaz tests include all four profiles and authenticated final readiness/restart/concurrent writes. Shipment regressions cover pre-declaration immutability, supported arrival, malformed saved declarations and authenticated unspent return/replacement/reconnect/concurrency. All 4716 offline tests, types, lint, production build and 43 HTTP tests passed against unchanged source.

The original fixed seeds were repeated after repair and the exact failed snapshot resumed with documented new continuation seed 202609147: resume-advanced-202609147: 842 accepted, 109 guarded rejections, 22 periodic JSON restores; genuine-basic-202609145: 563 accepted, 14 guarded rejections, 15 periodic JSON restores; genuine-advanced-202609146: 806 accepted, 81 guarded rejections, 21 periodic JSON restores. All three finish and preserve physical custody/private views. These samples do not establish naturally reached allied Fremen special wins; a separate conserved browser final-turn fixture verifies the actual Ready-to-win transition, public guide/log, private hand and pending/finished refresh.

All 835 opening games and original seat/recovery records remain unchanged (902 after checks). All 869 rooms and records present after the reported outage also remain unchanged; database integrity and foreign keys pass. The healthy server and finished browser seat recovered without restart, reset or recurring automation. Full rules coverage and release gates remain open work.

Verified source tree: 1d9fcf30b54132f66be5f994f410dec6ec019683ee66b24fd4efb7a6aa7f7bbd
This commit is contained in:
Quintine committed 2026-09-14 02:59:50 +10:00
1 parent 58ae84f8e2
commit 9ca17a66a0
19 files changed
+1333 -31

No files matched your search

+45
View File
@@ -1,5 +1,9 @@
# Ecaz victory implementation contract
The [14 September runtime follow-up](#fremen-final-turn-runtime-follow-up) connects
the explicit Fremen/Ecaz Sietch Tabr exception. The original audit and its
unimplemented Habbanya inference remain below as source context.
Primary-source review, 2026-09-07. This separates the explicit three-stronghold rule from its ordinary control and prediction consequences. No combat-rounding decision is needed for a victory predicate operating on an already-settled board. The unrelated rounding conflict remains as corrected in [Ecaz Occupy rules](ECAZ_OCCUPY_RULES.md).
## Ordinary victory and the Ecaz exception
@@ -48,6 +52,47 @@ The Habbanya symmetry is well-supported by the common general rule but is not an
Keep the other Fremen checks unchanged: no earlier stronghold winner; final turn; excluded factions in Tuek's Sietch. Advanced Richese is added to Tuek's prohibited list by E2 p.6. Effective No-Field presence matters there too. If the Fremen special condition succeeds, its ally shares that special win; the Guild fallback only follows an unsuccessful earlier victory condition. [Base pp.16,19](https://www.gf9games.com/dunegame/wp-content/uploads/Dune-Rulebook.pdf), [E2 p.6](https://www.gf9games.com/dune/wp-content/uploads/2021/11/CHOAM-Rulebook-low-res.pdf#page=6)
## Fremen final-turn runtime follow-up
14 September 2026. The publisher's indexed p.15 FAQ was freshly checked and agrees
with the original source record. `game/fremen-victory.ts` now supplies one shared,
public settled-board description to the authoritative victory quote and player
guide. It applies the explicit Sietch Tabr exception only when reciprocal Ecaz
and Fremen allies both have fighters there. It preserves third-faction blockers,
mandatory advisor conversion, accompanied advisors and concealed No-Field presence
without reading hidden marker value. Habbanya symmetry remains outside this
implemented exception; that is an implementation limit, not a new printed ban.
The final-turn quote retains ordinary stronghold victory and applicable prediction
first, then the Fremen special condition, then existing fallback behavior. A
successful Fremen special win includes its ally and cannot be intercepted by a
Bene Gesserit prediction. No new action, acknowledgement, saved decision or schema
is added. The public guide names territory blockers before the check; a successful
special victory receives an explanatory chronicle entry.
Independent rules/privacy review found no blocker. Seventeen focused cases cover
Basic/Advanced outcome, earlier-turn and normal-winner precedence, all four AI
profiles, absent/nonallied/solitary/third-party counterexamples, Habbanya scope,
advisor and marker handling, identical public controls, JSON and authenticated
SQLite restoration. Competing final readiness commits once; finished or stale
actions cannot write again. Cards, Traitors, forces, elites and seat records remain
unchanged through the final transition. The endgame fixture explicitly stages a
conserved final-turn board and alliance after genuine setup, including a BG
prediction of Fremen for turn ten; it does not claim natural arrival at that board.
The checkpoint records browser and complete-sample observations, required broad
checks, source fingerprint, live saved-game preservation and verified Git delivery.
Full faction, optional-module and publication gates remain unchanged.
The expanded victory regression union passes 83 cases. The browser exercise uses
a fresh four-seat lobby and the same explicitly staged genuine-setup final board.
The public guide displays the permitted Tabr co-occupation, the existing Ready
action reaches the allied win, and the chronicle gives its reason. Pending and
finished refresh preserve the human seat, private hand and exact physical state.
Independent read-only database comparison confirms unchanged spice, cards,
Traitors, leaders, forces and elites; one victory log is present. This remains a
targeted endgame exercise, not a ten-turn human game.
## Bene Gesserit prediction and implementation order
An Ecaz three-co-occupied win is a stronghold victory with a modified threshold. BG prediction applies when the predicted faction is either winning ally on the predicted turn, including BG's own ally; BG then wins alone. Do not place Ecaz's new predicate after the existing prediction check. Base p.18 excludes the distinct Fremen/Guild special endgame wins from prediction; this Ecaz rule is not one of those named exceptions. [Base p.18](https://www.gf9games.com/dunegame/wp-content/uploads/Dune-Rulebook.pdf#page=18)