117 lines
6.4 KiB
Markdown
117 lines
6.4 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.
|
|
|
|
## 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 additionally includes the prospective Guild income and Spiritual
|
|
Advisor opportunities. 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.
|
|
|
|
## 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.
|