Files
Dune/docs/ADVANCED_CHARITY_ORDER.md
T

167 lines
9.9 KiB
Markdown

# Advanced Charity player order
27 October 2026. **Prototyped / Partial.** This is a core source correction;
complete Advanced, optional combinations and final acceptance remain open.
## Source and cutover
The user-authorized `UNOFFICIAL_Revised_Dune_Rulebook_v.2.3_web.pdf`,
physical8/printed6, starts Charity with the First Player and proceeds
counterclockwise. This is the supplied Advanced authority bound by the
[source amendment](RULE_DECISIONS.md#authorized-source-amendment--1-october-2026),
not a newly located publisher ruling. The bounded source read is:
```sh
pdftotext -f 8 -l 8 -layout UNOFFICIAL_Revised_Dune_Rulebook_v.2.3_web.pdf -
```
New Advanced Charity phases retain the actual First Player order established
by Storm. Basic and already-opened unstamped Advanced phases keep concurrent
readiness; viewing or claiming does not manufacture a new order midway.
## Connected behavior
- A version1 public `charityOrder` retains the original turn, full order and
remaining suffix. Only its current seat may make an ordinary Charity claim
or use **Finish Charity turn**. Claiming is optional; finishing without a
claim passes that opportunity. Wealth and entitlement remain private.
- CHOAM opening income resolves before any claim or finish. A wealthy Advanced
Bene Gesserit claim retains its native Karama response. Neither the claim nor
a response advances the player order; required interactions finish first.
- Finish consumes one opportunity and records its completed prefix. Closing
market/Nexus decisions retain the frame until the phase actually ends.
No second claim, replayed Finish or new Truthtrance answer reopens a completed
ordered turn. Existing Basic/unstamped readiness reopening remains.
- Detached Truthtrance witnesses may quote one remaining owned future Charity
preparation. They neither claim early at the real table nor replay a closed
opportunity. Guidance and minimal AI wait for the actual current seat.
- Inflation, Homeworld additions, Production and the existing provisional
[CHOAM shortfall funding](CHOAM_CHARITY_FUNDING.md) retain their calculations.
Other cards and faction responses keep their own timing and authorized actor.
`game/charity-order.ts` owns the immutable order calculation. The engine owns
phase lifecycle, claims and projection; `components/charity-claim.tsx` supplies
persistent current/wait/completed guidance and the existing `charity`/`ready`
packets. No database migration or saved-game conversion is added.
## Juice of Sapho — 27 October 2026
The printed [Sapho first/last alternative](JUICE_OF_SAPHO_SOURCE_UPDATE.md)
applies to a player-ordered phase. An unreserved owned physical card now takes
its holder first or last among the remaining Charity turns and is discarded
once. The original physical First Player order stays unchanged. No extra claim,
repeated completed turn, refund or reset is granted. Basic and already-opened
unstamped concurrent Charity phases have no fabricated ordered scope.
Only an actual accepted `scope: charity` use creates reordered `charityOrder`
with original order, actual remaining/completed opportunities, current-start
state and public use history. Untouched version1 frames retain their stored
shape; native `charityTurn` receipts establish whether the current turn started.
Once a native claim has been accepted, including a later canceled wealthy BG
claim, a different unstarted holder may reorder the later tail; first then
means first after the started actor. The current player finishes unchanged
unless that same holder voluntarily pauses its own opportunity under the
separate policy below. This queued timing is **provisional software
composition**, not a newly found publisher answer.
The persistent panel names the protected actor, explains the later queue and
keeps one claim per player. Its normal card/scope/event/mode packet carries no
display-only `afterCurrent` metadata. Current/wait/completed claim and Finish
controls follow both frame versions. Existing minimal legal policies use the
same projected options; no strategic AI tuning is added. If the optional Semuta
preview offers the real used card, the queue is committed before that separate
discard reaction and resumes once, retaining the claim receipts and turn.
Broader optional-module interactions, full-mode and final acceptance remain.
## Own started Sapho suspension — 27 October 2026
At a clean ordered Advanced Charity boundary, the player who has already
claimed may provisionally discard its own Sapho to pause that same started
opportunity and resume it last. The accepted native claim, its actual payment,
the physical First Player order and all completed turns remain unchanged. No
second Charity claim, payment or extra opportunity is created. Pending
responses and preparations must finish before this action; another holder
continues to queue behind the started player rather than displacing them.
The first own-started suspension creates a version3 order frame with the
paused player and the original public use history. The native claim receipt
remains authoritative while the player waits and the started marker returns
on resumption. Untouched version1 and version2 frames retain their stored
format and history. Existing Basic and unstamped concurrent phases do not gain
a manufactured order. Controls use the original card, scope, event and mode
packet; minimal policies receive the same legal option.
The Sapho face permits first/last in a player-ordered phase but does not give
a partial-turn procedure. The suspension and queue are explicitly provisional
online timing, not a publisher clarification. They supersede the earlier
own-started restriction below. Wider interactions, complete-mode and deployed
acceptance remain open.
[Sapho scope](JUICE_OF_SAPHO_RUNTIME.md#own-started-advanced-charity-turn--27-october-2026).
## Initial ordered-phase evidence
Frozen **15 files, 147/147**, types/lint/build and four native start programmes
pass. Three explicit Advanced previews exercise allowed income, original Karama
cancellation of income or wealthy BG; Basic uses two concurrent low claimants.
Actual pre-Charity bribes create poverty and defer incoming money normally.
Runtime records 11 GameTable SSR, 26 claim-panel renders, 8 actual claim
callbacks and 9 actual Finish callbacks, with source/further action arrays
101/30 across programmes. Native response/cancellation/closing actions are
applied directly; browser callbacks for those separate controls were not operated.
Nineteen new pure/native/control/Truth cases cover order, optional claims,
responses, Basic/labelled unstamped compatibility, legal policies and future or
completed Charity entitlement. A genuine final-owner case caught commitment
evasion when Finish immediately opened a later phase; preflight now checks the
closed opportunity before its voluntary actor can disappear behind that opening.
Older payment, Production and Inflation sources finish preceding native turns.
The cancelled-income smoke correctly accepts automatic wealthy BG settlement
once the sole original Karama is spent. No game money, phase or queue is installed.
Proof: `/home/quintine/.local/share/dune/checkpoints/20261027-advanced-charity-order-proof-v4/`;
HTML/journeys: adjacent `20261027-advanced-charity-order-runtime/run-v2/`.
Tests/types/lint carry from v3 under exactly the same source snapshot; only the
private smoke harness changed. The existing server returned HTTP200 unchanged.
This is the earlier local native/SSR/callback evidence. The Sapho follow-up above
adds its own bounded proof; full modes, wider interactions,
final rules/recovery/privacy and deployed acceptance remain due.
## Sapho focused evidence
This earlier evidence covered Sapho first/last among remaining Advanced Charity turns.
Actual use creates version2 order history; untouched version1 frames retain
original bytes. An accepted current native claim provisionally protects that
actor before another holder reorders the later tail. Completed turns, one claim
per player and physical First Player order remain. It predates the separate
own-started suspension above. Basic/old unstamped concurrent phases have no manufactured scope. The
persistent controls name the protected actor, and native claims/Finish follow
the changed queue. This is provisional retained-current timing, not a new
publisher ruling. [Source and contract](ADVANCED_CHARITY_ORDER.md#juice-of-sapho--27-october-2026).
Frozen **12-file union, 108/108**, types/lint/build and four original-game
Advanced preview programmes pass. Actual original cache auction bid1 buys
Sapho; the native first turn continues through Storm2 to Charity2. Clean and
actually claimed current turns exercise both first/last. Runtime records
12 GameTable SSR, 4 Sapho panels, 8 Charity panels, 4 actual SaphoOrderButton,
2 claim and 4 Finish callbacks. Source/further action arrays total320/24.
Actual bribes create poverty; no played hand/purse/phase/queue/claim is installed.
Other native controls are applied directly, without a clicked-control claim.
Browser hydration/navigation and deployed acceptance were not operated.
Eighteen new helper/native/control cases pass, including all four minimal
profiles and Semuta claim/pass. The two Semuta cases inherit an explicitly
controlled conserved physical-card acquisition, advance forward from actual
Revival2 to Charity3, then exercise the real disposal continuation. They are
supplemental composition evidence, not original acquisition proof. The committed
queue resumes once without another claim or order application. AI strategy and
calibration stay deferred.
Proof: `/home/quintine/.local/share/dune/checkpoints/20261027-sapho-charity-order-proof-v1/`;
journeys/HTML: adjacent `20261027-sapho-charity-order-runtime/run-v1/`.
All checks use the same frozen source; the final evidence prose is a separately
recorded three-document overlay. The existing server returned HTTP200 without
restart. No saved-game/database operation. Wider interactions, complete modes
and final rules/recovery/privacy/browser/deployed acceptance remain.