Files
Dune/docs/ADVISOR_AUTOMATIC_FLIPS.md
T
Quintine 035be51915 Resolve advisor conversion after Gamont before final victory
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.
2026-10-24 20:16:05 +11:00

217 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.