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
+29
View File
@@ -1,5 +1,34 @@
# Dune implementation status
## 7 October 2026 — Tleilaxu Ambassador force return wired
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 stage `revival`: 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.
Kept gated exactly as recorded: the printed leader alternative
(`leaderAlternative: false`), 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; the Tleilaxu special Karama keeps its FAQ-resolved
Revival-only timing.
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 and the decline path. The
four-profile `tests/ecaz-entry-bots.test.ts` loop now covers `tleilaxu`, and its
former unsupported-effect pin was replaced by the supported offer/decline
expectation rather than re-pinned. No game, seat, saved state, deployment,
public start or played-save conversion changes.
## 7 October 2026 — administrator stalled-decision diagnosis
The owner-only operations page gains **List stalled decisions**: a bounded,
+37 -1
View File
@@ -59,10 +59,46 @@ These three change meaningful legal choices or resources and require a supported
Verification used publisher-authored local extracts `base.txt`, `ix-official-mirror.txt`, `choam-lelekan-mirror.txt`, and `ecaz-audit.txt` under `/tmp/dune-rules`, plus freshly indexed official GF9 E1/E2/E3 and November FAQ passages. Movie-game rules, tournament amendments and unofficial implementations were not used as authority. No runtime files, tests, live rooms or automation were changed.
## Engine wiring checkpoint, 7 October 2026
`game/tleilaxu-ambassador-forces.ts` is now wired into the Ambassador
resolution. When an eligible entrant triggers a placed Tleilaxu token, the
beneficiary — the Ecaz owner or its ally — receives the printed force
alternative as a private `ecazAmbassador` decision at stage `revival`:
- one to four physical counters return from the Tanks to reserves, at zero
cost, in the printed amount and without touching ordinary revival prices;
- the shared Fedaykin/Sardaukar one-per-turn counter is spent and enforced
through the same helper (Ixian cyborgs keep their distinct uncapped
treatment);
- the player view projects the maximum, the Tanks and elite inventory and the
current elite usage to the beneficiary only, and the entry control offers a
per-count button plus an explicit "Return no forces" decline;
- all four AI profiles pick a legal return from the decision owner's own view,
or decline when the Tanks are empty.
**Still gated, unchanged:** the printed leader alternative (the decision's
projection reports `leaderAlternative: false`), ordinary force/free/leader
allowance accounting before and after this independent grant, dead-twice
eligibility, and Tleilaxu free-income repeat scope. The three recorded policy
questions above are not answered here. No ordinary revival allowance, price,
phase or income path changes, and the Tleilaxu special Karama keeps its
FAQ-resolved Revival-only timing.
Focused evidence: `tests/tleilaxu-ambassador-engine.test.ts` drives a genuine
arrival into a placed token and asserts the projection, the typed return, the
shared elite limit, malformed and over-maximum rejections with immutability,
the ordinary-only return, the decline path and unchanged spice; the four-profile
`tests/ecaz-entry-bots.test.ts` loop now covers `tleilaxu`, and the former
"unsupported effect" pin was replaced by the supported offer/decline
expectation rather than re-pinned.
## Physical foundation checkpoint, 7 September 2026
The later `game/tleilaxu-ambassador-forces.ts` helper implements only the resolved physical force quotation. It accepts a beneficiary's faction, reserve/Tanks totals and typed elite inventory, and quotes one through four returned counters with detached before/after custody and the shared elite revival counter. It rejects malformed counts, unavailable ordinary/elite selections, unsupported elite factions and unsafe arithmetic. It uses the minimum necessary elite count when no explicit count is selected; zero returns remain a separate caller choice. Ixian cyborgs retain their distinct uncapped treatment.
Root reviewed the complete helper and its tests. All **11 focused tests pass**, covering all twelve ordinary faction pools, mixed custody conservation, cross-event elite limits, Ixian quantities, invalid selections, safe arithmetic, detached results and independence from private information and RNG. The tests are registered in `npm test`; formatting, lint and full TypeScript checks pass. Root's focused result is `/tmp/dune-tleilaxu-ambassador-forces-root.log`.
This helper is not wired into the engine and does not activate the Ambassador, add player or AI controls, change ordinary revival allowances, choose leader eligibility or pay income. The three material accounting/leader/income questions above are pending user interpretation. The prior Guild checkpoint remains 2,930 passing registered tests plus twenty completed Basic games; these eleven new helper tests are additional focused evidence, not another full-suite or full-expansion run.
**Superseded 7 October 2026:** the helper is now wired into the Ambassador resolution — see the engine wiring checkpoint above. Ordinary revival allowances, leader eligibility and income still remain unchanged, and the three material accounting/leader/income questions above remain pending user interpretation. The prior Guild checkpoint remains 2,930 passing registered tests plus twenty completed Basic games; these eleven new helper tests are additional focused evidence, not another full-suite or full-expansion run.