Files
Dune/docs/REINFORCEMENTS_RUNTIME.md
Quintine 677ad7aa3c Compose independent cards with Discovery and optional Nexus
Connect original selected-deck Discovery setup, optional Nexus/World/Skills/phase modules and physical card consumers through shared public capabilities. Retain Cunning revealed-location arrival, Sandtrout suppression, paid nested R/Harass and actual later Recruits revival. Preserve native trained-capture and unrelated-preview boundaries.

Validation: frozen 15-file118/118, types/lint/build and six finite original-action/rendered-control programmes; four minimal legal policies. External smoke corrections changed no application source. Existing persistent notices also rechecked23/23. Full combinations, assurance and deployed acceptance remain open; no saved-game, restart or deployment operation.
2026-10-18 11:48:45 +11:00

23 KiB
Raw Permalink Blame History

Reinforcements battle prototype

The separate Ecaz Treachery Cards variant shuffles one physical Reinforcements card independently of choosing the Ecaz faction. Its bounded handler supports Basic/Advanced classic-faction tables, clean selected Ix and/or CHOAM native/base rosters, and clean Ecaz/Moritani expansion tables. Classic and selected E1/E2 Worlds retain native sources and their original Tech/Stronghold envelope; see the World phase contract. Supported native Basic/Advanced Occupy retains its own co-present armies; Basic mixed-marker and other unprofiled co-sides stay guarded. The holder may commit it in either Battle Plan card slot. It is neither a weapon nor a defense: Prescience of a category receives None, while the physical slot stays occupied and hidden until reveal. A named-card inspection still fixes the exact card. Harass & Withdraw may share the plan under the provisional original-cost-first policy. Original or copied Stone Burner composes in clean selected Ix/CHOAM families and the existing native Advanced Occupy envelope. Other profile boundaries remain.

Independent Discovery composition — 18 October 2026

Original selected36/38/50 cards now compose with Discovery7/8 and optional Nexus, World/all14/phase modules. Real Jacurutu reveal/free entry and paid shipment precede purchased R/Harass settlement; typed native fees and returns retain existing policies. The canonical source-bound programme records actual later Recruits revival, focused proof and remaining limits. This prototype does not certify full card/module combinations or complete modes.

Independent World/Nexus temporary roles — 18 October 2026

Fresh classic independent36 + Homeworlds + Nexus12 now composes in Basic and Advanced, retaining optional all14, Tech3+ and Advanced Strongholds2+. Original host controls select these modules before readiness and native setup. Other native-family, Discovery and unrelated preview envelopes retain their limits. This is prototype integration, not complete-mode certification.

The shared own-World fee pool now removes a temporary role only when its physical normal counter pays the fee. Provisionally, ordinary non-role counters pay first. Kaitain7 with five Cunning roles paying three here leaves normal4 / temporary4, a valid physical pool with maximum dial8. A fee on the other native World leaves all seven Kaitain counters and five roles. Pre-fee printed face and support traits remain; the reserve fee cannot enter dial casualties or Suk rescue. The original Cunning receipt retains count5. A reduced-role casualty record additionally identifies its local reserve fee; unchanged historical five-role records keep their existing form.

This extends the existing provisional fee-exclusion policy, using the user's choose-recommended direction. The sources establish the original three-counter fee and five-counter declaration, not the ordering of this overlap. It is not a new publisher ruling. Engine, human selected-source maximum and minimal bot source pools all use the same physical quote. The source selector explains the policy and the table displays the remaining temporary count.

Original-action cases: native battles, Recruits/Harass and setup, and physical role quote. Full combinations and comprehensive assurance remain deferred.

Original Skills/phase composition — 17 October 2026

Supported original all14/card profiles retain Tech3–6 Basic/Advanced and Strongholds2–6 Advanced without World/Nexus/Discovery. Original reserve-fee funding stays separate from earned support: Bank2/personal0 cannot finance three missing reserve counters. Suk rescues only actual committed losses, never the fee; native marker materialization and mandatory disposal remain. Current471/471 composition and physical programmes.

Clean selected Ix/CHOAM families — 16 October 2026

Plain selected ix, choam, or both now admit Reinforcements with native/base rosters in Basic and Advanced. This closes a profile-admission gap: original independent pre-setup cards were present, but the plan rejected the profile. Original setup keeps selected35/47 plus three physical cards (38/50 total), native HMS/cyborgs, Face Dancers, Auditor and the separate ten-card Richese cache. No Homeworlds, Nexus, Skills, Discovery, Sandtrout, mixed E3 or unrelated preview is added. Original Tech/Advanced Strongholds separately use the phase-module contract above. Classic, paired E3 and selected Advanced Occupy remain separate; public starts and played-save conversion stay gated.

Reuse the existing explicitly provisional normal-first, all-outcome fee and fee-before-Harass order, not a new publisher ruling. Native casualty origins alone feed Ixian substitution; do not substitute a second copy of the fee. Tleilaxu Face Dance and Advanced Auditor/CHOAM phase opening remain native. Richese first materializes its own No-Field, then pays three original remaining reserves, then returns successful Harass counters. Marker0/3/5, insufficient funding and physical original/copied Stone reuse those same rules.

Two fixture programmes retain genuine setup, paid shipments, physical armies, wallets and native continuations. The Richese Basic route funds actual tuning shipments through original collection over four turns, not assigned spice or board counters. An initial contributed board-reset fixture was rejected and rewritten before accepted proof. Physical card/identity positioning is explicit, conserved staging; a Stone cache-to-hand move is not claimed as a natural purchase. Advanced Richese uses its funded turn-one route at20 reserves for markers0/3/5; the low/capped multi-turn tuning evidence is Basic, not an Advanced storm matrix.

Changed-path runtime proof: seven actual390×844 control journeys reach Collection with native aftercare: mixed Ixian payment, Tleilaxu loss/Face Dance decline, Advanced Auditor inspection, funded Richese marker, short-budget Harass fallback, copy-first Mirror/Stone, and Advanced union-family fee/return. No horizontal overflow or app exception was observed; initial Vite dependency aborts are separate. Four legal policies exercise32 native programmes/1594 engine-validated reserve proposals/136 continuations and16 Richese programmes/1428 proposals/58 continuations. Policy proof is bounded legal participation, not strategy or calibration. Frozen related20-file union passes262/262 after removing two obsolete profile rejections; types/lint, build and actual prototype help pass. Build retains Node deprecation, large-chunk and dynamic-route classification warnings. No HTTP/database boundary changed or deployed evidence is claimed.

The combined-army follow-up retains own-holder reserve cost and selected lead card/payment ownership. It does not revise the provisional outcome accounting below.

The holder must have three own reserve counters when sealing the plan. The owner-only battle offer displays availability and the exact provisional cost. The current prototype deterministically takes ordinary reserves first, then elite reserves if needed, transferring precisely three physical counters to the corresponding Tanks subpools when the battle settles. There is no spice payment or on-board arrival. The +2 changes the calculated normal-outcome battle score, not the committed physical dial, support payment, casualty count or leader survival. The card is discarded after any revealed result, including an own, opposing or mutual Traitor call and Lasgun/Shield explosion. The cost is likewise paid on each of those outcomes. A successful Traitor call still supersedes the normal score; the modifier never overrides it. Public history records the transfer; the sealed card and owner reserve mix stay private until the reveal. JSON-restored decisions and transactional room updates cannot charge the same cost twice.

Provisional interpretations, not publisher rulings: The card says “increase the dialed number by 2” and transfer three reserves, but no retrieved combined ruling answers whether a sole successful Traitor caller instead keeps their reserves, how the transfer orders against an explosion, whether +2 adds Advanced support or physical losses, which reserve types the holder may select, or whether the three spent reserves count as battle losses for Atreides. For this bounded prototype, payment is at battle settlement before on-board casualties on every outcome; the engine counts the three as battle losses, chooses normal-first rather than offering a type selection, and keeps the score bonus separate from physical dial. The source review records the competing reading and pending user question. These choices are visible so they can be revised without changing prior hands or inventing hidden information.

The owner receives a card-slot explanation and disabled reason when fewer than three reserve counters remain or the bounded mode is unsupported. All four AI profiles generate legal candidates in the classic and Ecaz/Moritani profiles and can select either slot, including an Advanced plan. The current scoring is a minimal legal participation heuristic, not difficulty calibration. The prototype does not certify the whole three-card variant, other expansion combinations, optional modules, historical-save compatibility or public mode starts.

Focused rule, engine, controls and in-memory SQLite tests cover both slots, Basic/Advanced payment, elite subpool conservation, traitor/explosion disposal, private sealed views, JSON restoration, rejected-action immutability and competing final room commits, now including a paired Ecaz/Moritani saved battle. The test results and actual browser/UI evidence for the current checkpoint are recorded in Implementation status; test coverage is not a publisher ruling.

Combined utility plan — 16 October 2026

The standing choose-recommended priority selects the existing native settlement order for the two physical specials in one plan: quote and debit three original own reserve counters before Harass returns any undialed counters. This is an implementation interpretation, not a newly retrieved publisher FAQ or an answer to the earlier reserve-payment question. The source audit's printed effects and original provisional all-outcome/normal-first cost are unchanged.

Three original own reserves must remain funded at commitment after projecting any own No-Field revelation. A future return cannot fund a deficient plan or change its quoted normal/elite mix. For example, two original ordinary and one elite reserve are spent even when Harass subsequently returns four ordinary counters. Both cards discard once. The +2 remains normal-score-only, not extra physical dial, support or winner casualties. Opposing successful Traitor cancels only Harass; Reinforcements still pays under its existing provisional all-outcome policy.

Both slot orders compose in the existing Basic/Advanced and selected Advanced Occupy envelopes. Only the card user's reserves and undialed forces change; original fixed Ecaz commitment and the other ally's pool stay separate. Basic/unprofiled co-side and other module gates stay; Stone uses the physical-token composition below. No persisted state or fresh/public profile is added.

Own concealed No-Field funding

The existing native battle path materializes a No-Field after both seals and before card costs. Precommit availability now forecasts that same owner's remaining reserves. Three must remain at that point, before any future Harass return; another player's marker/reserves cannot affect or fund this card. This is the explicitly provisional existing-order composition, not a new publisher ruling or a waiver of the original fee.

Before-state token3/reserves3 accepted Reinforcements, revealed into reserves0 and then failed the first Traitor action. The new first-plan check rejects that unfunded commitment without reserving cards or revealing a token; Harass alone remains legal. Token0/reserves3 remains funded. Native actual revelation, reserve-cap, token identity/history, support and fixed/variable losses stay. That earlier checkpoint did not admit Basic Richese. The clean selected-family composition above now admits it without changing this funding order.

Selected native Worlds now compose the same funding order. A real marker3/ reserves5 owner preview correctly left2 and blocked, but the newly reachable native-source API path accepted its first R plan. It now rejects unchanged before source quotation and still permits H-only. Richese's ordinary primary World pool debits at the actual reveal; the three-counter native fee remains separate. See the native World contract.

Scoped proof

The affected eleven-file offline union passes 134/134, with types/lint and production build passing (module-register, large-chunk and Unknown-route warnings). Six new behavioral regressions cover both slots, original typed costs, deficient original reserves, all Traitor outcomes, explosion and both active Occupy card-user roles. The test battle uses rock so automatic collection income cannot obscure support accounting.

Fresh Node programs exercise eight Basic/Advanced cases across all four profiles, both slot orders and16 accepted continuation actions. A real styled 390px journey starts at three reserves (two normal, one elite), selects both cards and shows the explicit provisional order. Original dial1/support1 with leader2 plus bonus2 beats opposing leader4. Four ordinary fighters return; the original elite reserve is spent, leaving reserves4/Tanks16/elite Tanks5, spice29 and no army, battle or decision. Both cards discard once; native collection opens. No root overflow or browser/application error occurred.

Current guide parse, combined-policy anchor and38 evidence paths across the two topics resolve; all ten checklist facets remain Partial. Removed the obsolete pair rejection and an incidental absent-card candidate pin. No human server, saved room, D1, deployment or public gate changed; no new broad, HTTP, recovery/privacy/custody assurance campaign ran. Private proof artifacts remain outside Git; the owned source host and throwaway scripts were removed.

Native Stone composition — 16 October 2026

Reinforcements now composes with same-plan or opposing Stone Burner, including a physical Mirror Weapon copying Stone. This uses the existing fresh native Advanced Occupy envelope with the independent Ecaz cards and actual Richese cache. No new profile, Basic Richese eligibility, public start or optional module is enabled.

Stone still compares only physical undialed counters, including original fixed Ecaz and native variable ally contributions. Reinforcements adds no physical tokens, extra dial, support or on-board casualties; its +2 normal-score bonus is inactive for Stone comparison. Its original own-reserve cost still pays once under the existing provisional all-outcome policy. Original/copy kill-or-ignore modes and Traitor precedence remain unchanged. Reinforcements discards once; a winning physical Stone or Mirror keeps ordinary retention.

The printed physical-token instruction and the existing score-only reserve card implementation are composed here. The reserve-payment question remains unanswered; no new publisher ruling or user answer is implied.

Scoped native Stone proof

The affected sixteen-file offline union passes 167/167, with types/lint and production build passing (module-register, large-chunk and Unknown-route warnings). New pure/native cases cover physical-token victory despite +2, same-plan/opposing cost, original elite reserves, fixed/variable card users, copied kill mode, Traitor precedence and physical retention.

Eight fresh Node programs cover both lead roles and all four legal profiles, with original/Mirror attacks and36 accepted continuation actions. The native fixture initially exceeded hand capacity when a third selected card was added; it now returns unselected real hands to the conserved deck before lead choice and checks four-card limits. The actual390px journey was repeated on that corrected fixture, starting with only three held cards.

Original total dial4/support1 compares five undialed coalition counters against four, never seven. All three native voters decline Traitor through actual controls. Ecaz pays reserves15→12 plus original fixed3 losses (Tanks6); Guild loses only variable1, leaving Ecaz2/Guild3 in the territory. Support costs Ecaz9→8. Reinforcements discards once; Stone is retained through its original choice, and battle/decision clear into collection. No root overflow, browser/application error or over-capacity hand occurs in the corrected journey. The earlier overfull fixture is not accepted evidence of a legal hand.

Current reference parses; the composition anchor and23 evidence paths across both topics resolve, with all ten facets Partial. No human server, saved room, D1, deployment, public profile or new broad/HTTP/recovery/privacy/custody assurance campaign changed. Owned hosts/scripts are removed; private proof artifacts stay outside Git.

Classic Homeworld reserve fees — 16 October 2026

Fresh ecaz-treachery --homeworlds composes original classic2–6 Basic/Advanced and all three independent physical cards (base33+3). Reinforcements may be used on Arrakis, a foreign World or an own World; it does not inherit Harass's printed own-World ban. Original Tech/Advanced Strongholds now follow the classic World phase contract. Selected native E1/E2 Worlds use the native setup contract and original phase-module composition; other rosters/overlays, public starts and save conversion remain gated.

Sources, physical pool and original quote

The existing provisional normal-first/all-outcome fee still consumes exactly3 own native reserve counters into matching normal/special Tanks subpools before Harass returns and battle casualties. Visitors, an ally and future returns cannot pay. Canonical native withdrawal updates World custody and aggregate reserves together, not fake board keys or revival. Population observation follows the complete typed fee. The +2 remains score-only.

An owner-only finite source list exposes every exact legal split, including real normal counters moved between Kaitain/Salusa. A unique source may derive; ambiguous omission, foreign IDs, wrong types, nonphysical counts and overdraw reject. Plan.reinforcementsSources records the chosen fee before both seals; sealing pays nothing early. Sources are not a new ordinary Prescience element. Named full-plan inspection receives the actual committed sources privately.

On an own World, native reserves and the battle army are the same physical counters. Under the explicit choose-recommended composition, reserve the on-location fee from the physical dial/support/casualty pool while retaining the original pre-fee printed face and combat traits. An off-World fee does not shrink that army. This is provisional composition, not a newly retrieved card-specific FAQ or permission to spend one counter twice.

For example, Kaitain3 paying3 here can still play its printed-strength/leader plan at physical dial0, but not dial1. Taking3 normal from Salusa instead leaves those three Kaitain natives available. With Kaitain5, a split1 Kaitain/ 2 Salusa fee crosses low at4; its explosion still loses the original high2, not the later low3. The optional nested World-loss faceAtResolution keeps that exact original choice through mandatory disposal. No new game root is added; the new nested source/face fields are not described as no saved fields.

Controls show exact allocations and a wrapped selected-fee caption, project the own-World physical maximum, retain sealed source guidance, and carry the whole source choice when filling a legal completion. Private full-plan and compliant-plan reviews display the same real source map. Four minimal policies generate explicit legal source-bearing plans and native-only continuations.

Canonical named questions and native locations

The constrained-plan smoke found the old whitelist omitted the independent cards. game/truthtrance-card-names.ts now supplies canonical ordinary/Ix, Richese-cache and independent names to current hand/count controls and named battle conditions. Every consumer moved; no obsolete re-export remains. Names do not select/deal a family or change a utility card into a weapon.

A real Reinforcements-and-dial3 question then exposed the formatter's Arrakis-only lookup. Server logging, active preview/answer and history now provide canonical combat-location names explicitly. A real Kaitain promise can answer Yes, find the necessary off-World Salusa fee and execute it. Its legal-completion button replaces an invalid own-World fee draft as well as the dial/support/cards. Old copied-registry and incidental wording assertions are deleted, not re-pinned; native action/physical-outcome regressions replace that evidence.

Scoped native proof

Six actual390px GameTable journeys reach Collection with no battle/decision/ World-loss frame: foreign split2K/1S, scarce own3K/physical0, split1K/2S threshold explosion, Fremen three-Fedaykin fee before15 normal Harass returns, entitled full-plan source inspection, and the named R+dial3 Kaitain promise. The source review/selection stays readable; its current metadata never pays early. Native-only votes, original support, exact Tanks and mandatory discard are observed.

Thirty-two fresh programmes/four policies validate1682 generated R candidates against the actual engine and accept114 plan/vote/loss continuation actions, including the underfunded-card fallback. These are separate counts, not1682 continuations. Actual setup, shipment, native movement and battles produce the positions; only conserved hands/Traitors/unopened first-Blow cards are positioned explicitly. This is not unstaged full-game card acquisition.

The original inspection probe initially stopped before native elite-strength priority passed; completing that original response fixed the probe without changing timing rules. The named-question failures above were real runtime gaps and are repaired. Across two owned Vite startups, eight old dependency requests abort before rendered journeys; no overflow/application exception. Owned hosts/tabs/scaffolds are removed and proof artifacts remain outside Git. No saved game, DB, human service, public gate or deployment changed. Whole mode/variant acceptance, calibration and final assurance remain unfinished.

Frozen related41 offline files464/464, types/lint and production build pass. Existing module-register/large-chunk/Unknown-route warnings remain. CLI help executes;218 unique guide evidence paths, both new anchors and related IDs resolve. Homeworlds, Reinforcements and Truthtrance coverage remains Partial. No HTTP route or DB boundary changed; no broad/final assurance campaign ran.