Connect Sapho first and last battle-choice order

Juice of Sapho can change the remaining Battle-phase chooser order at clean boundaries. A chooser may occupy the physical defender slot and select the actual other combatant. Physical storm order, attackers, defenders and tie advantage remain intact. Full-roster phase priority survives aftermath, newly eligible Face Dancers and saved continuation. Controls and all four AI profiles consume the same projected choices.

Independent review verified private options, public geometry, exact physical disposal, rejected-action immutability, phase expiry and boundary-bound saved chooser integrity. Actual Basic/Advanced Face Dance regressions verify later replacement priority. Authenticated SQLite tests cover duplicate concurrent card requests, private restore and battle completion. Chooser/aggressor separation and phase duration remain explicit implementation interpretations; the separate aggressor mode and unresolved timing stay gated. Reinforcements remains disabled pending the documented reserve-cost question.

Types, lint, 4792 offline tests, build and 43 HTTP tests pass with unchanged source. Six fixed genuine Basic/Advanced faction samples finish in 3672 accepted actions and 97 periodic private JSON restores. They retain 82 rejected candidates at existing guarded arrival combinations; subsequent legal candidates finish. This is bounded playability evidence, not complete compliance or AI calibration.

The browser used Sapho first from a later physical circle, chose Emperor, sealed and resolved a battle, then refreshed into its next choice. Emperor retained the tie win. All 9 accepted actions replay exactly using the recorded random battle event; physical custody, all private JSON views and the original seat row pass. A private harness initially needed random-event replay binding and SQLite-row prototype normalization; no production fix or game reset was required.

After the reported outage, the server responded and the staged QA game restored exactly. All 970 opening games and their original seat/recovery records remain preserved (1004 after checks), including all 971 rooms present immediately before checks. SQLite integrity and foreign keys pass. No restart, database reset or recurring automation was needed.

Verified source tree: b699f80600f8e297595a8e756edf367a607ddd99707474c03231e6479bd2f389
This commit is contained in:
Quintine committed 2026-09-14 05:14:57 +10:00
1 parent 04501567d0
commit cb691e1b14
20 files changed
+1759 -35

No files matched your search

+20 -12
View File
@@ -6,14 +6,16 @@ gated.** Prototypes do not open completion or publication gates.
## Current checkpoint and work
Previous verified checkpoint: `c04cb93`, [Recruits](RECRUITS_RUNTIME.md).
Types, lint, **4,743 offline tests**, build and **43 HTTP tests** passed.
Eight fixed Basic/Advanced six-seat samples finished in 7,995 actions with no
rejected candidates and three actual Recruits plays. All opening games and
seat/recovery records were preserved, with 936 rooms after verification.
Latest verified checkpoint: `0450156`, [Harass & Withdraw](HARASS_WITHDRAW_RUNTIME.md).
Types, lint, **4,776 offline tests**, build and **43 HTTP tests** passed.
Eight fixed Basic/Advanced six-seat samples finished in 9,956 actions with no
rejected candidates, three Harass withdrawals and 266 periodic save/restore
checks. Browser controls, private restoration and the final engine replay passed.
All 937 games present before verification and their original seat/recovery
records were preserved, with 970 rooms after HTTP checks.
Earlier evidence remains in the [implementation history](IMPLEMENTATION_STATUS.md).
Current prototype: [Harass & Withdraw](HARASS_WITHDRAW_RUNTIME.md) connects either
The connected [Harass & Withdraw prototype](HARASS_WITHDRAW_RUNTIME.md) supports either
battle-card slot, private category inspections, exact undialed normal/elite
returns, opponent-Traitor cancellation, mandatory disposal, controls and all
four AI profiles. Physical allocation must be unique. Richese card combinations
@@ -22,12 +24,18 @@ card-specific discard precedence are explicitly labeled inferences. The Stone
Burner timing question is pending; no user answer is assumed. Reinforcements
remains unfinished. This does not open variant, mode or publication gates.
After the latest reported power failure, the existing server responds normally.
All **936 rooms**, **1,959 seats** and original recovery/entry/handover records
match the opening backup; SQLite integrity and foreign-key checks pass. Browser
refresh restores the existing test seat. No restart, database reset or recurring
automation was needed. Current checkpoint verification and delivery are recorded
with the final source-bound report and Git message.
The existing server remained healthy after the reported power failures. Saved
games and original recovery/entry/handover records survived; SQLite integrity
and foreign-key checks passed, and refresh restored the test seat. No restart,
database reset or recurring automation was needed. Exact verification, source
fingerprints and delivery are recorded in the private report and Git message.
Current work: [Sapho Battle-phase order](SAPHO_BATTLE_ORDER.md) connects first/last
remaining battle choices without rewriting storm order or tie roles. The browser completed a reordered
battle and restored its next choice; independent review and an actual Basic/Advanced
Face Dance continuation passed. Reinforcements
remains disabled while its reserve-cost question is pending; see the
[latest source review](ECAZ_TREACHERY_RULES.md#14-september-reinforcements-cost-review).
## Authoritative navigation