Commit original Gamont use/return or empty revelation before its separate mandatory-conversion counter. Preserve private fuel provenance beside a public phase8 receipt, retain legacy phase5 sources and defer the genuine final chooser through both direct and Semuta cost completion. Consume the parent once; ordinary Mentat gains no chooser and victory waits for original confirmation. Existing provisional continuously-alone duration remains. Validation: 18 files277/277, types/lint/build, five native Gamont/response/GameTable SSR journeys and eight existing-profile paths. Genuine52/56-action public Advanced sources earn a real third-stronghold win versus prevented next-turn outcome. Empty revelation remains pure-source proof; full combinations/remaining producers, browser/deployed and final assurance stay open. No saved-room/D1/restart/deployment operation or AI refinement.
217 lines
14 KiB
Markdown
217 lines
14 KiB
Markdown
# Mandatory advisor conversions
|
||
|
||
## Trip to Gamont before Mentat victory — 24 October 2026
|
||
|
||
**Prototyped / Partial.** Compose supplied physical29 B’s return of one other
|
||
player’s force during Mentat with physical17’s group-flip counter and physical28 E’s
|
||
alone conversion. The original Gamont declaration/counter and physical card
|
||
use/disposal finish first. The actual return, or completed empty No-Field reveal,
|
||
then creates a conversion occurrence before settlement or victory. Preventing
|
||
that conversion does not return another counter, restore the used card or undo
|
||
revelation. Earlier Gamont prevention still keeps the force/card unchanged.
|
||
|
||
A phase8 public event binds actor, target, location, elite/returned metadata and
|
||
ordinary-versus-final Mentat scope to the held BG group. Card and optional Nexus
|
||
fuel provenance stay server-side in a separate parent; neither the public receipt
|
||
nor Karama source selection copies the hidden fuel identity. Post-commit
|
||
validation does not call pre-return availability again. Old ground/transport
|
||
source shapes stay phase5-only. The existing provisional continuously-alone hold
|
||
is unchanged; setup remains automatic.
|
||
|
||
Both direct cost completion and the original Semuta disposal continuation defer
|
||
the final choamMentat chooser while the new parent owns the counter. The parent
|
||
is consumed before restoring that chooser once; ordinary Mentat receives none.
|
||
The callback does not check victory itself. Actual victory rejects unresolved
|
||
conversion parents, then evaluates only after the original final confirmation.
|
||
|
||
[Native Gamont fixture](../tests/fixture-advisor-gamont-flip.ts) starts public
|
||
Advanced BG/Atreides/CHOAM with the original CHOAM35 deck. Unopened original
|
||
cards supply Gamont/Karama. Actual BG advisorSetup at Arrakeen, a paid two-force
|
||
shipment into Carthag and a one-force city-range move to Tabr earn two BG
|
||
strongholds. Atreides really moves nine counters out of Arrakeen, leaving its
|
||
last counter beside the advisor. Actual Collection and ordinary/final Mentat
|
||
controls retain that near-win. No played army, phase, wallet, hand, advisor hold,
|
||
response or winner is installed.
|
||
|
||
[Native engine cases](../tests/advisor-gamont-flip-engine.test.ts) cover ordinary
|
||
and final timing, both conversion outcomes, earlier original-effect prevention,
|
||
parent mismatch, a fuel-free public response and existing profiles. Allowance
|
||
can earn BG’s real third stronghold and final win; prevention retains only two
|
||
and advances the turn. Pure cases include the empty-reveal metadata path; this
|
||
native fixture proves ordinary-counter return, not full No-Field/Nexus/Semuta
|
||
combinations. Frozen **18 files277/277**, types/lint/build, five native Gamont/response/
|
||
GameTable SSR journeys and eight existing-profile paths pass. Original sources
|
||
take52 ordinary/56 final actions. Two earned BG strongholds plus the allowed
|
||
Arrakeen conversion produce an actual final BG win; preventing conversion leaves
|
||
two and advances the actual turn. Earlier original Gamont prevention retains
|
||
the outsider and card. The public response contains no fuel-card ID; its private
|
||
parent records provenance. An explicit malformed-input boundary annotation is
|
||
repaired without changing runtime validation; final frozen proof passes with
|
||
no driver repairs or moving source.
|
||
|
||
Private reports, rendered HTML and hashes:
|
||
`/home/quintine/.local/share/dune/checkpoints/20261024-advisor-gamont-flips/`.
|
||
`frozen-integrated-3/report.json` records fingerprint
|
||
`3833bcfc789c1a5765b71df68ad138d529429f5b64449159a08c8febf6cdc03a`
|
||
on base `d0f52c7bae4b2df9bf6bf087770850a4681f56de`. Prose/reference evidence is
|
||
reviewed and hashed separately afterward. Standard controls render; this is not
|
||
new component-callback/browser/mobile/deployed or complete-mode acceptance.
|
||
|
||
Remaining withdrawals, casualties/aftermath, other special arrivals and matching
|
||
groups remain open. No complete mode, comprehensive assurance or release gate
|
||
opens from this prototype.
|
||
|
||
## Guild transport and reserve returns — 24 October 2026
|
||
|
||
**Prototyped / Partial.** The same physical17 counter and physical28 E mandatory
|
||
conversion now compose with committed Guild cross-shipment and reserve returns.
|
||
The original privilege, rate, settlement and payment responses retain their
|
||
order. Actual payment, force transfer, shipment use and promise/Cunning receipts
|
||
commit once before the conversion response. Ordinary ground movement is not
|
||
consumed. Canceling only this conversion neither refunds payment nor reverses
|
||
transport or revives the earlier permission/rate opportunity.
|
||
|
||
The source stores the public original route, selected physical group, amount,
|
||
elite count and a unique committed transport event. It binds to one saved parent
|
||
and the exact held advisor group. Holds are captured before board-derived
|
||
occupation observations; the response opens only after original slot bookkeeping.
|
||
An existing Guild-income response retains priority. Once all conversion outcomes
|
||
finish, the parent is consumed before original Intrusion/territory entry resumes
|
||
once. A reserve return has no arrival suffix. Hidden funding shares, hands and
|
||
wallets are not copied into that public source.
|
||
|
||
From-reserves Fremen transport and private movement-preparation projections do
|
||
not manufacture conversion events. Only changed origin/destination groups are
|
||
considered. A transported BG advisor arriving alone retains its original advisor
|
||
stance until this counter resolves. Existing source, typed-transport, No-Field,
|
||
Nexus, module and start guards remain; no new entitlement is granted. The existing
|
||
provisional continuously-alone duration is unchanged. Exact old ground receipt
|
||
shape remains accepted; new transport fields are additive.
|
||
|
||
[Native transport fixture](../tests/fixture-advisor-transport-flip.ts) starts
|
||
public Advanced BG/Atreides/Guild, actually placing the advisor beside Guild’s
|
||
original five counters at printed Tuek’s Sietch sector5. Atreides receives an
|
||
original starting Karama; real first-round controls, declined preparation and
|
||
native early Guild timing lead to the pre-transport source. Caller actions allow
|
||
original permission/rate, then stop before the post-payment conversion. No played
|
||
army, phase, hand, wallet, reserve, hold or response is installed. A separate
|
||
Intrusion source actually defers Guild, pays for one BG reserve to Imperial
|
||
Basin as a fighter, resolves original interception/income, ends BG’s turn and
|
||
takes Guild’s next early turn. The tested cross-shipment then produces the origin
|
||
conversion followed by a real destination Intrusion; it is not a synthetic
|
||
pending decision.
|
||
[Engine cases](../tests/advisor-transport-flip-engine.test.ts) cover both routes,
|
||
both outcomes, a real later ordinary move, earlier permission/rate independence,
|
||
affordable full-price return versus an uncommitted unaffordable cross declaration,
|
||
source-parent rejection and minimal existing profiles. Pure transport/legacy
|
||
cases remain in the shared quote suite. Frozen **17 files243/243**, types/lint/build, eight native transport/response/
|
||
GameTable SSR journeys and eight existing-profile paths pass. Native default
|
||
sources take36 actions; the actual paid-shipment Intrusion source takes42.
|
||
Cross costs5 and return3 before the conversion. Earlier privilege prevention
|
||
leaves pieces unchanged; an unaffordable canceled cross tariff remains
|
||
uncommitted, while a full-price return really settles before unopposed
|
||
conversion. The first241/242 feedback corrected the funding expectation without
|
||
staging spice, then added the negative branch. Two focused cases and the final
|
||
frozen243/243 pass. An existing ground consumer now narrows the strict source
|
||
union before reading its mover; no source shape is relaxed.
|
||
|
||
Private reports, rendered HTML and hashes:
|
||
`/home/quintine/.local/share/dune/checkpoints/20261024-advisor-transport-flips/`.
|
||
`frozen-integrated-2/report.json` records fingerprint
|
||
`cca2ff32114b6854c9339fff72f3384d68d1772d5539811594cd82f0c3e8d4fa`
|
||
on base `3aca64412feabae750b1adc2796a4086505a49c9`. Prose/reference evidence is
|
||
reviewed and hashed separately afterward. Standard controls are rendered; this
|
||
is no new component-callback/browser/mobile/deployed certificate.
|
||
|
||
Shipments outside this transport path, other withdrawals, casualties/aftermath,
|
||
matching-group conversions and wider interleavings remain open. This is not
|
||
complete cancellation or full Advanced/mode acceptance.
|
||
|
||
## Source and provisional duration — 24 October 2026
|
||
|
||
Status: **Prototyped / Partial**. Supplied authorized Advanced physical28 E says
|
||
advisors alone in a territory automatically become fighters. Physical17’s Karama
|
||
table permits preventing one group’s flip to or from advisors. Applying the two
|
||
connects a real counter to that mandatory conversion; automatic does not itself
|
||
confer immunity. Physical16 permits Karama only after setup/At Start, so setup
|
||
conversions remain automatic without this response.
|
||
|
||
This slice connects ground-movement producers: an advisor group entering an
|
||
empty destination and the last outsider departing its territory. The physical
|
||
move, counters, normal movement opportunity and any completed movement promise
|
||
are already committed. The ordinary advisorFlip response then permits or
|
||
prevents the conversion. Prevention cannot undo movement or spend another move.
|
||
|
||
The 14 October choose-recommended authority selects a **provisional duration**:
|
||
the prevented group remains advisors while continuously alone in that territory,
|
||
across phase and turn changes. Another faction’s presence or the physical group
|
||
becoming empty closes that occurrence. A group moving elsewhere gets its new
|
||
destination’s ordinary stance and a new conversion opportunity when applicable.
|
||
This duration is not a directly retrieved publisher ruling. Repeated normalization
|
||
cannot simply erase the canceled result or offer an immediate free retry.
|
||
|
||
## Connected behavior
|
||
|
||
- [Pure rule](../game/advisor-automatic-flip.ts) identifies current public groups,
|
||
binds a current turn/phase/mover/movement count and exact physical group, and
|
||
settles a held stance without reading cards, leaders or spice.
|
||
- [Engine](../game/engine.ts) marks each occurrence after physical ground
|
||
movement, queues its original source and opens the existing native response.
|
||
Allowance deletes the advisor stance; cancellation retains the occurrence
|
||
hold. The source is revalidated before card disposal and outcome settlement.
|
||
Multiple groups retain ordered independent responses.
|
||
- [Advisor normalization](../game/advisors.ts) and the shared
|
||
[board resolution quote](../game/board-resolution-quote.ts) retain held
|
||
advisors. Such forces still do not fight, collect, grant stronghold income,
|
||
count for victory or supply ornithopters. Ordinary arrival matching retains an
|
||
existing held group’s stance instead of silently converting it when joined.
|
||
- [Karama source selection](../game/karama-context.ts) binds the actual pending
|
||
occurrence rather than unrelated game state. The normal
|
||
[table response](../components/game-table.tsx) explains that the move is complete
|
||
and displays the provisional duration. There is no new confirmation or timer.
|
||
Existing minimal bot response handling remains, without strategy changes.
|
||
|
||
No start gate, physical inventory, save, schema or room is reset. Setup and
|
||
remaining unheld non-ground conversions keep their existing behavior. Remaining
|
||
mandatory producers beyond the transport follow-up include other shipments, withdrawals, casualties/aftermath and
|
||
other special arrivals; matching an existing fighter group and broader
|
||
interleavings also remain unfinished. This checkpoint does not claim complete
|
||
advisor-conversion cancellation or full Advanced compliance.
|
||
|
||
## Bounded verification
|
||
|
||
The [native fixture](../tests/fixture-advisor-automatic-flip.ts) starts genuine
|
||
public Advanced Bene Gesserit/Atreides/Guild. The native advisorSetup action puts
|
||
one advisor beside Atreides’ original ten Arrakeen forces. Only unopened original
|
||
Treachery/Spice order and scalar shuffle order are selected. Atreides receives
|
||
the original Karama, both Spice draws and ordinary first-round controls execute,
|
||
the original optional preparation is declined and Guild uses its timing choice.
|
||
The arrival branch stops at BG’s turn; the departure branch really skips that
|
||
turn and stops at Atreides’. No played army, phase, wallet, stance, card hand,
|
||
response or prevention receipt is installed.
|
||
|
||
[Native engine cases](../tests/advisor-automatic-flip-engine.test.ts) cover both
|
||
allowed/canceled moves, continuous hold through actual phase continuation,
|
||
an actual outsider return, changed-source rejection and existing profiles.
|
||
[Pure cases](../tests/advisor-automatic-flip-quote.test.ts) cover group selection,
|
||
settlement and exact source validation. The former empty-arrival expectation in
|
||
[advisor regressions](../tests/advisors.test.ts) is cut over explicitly.
|
||
Frozen **16 files199/199**, types/lint and production build pass. Five native
|
||
move/response/GameTable SSR journeys cover allowed/canceled arrival/departure and
|
||
an actual outsider return. Eight existing-profile paths accept legal standard
|
||
responses and continue. The original arrival source takes34 actions; departure
|
||
takes36, including the real skipped BG movement. Existing Karama/Allow controls
|
||
render, without a new component-callback or browser certificate. One redundant
|
||
import is repaired after the first passing199-case union; the final frozen
|
||
source then passes every check.
|
||
|
||
Private reports, rendered HTML and hashes:
|
||
`/home/quintine/.local/share/dune/checkpoints/20261024-advisor-automatic-flips/`.
|
||
`frozen-integrated-2/report.json` records source fingerprint
|
||
`385c4758cd118574be8431593267a3198dd570eea6960c02e45a462e23494c4c`
|
||
on base `1a505525a8aa1499bc6270da2241506baf3e5be2`. Prose/reference evidence is
|
||
reviewed and hashed separately after verification.
|
||
|
||
Comprehensive rules, combinations, saved-game/recovery/privacy/custody assurance,
|
||
browser/mobile/deployed acceptance and full AI refinement remain open.
|