Verify native zero-marker battle continuation
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 04:59:34 +11:00
1 parent 7e3d745807
commit 4aecf8eb9c
4 files changed
+42 -4

No files matched your search

+12 -3
View File
@@ -17,6 +17,15 @@ open mode gates.
## Current checkpoint and work
**Native zero-marker battle continuation — 29 October. Prototyped / Partial.**
The existing staged zero-reserve native No-Field journey now completes the
actual Traitor decision and final battle opportunity, preserving the physical
pool with no phantom forces. Seventeen related cases and quick type/lint
checks pass. A publisher-source recheck did not resolve Reinforcements on a
Traitor win; the provisional policy remains. This is focused playability
evidence, not complete Homeworld or deployed acceptance.
[Scope](RICHESE_NO_FIELD_RULES.md#advanced-native-homeworld-marker--29-october-2026).
**Advanced native Homeworld No-Field — 29 October. Prototyped / Partial.**
A deployed marker may ship between a foreign World and native Richese, remain
concealed and later leave or reveal. Native physical reserves are not duplicated
@@ -32,9 +41,9 @@ user-authorized Advanced rulebook; Basic retains its original guard. Guild uses
the common Advanced route even if its native transport is canceled, while
already-open permission responses retain their continuation. A Homeworld battle
plan guide also carries the selected Reinforcements reserve mix. Ninety-four
related cases, quick type/lint checks and the production build pass. Concealed
No-Field return, wider
interactions and deployed acceptance remain open. See [return scope](HOMEWORLD_RULES.md#advanced-native-homeworld-return--29-october-2026)
related cases, quick type/lint checks and the production build pass. The later
provisional No-Field return is described above; wider interactions and deployed
acceptance remain open. See [return scope](HOMEWORLD_RULES.md#advanced-native-homeworld-return--29-october-2026)
and [guide scope](REINFORCEMENTS_RUNTIME.md#homeworld-plan-guide-with-chosen-fees--29-october-2026).
**Reinforcements reserve choice — 29 October. Prototyped / Partial.**
+12
View File
@@ -170,6 +170,18 @@ now have connected development prototypes. The linked contracts supersede the
historical runtime-absence statements above within their explicit boundaries.
Reinforcements and complete combined-module acceptance remain unfinished.
## Reinforcements Traitor source recheck — 29 October 2026
The [publisher-authored base rulebook](https://cdn.1j1ju.com/medias/37/57/71-dune-rulebook.pdf#page=11)
states that a successful Traitor caller loses nothing regardless of battle
plans. The later printed Reinforcements face requires three reserves moved to
Tanks; the Ecaz & Moritani rulebook's Treachery FAQ discusses Harass, without a
direct Reinforcements/Traitor clarification found in the reviewed material.
Both precedence readings remain plausible. The existing all-outcome charge is
still provisional; this recheck does not establish a publisher ruling or a
user decision. The older designer-linked April 2020 FAQ could not be inspected:
the publisher server returned HTTP 403, and its date predates the expansion.
## 14 September Reinforcements cost review
The printed close-up at [4:24](https://www.youtube.com/watch?v=P9ZTV1uZqsM&t=264s)
+1 -1
View File
@@ -3334,7 +3334,7 @@ These are unresolved in the cited records. Do not infer an answer from elapsed t
| --- | --- | --- |
| Advanced advisor / physical Ornithopter | Supplied physical28/logical26 and10/logical8 prevent advisors from granting city access, rather than banning this physical card. Both printed modes now accept advisors through normal stance/arrival/locks/cohort rules. Range3 is independent; two-group range uses current fighter city access at each group. Empty advisor arrival can flip and grant access; advisor-only city cannot. This source cutover supersedes the older guard, not a publisher card FAQ. Wider combinations and final acceptance remain due. | [Source cutover and scoped proof](RICHESE_ORNITHOPTER_ENGINE_AUDIT.md#advanced-advisor-card-movement--18-october-2026) |
| Ornithopter / Hajr | Standing choose-recommended provisionally replaces one unused ordinary/Hajr entitlement by range-three or two distinct normal groups, with no retroactive credit; a later Hajr may reuse those forces. Advanced adopts supplied physical39/logical37 immediately-after-play timing with explicit online/card-group interpretation; Basic retains broader face timing. The inventory has one physical Hajr, not several copies. A genuine paid Box retrieval now permits replaying that held card for another allowance because no once-per-turn cap is established. This is an explicit replay interpretation; other recovery producers and full combinations remain open. | [Original source cutover](RICHESE_ORNITHOPTER_ENGINE_AUDIT.md#hajr-and-unused-movement-entitlements--18-october-2026) · [Physical replay and counted Cunning](RICHESE_ORNITHOPTER_ENGINE_AUDIT.md#recovered-hajr-replay--18-october-2026) |
| Reinforcements cost | The earlier all-outcome versus sole-Traitor-winner question remains unanswered. The bounded prototype provisionally charges on every revealed outcome, chooses normal reserves first and counts the transfer as battle losses. Same-plan Harass pays the original quote before returns; future returns cannot fund or change it. Native Advanced Occupy Stone/Mirror composition keeps the fee but ignores +2 normal score in physical-token comparison. These are product interpretations, not a new publisher ruling or user answer. Other profile/module gates remain; eligibility never depends on concealed Traitors. | [Source review](ECAZ_TREACHERY_RULES.md#14-september-reinforcements-cost-review) · [Combined policy](REINFORCEMENTS_RUNTIME.md#combined-utility-plan--16-october-2026) · [Stone composition](REINFORCEMENTS_RUNTIME.md#native-stone-composition--16-october-2026) |
| Reinforcements cost | The earlier all-outcome versus sole-Traitor-winner question remains unanswered. The bounded prototype provisionally charges on every revealed outcome and counts the transfer as battle losses. The holder chooses an available ordinary/special mix; older sealed plans without a choice retain the former normal-first default. Same-plan Harass pays the original quote before returns; future returns cannot fund or change it. Native Advanced Occupy Stone/Mirror composition keeps the fee but ignores +2 normal score in physical-token comparison. These are product interpretations, not a new publisher ruling or user answer. Other profile/module gates remain; eligibility never depends on concealed Traitors. | [Source review](ECAZ_TREACHERY_RULES.md#14-september-reinforcements-cost-review) · [Combined policy](REINFORCEMENTS_RUNTIME.md#combined-utility-plan--16-october-2026) · [Stone composition](REINFORCEMENTS_RUNTIME.md#native-stone-composition--16-october-2026) |
| Harass / Stone Burner | The earlier keep-gated versus compare-after-withdrawal question is unanswered. Standing choose-recommended provisionally compares counters left after successful withdrawal. Opposing Traitor cancels the return; original fixed Occupy commitment stays. Public preflight considers possible fixed Ecaz withdrawal without hidden custody. Clean Ix priority follows its separate explicitly provisional contract; new physical commitments do not remove other profile/module limits. This is implementation interpretation, not a new publisher ruling or user answer. | [Withdrawal](HARASS_WITHDRAW_RUNTIME.md#provisional-stone-burner-timing--16-october-2026) · [Clean Ix priority](MIRROR_WEAPON_ENGINE_AUDIT.md#clean-selected-ix-composition--16-october-2026) |
| Stone mixed-force allocation timing | The older timing question remains unanswered by a source. Under 14 October choose-recommended, new original outcome-ambiguous Stone/Mirror battles provisionally commit each ambiguous side's undialed physical total after revealed modes/actual withdrawal and decisive Traitor/explosion branches. Storm-order owners choose privately; every original required value stays sealed until all commit. The eventual winner retains all legal typed casualty choices with the count. Ordinary/invariant and unstamped legacy frames keep their existing path. Publisher physical-count text and supplied Advanced physical12/logical10 casualty timing provide the numerical rules, not this online commitment convention. | [Source, versioned procedure and bounded proof](STONE_BURNER_ENGINE_AUDIT.md#outcome-changing-physical-totals--18-october-2026) |
| Recruits late accounting and rates | The earlier one/two-further-free question remains unanswered. The prototype preserves paid spice, deducts recorded free usage from the doubled current rate and all returns from the total cap: two-free/one-paid Atreides can take two more free. Clean classic Homeworlds now provisionally recheck native thresholds on separate accepted requests, retaining completed prices/classifications; this is not a numerical user ruling or newly found timing FAQ. Unknown ledgers, pending repricing, later Fremen grants and same-turn replay remain guarded. | [Source alternatives](RECRUITS_RULES.md), [current native runtime](RECRUITS_RUNTIME.md#classic-homeworld-composition--16-october-2026) |
@@ -210,6 +210,23 @@ void test('a concealed native zero marker with no reserves creates public battle
'The removed zero marker creates no physical native presence after reveal.');
assert.deepEqual(inventory(game),originalInventory);
homeworldGameIntegrity(game);
// Resolve the native Homeworld's actual Traitor decision and shared final
// opportunity, rather than stopping when the zero marker is revealed.
game = applyAction(game,owner,{type:'traitorCall',call:false});
while (game.battle?.outcomeWindow && !game.battle.outcomeWindow.closed) {
const window = game.battle.outcomeWindow;
const actor = [window.attacker,window.defender].find(id=>!window.ready.includes(id));
assert.ok(actor, 'The final battle opportunity must have an unfinished combatant');
game = applyAction(game,actor,{type:'battleOutcomeReady',event:window.event});
}
assert.equal(game.battle,null, 'The zero-reserve native battle must finish');
assert.equal(game.lastBattleContext!.territory,native);
assert.equal(player(game,owner).noField!.deployed,null);
assert.equal(player(game,owner).reserves,0);
assert.deepEqual(group(game,native),{normal:0,elite:0});
assert.deepEqual(inventory(game),originalInventory);
homeworldGameIntegrity(game);
});
void test('all four legal bot profiles offer a foreign-to-native concealed marker return', () => {