Files
Dune/docs/SANDMASTER_MOVEMENT.md
T
Quintine 54c8030b9b Connect optional Sandmaster collection on native Fremen worm rides
After legal placement, a living native Sandmaster may take one board spice from the single destination pile before faction arrival reactions. A ride has no intermediate ground route and never consumes normal movement. Multiple source sectors and typed elite forces earn one collection total. Each separate ride has its own opportunity. Decline and legacy actions retain ordinary riding; empty/ambiguous piles and unsupported module combinations suppress collection without preventing the ride.

Share the public quote across server, destination checkbox and existing bot candidates. AI only gains minimal legal participation: no new destination policy or strength calibration. Keep base factions plus Leader Skills as the bounded scope; other expansion rosters/modules, Ecaz treachery and multiple positive piles remain guarded. Record the composition of printed worm-movement wording with the existing Sandmaster contract, including the existing per-distinct-movement inference. No combined-effect FAQ or complete module compliance is claimed.

The room's atomic versioned write settles the physical transfer once before a pending Bene Gesserit reaction. Saved continuation resumes only the arrival and remaining ride queue. Ten new engine, control and SQLite cases cover Basic/Advanced custody, opt-out, legacy fields, rejected-action immutability, trainer visibility/control, public mode guards, private views, simultaneous duplicates, restarted arrivals, distinct queued rides and a genuine special-Karama worm through Nexus. Correct the shared shipment fixture to retain each faction's actual elite total and support Bene Gesserit as the opponent. Independent source and implementation review found no material defects. Focused work found and fixed the generic decision handler clearing the decision before the new quote, plus test-only fixture/type issues.

Types, lint, 4894 offline tests, production build and 43 HTTP tests passed on unchanged source. Two genuine four-profile Leader Skills samples finished in 265 Basic and 211 Advanced actions, no rejected candidates, and 14 JSON restorations. Neither naturally encountered the new effect; targeted checks establish it. This is playability evidence, not AI calibration.

Isolated browser room RMMA6LEF used a normally created Fremen seat and a conserved staged Advanced Leader Skills position. Selected two forces from each of two sectors, including one elite each, toggled collection off and on, then rode to Red Chasm. The UI showed four arrived forces and balance six before the opponent reaction. Refresh preserved that pending decision, balance and explanatory once-only collection history. The opponent's production-engine arrival response resumed to CHOAM charity; another refresh retained six spice and the private Chani traitor. Seat rows were unchanged. This is a targeted staged browser journey; screenshot and complete human-game acceptance remain open.

All 1140 original rooms, 2385 seats and every original recovery, entry and handover row remain unchanged. HTTP/browser checks added 34 rooms and 71 seats. SQLite integrity and foreign keys pass. No restart, reset, migration, maintenance automation or usage check was needed. No mode or publication gate is opened.

Verified source tree: 7996a37c13c71992d9bb6baf7016558615b98db064eda300ce19604b429b0d73
2026-09-20 15:27:14 +10:00

4.9 KiB
Raw Blame History

Sandmaster movement collection

13 September 2026. Prototyped, with Partial rules coverage. Ordinary ground movement now connects the normal band through explicit routes, optional collection, player controls, all four AI profiles and saved continuation. This does not open public Leader Skills starts or publication.

Source contract

The physical card and Jack Reda's designer walkthrough, 15:48–16:08 allow immediate collection of one spice when forces move into or through a territory containing spice, once per territory. The GF9 CHOAM & Richese rules, pages 8–9 and 12 require a living native trainer for this normal band; a captive supplies only the lower battle band. Common skill resolution precedes faction abilities. The existing source archive contains the checked physical face and timestamped designer transcript.

The route's initial territory earns nothing merely for being the source. Crossing into an intermediate or final territory qualifies, independently of the number of moving forces. A later legal re-entry into the source can qualify; each distinct entered territory still grants at most one collection. Moving between sectors without leaving the source territory earns nothing. The card says territory, so the route need not touch the spice pile's particular sector. Storm and stronghold passage restrictions still apply.

Recorded scope inference: the once-per-territory limit belongs to the movement that triggers it. A distinct Hajr movement starts another collection opportunity. No publisher or designer clarification specifically discussing Hajr was located; this follows the card's movement-triggered grammar rather than introducing a once-per-phase limit that the card does not state.

Collection commits when the legal move completes, before arrival reactions. Canceled or rejected declarations move neither forces nor spice. If several positive sector piles exist in a territory, that collection remains unavailable because the source does not specify which pile to debit. Movement and collection from other eligible territories remain available.

Implementation and verification boundary

The optional movement choice declares a connected sector route from every selected source sector and the individual territories to collect from. The engine validates the exact paths against actual range, storm and occupancy. It records the native skilled leader, original movement and pile quantities. The same shared helper supplies default routes and collection choices to humans and bots. Players may edit each route and decline any or all collection; ordinary Move retains its existing behavior with no Sandmaster collection.

A Fremen route using its two-territory advantage keeps the choice in the saved movement response, even when a shorter direct route reaches the same endpoint. The response is bound to the original choice across interruptions. Changing or removing the commitment, response or original board spice fails validation. Internal proofs are excluded from player projections. Existing versioned writes settle the physical board-to-player transfer once, with automatic explanatory history. Legacy declarations without a choice continue as ordinary movements.

Focused tests cover Basic/Advanced collection, per-territory opt-out, malformed and blocked routes, custody, Fremen cancellation and recovery, saved corruption, private views and legal candidates across four AI profiles. SQLite checks include concurrent final allowance, exact payment, canceled declarations and legacy movement. Two genuine four-profile Basic/Advanced samples finished in 196/89 actions with 6/3 JSON restorations and no rejected candidates; neither encountered Sandmaster collection. Targeted tests establish that effect. A fresh browser room assigned the offered skill through genuine setup, then used a conserved staged movement. The player edited the route from Red Chasm through South Mesa to Pasty Mesa, exercised per-pile opt-out and moved three forces. Both selected piles lost one spice; own spice rose from five to seven. Refresh retained three Pasty Mesa forces, one Arrakeen force, sixteen reserves, no Tanks and the same private Crysknife and Caid. Movement completion awaited the human. This is targeted browser evidence, not a complete human game. Broad checkpoint results are recorded with the checkpoint. These checks do not certify every skill or combined module.

The worm-ride follow-up connects native Fremen destination collection, including saved arrival reactions. Remaining work includes other nonordinary relocation, special movement cards, expansion/module integration, multiple-pile adjudication and wider interaction and strategy acceptance. The lower battle band remains in the battle-effects contract.