Offer mandatory advisor conversion prevention after Guild cross-shipment and reserve returns. Keep original permission/rate/income, payment, physical pieces and shipment use; bind the exact group to one transport parent and resume original arrival/Intrusion once. Ordinary movement stays unused and the existing provisional continuously-alone duration remains. Preserve old ground receipts, private projection behavior and all transport/module guards. Validation: 17 files243/243, types/lint/build, eight native transport/response/GameTable SSR journeys and eight existing-profile paths. Genuine36/42-action sources earn original counters/cards and actual paid-shipment Intrusion. Preserve the unaffordable full-price cross outcome and prove the affordable return. No saved-room/D1/restart/deployment operation; broader producers, full modes and browser/deployed acceptance remain open.
156 lines
9.8 KiB
Markdown
156 lines
9.8 KiB
Markdown
# Mandatory advisor conversions
|
||
|
||
## 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.
|