Fix marker transfer CI fixture funding
Verify and publish checkpoint container / container (push) Failing after 6m26s

This commit is contained in:
Quintine committed 2026-10-29 05:32:30 +11:00
1 parent e457478f7d
commit 68643925e7
3 files changed
+27 -5

No files matched your search

@@ -53,9 +53,9 @@ void test('authenticated marker transfer retains its hidden identity between for
if (until(currentOwner)) return currentOwner;
assert.notEqual(currentOwner.status, 'finished', 'The QA game ended before marker transfer.');
// Atreides sends its actual reserves away from its World, so the
// concealed marker can remain there through the next Battle phase.
if (currentOwner.status === 'playing' && currentOwner.phase === 5 && currentOwner.active === hostSeat.id &&
// Empty Caladan once before the marker arrives; later turns do not need
// another all-reserve shipment, even if a new revival adds reserves.
if (!firstMarkerPlaced && currentOwner.status === 'playing' && currentOwner.phase === 5 && currentOwner.active === hostSeat.id &&
!currentOwner.response && !currentOwner.decision && !currentOwner.phaseOpening &&
!currentOwner.truthtrance) {
const at = await read(hostSeat.cookie);
@@ -89,8 +89,20 @@ void test('authenticated marker transfer retains its hidden identity between for
const local = structuredClone(own);
const self = local.players.find(player => player.id === seat.id); assert.ok(self);
self.bot = 'Easy'; // Client-side adapter only; authoritative seat stays human.
if (seat.id === hostSeat.id && self.hand) {
// Keep optional Ghola out of this local selector so it cannot return
// native forces while the marker waits. The server hand is untouched.
self.hand = self.hand.filter(card => card.effect !== 'ghola');
}
const choices = botActions(local);
if (choices.length) { proposed = { cookie: seat.cookie, actor: seat.id, action: choices[0] }; break; }
if (choices.length) {
// Decline optional Revival to keep the original evacuation funded
// and Caladan empty while the physical marker is there.
const action = seat.id === hostSeat.id && own.phase === 4
? choices.find(candidate => candidate.type === 'ready') ?? choices[0]
: choices[0];
proposed = { cookie: seat.cookie, actor: seat.id, action }; break;
}
}
assert.ok(proposed, `No native continuation at ${currentOwner.status}/${currentOwner.phase}/${currentOwner.decision?.kind ?? 'no decision'}.`);
if (view.response && !view.response.passed.includes(view.me)) proposed.action = { type: 'passResponse' };