Resolve ambiguous Stone battles with sealed physical totals

Add a provisional post-reveal physical-count commitment for new outcome-changing Basic/Advanced Stone and copied Mirror battles. Keep all original sides sealed until complete and retain matching later typed losses. Preserve legacy, ordinary and invariant-winner timing. Carry the same constraint through card cleanup and native casualty consumers.

Validation: frozen 16 files146/146, types/lint/build and14 original-action/rendered-control programmes; four minimal policies make both owned choices legally. Source timing is explicitly provisional. Wider combinations, assurance and deployed acceptance remain open. No saved-game, reset, restart or deployment operation.
This commit is contained in:
Quintine committed 2026-10-18 12:13:06 +11:00
1 parent 677ad7aa3c
commit 6ccfaa1b4d
22 files changed
+1247 -83

No files matched your search

+2 -1
View File
@@ -90,10 +90,11 @@ void test('all profiles offer guarded low-dial Stone plans on both sides in Basi
}
});
void test('every public pool is checked and blocked, missing or noncanonical Stone inputs are not emitted', () => {
void test('legacy battles check every public pool and blocked, missing or noncanonical Stone inputs are not emitted', () => {
for (const difficulty of DIFFICULTIES) {
const g = fixture(true, true),
v = view(g, difficulty);
v.battle!.stoneBurnerContext!.allowAllocations = false;
v.battle!.ownForces = {
normal: 2,
elite: 1,