+ Simultaneous victory
+ The qualifying sides are {sides}. They can finish the game, or unanimously agree to play another turn.
+ {proposal && Proposal: {proposal}
}
+ {!ownTurn ? (
+ Waiting for {actor} to decide.
+ ) : (
+ <>
+ {vote.extra === null && (
+
+ )}
+
+ {vote.extra === null ? (
+
+ Propose another turn
+
+ ) : (
+
+ Agree to continue
+
+ )}
+
+ Finish the game
+
+
+ >
+ )}
+
+ );
+}
diff --git a/docs/ADVANCED_PREVIEW.md b/docs/ADVANCED_PREVIEW.md
index 5e11ea9f..946a7ca9 100644
--- a/docs/ADVANCED_PREVIEW.md
+++ b/docs/ADVANCED_PREVIEW.md
@@ -38,10 +38,23 @@ all three Tech Tokens counts as one additional stronghold in this comparison.
Qualifying alliances and the separate Ecaz Homeworld victory retain their
existing shared-winner treatment. Basic retains its existing behavior.
-The authorized revised rules also permit all qualifying players or alliances to
-agree to play another turn and optionally raise the stronghold target. That
-choice is not yet implemented in the preview, which currently ends in a shared
-win when applicable. [Source and interpretation](RULE_DECISIONS.md#advanced-simultaneous-solo-stronghold-victories--27-october-2026).
+The authorized revised rules also permit qualifying players or alliances to
+agree to play another turn and optionally raise the stronghold target. The
+provisional preview offers this on turns 1–9 when at least two distinct sides
+qualify and one is an alliance. Every member of those sides responds in storm
+order. The first may finish or propose another turn with a whole-number target
+increase from zero through 20; each later member accepts that exact proposal or
+finishes. These ordered controls and the input cap are online conventions.
+Finishing resolves the original result and any correct private prediction;
+unanimous acceptance continues without revealing that prediction.
+
+The increase adds to the ordinary solo and alliance stronghold targets, while
+independent Ecaz joint-occupation and Homeworld special-victory conditions stay
+separate under the provisional interpretation. The original Mentat phase
+continues unless CHOAM's completed end-of-Mentat opportunity was the source,
+in which case the next turn begins. Turn-ten extension, equal-solo-only
+agreements and broader special-victory cases remain unfinished.
+[Source and interpretation](RULE_DECISIONS.md#advanced-simultaneous-solo-stronghold-victories--27-october-2026).
## Admission and saved behavior
diff --git a/docs/CURRENT_STATUS.md b/docs/CURRENT_STATUS.md
index 996c5eeb..8168fda9 100644
--- a/docs/CURRENT_STATUS.md
+++ b/docs/CURRENT_STATUS.md
@@ -20,6 +20,14 @@ open mode gates.
Keep identified Basic-function gaps ahead of Advanced and wider interactions.
Prototype labels and final acceptance gates remain.
+**Advanced simultaneous-victory continuation — 27 October. Prototyped /
+Partial.** Qualifying sides including an alliance may unanimously agree to
+another turn and optionally increase ordinary stronghold targets, preserving
+the original Mentat or CHOAM continuation and hidden prediction. Controls and
+minimal bots are connected. The eight-file affected union passes 104 cases and
+the production build passes. Turn-10 extension, equal-solo-only and exceptional
+victory compositions remain open. [Scope](ADVANCED_PREVIEW.md#simultaneous-victories).
+
**Advanced Revival order and competing winners — 27 October. Prototyped /
Partial.** Sapho can provisionally pause a clean started Revival turn and resume
it last with spent allowances and legacy order records preserved. Simultaneous
diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md
index 4f27ca8a..88e91a3f 100644
--- a/docs/IMPLEMENTATION_STATUS.md
+++ b/docs/IMPLEMENTATION_STATUS.md
@@ -1,5 +1,16 @@
# Dune implementation status
+## 27 October 2026 — Advanced simultaneous-victory continuation
+
+Before turn ten, multiple qualifying sides including an alliance may
+provisionally agree to play another turn and optionally increase the ordinary
+stronghold targets. Each qualifying participant accepts the same proposal;
+finishing instead resolves the original victory and prediction. Original
+Mentat and CHOAM continuation are retained. The affected eight-file union
+passes 104 cases and the production build passes. Turn-ten extension,
+equal-solo-only choices and wider combinations remain open.
+[Scope](ADVANCED_PREVIEW.md#simultaneous-victories).
+
## 27 October 2026 — Advanced Revival and simultaneous victory
A clean already-started Advanced Revival can provisionally pause through
diff --git a/docs/RULE_DECISIONS.md b/docs/RULE_DECISIONS.md
index 504bd9fb..b776a1a8 100644
--- a/docs/RULE_DECISIONS.md
+++ b/docs/RULE_DECISIONS.md
@@ -12,11 +12,25 @@ a qualifying alliance or the separate Ecaz Homeworld victory retains the
existing shared-winner treatment. Basic and recorded winners retain their
existing behavior.
-The same revision permits all qualifying players or alliances to agree to play
-another turn and optionally raise the required stronghold count. This choice is
-not yet implemented; automatic shared victory remains the current preview
-behavior. Implementing the solo comparison does not complete Advanced victory
-or release acceptance. [Preview](ADVANCED_PREVIEW.md#simultaneous-victories).
+The same revision permits qualifying players or alliances to agree to play
+another turn and optionally raise the required stronghold count. In the
+provisional Advanced preview, a public agreement opens on turns 1–9 when at
+least two distinct sides qualify, including an alliance. Qualification is
+determined before a private Bene Gesserit prediction replaces an actual win.
+Every member of the qualifying sides votes in public storm order: the first
+may finish or propose continuation with an integer increase from zero through
+20, and each remaining member accepts that exact proposal or finishes. The
+20-point input cap and sequential proposal procedure are software conventions,
+not printed limits. A finish decision settles the original result, including
+prediction; unanimous acceptance retains play without applying that result.
+
+An agreed increase adds to the ordinary solo and alliance stronghold targets.
+It does not alter independent Ecaz joint-occupation or Homeworld special-victory
+conditions under this provisional composition. The original Mentat opportunity
+resumes, or the completed CHOAM end-of-Mentat continuation advances once.
+Turn-ten extension, equal-solo-only agreements and broader special-victory
+composition remain unfinished. This does not certify Advanced victory or
+release acceptance. [Preview](ADVANCED_PREVIEW.md#simultaneous-victories).
## Juice of Sapho and an already-started Advanced movement turn — 27 October 2026
diff --git a/game/bots.ts b/game/bots.ts
index a5c083ae..6d9eaedc 100644
--- a/game/bots.ts
+++ b/game/bots.ts
@@ -1236,6 +1236,10 @@ function policyActions(g: GameView): Action[] {
const level = rank(g);
if (!(me.bot ?? me.autopilot) || g.status === 'finished') return [];
if (g.status === 'lobby') return me.ready ? [] : [{ type: 'ready' }];
+ if (g.victoryContinuation)
+ return g.victoryContinuation.actor === me.id
+ ? [{ type: 'victoryContinuation', event: g.victoryContinuation.event, mode: 'finish' }]
+ : [];
if (g.homeworldTupileBlocked) return [];
const dukeGrant = g.homeworldEcazDuke;
if (dukeGrant && dukeGrant.occupier === me.id && !dukeGrant.blocked && dukeGrant.event && dukeGrant.recipients.length)
@@ -4284,6 +4288,9 @@ function botAdvisorMatchingAllowed(g:GameView,action:Action) {
} catch(error) { if(error instanceof AdvisorMatchingError) return false; throw error; }
}
export function botActions(g: GameView): Action[] {
+ if (g.victoryContinuation)
+ return g.status === 'playing' && !g.roomControl?.paused && !g.roomControl?.closed && !g.automaticContinuationPending
+ ? policyActions(g) : [];
if (g.homeworldTupileBlocked) return [];
if (g.decision?.kind === 'homeworldTupileCleanup' || g.homeworldTupileCleanup)
return tupileCleanupActions(g);
diff --git a/game/engine.ts b/game/engine.ts
index d058cd86..a89ed748 100644
--- a/game/engine.ts
+++ b/game/engine.ts
@@ -1,4 +1,7 @@
import { CharityPromiseError, liveCharityPromises, charityPromiseAnswers, bindCharityPromise, guardCharityClaim, guardCharityReady, reconcileCharityPromises, type CharityPromise } from './charity-promises';
+import { createVictoryContinuation, validateVictoryContinuation, voteVictoryContinuation,
+ VictoryContinuationError, MAX_VICTORY_EXTRA_STRONGHOLDS, type VictoryContinuation,
+ type VictoryContinuationResume } from './victory-continuation';
import { SabotageGiftError, quoteSabotageGift, quoteSabotageGiftDiscard } from './sabotage-gift';
import { kullDefaultEligible } from './kull-default-profile';
import { advancedKullLobbyEligible } from './kull-advanced-profile';
@@ -1402,6 +1405,9 @@ type RicheseAllyOffer = {
payer: string;
};
export type Game = {
+ /** Agreed addition to the ordinary stronghold win targets. Older games omit it. */
+ victoryExtraStrongholds?: number;
+ victoryContinuation?: VictoryContinuation | null;
charityPromises?: CharityPromise[];
revivalOrder?: RevivalOrder;
charityOrder?: CharityOrder;
@@ -29126,12 +29132,51 @@ function decideSharedSpice(g: Game, id: string, action: Action) {
}
}
-function victory(g: Game, quote?: VictoryQuote) {
+function victoryAgreementRule