Commit Graph
3 Commits
Author SHA1 Message Date
Quintine cb691e1b14 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
2026-09-14 05:14:57 +10:00
Quintine 369371671f Prototype Sapho first after completed movement turns
Allow a physical Sapho holder to go first among remaining unstarted combined
shipment/movement turns after earlier players have fully finished. Preserve
completed resources, cards, counters and physical order. Keep Advanced Guild
priority guarded until Guild leaves the remaining queue. Reuse private controls,
all four AI profiles and the existing action/CAS continuation.

Add four engine regressions and one independently authored SQLite recovery race;
upgrade the existing Sapho Advanced engine fixture to genuine Advanced setup.
Update player guidance and the rules decision register. Record the fourteen
Leader Skill cards and lifecycle as sourced future work, with unresolved edges.
No mode or publication gates are opened.

Validation: check (types, lint, 4,369 offline tests) and build passed. All 35 focused
Sapho tests passed; independent engine/persistence review found no blocker.
One initial focused Advanced test omitted the existing Guild shipment approval;
it was corrected to resolve that real decision before ending the turn.
No HTTP/auth/schema change; the HTTP suite was not repeated for this checkpoint.

Following the reported power outage, the existing localhost server was healthy,
SQLite integrity/foreign-key checks passed, and the saved QA seat restored the
same private hand, forces, resources and pending Storm decision after refresh.
All 291 opening room versions/state hashes and all application seat/recovery/
entry/handover records match the fresh backup. Cloudflare internal metadata
changed; application data did not. No restart or database reset was needed.

Source fingerprint: de0e0e52ef7b6888792a6e2ec5e8c4745da446ece843bf3092320e915d621266
Private report: /home/quintine/.local/share/dune/checkpoints/20260913-sapho-completed-boundary-checks/report.json
Private backup/comparison: /home/quintine/.local/share/dune/checkpoints/20260913-outage-sapho-before/
Check duration 146645 ms; build 6753 ms. Reported aggregate goal counter at this
milestone opening was 65037986 and before Git was 65524147 (486161 difference,
including outage recovery, parallel source research and coordination; not a
billing measurement or a savings claim).
2026-09-13 15:48:37 +10:00
Quintine 8c709fb52f Initial commit 2026-09-08 07:37:52 +10:00