Files
Dune/docs/SPICE_BANKER_RUNTIME.md
T

24 KiB
Raw Blame History

Spice Banker battle commitment and normal income prototypes

Classic Homeworld final Bank income — 14 October 2026

Fresh classic Basic/Advanced banker-income --homeworlds composes original occupation setup and all14 Skills with income-v1. This branch excludes Nexus, Discovery, Tech, Strongholds and native expansion/Betrayal overlays. Other existing Banker entries remain unchanged; no public activation or played-game conversion is added.

Three user rulings define accounting: combine only the same payer’s final Bank portions of one original invoice; attribute Bureaucrat’s two to the first individually eligible contribution (declared payer, then ally); round low native income on the whole remaining eligible invoice once. Floor each remaining contribution’s half and assign extra Bank rounding units primary-first internally. No funding or eligibility identity is exposed. The former two-odd declaration, UI and AI fence is removed, without changing original prices or payer shares.

Original native or occupied-percentage receipts supply the actual retained Bank amount; original payment carriers preserve full payer evidence. Allowed unoccupied5+3 gives native4/Bank4, final Bank legs3/1 and no grant. Diverting2 gives native3/Bank3 plus diversion2, final legs4/1 and one deferred spice. Occupied allowed income banks none (or just diversion2); occupied cancellation preserves occupier4 and banks native4 as3/1, not the full8, so grants none. Odd11 and first-eligible fallback cases retain real payer shares and stock. Native world-to-world4 and half-rate Junction board-return4 each remain Bank fees, grant one unavailable spice and do not manufacture Guild income. Actual low Kaitain after11 native normal counters leave has4 capital counters; the later actual Guild eight-spice Treachery purchase gives Emperor4, Bank4, and one deferred Banker grant.

Actual390px Bureaucrat Redirect2 settles final Bank legs4/1, available Atreides wallet11/front1. Ordinary city Collection separately makes wallet13; the real last Ready for next phase enters Mentat and makes14/front0, with one collection credit1. Browser errors empty; no root overflow. Private local proof: /tmp/dune-homeworld-banker-ui-proof.json. The isolated actual CLI HWBANKQA v8 reaches original setup with income-v1 and occupation custody. Existing games and databases are untouched.

Frozen related18-file union292/292, types/lint and app build pass. Build retains the existing module-registration, chunk-size and route-classification warnings. Evidence: tests/fixture-homeworld-banker-income.ts, tests/homeworld-banker-income.test.ts, tests/homeworld-banker-transport.test.ts and tests/homeworld-bank-payment.test.ts. Comprehensive assurance, wider module combinations, public starts and deployed acceptance remain open.

node --import tsx tools/start-prototype.ts --profile banker-income --homeworlds \
  --db /private/local.sqlite --room ROOMCODE --version 7 \
  --out /private/new-homeworld-banker-entry

Classic Nexus income composition — 13 October 2026

banker-income --nexus-cards now connects the existing mandatory normal band to fresh classic Basic/Advanced Nexus Skills games. Original Tech requires3+; Strongholds require Advanced2+, optionally both. This does not admit Homeworlds, Discovery, expansion-family Nexus, Semuta or Betrayal previews, change ordinary skill defaults, or retrofit played games. All33 Treachery, all14 Skills and all12 undealt Nexus remain native. There is no fabricated starting Nexus hand.

The previous entry rejected this fresh composition before offers. The shared classic Nexus skill predicate now recognizes the explicit income overlay, and the Banker initializer passes the original Nexus setup path. Existing payment, recipient, front-shield, per-phase and Mentat calculations are unchanged.

Native Guild self-shipment to Polar Sink pays4 (wallet5→1) and grants Atreides one unavailable spice. Three paid earns none; Emperor's four paid to Guild earns none. Advanced original Tech/Strongholds retain native Guild timing; actual Heighliners income settles at phase end rather than becoming a Banker invoice. The existing legal policy continues without spending deferred currency. Actual390px table shows front1 while available wallet remains10; the last ordinary Collection Ready enters real Mentat, credits10→11 and removes the front-shield notice without an extra action. Browser errors empty; no root overflow. /tmp/dune-classic-nexus-banker-ui-proof.json records local proof.

Actual isolated CLI BANKERQA v8 reaches leaderSkills, income-v1, all14 original cards in deck/offers and all12 Nexus in deck. No existing room or database is changed. Evidence: tests/classic-nexus-banker-income.test.ts and tests/fixture-classic-nexus-banker-income.ts. Original earned-custody and per-payer policies remain provisional; wider printed effects, combination and deployed acceptance are not certified.

node --import tsx tools/start-prototype.ts --profile banker-income --nexus-cards \
  --db /private/local.sqlite --room ROOMCODE --version 7 \
  --out /private/new-classic-nexus-banker-entry

2 October normal-band checkpoint: a separate fresh local banker-income classic/base33/all-fourteen-skills-only Basic/Advanced profile connects actual positive bank payments to automatic current Mentat collection. Bounded coverage is Partial / Development Verified. No public start, old-game retrofit or other module is enabled; this is not deployed acceptance.

4 October standalone E3 modules: original Ecaz/Moritani skills preserve Tech Basic/Advanced3..6 and Strongholds Advanced2..6, optionally both. Banker stays a separate opt-in: actual opposing paid4 qualifies, not bank2 subsidy or paid1. Original Mentat collects once. Duke assignment and Moritani assassination/normal-call limits remain; see combined source and cases.

4 October Advanced Stronghold composition: the same separate local entry preserves unused Stronghold Cards in Advanced classic or supported E1/E2 native2..6-seat skills; optional Tech still needs3..6. Arrakeen bank support is not payer spending: declared0/2/5/6 means actual own0/0/3/4, and only4 qualifies a grant. Human HERCFX3B v20/Mentat pays4 after bank2 while Suk rescues3 without refunding support. Atreides retains wallet12/front1 until actual Mentat, then13/front0. See the combined source and evidence. Original earned-custody/separate-payer policies remain; no public activation.

4 October native Tech composition: the same separate opt-in preserves unused original Tech in fresh3..6-seat supported Ixian/Tleilaxu/CHOAM/Richese Basic/Advanced lobbies. Native deck/roster limits and payment recipients remain. Richese marker invoices retain native noField/event validation. Human YWVH5XQF v8 pays1 for a concealed5 plus one free companion, wallet6→5; the earlier actual four-spice Emperor revival leaves Atreides Banker-front1 unavailable while its Heighliners separately accrues1. A Tech credit is not another bank-payment producer. See the native contract and evidence.

4 October classic Tech composition: a fresh classic3..6 Basic/Advanced banker-income lobby may retain canonical unused Tech Tokens. Original phase-end Tech income is independent of the front-shield grant; neither credit is another player's bank payment. Human 63LV57W2 v13 paid actual Smuggler4 for physical5, accrued one unavailable grant and one original Heighliners spice, then collected Tech at phase end and Banker at actual Mentat. Ordinary city Collection stays separately quoted. Native/other overlays and pending earned custody/split questions are unchanged; see the combined contract and evidence.

4 October composition: the separate banker-income entry additionally admits bounded Advanced native Ixians and/or CHOAM plus classic seats and their distinct required family decks. Actual native support payment grants one unavailable front-shield spice and original Mentat collects it once. See the current native contract. Ordinary/default activation and provisional earned custody are unchanged. The bounded Advanced Tleilaxu composition also shares this separate opt-in. Its foreign revival never creates a Banker assignment; original paid bank legs and own native trainer eligibility remain. The bounded Advanced Moritani composition also shares this separate opt-in with its original assassination preview. Native Terror placement remains free, not an invented qualifying bank payment. The native Richese composition adds Basic/Advanced Richese and its required CHOAM deck. Advanced Richese's funded ally contribution follows the authorized Emperor/bank recipient rule; the buyer-to-Richese share does not count as a bank payment. Basic retains its publisher receipt. Actual human E2K2U5ZW v26 paid the original eight-spice Ornithopter invoice as buyer4/Richese4, earned one unavailable Guild Banker spice, and collected it once at native Mentat after ordinary Collection. The front-shield pile stayed separate through Revival and movement; refresh retains Mentat/wallet7/empty pile. No public-mode or deployed acceptance. The native Ecaz ordinary-disc profile also admits this separate Basic/Advanced opt-in with its original five-disc training and Ambassador custody. Actual Emperor ordinary shipment pays4 for two counters and grants native Ecaz Banker one deferred spice without changing its available wallet in both bands. An Ambassador bank grant is not a payer payment. Shared-Duke assignment and combined Occupy skills remain separate.

Normal income local contract — 2 October 2026

The original photographed card says gain one spice when another player makes one bank payment of at least four, once per phase. This is a mandatory additional bank grant, not skimming the original payer or recipient; no new action, Karama response or confirmation is invented. Ordinary costs and their original counters/recipient/physical suffix finish once before the grant.

The original private-backed-up branch admits unique2..6 classic factions, Basic or Advanced, base33 Treachery and all14 Leader Skills alone; the native section below adds supported Basic native skill profiles. Actual paid normal auctions, funded shipments, paid force/leader/KH/Emperor-extra revivals and resolved bank support use original final-bank receipts. Player income, free/waived/stopped/invalid sources and self-payment do not qualify. The original bank recipient matters: canceled Emperor or Guild income may leave a bank payment, while income actually received by a player does not.

One payment is not several smaller payments summed together. Actual own/donor legs keep their payer identity; two payers at two each do not make one payer at four. The lower1..3 Banker battle payment stays separate from support. This per-payer/source composition is a conservative local interpretation, not a separately located publisher split-funding example. No future award can finance the original payment.

An actual available living native trainer supplies new normal income. A captive supplies no upper band; concealed unselected skills are unavailable. Own-battle selected-trainer eligibility uses actual resolved survival, not private pre-reveal timing. One physical card's turn/phase stamp cannot reset through death, return, refresh or same-phase reassignment.

The already-earned front-shield pile remains bound to its ORIGINAL gaining faction provisionally in this fresh profile even if the trainer dies, is captured or the card returns/reassigns. This conserves earned currency and does not transfer it with a skill card. It does not answer the previously asked death/capture question or create universal completed-mode authority. The historical pending boundary below remains recorded outside this profile.

Deferred spice is not added to a spendable wallet before actual native Mentat opening. Human/four-policy bids, shipping, revival, support and lower Banker spending use original available money. Mentat atomically marks/credits each uncollected grant once before optional work/victory; collection is not a qualifying payment and creates no recursive income. There is no arbitrary read heal or fictitious persisted half-phase collect choice.

Only physical public front-shield owner/count and current-phase use are projected. Private bank amounts, source/receipt, hidden plans and later skill entitlement stay private. Current-source corrupt/stale/duplicate/foreign actions and recovery reject immutably; closed history no longer requires the original trainer/card or old wallet to remain in place. Bounded signatures check consistency, not authentication of wholesale rewritten saved JSON.

Frozen verification passes types/lint, 6,487 offline tests, the 140-case Banker/profile union and build. Eighteen actual native producer/threshold/ trainer cases conserve all33 Treachery Cards and14 skills through original payment and real Mentat; independent combat/Collection quotes separate native bounty/income from support costs. All four minimal legal policies exclude the front-shield pile from available budgets. Native death/capture/reassignment, once-phase and separate payer legs have meaningful JSON/authenticated SQLite regressions, including actual final Collection races and private suspended Emperor/Guild invoices. Two final independent scoped reviews have no finding.

Original private-backed-up six-seat CLI setups were continued without redealing: Basic 6VZ8G5BY v38 used native Emperor self-auction payment to the Bank; Advanced 8TN8BTLT v31 used native Guild own-bank shipment and its genuine allow decision. Human390px controls earned1 without changing the Banker's available wallet, retained the notice through refresh and collected at actual final Collection readiness to Mentat exactly once (10→11 and3→4). The notice's initial26px player-strip squeeze was reproduced visually and fixed by placing it in the main column; fresh proof shows354px width. All cards/skills/normal and elite force inventories remain conserved, with the23 prior isolated QA rooms' states/versions unchanged. Final guide10/10, types/lint/build and expanded390px guidance pass; all82 original seats in25 targeted QA rooms restore after final worker reload without double collection. Local HTTP is 49/55, with six known upstream503 rejection failures: not a green suite. Code 6785e622a7 is pushed; exact CI36923901367 and container job110576362446 completed/success with mandatory isolated storage/HTTP verification before verified-image publication. Image: ghcr.io/quintine/dune:sha-6785e622a7bc8b850aa5e3d338c63be5a33a9403. Deployment and complete skill/module acceptance remain open.

Basic native Banker integration — 2 October 2026

This additive local integration connects the four already-supported Basic native Leader Skill families: Ixians (alone or with Tleilaxu), Tleilaxu alone, CHOAM alone, and Moritani alone, otherwise classic opponents. Each uses its single required Ix, CHOAM, or Ecaz Treachery deck and all fourteen original Leader Skills. Advanced native factions, other overlays, mixed expansion families, public starts and old-game retrofit remain outside this boundary. The classic Basic/Advanced base33 contract above is retained.

tests/fixture-native-banker-income.ts creates ready fresh native lobbies and calls initializeSpiceBankerIncomeGameForAudit, never setting the income flag on a played game. Only the original skill shuffle is controlled to obtain a real Banker offer; native Treachery, Traitor/Face Dancer and Terror shuffles retain their original entropy. Original Ix starting-card selection, skill assignment, Traitor/Face Dancer setup, Moritani placement and CHOAM setup continue through the engine. Revival examples label their staging: conserved normal/cyborg forces move from reserves to Tanks after genuine setup; cancellation cases move an original Karama from the remaining deck only if the owner lacks one. No sale, payment receipt, pending continuation or deferred grant is fabricated.

The reusable createNativeBankerIncomeFixture({ family: 'ixians', withTleilaxu: true }) case stops before the original final auction payment: another payer, the Emperor, buys its native lot for four paid to the Bank. payNativeBankerIncomeFixture executes that action and its original response suffix; advanceNativeBankerIncomeToPhase(game, 7) and the existing advanceSpiceBankerIncomeToMentat continue the real Collection-to-Mentat path. The focused regressions cover each native family, actual card delivery and debit, unchanged pre-Mentat Banker wallet, deferred collection, Emperor player income, and free/paid Tleilaxu-recipient revival. A Tleilaxu own-revival case distinguishes its actual four-spice bank debit from the separate printed free-revival bank reward; the reward is not another player's payment. Canceled Tleilaxu income cases distinguish the actual payer's zero/three/four bank debit from the separate free-revival reward included in the native income response. In particular, an original three-spice cyborg debit plus one free reward must not be mistaken for another player's four-spice bank payment.

Authority remains the photographed Banker card, the existing Leader Skill rules and original native payment/recipient rules. This composition does not resolve the previously open earned-spice death/capture question. Original gaining-faction custody and separate-payer threshold interpretation remain the explicitly provisional local policies above; no broader ruling is inferred.

Bounded runtime evidence: twelve actual native Banker scenarios pass, including all five native compositions through real Mentat, native player-recipient exclusions, self-bank revival and canceled income at actual cost0/3/4. Three initially failing collection cases stopped at phase8 while the existing Ix Amal opening was still pending; the helper now finishes that native opening before observing automatic collection. Engine phase ordering is unchanged. Final parent checks and human controls are recorded with the native payment checkpoint; this is not whole-faction/module certification.

The affected payment rule batch110/110, final native/guide26/26, types/lint and build pass. Four additional native post-income policy continuations are legal. Genuine CLI 7B55PLA5 v8 reaches original native setup. Human390px 86WQMSZV v18 closes the actual Emperor self-auction4, observes Ix available10 and deferred1, then finishes original Collection and the existing Amal opening before automatic Mentat collection to11. This does not approve the pending universal earned-custody policy or enable public starts.

The historical13 September checkpoint below is Prototyped, with Partial rules coverage, and connects the lower battle band only. The normal band is now connected solely in the fresh profile above; combined acceptance and public mode starts remain gated.

Source and payment contract

The physical card permits spending one through three own spice with the Battle Plan to add the same amount to the selected leader's strength, independently of force support. A captured skilled leader can supply this battle band with the captor's spice. The common skill rules remove the bonus if that leader dies. See GF9 CHOAM & Richese rules and Q&A, pages 8–9 and 12, and Jack Reda's walkthrough, 17:09–17:37. The existing physical card image and sourced full paraphrase are retained; this creates no new card, resource or leader identity.

The core rulebook provides the payment precedence in its Traitor and Advanced Combat sections: a sole successful traitor caller loses nothing; otherwise committed Battle Plan spice goes to the Bank on either outcome. The prototype therefore spends Banker spice even on leader death or traitor loss, and waives it for a sole traitor-call winner. Death removes the strength bonus, not the already chosen plan cost. This is an explicit composition of the card and core payment rules, not a separately located Banker death FAQ. It supersedes the earlier private research suggestion that death should release the commitment. Printed disc strength, Zoal's copied value and leader bounty are unchanged.

The normal band is mandatory once per phase when another player makes one payment of at least four spice to the Bank; multiple smaller payments do not combine. Revival qualifies. Earned spice waits in front of the shield until Mentat Pause. Neither publisher nor designer material located in the renewed search settles custody of that accumulated income if the trainer dies or is captured first. The user has been asked whether to retain the pending boundary or rule that already-earned spice stays with the original faction. No answer is assumed; only the explicitly provisional fresh profile above implements normal income. This historical question remains open outside that profile.

Connected behavior

bankerSpice is an optional sealed-plan amount; absence or zero declines. The engine validates an actual living controlled skilled disc, its battle posture, integer range and own funds remaining after force support. Ally aid and Stronghold support cannot fund this separate commitment. Saved plans reserve the amount against bribes and other spending. The same checks run before views, automatic normalization and actions. Legacy plans retain zero Banker spending.

The battle quote computes a separate payment alongside the existing support settlement and a surviving-leader score bonus. It does not add Banker spice to CHOAM's force-support share. Payment and resolution commit atomically through the existing versioned room write, with an automatic explanatory history entry.

The battle panel distinguishes support and Banker amounts and shows the combined own commitment. The owner and authorized full-plan inspector can see the sealed amount; rivals see it only when both plans are public. All four AI profiles use the public skill and private own budget to submit funded plans. This is legal prototype behavior, not calibrated Banker strategy.

Evidence and remaining scope

Focused engine checks cover one through three spice, win/loss, death, traitor win/loss/mutual calls, captured-leader funds, printed values, own-support funding, private views, malformed saved fields, JSON restoration and all four profiles. SQLite checks cover reserved-spice diversion, private restart, concurrent final resolution, exact waiver/bounty and legacy absence. Controls and inspector checks retain the private/public boundary. Independent rules, persistence and UI review cover this supported boundary.

Two genuine four-profile Basic/Advanced samples completed with 99/212 actions, 3/6 JSON restorations and no rejected candidates. Their first seat explicitly selected its offered Banker, but neither game used Banker spending. These are continuation samples; the targeted tests establish the effect. A fresh browser room assigned Banker through genuine setup, followed by a conserved staged battle. The player selected Hasimir Fenring, Baliset, four dialed forces and three Banker spice. Pending refresh restored that commitment with five spice still held. Settlement paid three, added three strength and left one Arrakeen force, fifteen reserves, four Tanks and two spice. Another refresh retained those values and the same private Crysknife, Baliset and Burseg while card cleanup awaited the player. This targeted scenario is not a complete human game. Required broad results are recorded with the checkpoint.

Remaining work includes normal income, all economic trigger routes and ordering, its public deferred custody, combined modules, wider full-game interaction and strategy refinement. The existing development gates remain unchanged.