Keep mixed marker CI scenario funded
Verify and publish checkpoint container / container (push) Successful in 11m0s
Verify and publish checkpoint container / container (push) Successful in 11m0s
This commit is contained in:
1 parent
7a083ac9aa
commit
b18a767470
2 files changed
+32
-1
No files matched your search
@@ -17,6 +17,22 @@ open mode gates.
|
||||
|
||||
## Current checkpoint and work
|
||||
|
||||
**Intermittent CI fixture — 29 October. Partial.** Run #65 failed when its
|
||||
scripted Atreides all-reserve shipment was rejected; its old log did not record
|
||||
the reason. Initial Storm losses followed by optional Revival can increase the
|
||||
shipment size beyond the original spice funding. The HTTP fixture now declines
|
||||
that optional Revival and Ghola through legal actions without changing stored
|
||||
forces, currency or cards. One targeted integration run and quick type/lint
|
||||
checks pass. This removes a plausible random failure path, not a proven root
|
||||
cause or a guarantee of future CI success. The latest completed run #77 passed;
|
||||
#80 was running and #82 queued when checked. [Fixture](../tests/richese-homeworld-marker-mixed-http.test.ts).
|
||||
|
||||
**Next candidate — Sapho and shared arrival.** An Ecaz Ambassador and Moritani
|
||||
Terror can both react to one entry in a provisional storm order. Sapho cannot
|
||||
yet reorder that pair. A safe implementation needs a public pre-reaction order
|
||||
window, preserved old overlap records and a Semuta continuation; no feature
|
||||
is claimed complete by this scoping note.
|
||||
|
||||
**Truthtrance category questions — 29 October. Prototyped / Partial.**
|
||||
Recognized freeform current-fact questions now include weapon, defense and
|
||||
Worthless hand categories and selected subtypes. The table sees the primary-role
|
||||
|
||||
@@ -88,8 +88,23 @@ void test('authenticated mixed transfer moves a concealed marker and physical vi
|
||||
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) {
|
||||
// The scenario needs Caladan empty until the marker leaves. Decline
|
||||
// optional Ghola in this local action selector; the real hand stays
|
||||
// unchanged and every submitted action remains server-validated.
|
||||
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) {
|
||||
// Initial Storm can kill Atreides forces on Arrakeen. Reviving them
|
||||
// before this scenario's first shipment adds reserves, while paid
|
||||
// revival also consumes its exactly funded starting spice. Declining
|
||||
// optional revival preserves the native empty-Caladan setup.
|
||||
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' };
|
||||
|
||||
Reference in new issue
Block a user