Support Truthtrance shipment promises with Advanced Guild

Admit base Advanced Guild through the existing active unused-shipment predicate. Preserve native interception, typed transport permission, rate cancellation and actual payment/arrival. Opposing stops evaluate the complete promise against absent shipment; self-interception cannot voluntarily evade a required shipment. Share the authoritative self-stop reason with controls, and hide executable completion guidance during pending native windows. No other profile opens or strategic AI tuning is added.

Validation and exact frozen-source evidence are in the canonical Truthtrance shipment contract. Public classic Advanced starts earn real physical Truthtrance/Karamas via the unopened original starting deal, native Guild TAKE/WAIT, typed Emperor delivery or opposing stop, and Guild half/full-price routes. Four minimal profiles use legal native continuations. Separate controlled probes cover No/mixed claims, self-stop, unaffordable repricing/owned alternatives and Fremen route denial. Update existing scope expectations; no new recovery campaign.

Broader timings/routes/modules, complete modes, final assurance and browser/deployed acceptance remain open. No saved-room/database/reset/restart/deployment operation.
This commit is contained in:
Quintine committed 2026-10-18 14:29:18 +11:00
1 parent 377e9c5160
commit 2939ffa900
16 files changed
+678 -53

No files matched your search

+6 -2
View File
@@ -3318,8 +3318,10 @@ export function GameTable({
<HelpTip topic="guildShipment" />
{actionButton('Allow Homeworld shipment', { type: 'decision', event: g.decision.event, allow: true })}
{me.hand?.filter(canActivateKarama).map((c) => (
<div key={c.id}>{actionButton('Spend Karama · stop shipment', { type: 'card', mode: 'special', card: c.id })}</div>
<div key={c.id}>{actionButton('Spend Karama · stop shipment', { type: 'card', mode: 'special', card: c.id },
!!g.guildShipmentStopPromiseBlock, g.guildShipmentStopPromiseBlock ? 'guild-stop-promise-guidance' : undefined)}</div>
))}
{g.guildShipmentStopPromiseBlock && <p id="guild-stop-promise-guidance" role="status">{g.guildShipmentStopPromiseBlock}</p>}
</>
) : g.decision.kind === 'guildShipment' ? (
<>
@@ -3351,9 +3353,11 @@ export function GameTable({
type: 'card',
mode: 'special',
card: c.id,
})}
}, !!g.guildShipmentStopPromiseBlock,
g.guildShipmentStopPromiseBlock ? 'guild-stop-promise-guidance' : undefined)}
</div>
))}
{g.guildShipmentStopPromiseBlock && <p id="guild-stop-promise-guidance" role="status">{g.guildShipmentStopPromiseBlock}</p>}
</>
) : g.decision.kind === 'handExchange' ? (
<>
+5 -1
View File
@@ -354,11 +354,15 @@ export function Truthtrance({
Includes Fremen reinforcements and Guild transport from
southern reserves. Ground movement and transport of forces
already on the board do not count.
{' '}Guild interception and Karama rate responses resolve
before delivery. A stopped shipment can release an
impossible answer; an unfinished response does not fulfill it.
</p>
{!shipmentAvailable && (
<p className="notice">
Automatic enforcement currently supports the active
player’s unused ordinary shipment in base rules or a
player’s unused ordinary shipment in Basic or Advanced
base rules, including the Guild, or a
classic payer in the Richese Semuta profile. Select
that player and finish pending decisions first.
Native No-Field shipments and other rules configurations