Files
Dune/docs/BOT_ARRIVAL_PREFLIGHT.md

10 KiB

AI arrival checks

14 September 2026. This removes repeated AI candidates rejected by the existing arrival guard. It does not choose an order for simultaneous reactions or lift an unfinished expansion gate.

Native transport and BG own controls — 15 October 2026

guildShip no longer predicts its future positive Guild receipt as a busy response; ordinary ship no longer predicts future accompaniment as a busy decision. Shared preflight still reports resulting Intrusion but does not confuse it with an actual pending decision. Original funding/tariff, actual controls, pre-entry fighter choice, Fremen storm and paired-overlap gates remain. The engine's existing queue owns settlement, not bot-specific rules.

Genuine original native producers prove the Guild candidate and executable BG branches. All four owner policies legally acquire Duke after Guild income; all four BG policies legally convert fighters and accompany as advisors. The human/scripted retained-fighter child path is separate evidence, not a claim that every profile chose it. Affected six-file55/55,20 API/policy paths and four actual390px journeys pass. Obsolete predicted-reaction rejection and wording pins are removed. Minimal legal play only; no calibration or complete combination claim. Current authoritative contract.

Ordinary Guild-paid Ambassador candidate — 15 October 2026

Ordinary reserve shipment no longer treats future Guild income as an already-pending arrival response. The authoritative commit already queues entry behind its actual income/counter continuation. The bot adapter removes only that stale ordinary-shipment prediction at that checkpoint. The later native continuation above also removes direct transport's future-income and ordinary shipment's future-BG predictions; current busy controls remain.

The original native Ecaz/Moritani/Guild paid Ambassador shipment now has a clear owner-view quote and real committed permission/payment/entry path. All four profiles also legally consume its later actual native Ecaz assassination choice. Actual390px controls prove shipment1, Guild income1, Ecaz Duke acquisition and the original native target/replacement. The affected15-file union134/134 and types/lint pass. Obsolete future-Guild rejection and wording/bare-not-throw test pins were removed, not re-pinned. This is minimal legal participation, not strategic tuning or full arrival combination acceptance. Current authoritative contract.

Reproduction

The genuine combined-expansion samples with base seed 20260914 completed on 368a7a5, but Basic proposed forty and Advanced four unsupported Ambassador arrivals before choosing legal alternatives. The default six expansion samples also retained eighty-two rejected Ambassador/Terror arrival candidates. The deferred movement and shipment contracts explain the existing guard.

Connected behavior

After constructing its candidate actions and native source/payment choices, each AI profile uses botArrivalBlock to exclude known ordinary ship/move arrival conflicts. The adapter calls the same quoteCompletedMovementArrival used by authoritative preflight. It does not copy the Ambassador/Terror branches or infer a new rule from token co-location.

The quote preserves same-territory movement, single reactions, own-faction and allied exemptions, matching Ambassador immunity and Bene Gesserit stance. Shipment uses actual current controls rather than predicting future income or Spiritual Advisor choices as already busy. It uses the actual ordinary tariff and selected or minimum necessary allied contribution. A Guild-funded payment that creates no Guild income is kept. An owned No-Field is priced as one component without reading its concealed value. Advanced Fremen storm arrival keeps its existing response condition.

Only public board/faction/stance/reserve information and the acting seat's own funds enter the adapter. Concealed Terror faces and rival hands, spice, Traitors and Face Dancers are unnecessary. It does not mutate the view or sample randomness. Only the known typed arrival error excludes a candidate; unexpected faults propagate. The engine remains authoritative for every actual action.

Homeworld-sourced ordinary shipments now quote the same public arrival triggers, including a colocated Ambassador and Terror, after the bot selects its own physical source. Their off-planet origin is sufficient for the arrival quote; Homeworld source eligibility, tariffs and any payment-dependent Guild response remain authoritative engine checks, not duplicated AI rules. Other Homeworld routes, explicit Nexus shipments, special movement and unrecognized actions retain their own adapters and legal fallback search. This is not a complete action validator or certification that every AI candidate is legal.

Evidence

Focused real-engine cases exercise the original rejected entries and executable alternatives across all four profiles, supported single reactions and matching faction immunity, Guild-funded shipments, No-Fields, BG accompaniment versus fighter intrusion, JSON continuation and private-field access traps. The BG advisor fixture retains another faction in its territory so normal automatic stance settlement does not turn a lone advisor group into fighters.

Final checks and same-seed integrated results are recorded with the source-bound private checkpoint and Git message. Existing saved games remain protected; no server restart or database change is required.

29 September: Homeworld-sourced shipment overlap

A genuine five-seat Advanced combined Homeworld/Nexus/expansion game on 41fd6fe completed in 786 actions but proposed two Tleilaxu shipments from its own Homeworld into unsupported Ambassador/Terror arrival combinations. Both were rejected without writes before a legal alternative was chosen. The owner-view preflight formerly skipped every Homeworld shipment. It now passes off-planet Homeworld-source arrivals through the same public quote without assuming a price or hidden Terror face. All four AI profiles exclude the reproduced action while retaining an executable alternative. A same-seed genuine-setup replay completes in 786 accepted attempts, zero rejections, 21 JSON continuations and the same fourth-turn shared victory. This repairs candidate legality, not the unsupported arrival-rule composition or public expansion start gate.

7 October: the deferred Terror entry is a supported arrival

The engine now commits a Terror arrival whose entry coincides with the arrival's own interaction. openTerritoryEntry queues the committed entry in the additive Game.pendingArrivalReaction list and settleAutomaticContinuations opens the oldest queued entry as soon as no response, decision, Terror entry, Ambassador entry or Ecaz/Moritani overlap is pending. Payment, force transfer and the original movement never replay.

Consequently quoteCompletedMovementArrival no longer rejects a Terror arrival because a Guild income response, a Bene Gesserit fighter Intrusion or advisor choice, or Fremen storm protection is present; those windows settle first and the entry follows. The preflight still rejects a Terror entry already in flight (controls.pendingTerror) and every Ambassador combination (Ambassadors combined with another arrival reaction).

The two former bot policies that avoided those combinations are updated, not re-pinned: tests/bot-arrival.test.ts now asserts the Guild transport ships into its committed Terror entry, and tests/ambassador-terror-overlap-worm.test.ts asserts the queued worm ride defers the entry behind the pending Intrusion and then opens it after the decline. Both drive the deferred path to completion and keep the profiles' other policy checks.

29 September: Guild cross-planet transport and Terror

An unmodified six-seat Advanced Moritani sample at base seed 20260930 completed 1,262 actions and 34 JSON restores but proposed six illegal cross-planet Guild transports into a placed Terror while Guild income was pending. The existing bot preflight covered ordinary shipments, not the single-source guildShip action.

The owner-view adapter now quotes those transports with the submitted source, physical count, Guild tariff and selected ally payment. It excludes only publicly unsupported arrival combinations; payment entirely funded by the Guild ally has no Guild income response and remains eligible. Multi-source, Nexus and special routes still use their separate adapters. No Terror face or rival private field is read. The authoritative engine still decides every actual transport.

The focused engine regression first reproduced the rejected Guild action, then exercised all four profile filters and a Guild-funded accepted action. Same-seed genuine setup replay completed the same 1,262 accepted actions with zero rejected candidates and 34 JSON continuations. Both actual assassination opportunities were declined; this is not a natural reveal or replacement sample. The unsupported reaction combination and public expansion gate remain unchanged.

29 September: worm ride into Terror with BG intrusion

Another unmodified six-seat Advanced Moritani game at base seed 20261007 finished in 1,541 accepted actions, two rejected Fremen worm-ride candidates and 41 JSON continuations. Each rejected ride targeted a placed Terror while a Bene Gesserit fighter intrusion would open another arrival decision.

The owned bot candidate now quotes the same public destination triggers before choosing a worm ride; its current worm decision is the parent, not a second reaction. It leaves legal single reactions and supported Ambassador/ Terror overlap available. The focused regression reproduced the engine rejection, then showed all four bot profiles skip the conflicting destination and execute an alternative. The same-seed genuine game completes 1,541 accepted attempts, zero rejects and 41 JSON continuations. No hidden Terror face or rival hand enters the quote. Homeworld rides and other special arrivals retain their own gates; this does not implement the conflicting reaction or open public expansion starts.

Superseded 7 October 2026: the conflicting reaction is now implemented as the deferred entry above. The owned bot candidate may choose that destination again; the focused regression now asserts the ride is accepted, the entry waits behind the pending Intrusion and then opens after the decline.