Files
Dune/docs/SMUGGLER_BATTLE.md
T
Quintine 20cc6057e9 Connect unmodified Smuggler battle collection
New Leader Skills battles bind territory spice to the public plan reveal and automatically pay the controlling player once the selected Smuggler survives, including a loser or captive with no surviving forces. Cap collection at the original single pile and unmodified disc strength. Pending spice cannot fund a plan. Settlement before Sandmaster's after-win addition remains an explicitly documented timing inference; modified strength, multiple positive piles and other module combinations remain gated pending the existing rulings and integration.

Share pre-seal admission across server, controls and all four bot profiles. Expose the public Ecaz card-variant flag so its guard also works in private views. Normalize the selected Kwisatz value once for UI validation and submission. Fix AI selection of unavailable native face-up skilled discs. Show reveal-time pending guidance and an automatic collection notice/chronicle without a new confirmation. Keep unversioned saved battles on their existing behavior.

Bind saved receipts to the original battle, controller, leader, plans, posture and pile; project no internal binding frame. Void collection on leader death, opposing/mutual Traitors and explosion without restoring destroyed spice. Apply captured-leader settlement before normal custody cleanup. Existing room versioning prevents concurrent final votes from paying twice.

Twelve new engine/SQLite tests cover Basic/Advanced winners and losers, caps, empty piles, zero remaining forces, weapon/Traitor/explosion outcomes, captive survival/death custody, Sandmaster ordering, corrupted receipts, immutable pre-seal guards, legacy continuation, legal paths for four profiles and authenticated concurrent/restarted settlement. Independent review prompted the Ecaz gate and stale-Kwisatz corrections and found no further material defect in the bounded delta. A focused regression also identified the missing public Ecaz configuration field, now projected.

Types, lint, 4884 offline tests, production build and 43 HTTP tests passed on the unchanged source fingerprint. Two genuine four-profile Leader Skills samples completed in 265 Basic and 211 Advanced actions with no rejected candidates and 14 JSON/private-view restorations; neither sampled game naturally exercised Smuggler collection, so focused and browser evidence establish that effect.

In isolated browser room YWV8AGKS, the Emperor selected Smuggler, sealed a zero dial, saw six pending spice without early credit, refreshed the pending decision and submitted no Traitor. After the opponent's production-engine final action, the browser showed the 6-8 loss, automatic six-spice collection, explanatory chronicle and restored balance 26 after another refresh. Opponent/setup staging was private and confined to the new QA room. Screenshot acceptance remains open. An initial private verification script compared SQLite null-prototype rows with parsed JSON too strictly; the transaction rolled back and the corrected content comparison passed.

After the reported outage the server was healthy and the previous private QA seat restored. All 1106 baseline rooms, 2314 seats and every original recovery, entry and handover row remain byte-for-byte unchanged; the HTTP/browser checks added 34 rooms and 71 seats. SQLite integrity and foreign keys pass. No restart, migration, database reset or automation was needed. No mode, module or publication gate is opened.

Verified source tree: dc55a36f7bfe108d6529b2e42add019d212648e6c17772b36e06fe73f9443265
2026-09-20 14:54:52 +10:00

4.0 KiB
Raw Blame History

Smuggler battle collection

20 September 2026. Prototyped, with Partial rules coverage. New battles in the base-faction Leader Skills preview connect the lower Smuggler effect in Basic and Advanced games. Public module, mode and publication gates remain closed.

Rule and timing contract

The source follow-up combines the printed reveal-time collection with the common requirement that the selected skilled leader survive. The card does not require winning or retaining forces. A captured skilled leader grants its lower effect to its controller.

At public plan reveal the server records the battle, controller, selected leader, plans, skill posture and territory's existing spice. The amount is the smaller of that single pile and the unmodified disc strength. This pending amount is not personal spice and cannot fund a sealed plan or another payment. After survival is known, the server transfers it once, including for a surviving loser, before Sandmaster adds any after-victory spice. A pile drained to zero cannot receive Sandmaster's addition. This deferred settlement and ordering remain explicit timing inferences, not a newly discovered publisher ruling.

A weapon death, opposing or mutual Traitor, or Lasgun–Shield explosion voids the collection. A successful sole own Traitor call can leave the Smuggler alive and eligible. A void receipt changes no pile; it cannot restore spice destroyed by an explosion. Capture return/death cleanup follows settlement without paying the original owner. This board transfer is neither bank income nor another player's payment, so it does not invoke Banker or Bureaucrat payment handling.

Connected behavior

  • A shared admission quote serves the server, player controls and four AI profiles. Public mode flags and the player's own chosen plan determine the guard; an opponent's concealed cards do not control eligibility.
  • Guidance explains the pending amount, survival and spending restriction. Collection is automatic, with the existing faction-colored action notice and an explanatory chronicle entry; there is no confirmation step.
  • AI candidates omit optional Kwisatz when selecting Smuggler and reject other unsupported modified plans. Native face-up skilled discs remain unavailable to battle selection; captives and existing mandatory concealment retain their legal paths. UI availability and the submitted Kwisatz value share one check.
  • Versioned, signed reveal receipts survive private JSON/SQLite continuation. Reads/actions reject changed plans, receipts, pile or identity. Public views expose the selected leader, controller and pending amount only after reveal; the internal binding frame is never projected. Concurrent final votes use the existing versioned room write to prevent duplicate collection.
  • Battles already saved without the new version keep their original behavior. Subsequent battles use the new flow. There is no database migration or reset.

Boundaries and evidence

Kwisatz, separate trainer bonuses and Stunner still await the existing modifier question; no user answer is assumed. Expansion rosters/cards, the independent Ecaz card variant, other optional modules and multiple positive piles remain guarded before the Smuggler plan seals. These development restrictions are not rules that forbid those combinations in the physical game. Stone Burner and other expansion combinations therefore have no connected acceptance claim here.

Focused engine tests cover winners/losers in both modes, empty/short piles, zero surviving forces, death and Traitor outcomes, explosion, capture custody, Sandmaster order, corruption, immutable rejection, legacy continuation and all four bot profiles. SQLite tests cover authenticated restart, private projection, concurrent final votes and replay rejection. Browser and full-game sample scope, required check/build/HTTP results, preservation and verified Git delivery are recorded in the private source-bound checkpoint and commit message. This does not certify every Leader Skill or combined-module interaction.