Fresh Richese-roster battles support clean aggressor changes after plans and revelation. Both combatants explicitly finish a public final opportunity regardless of held cards or result; an actual Sapho use clears both marks with a fresh event. Close priority before physical Stone allocation and other outcome settlement. Preserve plans, votes, participants, Habbanya priority and reserved physical cards. Keep old unstamped timing and discard signature bytes. Route all final vote exits through native Homeworld defense first. Add persistent controls and finite minimal bot readiness. Validation:16-file177/177, types/lint/build and eight original-action/rendered-table programmes. Actual cache1 and paid forces use40 Basic/47 Advanced source actions; genuine Stone1 turn1/Sapho1 turn2 uses86. Ordinary and mixed count2 ties change through sealed-plan/final-window Sapho, explicit revised acknowledgements and native losses. Sixteen minimal proposals are legal; controlled reservation and pure window/control cases are separate. Bounded review fixed the Harkonnen Nexus final-vote route; frozen feedback corrected four historical fixture assumptions. All checks then passed together. Final-window protocol is provisional. Direct late Semuta claim/capture, combined World/Nexus/Sapho, wider combinations, full modes, final assurance and browser/deployed acceptance remain open. No saved-room/database/reset/restart/deployment operation.
147 lines
9.1 KiB
Markdown
147 lines
9.1 KiB
Markdown
# Juice of Sapho: battle aggressor
|
|
|
|
## Late aggressor and public final opportunity — 18 October 2026
|
|
|
|
**Prototyped / Partial.** The physical face permits becoming the current battle's
|
|
aggressor without a before-plans qualifier; see the
|
|
[primary-source review](JUICE_OF_SAPHO_SOURCE_UPDATE.md#aggressor-and-battle-selection-order).
|
|
The former mixed-Stone blocker is addressed by the new
|
|
[physical-total allocation](STONE_BURNER_ENGINE_AUDIT.md#outcome-changing-physical-totals--18-october-2026).
|
|
Under the standing choose-recommended instruction, this checkpoint selects the
|
|
following provisional online protocol. The acknowledgement procedure is an
|
|
implementation interpretation, not an official timing FAQ or new printed rule.
|
|
|
|
Fresh battles with an actual public Richese roster receive
|
|
`saphoTimingVersion:1`, alongside their existing public preparation window.
|
|
This follows the physical cache/Sapho producer; merely selecting the E2 family
|
|
without Richese does not create that cache or a Sapho-dependent prompt.
|
|
The canonical unreserved holder may become aggressor at a clean boundary before
|
|
the final opportunity closes, including after one/both sealed plans and revealed
|
|
weapon/Traitor declarations. Existing nested responses/decisions still finish
|
|
first. Eligibility does not inspect an opposing hand or sealed plan. The holder's
|
|
own sealed or inspected card slots reserve the physical card: Sapho cannot be
|
|
spent while used as a Planetologist Special weapon or another commitment.
|
|
|
|
After all original weapon decisions, Traitor votes/responses and any native
|
|
Homeworld invader Portable Snooper choice, both physical combatants receive
|
|
the same **Final battle actions** control. It opens regardless of actual card
|
|
ownership, tie, Traitor/explosion branch or final winner. Each chooses
|
|
**Finish final battle actions** using the current public event. This persistent
|
|
window has no timer and does not replace a suspended decision. Playing Sapho
|
|
changes public priority and creates a fresh event, clearing both finish marks;
|
|
both players must finish again. Playing does not itself finish the opportunity.
|
|
|
|
The second acknowledgement closes priority before Stone physical counts,
|
|
Smuggler/Sandmaster choices, Diplomat retreat, Jacurutu, losses and aftermath.
|
|
The closed window cannot reopen there. Plans, participants, chooser, Voice,
|
|
Prescience, Truthtrance promises and chosen weapon/Traitor declarations remain
|
|
unchanged. Habbanya still precedes ordinary aggressor tie priority on either
|
|
physical side. New discard continuations bind the late stage and public revision;
|
|
unstamped old battles retain their exact early conditions/signature format.
|
|
No existing battle is converted or reset.
|
|
|
|
The table exposes only public identity, revision and readiness. Minimal policies
|
|
use their existing server-derived Sapho option first, otherwise explicitly finish
|
|
their own opportunity. This adds legal participation, not strategy calibration.
|
|
|
|
### Checkpoint evidence and remaining limits
|
|
|
|
Frozen **16 files177/177**, types/lint/build and eight original-action/
|
|
rendered-table programmes pass. The source-bound report is retained privately at
|
|
`/home/quintine/.local/share/dune/checkpoints/20261018-sapho-late/frozen-integrated-2/report.json`:
|
|
proof base `cb13a4d6748c3b86d5b472bab8d798b49b45af28`, source tree
|
|
`54889569fdfe483bfdeaffdf85c88127a41afdbceafb32ceb7b7d9dc99a7f75f`.
|
|
Only checkpoint prose/reference evidence changes after that frozen source.
|
|
|
|
The new original-action fixtures buy Sapho for1 through the actual cache and pay
|
|
for opposing three-force Arrakeen shipments:40 Basic/47 Advanced source actions.
|
|
The Advanced mixed branch buys Stone1 on turn1, Sapho1 on turn2 and ships6/1Sard
|
|
against Richese3:86 actions, including actual original circle4/circle5 choices.
|
|
Four-to-seven plan/vote/use actions reach the final window; two-to-four actions
|
|
finish both acknowledgements, real physical count2 and original typed cleanup.
|
|
Baseline ties go to Richese; one-plan/final-window Sapho changes them to Emperor.
|
|
A use after the holder's own acknowledgement resets both marks and rejects the
|
|
old event. Sixteen minimal proposals are legal in actual held/no-card views.
|
|
|
|
Actual GameTable, Sapho and isolated final controls render offered, busy,
|
|
already-finished and revised states. Framework aliases/CSS stubs mean no browser
|
|
clicks or visual/deployed acceptance. Pure lifecycle/control tests and controlled
|
|
own-plan/Prescience reservation probes remain separate evidence; the latter do
|
|
not claim a full original Planetologist/Sapho setup. Related existing regressions
|
|
include native Stone, Homeworld defense, Harkonnen Nexus and Semuta early disposal.
|
|
|
|
Bounded review repaired the Harkonnen Nexus final-vote exit to preserve original
|
|
Homeworld invader defense. Frozen feedback corrected four obsolete fixture
|
|
assumptions: the historical Stone guard is explicitly unstamped, a human saving
|
|
Sapho uses explicit controls instead of an eager bot, and Basic/Advanced readiness
|
|
retains late timing only in fresh battles. The exact failed cases pass8/8, then
|
|
the entire affected177 pass with types/lint/build/runtime against unchanged source.
|
|
|
|
This does not certify full modes, direct late Semuta claim/capture, a combined
|
|
World/Nexus/Sapho journey, wider combinations or final assurance. Browser and
|
|
exact-revision deployed acceptance remain open. No saved-room/database, reset,
|
|
restart or deployment operation was performed.
|
|
|
|
## Historical early prototype — 20 September 2026
|
|
|
|
Connected partial prototype at that checkpoint. The physical face and source
|
|
precedence remain in the [Sapho audit](JUICE_OF_SAPHO_ENGINE_AUDIT.md); the
|
|
[battle review](JUICE_OF_SAPHO_BATTLE_REVIEW.md) separates scheduling, physical
|
|
participants and tie priority. This checkpoint implements the printed aggressor
|
|
effect during an existing opportunity. It does not adjudicate late timing.
|
|
|
|
## Connected behavior
|
|
|
|
The holder can play the canonical, unreserved card while their shared `preLeader`
|
|
opportunity is open, before their readiness declaration and before either plan.
|
|
The other combatant may already be ready. Actual Voice, Prescience, Nexus/full-plan
|
|
inspection and Truthtrance commitments prevent this early use, as do suspended
|
|
interactions and mandatory disposal. Unchosen preparation prompts bind no plan
|
|
content and may remain. No hidden opposing hand or selected plan determines
|
|
eligibility. No holder-only pause or new confirmation window is introduced.
|
|
|
|
`scope:'battleAggressor', mode:'aggressor'` binds the battle, turn and use revision.
|
|
It discards the physical card once and records public priority, without swapping
|
|
attacker/defender slots, chooser, forces, leaders or later battle scheduling.
|
|
An already held position is unavailable. A recovered card can change priority
|
|
again at a fresh opportunity; no extra once-per-battle limit is invented.
|
|
|
|
The validated use history and independent event list survive JSON continuation.
|
|
Reads, actions and automatic normalization reject mismatched history, event,
|
|
combatants, turn or physical card custody. Legacy battles retain their original
|
|
attacker priority and do not reopen closed preparation.
|
|
|
|
The shared tie helper checks both combatants for the effective Habbanya advantage
|
|
before falling back to aggressor. Engine plan/Voice/prescience checks, public
|
|
projections, AI calculations and the final battle quote use that priority.
|
|
Ordinary strength ties and Stone Burner's physical-token ties therefore agree.
|
|
Early use precedes all commitments, so Stone's existing public finishability
|
|
guard can evaluate the changed priority before accepting a plan. The unresolved
|
|
late mixed-allocation hazard from the battle review is not bypassed.
|
|
|
|
The hand panel exposes the real action, the table names aggressor and tie winner,
|
|
and automatic notices mark a successful use. All four AI profiles can use the
|
|
same private options and finish through the existing preparation and battle path.
|
|
Timing strategy and complete Richese-game acceptance remain later work.
|
|
|
|
## Evidence and limits
|
|
|
|
Focused tests cover actual ordinary/Stone outcomes in Basic and Advanced,
|
|
Habbanya on either physical side, rejected stale/late/cross-owner submissions,
|
|
unchanged rejected input, public eligibility with changed private rival holdings,
|
|
receipt corruption, conserved recovered-card reuse and all four AI continuations.
|
|
The mixed Emperor/Guild regression changes Stone's pre-commit finishability before
|
|
any hidden opposing plan exists. Authenticated in-memory SQLite races consume one
|
|
card; fresh stores restore each private seat through the same battle. Fixtures use
|
|
genuine CHOAM/Richese setup followed by explicit conserved board/hand staging;
|
|
they are not full genuine-game evidence or proof of every module combination.
|
|
|
|
The owner-only control and public table text have rendering regressions. Browser,
|
|
required checks, complete-game samples, preservation and verified Git evidence
|
|
belong to the source-bound checkpoint report and commit message.
|
|
|
|
Later pre-reveal, post-reveal and final-intervention opportunities remain
|
|
unfinished, including their privacy-neutral response protocol and Stone allocation
|
|
work. These are development boundaries, not extra printed prohibitions. Other
|
|
Sapho timing questions and all mode/publication gates remain unchanged.
|