185 lines
10 KiB
Markdown
185 lines
10 KiB
Markdown
# 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](DEFERRED_SHIPMENT_ARRIVAL.md#native-own-arrival-continuations--15-october-2026).
|
|
|
|
## 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](DEFERRED_SHIPMENT_ARRIVAL.md#ordinary-guild-income-before-ambassador-entry--15-october-2026).
|
|
|
|
## 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](DEFERRED_MOVEMENT_ARRIVAL.md) and
|
|
[shipment](DEFERRED_SHIPMENT_ARRIVAL.md) 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.
|