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
This commit is contained in:
Quintine committed 2026-09-20 14:54:52 +10:00
1 parent 9be7dfb9fb
commit 20cc6057e9
15 files changed
+564 -37

No files matched your search

+12 -12
View File
@@ -6,19 +6,19 @@ gated.** Prototypes do not open completion or publication gates.
## Current checkpoint and work
Latest delivered checkpoint: `9b67a78`, [early Sapho aggressor](SAPHO_AGGRESSOR.md).
Types, lint, **4,866 offline tests**, production build and **43 HTTP tests** passed.
Two genuine CHOAM/Richese samples completed; focused and browser evidence exercised
the new priority effect. After the next outage all 1,106 rooms were present, the
original baseline rows and latest QA save were unchanged, and a private seat
restored after browser refresh. The healthy server was reused without a reset.
Latest delivered checkpoint: `9be7dfb`, the [interactive introduction](INTERACTIVE_INTRODUCTION.md).
Types, lint, **4,872 offline tests** and production build passed. Five lessons
connect shared-rule shipping, sealed battle and collection exercises, card
inspection and browser-local continuation. Broader teaching remains unfinished.
After the reported outage all 1,106 games matched the prior backup and a private
QA seat restored after refresh. The healthy server was reused without a reset.
Earlier evidence remains in the [implementation history](IMPLEMENTATION_STATUS.md).
Current work: the [interactive introduction](INTERACTIVE_INTRODUCTION.md) adds
five lessons with shared-rule shipping, sealed battle and collection exercises,
card inspection and browser-local continuation. Broader faction/expansion
teaching remains unfinished. Final verification and delivery belong to the
source-bound report and Git message.
Current work: [Smuggler battle collection](SMUGGLER_BATTLE.md) connects the
unmodified lower band, automatic survival settlement, losing/captured leaders,
Sandmaster order, shared controls and bots, and saved continuation. Modified
strength and combined modules remain guarded. Final verification and delivery
belong to the source-bound private report and Git message.
The connected [Harass & Withdraw prototype](HARASS_WITHDRAW_RUNTIME.md) supports either
battle-card slot, private category inspections, exact undialed normal/elite
@@ -75,7 +75,7 @@ These links define bounded working behavior, not complete module certification.
| --- | --- |
| Base/Advanced setup | [Genuine setup](ADVANCED_SETUP_TEST_SEAM.md), [Advanced study](AI_ADVANCED_SETUP_CALIBRATION_20260907.md), [Fremen cancellation](FREMEN_MOVEMENT_KARAMA_RULES.md), [Atreides full-plan audit](ATREIDES_FULL_PLAN_TIMING.md). Earlier Basic-then-flip fixtures do not establish current setup coverage. |
| Expansion factions | [Ixians/Tleilaxu](IX_PROTOTYPE.md) and [all seven faction selections](EXPANSION_FACTIONS_PROTOTYPE.md): genuine setup, Ecaz six-force placement, separate optional card variants, private controls and saved per-lot Ixian/Richese decline. Actual special-lot exchange remains pending. |
| Leader Skills | [Common lifecycle](LEADER_SKILLS_RUNTIME.md), [known skilled capture](LEADER_SKILLS_CAPTURE.md), [Mentat question preview](MENTAT_QUESTION.md), [Bureaucrat payments](BUREAUCRAT_PAYMENTS.md), five battle disciplines, [Planetologist](PLANETOLOGIST_RULES.md), [Suk Graduate](SUK_GRADUATE_RULES.md), [Rihani and other battle effects](LEADER_BATTLE_EFFECTS.md), [Smuggler shipment](SMUGGLER_SHIPMENT.md) and [No-Field](SMUGGLER_NO_FIELD.md), [Sandmaster routes](SANDMASTER_MOVEMENT.md), [Banker spending](SPICE_BANKER_RUNTIME.md), [Diplomat defense](DIPLOMAT_DEFENSE.md). Remaining bands and combinations are explicit in those contracts. |
| Leader Skills | [Common lifecycle](LEADER_SKILLS_RUNTIME.md), [known skilled capture](LEADER_SKILLS_CAPTURE.md), [Mentat question preview](MENTAT_QUESTION.md), [Bureaucrat payments](BUREAUCRAT_PAYMENTS.md), five battle disciplines, [Planetologist](PLANETOLOGIST_RULES.md), [Suk Graduate](SUK_GRADUATE_RULES.md), [Rihani and other battle effects](LEADER_BATTLE_EFFECTS.md), [Smuggler shipment](SMUGGLER_SHIPMENT.md), [No-Field](SMUGGLER_NO_FIELD.md) and [battle collection](SMUGGLER_BATTLE.md), [Sandmaster routes](SANDMASTER_MOVEMENT.md), [Banker spending](SPICE_BANKER_RUNTIME.md), [Diplomat defense](DIPLOMAT_DEFENSE.md). Remaining bands and combinations are explicit in those contracts. |
| Discoveries | [Prototype](DISCOVERY_PROTOTYPE.md): genuine setup, Great Maker, seven cards/eight tokens, inspection and stash rewards, nested sites, signed later free entry, carried Ornithopter, sole Cistern, bounded Jacurutu income, Testing Station and Shrine. Orgiz and contested/mixed cases remain pending. |
| Nexus/Homeworlds | [Decision index](RULE_DECISIONS.md) links each integrated faction family, native/borrowed effects, physical custody, private choices, payments and transport. [CHOAM Collection trade](NEXUS_CHOAM_SECRET_ALLY.md) and [Emperor extra revival](NEXUS_EMPEROR_SECRET_ALLY_RUNTIME.md) are connected; CHOAM inspection and Emperor purchase remain pending. A source audit or helper alone is not a completed effect. |
| Truthtrance | [Spice facts](TRUTHTRANCE_SPICE_FACTS.md), [card counts](TRUTHTRANCE_CARD_COUNT.md), [hand inventory](TRUTHTRANCE_HAND_INVENTORY.md), [recorded knowledge](TRUTHTRANCE_KNOWLEDGE.md), and [Basic/no-Guild Advanced reserve-shipment promises](TRUTHTRANCE_SHIPMENT_PROMISES.md) use authoritative private state. Earlier readiness audits do not supersede these follow-ups. |
+16
View File
@@ -1,5 +1,21 @@
# Dune implementation status
## 20 September 2026 — Smuggler battle collection prototype
[Unmodified Smuggler collection](SMUGGLER_BATTLE.md) binds the reveal-time pile
and pays once after leader survival, including losing or captured leaders. Shared
server/control/bot admission preserves the pending modifier and combined-module
boundaries; deferred settlement before Sandmaster remains an explicit timing
inference. Native face-up skilled discs are excluded from AI selection. New
receipts preserve private saved continuation and old unversioned battles retain
their prior behavior. Independent review and focused engine/SQLite evidence are
paired with source-bound final checks, browser/samples, preservation and verified
Git delivery in the private checkpoint and commit message. No gate is opened.
After the reported outage the server responded and all 1,106 baseline games
matched their saved rows. The prior private QA seat restored after refresh.
No restart, reset or maintenance automation was needed.
## 20 September 2026 — Interactive introduction prototype
[Five guided lessons](INTERACTIVE_INTRODUCTION.md) connect shipping budgets,
+3 -2
View File
@@ -204,8 +204,9 @@ Resolving this reveal-time collection logically before Sandmaster's after-win
addition is an explicit timing inference. A drained pile leaves no existing spice
for Sandmaster to augment. Multiple-pile allocation remains unresolved. Pending
spice is not spendable personal custody; this provisional timing must remain
explicit when the collection function is connected. Runtime collection is still
missing; the independent introduction proceeded while the modifier answer waits.
explicit in the connected [unmodified collection prototype](SMUGGLER_BATTLE.md).
Modified plans, other modules and multiple positive piles remain gated while
their answers and integration wait.
## Implementation readiness contract
+4 -3
View File
@@ -64,8 +64,9 @@ now connects its lower band with separate sealed funds and survivor strength. [S
connects its optional normal reserve bonus and the [owned No-Field companion](SMUGGLER_NO_FIELD.md).
[Diplomat defense](DIPLOMAT_DEFENSE.md) connects its normal band for a physical
Worthless card copying a canonical base Shield or Snooper; the lower retreat
and modified-defense inheritance remain guarded. Smuggler battle collection
also remains missing.
and modified-defense inheritance remain guarded. [Smuggler battle collection](SMUGGLER_BATTLE.md)
now connects reveal-bound, unmodified collection after survival, including
losers and captives. Modified strength and combined modules remain guarded.
Planetologist and Suk Graduate have the connected
prototypes described below.
@@ -78,7 +79,7 @@ Before enabling them, add response-driven automatic revival continuation
coverage; the current before/after revival observer does not certify deferred
Tleilaxu response chains. The other source-contract timing questions also remain
open. Planetologist now has bounded movement and battle controls as described below.
Remaining normal-band payments, ordinary Mentat activation, Smuggler battle collection,
Remaining normal-band payments, ordinary Mentat activation, modified Smuggler collection,
Diplomat retreat and the other guarded skill combinations still need connected
effects.
+2 -2
View File
@@ -56,8 +56,8 @@ These are unresolved in the cited records. Do not infer an answer from elapsed t
| Sapho remaining timing | First versus unspent Advanced Guild priority, partly completed combined turns, cyclic auction duration and later battle timing stay guarded. The existing pre-plan opportunity supports [early aggressor](SAPHO_AGGRESSOR.md). Prior questions remain unanswered. | [Source audit](JUICE_OF_SAPHO_SOURCE_UPDATE.md), [battle review](JUICE_OF_SAPHO_BATTLE_REVIEW.md) |
| Mirror Weapon | Whether copied Tooth/Artillery mandatory-discard rules attach to the physical Mirror remains unanswered. Every genuine Richese setup includes those cards and Stone Burner; an ordinary-copy-only admission gate cannot depend on concealed custody or alter the printed deck. | [Engine audit](MIRROR_WEAPON_ENGINE_AUDIT.md) |
| Semuta Drug | Full-hand take-before-discard and the privacy-neutral immediate reaction protocol remain unresolved. Typed discard continuations already exist; they are not activation. | [Source update](SEMUTA_SOURCE_UPDATE_20260907.md), [privacy review](SEMUTA_PRIVACY_REVIEW.md) |
| Leader Skills edge cases | Capture/replacement eligibility, Banker escrow custody (user question sent), Smuggler survival settlement, Mentat empty-hand fallback (private historical observations persist after death), Diplomat lower retreat ordering, modified-defense inheritance and remaining simultaneous optional timing need resolution before those cases are enabled. These are recorded source gaps, not answered user rulings. | [Material boundaries](LEADER_SKILLS_RULES.md#material-boundaries-not-settled-by-the-sources), [Diplomat boundary](DIPLOMAT_DEFENSE.md#evidence-and-remaining-scope) |
| Smuggler collection strength | A fresh primary-source check found no modifier ruling. The user was asked whether to keep affected combinations gated, use printed/copied disc value, or include leader bonuses with Stunner zero. No answer is assumed. The reveal-bound deferred receipt is supported as an explicit timing inference; lower collection remains unimplemented. | [Smuggler follow-up](LEADER_SKILLS_RULES.md#20-september-smuggler-follow-up) |
| Leader Skills edge cases | Capture/replacement eligibility, Banker escrow custody (user question sent), Smuggler modifier/allocation boundaries, Mentat empty-hand fallback (private historical observations persist after death), Diplomat lower retreat ordering, modified-defense inheritance and remaining simultaneous optional timing need resolution before those cases are enabled. These are recorded source gaps, not answered user rulings. | [Material boundaries](LEADER_SKILLS_RULES.md#material-boundaries-not-settled-by-the-sources), [Diplomat boundary](DIPLOMAT_DEFENSE.md#evidence-and-remaining-scope) |
| Smuggler collection strength | A fresh primary-source check found no modifier ruling. The user was asked whether to keep affected combinations gated, use printed/copied disc value, or include leader bonuses with Stunner zero. No answer is assumed. The reveal-bound deferred receipt is supported as an explicit timing inference; unmodified lower collection is now [prototyped](SMUGGLER_BATTLE.md); modified strength, multiple positive piles and combined modules remain gated. | [Smuggler follow-up](LEADER_SKILLS_RULES.md#20-september-smuggler-follow-up) |
| Suk Graduate / Atreides | Whether rescued dialed casualties count toward the seven-loss Kwisatz Haderach threshold remains unresolved. The user question has been sent; Advanced Atreides rescue stays guarded. | [Source and runtime boundary](SUK_GRADUATE_RULES.md) |
| Ordinary Guild cancellation | Unaffordable repricing, replacement/retry/decline, consumed opportunity, contributor adjustment and ordering with special shipment-stop. The affordability question was already sent. | [Material timing](GUILD_RATE_KARAMA_RULES.md#material-unresolved-timing) |
| Base special Karama | Unfunded auction recovery, stopped-shipment settlement and Atreides full-plan commitment order remain provisional. Native full-plan/Voice/Prescience/Truthtrance/Ghola interactions now have genuine-setup focused evidence, but the source audit does not settle the special offer/deadline or target-first interpretation. | [Explicit base interpretations](BASE_ADVANCED_READINESS_20260907.md#explicit-unresolved-base-interpretations), [full-plan interaction audit](ATREIDES_FULL_PLAN_TIMING.md) |
+66
View File
@@ -0,0 +1,66 @@
# 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](LEADER_SKILLS_RULES.md#20-september-smuggler-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.