Wire the Tleilaxu Ambassador force return

The last unimplemented Ambassador effect is now reachable. A placed Tleilaxu
token gives its beneficiary — the Ecaz owner or its ally — a private
ecazAmbassador decision at the new revival stage: one to four physical counters
return from the Tanks to reserves at zero cost, quoted by the existing
game/tleilaxu-ambassador-forces.ts, which also enforces the shared
Fedaykin/Sardaukar one-per-turn counter and keeps Ixian cyborgs uncapped.

The player view projects the maximum, Tanks and elite inventory and current
elite usage to the beneficiary only; the entry control offers a per-count
button and an explicit "Return no forces" decline; all four AI profiles choose
a legal return from the decision owner's own view or decline when the Tanks are
empty. Player-facing coverage text now lists Tleilaxu.

Kept gated exactly as recorded: the printed leader alternative, ordinary
force/free/leader allowance accounting around this independent grant,
dead-twice eligibility, and Tleilaxu free-income repeat scope. No ordinary
revival allowance, price, phase or income path changes.

Evidence: tests/tleilaxu-ambassador-engine.test.ts drives a genuine arrival into
a placed token and asserts the beneficiary-only projection, the typed return
with unchanged spice, the shared elite limit, malformed/over-maximum rejection
with immutability, the ordinary-only return, the decline path and the rendered
control. The four-profile ecaz-entry-bots loop now covers tleilaxu, and the
former unsupported-effect and copy-list pins were updated to the supported
behaviour rather than re-pinned. Offline suite 7,797/7,797 with typecheck and
lint clean. No game, seat, saved state or deployment changes.
This commit is contained in:
Quintine committed 2026-10-07 18:28:57 +11:00
1 parent 07c20ae806
commit 0e1a442dca
11 files changed
+503 -27

No files matched your search

+12
View File
@@ -50,6 +50,18 @@ settles, without replaying payment or force transfer. A Terror entry already in
flight and every Ambassador combination still reject. Selected decks/cache,
shared-Duke/capture, force/payment and pending-effect guards remain.
**In progress — Tleilaxu Ambassador force return.** The last unimplemented
Ambassador effect is now wired: a placed Tleilaxu token gives its beneficiary —
the Ecaz owner or its ally — a private decision to return one to four physical
counters from the Tanks to reserves at zero cost, using the existing
`game/tleilaxu-ambassador-forces.ts` quotation, the shared Fedaykin/Sardaukar
one-per-turn counter, a beneficiary-only projection and an entry control with
an explicit decline. All four AI profiles pick a legal return or decline. The
printed leader alternative, ordinary allowance accounting, dead-twice
eligibility and Tleilaxu income repeat scope stay gated exactly as recorded in
[TLEILAXU_AMBASSADOR_RULES.md](TLEILAXU_AMBASSADOR_RULES.md#implementation-decision-boundary);
no ordinary revival allowance, price, phase or income path changed.
**In progress — administrator operations.** The owner-only operations page now
also diagnoses [stalled decisions](ADMIN_STALLED_DECISIONS.md): a bounded,
read-only sample of at most ten live rooms whose public pending interaction — a