@mcptoolshop/sovereign 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,66 @@
5
5
 
6
6
  ---
7
7
 
8
+ ## v1.1.2 — Circuit victory + human voice — 2026-05-20
9
+
10
+ **Beta.** Same day as v1.1.1, but a meaningfully different shape. After the v1.1.1 cold playthrough the game still felt too short and the ending too arbitrary — it ended because the clock ran out, not because someone won the Republic. v1.1.2 replaces the round-cap-with-mandate end condition with a **circuit-based** end condition tied to physical movement around the board.
11
+
12
+ **The new end condition:**
13
+
14
+ The game ends when one player has carried their faction around the Republic four times — i.e., completed their fourth crossing of Treasury Opens. At that moment, Final Accounting fires and the highest-Influence player wins, *not necessarily the player who got around first*. Hard cap stays at round 30 (a safety; essentially never fires — diagnostic showed 100 / 100 CANONICAL × 100 games complete by round 28).
15
+
16
+ **Why this is structurally different from v1.1.1:**
17
+
18
+ - v1.1.1: 12-round cap with mandate (15 IP + 5 lead) as early-trigger. Median 9 rounds, 36 turns. Ended by clock.
19
+ - v1.1.2: no round cap that anyone hits in practice. Median **23 rounds / 67 turns** — about 1.9× the previous game length. Ends when somebody physically rounds the board for the fourth time.
20
+
21
+ **CANONICAL × 100 (in-HTML batch sim):**
22
+
23
+ | Metric | v1.1.1 (mandate) | v1.1.2 (circuit) |
24
+ |---|---:|---:|
25
+ | Triggered | 62 / 100 | 100 / 100 |
26
+ | Median rounds | 9 | 23 |
27
+ | Median turns | ~27 | 67 |
28
+ | Treasury wins | 52 % | 56 % |
29
+ | Merchant wins | 32 % | 19 % |
30
+ | Manufacturer wins | 16 % | 25 % |
31
+ | Avg winning IP | ~16 | 28.7 |
32
+ | Avg lead margin | 5 | 7.9 |
33
+ | Bankruptcy events | 7 | observed |
34
+ | Safety-cap fires | n/a | 0 / 100 |
35
+
36
+ Trade-off worth naming: Merchant share drops (32 → 19) while Manufacturer rises (16 → 25). Longer games give Treasury and Manufacturer time to compound industrial / financial scoring, where Merchant's route-rent advantage matures faster in shorter games. Treasury still doesn't run away — share stays in the band.
37
+
38
+ **Trigger ≠ winner.** The player who completes the fourth circuit wins by Influence only 33 / 100 games. The other 67, somebody else holds the heavier ledger at termination. This is intentional — it preserves the "carry it across the line" feel while still rewarding economic depth. Endgame copy makes this explicit in both branches.
39
+
40
+ **Human voice copy pass.** All circuit / endgame narration rewritten away from gameplay-jargon ("Circuit Victory", "trigger player", "claimed the Republic") toward narrative-voice ("Hamilton has been around four times. The books close.", "Hamilton rounded the Republic four times — but the heaviest ledger belonged to Morris."). Per-circuit ledger entries vary by circuit number — first lap, two circuits in, three deep, books close.
41
+
42
+ **What's preserved from v1.1.1:**
43
+
44
+ - All Pass 1 / Pass 2 chrome (action rail above board, positions strip, portfolio strip, collapsed sidebar, 26 px tokens, designer gate, dice overlay)
45
+ - Pass 3 rent surfacing band
46
+ - All v0.18 mechanics: card effects, Acts (still firing rounds 1-7), scoring math, rent math, profile decision functions, RNG, deck order, Credit Crisis / Default / Rebellion triggers
47
+ - Designer URL flag: `?designer=1&circuit_target=N` for tuning the circuit threshold
48
+
49
+ **What changed:**
50
+
51
+ - `SAVE_VERSION = 'v0.21-circuit-candidate'`. v0.20 (v1.1.1) saves refuse to load with a friendly non-crash message.
52
+ - Mandate threshold removed. No more 15-IP + 5-lead trigger; the game ends on the fourth circuit only.
53
+ - Round counter on the chrome no longer reads "Round N of 12" — just "Round N" (and "· Late Republic" after round 7).
54
+ - Acts still fire in rounds 1-7; rounds 8-onward are Late Republic with no new political shocks. **Open risk**: median play has ~16 rounds of Late Republic with no Acts firing. If cold play finds this stretch feels empty, the v1.1.3 fix is an Acts redistribution pass, not a return to mandate.
55
+
56
+ **Beta caveats:**
57
+
58
+ - Not yet cold-walked end-to-end by a fresh human player. Beta tag is the safety net.
59
+ - Behavioral adaptation unmeasured: AI profiles still play current decision functions, not circuit-aware ones (e.g., Treasury doesn't yet race to hit the fourth circuit).
60
+ - The Late Republic stretch (~16 rounds in median play with no Acts firing) is a known open risk. Worth flagging in any playtest notes.
61
+
62
+ **npm history note:**
63
+
64
+ v1.1.0 remains on npm as the historical withdrawn version. v1.1.1 (mandate beta) and v1.1.2 (circuit beta) are both published. `npm install @mcptoolshop/sovereign` resolves to v1.1.2 (`latest`).
65
+
66
+ ---
67
+
8
68
  ## v1.1.1 — Digital mode beta: human playability rebuild + 12-round pacing + mandate victory — 2026-05-20
9
69
 
10
70
  **Beta release.** Second attempt at the digital mode after v1.1.0 was withdrawn the same day it shipped (2026-05-20). v1.1.0 simulation-verified but failed first cold human play; v1.1.1 fixes the structural human-playability gaps that audit could not catch. Not fully cold-validated end-to-end; shipping as beta so anyone who wants the digital mode can opt in while the player experience continues to settle.
package/README.es.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **Estado — v1.1.1 (beta).** La versión v1.1.0 fue retirada el mismo día de su lanzamiento (20 de mayo de 2026) después de que una sesión de juego con usuarios reales revelara dos fallos estructurales en la jugabilidad que las auditorías de simulación no pudieron detectar. La versión v1.1.1 es una reconstrucción: se ha mejorado la jugabilidad para usuarios, se ha ajustado el ritmo a 12 rondas, se ha implementado un modelo de victoria por mandato y se han añadido elementos relacionados con el alquiler. Es una **beta opcional**: el modo digital se ha lanzado porque es significativamente mejor que la versión v1.1.0, pero no se ha probado exhaustivamente con usuarios. El juego de mesa imprimible sigue siendo estable en la versión v0.2. Consulte el archivo `CHANGELOG.md` para obtener información detallada sobre los cambios y las limitaciones de la beta.
22
+ **Estado — v1.1.2 (beta).** La versión v1.1.0 fue retirada el mismo día de su lanzamiento (20 de mayo de 2026). La versión v1.1.1 reconstruyó el modo digital con correcciones de jugabilidad, un ritmo de 12 rondas y un umbral de victoria por mandato, pero aún se sentía demasiado corta. La versión v1.1.2 reemplaza la condición de finalización basada en el número de rondas por una condición de finalización **basada en circuitos**: el juego termina cuando un jugador ha hecho girar su facción alrededor de la República cuatro veces. La duración media del juego es de aproximadamente 23 rondas / 67 turnos (1.9 veces la v1.1.1). El jugador que desencadena el final no gana automáticamente; el jugador con la mayor influencia en el cálculo final es el que gana. El juego de mesa imprimible sigue siendo estable en la versión v0.2. Consulte el archivo `CHANGELOG.md` para obtener los detalles completos de los cambios y las advertencias de la versión beta.
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  Sovereign es un **juego de mesa al estilo "Monopoly" basado en el sistema de Hamilton**, sobre la creación del crédito público estadounidense, además de una **adaptación completa para un solo jugador / digital** que ejecuta las mismas reglas localmente en un navegador contra dos oponentes simulados y deterministas.
29
29
 
30
- - **Juego de mesa** — Edición imprimible de 34 hojas. Tablero de 40 casillas, 22 propiedades + 4 rutas + 2 instituciones, 8 sistemas de colores, 7 Actas del Congreso en orden histórico fijo, 4 roles de jugador, 3 pistas compartidas (Crédito Público · Resistencia Pública · Capacidad Industrial), 12 + 12 cartas de evento. Dos vías económicas viables además del Tesoro: Comerciante y Fabricante. Equilibrio de la versión v0.2, congelado.
31
- - **Modo digital** — Un único archivo HTML autocontenido. Juego de 12 rondas con modelo de victoria por mandato: a partir de la ronda 8, un jugador con 15 puntos de influencia y una ventaja de 5 puntos activa la "Cuentas Finales" y termina el juego. Si no hay mandato, el juego termina en la ronda 12. Generador de números aleatorios determinista mulberry32, oponentes con IA programada (Tesoro / Finanzas, Comerciante / Infraestructura, Fabricante / Industria), guardar / cargar con integridad de hash, herramienta de simulación por lotes para el diseñador y función de eliminación de repeticiones.
32
- - **Punto de referencia de equilibrio** — Modelo de mandato de 12 rondas (beta v1.1.1): Tesoro 51 %, Comerciante 33 %, Fabricante 16 % (CANÓNICO × 100). Los tres perfiles pueden obtener el mandato; ningún perfil está bloqueado. Las mecánicas subyacentes de la versión v0.18 (Crisis Crediticia, puntuación de propiedad intelectual en efectivo, Carta Industrial, bonificaciones por completar conjuntos) se conservan idénticamente en bytes desde el ciclo de diseño v0.3 → v0.10 → v0.18, basado en más de 1000 simulaciones deterministas.
30
+ - **Juego de mesa** — edición imprimible de 34 hojas. Tablero de 40 casillas, 22 propiedades + 4 rutas + 2 instituciones, 8 sistemas de colores, 7 Actas del Congreso en orden histórico fijo, 4 roles de jugador, 3 pistas compartidas (Crédito Público · Resistencia Pública · Capacidad Industrial), 12+12 cartas de evento. Dos vías económicas viables además del Tesoro: Comerciante y Fabricante. Equilibrio de la versión v0.2, congelado.
31
+ - **Modo digital** — un único archivo HTML autocontenido. Condición de finalización basada en circuitos: el juego termina cuando un jugador completa su cuarta vez alrededor del Tesoro. La duración media del juego es de aproximadamente 23 rondas (67 turnos). Al final, el jugador con la mayor influencia es el que gana, *no necesariamente el que ha dado la vuelta al tablero primero*. El límite máximo de rondas se mantiene en 30 como medida de seguridad (nunca se alcanza en la configuración CANÓNICA × 100). Generador de números aleatorios mulberry32 determinista, oponentes controlados por IA (Tesoro / Finanzas, Comerciante / Infraestructura, Fabricante / Industria), guardar / cargar con integridad de hash, herramienta de simulación por lotes para el diseñador.
32
+ - **Punto de referencia de equilibrio** — modelo de circuitos (versión v1.1.2 beta): Tesoro 56 % · Comerciante 19 % · Fabricante 25 % (CANÓNICA × 100). Los tres perfiles tienen posibilidades significativas de ganar; el Fabricante aumenta en juegos más largos a medida que los conjuntos industriales tienen tiempo para madurar; la cuota del Comerciante disminuye a medida que las rutas son menos dominantes cuando se gasta dinero en mejoras a lo largo de un período más largo. Las mecánicas subyacentes de la versión v0.18 (Crisis de Crédito, puntuación de IP en efectivo, Carta Industrial, bonificaciones por completar conjuntos) se conservan idénticas en bytes desde el ciclo de diseño v0.3 → v0.10 → v0.18, impulsado por más de 1000 simulaciones deterministas.
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ El cuarto perfil conceptual (Oportunista/Efectivo) se pospone. El conjunto compe
127
127
 
128
128
  ## Limitaciones conocidas
129
129
 
130
- - **La versión v1.1.1 es una beta.** El modo digital se ha sometido a auditorías con diagnósticos de simulación, y el lote CANÓNICO × 100 dentro del HTML generó 62 / 100 activaciones de mandato (frente a las 67 previstas), con una distribución de ganadores de 51 / 33 / 16 exactamente como se predijo. **No** se ha probado exhaustivamente con un usuario real; la adaptación del comportamiento (cómo se comportan realmente los jugadores una vez que conocen el mandato) no se ha medido. Considérela como una beta opcional hasta que la pruebe usted mismo.
131
- - **Los perfiles de IA aún no compiten por el mandato.** Utilizan las mismas funciones de decisión de la versión v0.18, lo que significa que juegan para acumular influencia a lo largo de todo el juego, en lugar de alcanzar rápidamente el umbral de 15 puntos de influencia. Una versión futura ajustará las decisiones de los perfiles para tener en cuenta el mandato. Los jugadores humanos reales pueden comportarse de manera diferente.
132
- - **La quiebra es una presión dinámica suave a las 12 rondas.** Aproximadamente 7 / 100 eventos en CANÓNICO × 100 con mandato (frente a aproximadamente 18 / 100 sin mandato, porque los juegos terminan antes). Es interesante observarlo durante el juego.
133
- - **El Tesoro / Finanzas sigue siendo intencionalmente el perfil más fuerte**, dentro del rango objetivo. Esto coincide con la tesis histórica: el crédito público y las finanzas federales fueron el principal instrumento económico de Hamilton.
134
- - **Los eventos de fallo (Impago / Rebelión) siguen siendo principalmente decorativos.** La Crisis Crediticia se activa en aproximadamente 2 / 100 a las 12 rondas. El sistema de escalada tiene más tiempo para desarrollarse, pero rara vez llega al impago o la rebelión. Las versiones futuras podrían revisar la presión de los estados de fallo.
130
+ - **La versión v1.1.2 es una beta.** Los datos provienen de la simulación por lotes integrada en el HTML (100 / 100 juegos terminan por circuito, duración media de 23 rondas, división de ganadores 56 / 19 / 25). **No** ha sido jugada completamente por un jugador humano. Trátela como una opción a elegir hasta que la hayas probado mismo.
131
+ - **Los perfiles de IA aún no compiten por circuitos.** Utilizan las funciones de decisión de la versión v0.18: juegan para acumular influencia en lugar de competir para llegar al cuarto circuito. Los jugadores humanos reales pueden comportarse de manera muy diferente una vez que comprendan la condición de finalización.
132
+ - **Desencadenar ganar.** El jugador que completa el cuarto circuito solo gana por influencia en aproximadamente un tercio de los juegos. Esto es intencional: el cálculo final recompensa la profundidad económica, no la velocidad alrededor del tablero. La copia del final del juego hace que esta distinción sea explícita.
133
+ - **La parte final de la República es larga y no tiene Actas.** Las Actas siguen activándose en las rondas 1-7. El juego medio dura aproximadamente 23 rondas, dejando aproximadamente 16 rondas de la República tardía sin nuevos eventos políticos. Si esto parece vacío en un juego sin intervención, la siguiente solución es una redistribución de las Actas, no un retorno al mandato.
134
+ - **El Tesoro / Finanzas sigue siendo intencionalmente el más fuerte**, dentro del rango objetivo. Esto coincide con la tesis histórica: el crédito público y las finanzas federales fueron el principal instrumento económico de Hamilton.
135
+ - **Los eventos de fallo (Impago / Rebelión) siguen siendo principalmente decorativos.** La Crisis de Crédito se activa ocasionalmente; el Impago y la Rebelión casi nunca. El sistema de escalada tiene más tiempo para desarrollarse, pero aún así rara vez alcanza los niveles superiores. Las versiones futuras podrían revisar la presión de los estados de fallo.
135
136
 
136
137
  ---
137
138
 
package/README.fr.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **Statut — v1.1.1 (bêta).** La version v1.1.0 a été retirée le même jour de sa sortie (2026-05-20) après qu'une session de jeu humaine ait révélé deux problèmes structurels affectant la jouabilité, que les audits de simulation n'avaient pas détectés. La version v1.1.1 est une refonte : amélioration de la jouabilité pour les joueurs humains + rythme de 12 tours + modèle de victoire par mandat + apparition de la location. Il s'agit d'une **bêta optionnelle** : le mode numérique est proposé car il est significativement meilleur que la version v1.1.0, mais il n'a pas été testé en profondeur de bout en bout. La version imprimable du jeu de plateau reste stable à la version v0.2. Consultez le fichier `CHANGELOG.md` pour connaître les modifications complètes et les limitations de la version bêta.
22
+ **Statut — v1.1.2 (bêta).** La version v1.1.0 a été retirée le jour même de sa sortie (2026-05-20). La version v1.1.1 a refait le mode numérique avec des corrections de jouabilité, un rythme de 12 tours, et un seuil de victoire par mandat, mais elle restait toujours trop courte. La version v1.1.2 remplace la condition de fin basée sur le nombre de tours par une condition de fin basée sur un circuit : la partie se termine lorsque l'un des joueurs a fait le tour de la République quatre fois. La durée moyenne d'une partie est d'environ 23 tours / 67 tours (1,9 fois la v1.1.1). Le joueur qui déclenche la fin ne gagne pas automatiquement ; c'est le joueur avec la plus grande influence lors du décompte final qui gagne. La version imprimable du jeu de plateau reste stable à la version v0.2. Consultez le fichier `CHANGELOG.md` pour connaître les modifications complètes et les limitations de la version bêta.
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  Sovereign est un **jeu de société du type Monopoly, basé sur le système Hamilton**, qui traite de la création du crédit public américain, ainsi qu'une **adaptation complète pour un mode solo / numérique** qui exécute les mêmes règles localement dans un navigateur, contre deux adversaires simulés et déterministes.
29
29
 
30
- - **Jeu de plateau** — édition imprimable en 34 feuilles. Plateau de 40 cases, 22 propriétés + 4 itinéraires + 2 institutions, 8 systèmes de couleurs, 7 actes du Congrès dans un ordre historique fixe, 4 rôles de joueurs, 3 pistes communes (Crédit public · Résistance publique · Capacité industrielle), 12 + 12 cartes d'événements. Deux voies économiques viables en dehors du Trésor : le commerçant et le fabricant. Équilibrage de la version v0.2, figé.
31
- - **Mode numérique** — un seul fichier HTML autonome. Jeu de 12 tours avec un modèle de victoire par mandat : à partir du tour 8, un joueur disposant de 15 points d'influence et d'une avance de 5 points déclenche le bilan final et met fin à la partie. S'il n'y a pas de mandat, la partie se termine au tour 12. Générateur de nombres aléatoires déterministe mulberry32, adversaires IA programmés (Trésor / Finances, Commerçant / Infrastructures, Fabricant / Industrie), sauvegarde / chargement avec vérification de l'intégrité, outil de relecture des parties, outil de simulation en lot réservé aux concepteurs.
32
- - **Équilibre de base** — modèle de 12 tours avec mandat (bêta v1.1.1) : Trésor 51 % · Commerçant 33 % · Fabricant 16 % (CANONIQUE × 100). Les trois profils peuvent obtenir un mandat ; aucun profil n'est exclu. Les mécanismes sous-jacents de la version v0.18 (Crise du crédit, système de points d'influence, Charte industrielle, bonus pour la complétion des ensembles) sont conservés de manière identique, provenant de l'évolution de la conception v0.3 → v0.10 → v0.18, basée sur plus de 1000 simulations déterministes.
30
+ - **Jeu de plateau** — édition imprimable de 34 feuilles. Plateau de 40 cases, 22 propriétés + 4 routes + 2 institutions, 8 systèmes de couleurs, 7 actes du Congrès dans un ordre historique fixe, 4 rôles de joueurs, 3 pistes communes (Crédit public · Résistance publique · Capacité industrielle), 12 + 12 cartes d'événements. Deux voies économiques viables en dehors du Trésor : le commerçant et le fabricant. Équilibrage de la version v0.2, figé.
31
+ - **Mode numérique** — un seul fichier HTML autonome. Condition de fin basée sur un circuit : la partie se termine lorsque l'un des joueurs effectue son quatrième passage par "Trésor ouvert". La durée moyenne d'une partie est d'environ 23 tours (67 tours). Lors du décompte final, le joueur avec la plus grande influence gagne, *et non nécessairement celui qui a fait le tour du plateau en premier*. La limite maximale de tours reste à 30 pour des raisons de sécurité (elle ne se déclenche jamais dans le mode CANONIQUE × 100). Générateur de nombres aléatoires mulberry32 déterministe, adversaires IA scriptés (Trésor / Finances, Commerçant / Infrastructures, Fabricant / Industrie), sauvegarde / chargement avec intégrité des données, outil de simulation par lots pour les concepteurs.
32
+ - **Équilibre de base** — modèle de circuit (v1.1.2 bêta) : Trésor 56 % · Commerçant 19 % · Fabricant 25 % (CANONIQUE × 100). Les trois profils ont une chance de gagner de manière significative ; le fabricant gagne plus souvent dans les parties plus longues, car les ensembles industriels ont le temps de se développer ; la part du commerçant diminue à mesure que les routes deviennent moins dominantes lorsque l'argent est dépensé pour des améliorations sur une période plus longue. Les mécanismes sous-jacents de la version v0.18 (Crise du crédit, notation des points de propriété, Charte industrielle, bonus pour l'achèvement des ensembles) sont conservés de manière identique, provenant de la conception v0.3 → v0.10 → v0.18, basée sur plus de 1000 simulations de jeux déterministes.
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ Le quatrième profil conceptuel (Opportuniste / Trésorerie) est reporté. L'ens
127
127
 
128
128
  ## Limitations connues
129
129
 
130
- - **La version v1.1.1 est une bêta.** Le mode numérique a été testé par rapport aux diagnostics de simulation, et le test en lot CANONIQUE × 100 a donné 62 / 100 déclenchements de mandat (par rapport aux 67 prévus), avec une répartition des gagnants de 51 / 33 / 16, exactement comme prévu. Il **n'a pas** été testé en profondeur de bout en bout par un joueur humain ; l'adaptation comportementale (la manière dont les joueurs se comportent une fois qu'ils connaissent le système de mandat) n'a pas été mesurée. Considérez-le comme une version optionnelle jusqu'à ce que vous l'ayez vous-même testée.
131
- - **Les profils d'IA ne sont pas encore en compétition pour le mandat.** Ils utilisent les mêmes fonctions de décision de la version v0.18, ce qui signifie qu'ils jouent pour accumuler des points d'influence sur toute la partie, et non pour atteindre rapidement le seuil de 15 points d'influence. Une version future ajustera les décisions des profils en fonction de la prise de conscience du mandat. Les joueurs humains peuvent se comporter différemment.
132
- - **La faillite est une pression indirecte à 12 tours.** Environ 7 / 100 d'événements dans CANONIQUE × 100 avec mandat (par rapport à environ 18 / 100 sans mandat, car les parties se terminent plus tôt). Il est intéressant de l'observer lors des tests.
133
- - **Le Trésor / Finances reste intentionnellement le profil le plus puissant**, dans la plage cible. Cela correspond à la thèse historique : le crédit public et les finances fédérales étaient les principaux leviers économiques de Hamilton.
134
- - **Les événements de défaillance (Défaut / Rébellion) restent principalement décoratifs.** La Crise du crédit se déclenche environ 2 / 100 fois à 12 tours. Le système d'escalade a plus de temps pour s'accumuler, mais atteint rarement un état de défaut ou de rébellion. Les versions futures pourraient revoir la pression exercée en cas de défaillance.
130
+ - **La version v1.1.2 est une bêta.** Les chiffres proviennent du diagnostic effectué lors de la simulation par lots intégrée (100 % des parties déclenchent la fin par circuit, durée moyenne de 23 tours, répartition des gagnants 56 % / 19 % / 25 %). Elle n'a **pas** été testée de bout en bout par un joueur humain. Considérez-la comme une version à tester sur demande jusqu'à ce que vous l'ayez vous-même testée.
131
+ - **Les profils d'IA ne se font pas encore la course pour les circuits.** Ils utilisent les fonctions de décision de la version v0.18, qui visent à accumuler de l'influence plutôt qu'à faire la course vers le quatrième circuit. Les joueurs humains peuvent se comporter très différemment une fois qu'ils comprennent la condition de fin.
132
+ - **Déclencheur gagnant.** Le joueur qui effectue le quatrième circuit ne gagne que par influence dans environ un tiers des parties. C'est intentionnel : le décompte final récompense la profondeur économique, et non la vitesse autour du plateau. La copie de fin de partie rend cette distinction explicite.
133
+ - **La partie tardive de la République est longue et ne comporte aucun acte.** Les actes sont toujours actifs pendant les tours 1 à 7. La durée moyenne d'une partie est d'environ 23 tours, ce qui laisse environ 16 tours de la partie tardive de la République sans nouveaux événements politiques. Si cela vous semble vide en mode "jeu froid", la prochaine correction consistera à redistribuer les actes, et non à revenir à un système de mandat.
134
+ - **Le Trésor / Finances reste intentionnellement le plus puissant**, dans la plage cible. Cela correspond à la thèse historique : le crédit public et les finances fédérales étaient les principaux leviers économiques de Hamilton.
135
+ - **Les événements de défaillance (Défaut / Rébellion) restent principalement décoratifs.** La Crise du crédit se déclenche occasionnellement ; le Défaut et la Rébellion se déclarent presque jamais. Le système d'escalade a plus de temps pour s'accumuler, mais atteint rarement les niveaux supérieurs. Les versions futures pourraient revoir la pression des états de défaillance.
135
136
 
136
137
  ---
137
138
 
package/README.hi.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **स्थिति — v1.1.1 (बीटा)।** v1.1.0 को उसी दिन वापस ले लिया गया जिस दिन इसे जारी किया गया था (2026-05-20), क्योंकि एक मानव परीक्षण सत्र में दो संरचनात्मक खेल संबंधी त्रुटियां सामने आईं जिन्हें सिमुलेशन ऑडिट नहीं पकड़ सका। v1.1.1 एक पुनर्निर्मित संस्करण है: मानव-उपयोगिता में सुधार + 12 राउंड की अवधि + अनिवार्य जीत मॉडल + किराए की सुविधा। यह **वैकल्पिक बीटा** है: डिजिटल संस्करण इसलिए जारी किया गया है क्योंकि यह v1.1.0 से बेहतर है, लेकिन इसका पूरी तरह से परीक्षण नहीं किया गया है। मुद्रित बोर्ड गेम v0.2 पर स्थिर है। पूर्ण विवरण और बीटा संबंधी सीमाओं के लिए `CHANGELOG.md` देखें।
22
+ **स्थिति — v1.1.2 (बीटा)।** v1.1.0 को उसी दिन वापस ले लिया गया जिस दिन इसे जारी किया गया था (2026-05-20) v1.1.1 ने डिजिटल मोड को फिर से बनाया, जिसमें खेलने की समस्याओं को ठीक किया गया, 12 राउंड की गति, और एक अनिवार्य जीत की सीमा जोड़ी गई, लेकिन फिर भी यह बहुत कम समय का लगा। v1.1.2 में, राउंड की सीमा को समाप्त करने की शर्त को बदलकर "सर्किट-आधारित" समाप्ति शर्त कर दिया गया है: खेल तब समाप्त होता है जब कोई एक खिलाड़ी अपनी गुट को गणराज्य के चारों ओर चार बार ले जाता है। औसत खेल की अवधि लगभग 23 राउंड / 67 चालें (v1.1.1 से 1.9 गुना अधिक)। वह खिलाड़ी जो खेल को समाप्त करता है, वह स्वचालित रूप से नहीं जीतता है—अंतिम गणना में सबसे अधिक प्रभाव (इन्फ्लुएंस) वाला खिलाड़ी जीतता है। मुद्रित बोर्ड गेम v0.2 पर स्थिर है। पूर्ण परिवर्तनों और बीटा संबंधी सीमाओं के लिए `CHANGELOG.md` देखें।
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  "सोवरिन" एक **हैमिल्टन-सिस्टम मोनोपोली-शैली का बोर्ड गेम** है जो अमेरिकी सार्वजनिक ऋण की स्थापना के बारे में है, साथ ही एक **पूर्ण एकल/डिजिटल संस्करण** भी है जो समान नियमों को दो पूर्वनिर्धारित स्क्रिप्टेड विरोधियों के खिलाफ ब्राउज़र में स्थानीय रूप से चलाता है।
29
29
 
30
- - **बोर्ड गेम** — मुद्रित करने योग्य 34 पृष्ठों का संस्करण। 40 स्थानों वाला बोर्ड, 22 संपत्ति + 4 मार्ग + 2 संस्थान, 8 रंग प्रणाली, 7 अमेरिकी कांग्रेस के अधिनियम जो एक निश्चित ऐतिहासिक क्रम में हैं, 4 खिलाड़ी भूमिकाएं, 3 साझा ट्रैक (सार्वजनिक ऋण · सार्वजनिक प्रतिरोध · औद्योगिक क्षमता), 12+12 घटना कार्ड। खजाने मंत्रालय के अलावा दो व्यवहार्य आर्थिक रास्ते हैं: व्यापारी और निर्माता। v0.2 का संतुलन, जो अपरिवर्तित है।
31
- - **डिजिटल मोड** — एक एकल, आत्मनिर्भर HTML फ़ाइल। 12 राउंड का गेम जिसमें अनिवार्य जीत मॉडल है: 8वें राउंड से, 15 प्रभाव और 5 अंकों की बढ़त वाला खिलाड़ी "अंतिम लेखा" को सक्रिय करता है और गेम समाप्त हो जाता है। यदि कोई अनिवार्य जीत नहीं है, तो गेम 12वें राउंड में समाप्त हो जाता है। इसमें mulberry32 RNG (यादृच्छिक संख्या जनरेटर), स्क्रिप्टेड AI (कृत्रिम बुद्धिमत्ता) विरोधी (खजाने मंत्रालय / वित्त, व्यापारी / बुनियादी ढांचा, निर्माता / उद्योग), हैश अखंडता के साथ सहेजें / लोड करें, रीप्ले क्लीनर, और डिजाइनर-नियंत्रित बैच सिमुलेशन टूल शामिल हैं।
32
- - **संतुलन आधार** — 12 राउंड का अनिवार्य मॉडल (v1.1.1 बीटा): खजाने मंत्रालय 51% · व्यापारी 33% · निर्माता 16% (मानक × 100)। तीनों प्रोफाइल अनिवार्य जीत प्राप्त कर सकते हैं; कोई भी प्रोफाइल प्रतिबंधित नहीं है। v0.18 की अंतर्निहित कार्यप्रणाली (क्रेडिट संकट, नकद IP स्कोरिंग, औद्योगिक चार्टर, सेट पूर्णता बोनस) को 1,000 से अधिक नियतात्मक सिमुलेशन गेम द्वारा संचालित v0.3 → v0.10 → v0.18 डिज़ाइन चक्र से बिल्कुल समान रखा गया है।
30
+ - **बोर्ड गेम** — मुद्रित करने योग्य 34 पृष्ठों का संस्करण। 40 स्थानों वाला बोर्ड, 22 संपत्ति, 4 मार्ग और 2 संस्थान, 8 रंग प्रणाली, 7 कांग्रेस के अधिनियम (ऐक्ट्स) जो एक निश्चित ऐतिहासिक क्रम में हैं, 4 खिलाड़ी भूमिकाएं, 3 साझा ट्रैक (सार्वजनिक ऋण, सार्वजनिक प्रतिरोध, औद्योगिक क्षमता), 12+12 घटना कार्ड। खजाने (ट्रेजरी) के अलावा दो व्यवहार्य आर्थिक रास्ते हैं: व्यापारी और निर्माता। v0.2 का संतुलन, जो अपरिवर्तित है।
31
+ - **डिजिटल मोड** — एक एकल, आत्मनिर्भर HTML फ़ाइल। सर्किट-आधारित समाप्ति शर्त: खेल तब समाप्त होता है जब कोई एक खिलाड़ी "ट्रेजरी ओपन" को चौथी बार पार करता है। औसत खेल की अवधि लगभग 23 राउंड (67 चालें)। अंतिम गणना में, सबसे अधिक प्रभाव (इन्फ्लुएंस) वाला खिलाड़ी जीतता है, *ज़रूरी नहीं कि वह जो पहले बोर्ड के चारों ओर घूमता है*। सुरक्षा के लिए अधिकतम राउंड 30 पर ही सीमित है (यह कभी भी "मानक" स्थिति में सक्रिय नहीं होता) एक नियतात्मक mulberry32 रैंडम नंबर जनरेटर (RNG), स्क्रिप्टेड AI विरोधी (खजाना/वित्त, व्यापारी/बुनियादी ढांचा, निर्माता/उद्योग), हैश अखंडता के साथ सहेजें/लोड करें, रीप्ले स्क्रबर, डिजाइनर-नियंत्रित बैच सिमुलेशन टूल।
32
+ - **संतुलन आधार** — सर्किट मॉडल (v1.1.2 बीटा): खजाना 56%, व्यापारी 19%, निर्माता 25% (मानक × 100)। तीनों प्रोफाइल महत्वपूर्ण रूप से जीत सकते हैं; लंबे खेलों में निर्माता का प्रभाव बढ़ता है क्योंकि औद्योगिक सेटों को विकसित होने का समय मिलता है; मार्गों का प्रभुत्व कम होने के कारण व्यापारी का हिस्सा घटता है, क्योंकि लंबे समय तक उन्नयन पर नकदी खर्च होती है। v0.18 की अंतर्निहित यांत्रिकी (क्रेडिट संकट, नकदी IP स्कोरिंग, औद्योगिक चार्टर, सेट पूर्णता बोनस) को v0.3 → v0.10 → v0.18 डिज़ाइन चक्र से बिल्कुल समान रखा गया है, जो 1,000 से अधिक नियतात्मक सिमुलेशन खेलों द्वारा संचालित है।
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ npx @mcptoolshop/sovereign --help # All flags
127
127
 
128
128
  ## ज्ञात सीमाएं
129
129
 
130
- - **v1.1.1 एक बीटा संस्करण है।** डिजिटल मोड का सिमुलेशन निदान के विरुद्ध ऑडिट किया गया है, और इन-HTML मानक × 100 बैच में 62/100 अनिवार्य जीत ट्रिगर (अनुमानित 67 के मुकाबले), और 51/33/16 का विजेता विभाजन बिल्कुल अनुमानित के अनुसार है। इसका पूरी तरह से किसी नए मानव खिलाड़ी द्वारा परीक्षण नहीं किया गया है; व्यवहारिक अनुकूलन (यह कि खिलाड़ी अनिवार्य जीत के बारे में जानने के बाद वास्तव में कैसे व्यवहार करते हैं) को मापा नहीं गया है। इसे तब तक वैकल्पिक के रूप में मानें जब तक कि आप स्वयं इसका परीक्षण कर लें।
131
- - **AI प्रोफाइल अभी तक अनिवार्य जीत के लिए प्रतिस्पर्धा नहीं करते हैं।** वे v0.18 के समान निर्णय फ़ंक्शन का उपयोग करते हैं, जिसका अर्थ है कि वे पूरे गेम में प्रभाव जमा करने के लिए खेलते हैं, कि जल्दी से 15-IP सीमा तक पहुंचने के लिए। भविष्य के संस्करण में प्रोफाइल निर्णयों को अनिवार्य जागरूकता के लिए समायोजित किया जाएगा। वास्तविक मानव खिलाड़ी अलग तरह से व्यवहार कर सकते हैं।
132
- - **दिवालियापन 12 राउंड में एक महत्वपूर्ण दबाव है।** मानक × 100 में लगभग 7/100 घटनाएं अनिवार्य जीत के साथ होती हैं (बिना अनिवार्य जीत के लगभग 18/100 की तुलना में, क्योंकि गेम जल्दी समाप्त हो जाते हैं)। इसे मानव परीक्षण में देखना सार्थक है।
133
- - **खजाने मंत्रालय / वित्त जानबूझकर सबसे मजबूत है**, लक्षित सीमा के भीतर। यह ऐतिहासिक सिद्धांत से मेल खाता है: सार्वजनिक ऋण + संघीय वित्त, हैमिल्टन के लिए एक प्रमुख आर्थिक उपकरण थे।
134
- - **विफलता घटनाएं (डिफ़ॉल्ट / विद्रोह) ज्यादातर सजावटी हैं।** क्रेडिट संकट 12 राउंड में लगभग 2/100 बार होता है। एस्केलेशन सिस्टम में अधिक समय है, लेकिन फिर भी यह शायद ही कभी डिफ़ॉल्ट या विद्रोह तक पहुंचता है। भविष्य के संस्करण में विफलता स्थिति के दबाव पर पुनर्विचार किया जा सकता है।
130
+ - **v1.1.2 एक बीटा संस्करण है।** निदान से प्राप्त आंकड़े (100/100 गेम में सर्किट समाप्ति, औसत 23 राउंड, 56/19/25 का विजेता विभाजन) इंगित करते हैं। इसे अभी तक किसी नए मानव खिलाड़ी द्वारा शुरू से अंत तक नहीं खेला गया है। इसे तब तक "ऑप्ट-इन" के रूप में मानें जब तक कि आप स्वयं इसे नहीं खेल लेते।
131
+ - **AI प्रोफाइल अभी तक सर्किट के लिए प्रतिस्पर्धा नहीं करते हैं।** वे v0.18 के निर्णय कार्यों का उपयोग करते हैं—प्रभाव (इन्फ्लुएंस) जमा करने के लिए, सर्किट की दौड़ में भाग लेने के लिए नहीं। वास्तविक मानव खिलाड़ी समाप्ति शर्त को समझने के बाद बहुत अलग व्यवहार कर सकते हैं।
132
+ - **ट्रिगर विजेता।** वह खिलाड़ी जो चौथे सर्किट को पूरा करता है, केवल लगभग एक-तिहाई खेलों में प्रभाव (इन्फ्लुएंस) के आधार पर जीतता है। यह जानबूझकर किया गया है—अंतिम गणना बोर्ड के चारों ओर की गति के बजाय, आर्थिक गहराई को पुरस्कृत करती है। अंतिम गेम में, यह अंतर स्पष्ट किया गया है।
133
+ - **गणराज्य के अंतिम चरण लंबा है और इसमें कोई अधिनियम (ऐक्ट्स) नहीं है।** अधिनियम अभी भी राउंड 1-7 में सक्रिय होते हैं। औसत खेल लगभग 23 राउंड का होता है, जिससे गणराज्य के अंतिम चरण में लगभग 16 राउंड बिना किसी नए राजनीतिक झटके के होते हैं। यदि यह खाली लगता है, तो अगला सुधार अधिनियमों का पुनर्वितरण होगा, कि अनिवार्य जीत प्रणाली पर वापस जाना।
134
+ - **खजाना/वित्त (ट्रेजरी/फाइनेंस) अभी भी जानबूझकर सबसे मजबूत है**, लक्षित सीमा के भीतर। यह ऐतिहासिक सिद्धांत से मेल खाता है: सार्वजनिक ऋण और संघीय वित्त, हैमिल्टन के लिए सबसे महत्वपूर्ण आर्थिक उपकरण थे।
135
+ - **विफलता की घटनाएं (डिफ़ॉल्ट/बगावत) ज्यादातर सजावटी हैं।** क्रेडिट संकट कभी-कभी सक्रिय होता है; डिफ़ॉल्ट और बगावत लगभग कभी नहीं होते। वृद्धि प्रणाली में अधिक समय है, लेकिन फिर भी यह शायद ही कभी शीर्ष स्तर तक पहुंचती है। भविष्य के संस्करणों में विफलता की स्थिति पर दबाव को फिर से देखा जा सकता है।
135
136
 
136
137
  ---
137
138
 
package/README.it.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **Stato — v1.1.1 (beta).** La versione v1.1.0 è stata ritirata lo stesso giorno del suo rilascio (2026-05-20) dopo che una sessione di gioco con utenti reali ha evidenziato due problemi strutturali che i test di simulazione non erano riusciti a rilevare. La versione v1.1.1 è una revisione: miglioramenti per la giocabilità con utenti reali, ritmo di 12 turni, modello di vittoria basato sui mandati e introduzione del concetto di "affitto". Si tratta di una **beta a cui ci si può iscrivere**: la versione digitale è stata rilasciata perché è significativamente migliore della v1.1.0, ma non è stata testata completamente da un utente umano. La versione fisica del gioco da tavolo rimane stabile alla versione v0.2. Consultare il file `CHANGELOG.md` per i dettagli delle modifiche e le limitazioni della beta.
22
+ **Stato — v1.1.2 (beta).** La versione v1.1.0 è stata ritirata lo stesso giorno in cui è stata rilasciata (2026-05-20). La versione v1.1.1 ha ricostruito la modalità digitale con correzioni per migliorare la giocabilità, un ritmo di 12 turni e una soglia di vittoria obbligatoria, ma risultava comunque troppo breve. La versione v1.1.2 sostituisce la condizione di fine basata sul numero di turni con una condizione di fine basata su un "circuito": il gioco termina quando un giocatore ha fatto percorrere alla sua fazione l'intero territorio della Repubblica per quattro volte. La durata media di una partita è di circa 23 turni / 67 mosse (1,9 volte la v1.1.1). Il giocatore che fa scattare la fine non vince automaticamente; vince chi ha la maggiore influenza al conteggio finale. La versione stampabile del gioco da tavolo rimane stabile alla versione v0.2. Consultare il file `CHANGELOG.md` per i dettagli completi delle modifiche e le avvertenze relative alla versione beta.
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  Sovereign è un **gioco da tavolo "Hamilton System" ispirato a Monopoly**, incentrato sulla nascita del credito pubblico statunitense, e include un **adattamento completo per giocatore singolo / digitale** che esegue le stesse regole localmente in un browser, contro due avversari simulati e deterministici.
29
29
 
30
- - **Gioco da tavolo** — edizione stampabile in 34 fogli. Tabellone con 40 caselle, 22 proprietà + 4 percorsi + 2 istituzioni, 8 sistemi di colori, 7 atti del Congresso in ordine storico fisso, 4 ruoli per i giocatori, 3 tracciati condivisi (Credito Pubblico · Resistenza Pubblica · Capacità Industriale), 12+12 carte evento. Due percorsi economici possibili oltre al Tesoro: Mercante e Produttore. Bilanciamento della versione v0.2, bloccato.
31
- - **Modalità digitale** — singolo file HTML autonomo. Partita di 12 turni con modello di vittoria basato sui mandati: a partire dall'ottavo turno, un giocatore con 15 Punti Influenza e un vantaggio di 5 punti attiva il "Calcolo Finale" e termina la partita. In assenza di un mandato, la partita termina al turno 12. Generatore di numeri casuali deterministico mulberry32, avversari controllati (IA) (Tesoro / Finanza, Mercante / Infrastrutture, Produttore / Industria), salvataggio / caricamento con verifica dell'integrità, strumento di analisi delle partite, strumento di simulazione batch accessibile solo agli sviluppatori.
32
- - **Bilanciamento di base** — modello di 12 turni con mandato (v1.1.1 beta): Tesoro 51% · Mercante 33% · Produttore 16% (VALORE DI RIFERIMENTO × 100). Tutti e tre i profili possono ottenere il mandato; nessun profilo è escluso. Le meccaniche di base della versione v0.18 (Crisi del Credito, sistema di punteggio basato sulla proprietà intellettuale, Carta Industriale, bonus per il completamento di set) sono state mantenute identiche dal ciclo di sviluppo v0.3 → v0.10 → v0.18, basato su oltre 1000 simulazioni deterministiche.
30
+ - **Gioco da tavolo** — edizione stampabile composta da 34 fogli. Tabellone con 40 caselle, 22 proprietà + 4 percorsi + 2 istituzioni, 8 sistemi di colori, 7 atti del Congresso in ordine storico fisso, 4 ruoli per giocatore, 3 tracciati condivisi (Credito Pubblico · Resistenza Pubblica · Capacità Industriale), 12+12 carte evento. Due percorsi economici validi oltre al Tesoro: Mercante e Produttore. Bilanciamento della versione v0.2, bloccato.
31
+ - **Modalità digitale** — singolo file HTML autonomo. Condizione di fine basata su circuito: il gioco termina quando un giocatore completa il suo quarto passaggio attraverso il Tesoro. La durata media di una partita è di circa 23 turni (67 mosse). Al conteggio finale, vince il giocatore con la maggiore influenza, *non necessariamente quello che ha percorso il tabellone per primo*. Il limite massimo di turni rimane fissato a 30 per sicurezza (non viene mai raggiunto nella modalità CANONICAL × 100). Generatore di numeri casuali deterministico mulberry32, avversari controllati dall'IA (Tesoro / Finanza, Mercante / Infrastrutture, Produttore / Industria), salvataggio / caricamento con verifica dell'integrità, strumento di simulazione batch per il designer.
32
+ - **Bilanciamento di base** — modello a circuito (v1.1.2 beta): Tesoro 56 % · Mercante 19 % · Produttore 25 % (CANONICAL × 100). Tutti e tre i profili hanno buone possibilità di vittoria; il Produttore aumenta di importanza nelle partite più lunghe, poiché i set industriali hanno il tempo di svilupparsi; la quota del Mercante diminuisce poiché i percorsi sono meno dominanti quando si spendono soldi per miglioramenti in un arco di tempo più lungo. Le meccaniche di base della versione v0.18 (Crisi del Credito, punteggio dei crediti, Carta Industriale, bonus per il completamento dei set) sono state preservate byte-per-byte dalla sequenza di sviluppo v0.3 → v0.10 → v0.18, basata su oltre 1000 simulazioni deterministiche.
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ Il quarto profilo concettuale (Opportunista / Cash) è stato posticipato. Il set
127
127
 
128
128
  ## Avvertenze note
129
129
 
130
- - **La versione v1.1.1 è una beta.** La modalità digitale è stata testata tramite diagnostica di simulazione, e il test batch "VALORE DI RIFERIMENTO × 100" ha restituito 62/100 attivazioni del mandato (rispetto alle 67 previste), con una distribuzione dei vincitori di 51/33/16, esattamente come previsto. **Non** è stata testata completamente da un utente umano; l'adattamento comportamentale (come i giocatori si comportano effettivamente una volta che conoscono il sistema dei mandati) non è stato misurato. Consideratela una beta a cui ci si può iscrivere finché non l'avete provata di persona.
131
- - **I profili dell'IA non competono ancora per il mandato.** Utilizzano le stesse funzioni decisionali della versione v0.18, il che significa che mirano ad accumulare Punti Influenza durante l'intera partita, piuttosto che raggiungere rapidamente la soglia di 15 Punti Influenza. Una versione futura modificherà le decisioni dei profili per tenere conto della consapevolezza del mandato. I giocatori umani potrebbero comportarsi in modo diverso.
132
- - **Il fallimento è una pressione dinamica a 12 turni.** Circa 7 eventi su 100 nel test "VALORE DI RIFERIMENTO × 100" con mandato (rispetto a circa 18 su 100 senza mandato, perché le partite terminano prima). Vale la pena osservarlo durante il gioco.
130
+ - **La versione v1.1.2 è una beta.** I dati provengono da una simulazione batch eseguita all'interno del file HTML (100 / 100 partite terminano con il circuito, durata media di 23 turni, distribuzione dei vincitori 56 / 19 / 25). **Non** è stata testata completamente da un giocatore umano. Consideratela una versione "opt-in" fino a quando non l'avrete provata voi stessi.
131
+ - **I profili dell'IA non competono ancora per i circuiti.** Utilizzano le funzioni decisionali della versione v0.18, che mirano ad accumulare influenza piuttosto che a correre verso il quarto circuito. I giocatori umani reali potrebbero comportarsi in modo molto diverso una volta compresa la condizione di fine partita.
132
+ - **Attivare il circuito non significa vincere.** Il giocatore che completa il quarto circuito vince solo per influenza in circa un terzo dei casi. Questo è intenzionale: il conteggio finale premia la profondità economica, non la velocità nel percorrere il tabellone. La schermata finale chiarisce questa distinzione.
133
+ - **La parte finale della Repubblica è lunga e senza atti.** Gli atti continuano a essere attivati nei turni 1-7. La durata media di una partita è di circa 23 turni, lasciando circa 16 turni nella parte finale della Repubblica senza nuovi eventi politici. Se questo vi sembra vuoto durante il gioco, la prossima modifica sarà una redistribuzione degli atti, non un ritorno al sistema di obiettivi.
133
134
  - **Il Tesoro / Finanza rimane intenzionalmente il più forte**, all'interno della fascia prevista. Questo riflette la tesi storica: il credito pubblico e la finanza federale erano i principali strumenti economici di Hamilton.
134
- - **Gli eventi di fallimento (Default / Ribellione) rimangono principalmente decorativi.** La Crisi del Credito si verifica in circa 2 eventi su 100 a 12 turni. Il sistema di escalation ha più tempo per svilupparsi, ma raramente porta al Default o alla Ribellione. Versioni future potrebbero rivedere la pressione legata agli stati di fallimento.
135
+ - **Gli eventi di fallimento (Default / Ribellione) rimangono principalmente decorativi.** La Crisi del Credito si verifica occasionalmente; il Default e la Ribellione quasi mai. Il sistema di escalation ha più tempo per svilupparsi, ma raramente raggiunge i livelli più alti. Le versioni future potrebbero rivedere la pressione sugli stati di fallimento.
135
136
 
136
137
  ---
137
138
 
package/README.ja.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **Status — v1.1.1 (ベータ版)。** v1.1.0は、リリースされた当日(2026年5月20日)に、シミュレーションの検証では検出できなかった、構造的なゲームプレイ上の問題が、実際のプレイによって明らかになったため、配布が中止されました。v1.1.1は、以下の改善が施されたバージョンです:人間によるプレイに適した調整、12ラウンドのゲーム進行、勝利条件の明確化、および賃金に関する要素の追加。**これはオプトインのベータ版**です。デジタル版は、v1.1.0よりも大幅に改善されているためリリースされていますが、完全なエンドツーエンドでのテストは行われていません。印刷版のボードゲームは、v0.2で安定しています。詳細については、`CHANGELOG.md` をご確認ください。
22
+ **ステータス — v1.1.2 (ベータ版)。** v1.1.0は、リリースされた当日(2026年5月20日)に配布が中止されました。v1.1.1では、ゲームプレイの改善、12ラウンドのゲーム進行、勝利条件の変更が行われましたが、それでも短すぎると感じられました。v1.1.2では、ラウンド数の上限を設ける代わりに、**回路ベース**の終了条件に変更されました。ゲームは、あるプレイヤーが自勢力を共和国内を4回周回したときに終了します。平均ゲームラウンド数は約23ラウンド/67ターン(v1.1.1の約1.9倍)。ゲーム終了を引き起こしたプレイヤーが自動的に勝利するわけではなく、最終的な集計で最も高い影響力を持つプレイヤーが勝利します。印刷版のボードゲームは、v0.2で安定しています。詳細な変更点とベータ版に関する注意点は、`CHANGELOG.md`ファイルを参照してください。
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  Sovereignは、**アメリカの公的信用に関するハミルトン・システムを基にしたボードゲーム**であり、さらに、**完全なソロ/デジタル版**も付属しています。このデジタル版は、同じルールに基づいて、ブラウザ上で2つの決定的なAI対戦相手とローカルで動作します。
29
29
 
30
- - **ボードゲーム** — 34枚のシートで印刷可能な版。40マス、22の物件、4つのルート、2つの機関、8つのカラーシステム、歴史的な順番で配置された7つの議会法、4つのプレイヤー役割、3つの共通トラック(公共信用、公共抵抗、工業能力)、12枚以上のイベントカード。国庫以外の2つの経済的戦略:商人、製造業者。v0.2のバランス調整が施されており、変更はありません。
31
- - **デジタル版** — 単一の自己完結型のHTMLファイル。12ラウンドのゲームで、勝利条件の明確化が施されています。8ラウンド以降、影響力15ポイントで、他のプレイヤーよりも5ポイント以上リードしているプレイヤーが「最終会計」を発動し、ゲームが終了します。勝利条件が満たされない場合、ゲームは12ラウンドで終了します。決定論的な mulberry32 ランダムナンバージェネレーター、スクリプトによるAI対戦相手(国庫/金融、商人/インフラ、製造業者/産業)、ハッシュ整合性によるセーブ/ロード機能、リプレイ機能、デザイナーが利用できるバッチシミュレーションツール。
32
- - **バランスの基準** — 12ラウンドの勝利条件モデル(v1.1.1ベータ版):国庫 51%、商人 33%、製造業者 16%(標準 × 100)。3つの戦略すべてで勝利が可能です。どの戦略も不利になることはありません。v0.18の基本的なメカニズム(信用危機、キャッシュIPスコアリング、工業特許、セット完了ボーナス)は、1,000以上の決定論的なシミュレーションゲームによって導かれたv0.3 → v0.10 → v0.18のデザインアーキテクチャから、完全に同一の状態で引き継がれています。
30
+ - **ボードゲーム** — 印刷可能な34ページの版。40マス、22の物件、4つのルート、2つの機関、8つのカラーシステム、7つの議会法(歴史的な順序で固定)、4つのプレイヤー役割、3つの共通トラック(公的信用、公的抵抗、工業生産力)、12+12枚のイベントカード。財務省以外にも、商人道と製造業者道という2つの有効な経済的戦略が存在します。v0.2のバランス調整は完了しており、変更はありません。
31
+ - **デジタルモード** — 単一の自己完結型のHTMLファイル。回路ベースの終了条件:あるプレイヤーが財務省のオープンを4回完了したときにゲームが終了します。平均ゲームラウンド数は約23ラウンド(67ターン)。最終的な集計で、最も高い影響力を持つプレイヤーが勝利します。*必ずしも最初にボードを一周したプレイヤーが勝利するわけではありません*。安全のために、ラウンド数の上限は30のままです(通常のプレイではこの上限に達することはありません)。決定論的な mulberry32 ランダムナンバージェネレーター、スクリプトによるAI対戦相手(財務省/金融、商人/インフラ、製造業者/産業)、ハッシュ整合性によるセーブ/ロード機能、リプレイの削除機能、開発者限定のバッチシミュレーションツール。
32
+ - **バランスの基準** — 回路モデル(v1.1.2ベータ版):財務省 56%、商人 19%、製造業者 25%(標準値 × 100)。3つの戦略すべてが意味のある勝利を得られるように設計されています。製造業者は、ゲームが長くなるほど、工業セットが成熟するにつれて、その割合が上昇します。ルートが優位な場合、商人の割合は低下します。v0.18の基本的なメカニズム(信用危機、キャッシュIPスコアリング、工業特許、セット完了ボーナス)は、1,000以上の決定論的なシミュレーションゲームによって駆動されたv0.3 → v0.10 → v0.18のデザインアーキテクチャから、バイト単位で完全に引き継がれています。
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ Sovereignは、スタンドアロンで動作するブラウザベースのボ
127
127
 
128
128
  ## 既知の制限事項
129
129
 
130
- - **v1.1.1はベータ版です。** デジタル版は、シミュレーション診断と、HTML内に組み込まれた標準 × 100のバッチテストで、62/100の勝利条件がトリガーされました(予測は67/100)。勝者の割合は、51/33/16で、予測通りです。**しかし、熟練したプレイヤーによる完全なプレイテストは行われていません。** プレイヤーの行動の変化(勝利条件を知ったプレイヤーがどのように行動するか)は測定されていません。ご自身でプレイして確認するまで、ベータ版として扱ってください。
131
- - **AIの戦略は、まだ勝利条件を意識していません。** 同じv0.18の意思決定関数を使用しており、ゲーム全体を通して影響力を獲得することを目指しており、勝利条件を満たすためのポイントを迅速に獲得することを目指していません。今後のバージョンでは、AIの戦略が勝利条件を意識するように調整される予定です。実際のプレイヤーは、異なる行動をとる可能性があります。
132
- - **破産は、12ラウンドにおける緩やかなプレッシャー要因です。** 標準 × 100のバッチテストでは、勝利条件が設定された場合、約7/100のゲームで破産が発生します(勝利条件がない場合は、約18/100)。プレイテストで観察する価値があります。
133
- - **国庫/金融は、意図的に最も強力な戦略**であり、目標範囲内にあります。これは、歴史的な背景に基づいています。公共信用と連邦金融は、ハミルトンの主要な経済的手段でした。
134
- - **失敗イベント(デフォルト/反乱)は、主に装飾的な要素**です。信用危機は、12ラウンドで約2/100の確率で発生します。エスカレーションシステムは、より多くの時間で影響を及ぼしますが、それでもデフォルトや反乱に発展することは稀です。今後のバージョンでは、失敗状態のプレッシャーについて再検討する可能性があります。
130
+ - **v1.1.2はベータ版です。** 診断テストの結果(HTML内蔵のバッチシミュレーション、100ゲーム中100ゲームで回路終了、平均23ラウンド、勝者構成:財務省 56%、商人 19%、製造業者 25%)。まだ、熟練したプレイヤーによる完全なプレイテストは行われていません。ご自身の責任で試していただくものとして、まずは実際にプレイしていただくことをお勧めします。
131
+ - **AIはまだ回路を巡回するための競争をしていません。** v0.18の意思決定関数を使用しており、影響力を獲得することに重点を置いています。実際のプレイヤーは、終了条件を理解すると、全く異なる行動をとる可能性があります。
132
+ - **終了条件を満たしても、必ずしも勝利するわけではありません。** 4回目の回路を完了したプレイヤーが勝利するのは、ゲームの約3分の1の場合のみです。これは意図的なものであり、最終的な集計では、ボードを速く一周するだけでなく、経済的な深さが評価されます。エンドゲームの説明では、この点が明確に示されています。
133
+ - **共和国内の後半部分は、新しい議会法がないため、長く感じられるかもしれません。** 議会法は、1〜7ラウンドで発動されます。平均的なプレイ時間は約23ラウンドで、共和国内の後半約16ラウンドは、新しい政治的な変化がありません。もし、この部分が単調に感じられる場合は、次回のアップデートで議会法の再配置を検討しますが、現在のシステムに戻すことはありません。
134
+ - **財務省/金融は、意図的に最も強力なものとして設計されています。** これは、目標範囲内に収まるように調整されています。これは、歴史的な背景に基づいています。公的信用と連邦金融は、ハミルトンの経済政策における主要な要素でした。
135
+ - **失敗イベント(デフォルト/反乱)は、主に装飾的なものです。** 信用危機は時々発生しますが、デフォルトと反乱はほとんど発生しません。エスカレーションシステムは、より多くの時間で影響を及ぼしますが、それでもほとんどの場合、上位の段階には到達しません。今後のバージョンでは、失敗状態の発生頻度について再検討する可能性があります。
135
136
 
136
137
  ---
137
138
 
package/README.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- > **Status — v1.1.1 (beta).** v1.1.0 was withdrawn the same day it shipped (2026-05-20) after a cold human play session surfaced two structural playability failures the simulation audits could not catch. v1.1.1 is the rebuild: human-playability rebuild + 12-round pacing + mandate victory model + rent surfacing. It is **opt-in beta**: the digital mode here is shipped because it is meaningfully better than v1.1.0, but it has not been cold-walked end-to-end. The printable board game remains stable at v0.2. See `CHANGELOG.md` for the full delta and beta caveats.
22
+ > **Status — v1.1.2 (beta).** v1.1.0 was withdrawn the same day it shipped (2026-05-20). v1.1.1 rebuilt the digital mode with playability fixes + 12-round pacing + a mandate victory threshold but still felt too short. v1.1.2 swaps the round-cap end condition for a **circuit-based** end condition: the game ends when one player has carried their faction around the Republic four times. Median game length ~23 rounds / 67 turns (1.9× v1.1.1). The player who triggers the end doesn't automatically win — the highest Influence at Final Accounting does. The printable board game remains stable at v0.2. See `CHANGELOG.md` for the full delta and beta caveats.
23
23
 
24
24
  ---
25
25
 
@@ -28,8 +28,8 @@
28
28
  Sovereign is a **Hamilton-system Monopoly-grammar board game** about the founding of US public credit, plus a **solo / digital adaptation** that runs the same rules locally in a browser against two deterministic scripted opponents.
29
29
 
30
30
  - **Board game** — printable 34-sheet edition. 40-space board, 22 properties + 4 routes + 2 institutions, 8 color systems, 7 Acts of Congress in fixed historical order, 4 player roles, 3 shared tracks (Public Credit · Public Resistance · Industrial Capacity), 12+12 event cards. Two viable economic paths beyond Treasury: Merchant and Manufacturer. v0.2 balance, frozen.
31
- - **Digital mode** — single self-contained HTML file. 12-round game with mandate victory model: from round 8 onward, a player with 15 Influence and a 5-point lead triggers Final Accounting and ends the game. If no mandate, the game ends at the round-12 hard cap. Deterministic mulberry32 RNG, scripted AI opponents (Treasury / Finance, Merchant / Infrastructure, Manufacturer / Industry), save / load with hash integrity, replay scrubber, designer-gated batch simulation tool.
32
- - **Balance baseline** — 12-round mandate model (v1.1.1 beta): Treasury 51 % · Merchant 33 % · Manufacturer 16 % (CANONICAL × 100). All three profiles win mandates; no profile is locked out. The underlying v0.18 mechanics (Credit Crisis, cash IP scoring, Industrial Charter, set completion bonuses) are preserved byte-identical from the v0.3 → v0.10 → v0.18 design arc driven by 1,000+ deterministic simulation games.
31
+ - **Digital mode** — single self-contained HTML file. Circuit-based end condition: the game ends when one player completes their fourth crossing of Treasury Opens. Median game length ~23 rounds (67 turns). At Final Accounting the highest-Influence player wins, *not necessarily the one who got around the board first*. Hard cap stays at round 30 as safety (never fires in CANONICAL × 100). Deterministic mulberry32 RNG, scripted AI opponents (Treasury / Finance, Merchant / Infrastructure, Manufacturer / Industry), save / load with hash integrity, replay scrubber, designer-gated batch simulation tool.
32
+ - **Balance baseline** — circuit model (v1.1.2 beta): Treasury 56 % · Merchant 19 % · Manufacturer 25 % (CANONICAL × 100). All three profiles win meaningfully; Manufacturer rises in longer games as industrial sets have time to mature; Merchant share drops as routes are less dominant when cash gets spent on upgrades over a longer arc. The underlying v0.18 mechanics (Credit Crisis, cash IP scoring, Industrial Charter, set completion bonuses) are preserved byte-identical from the v0.3 → v0.10 → v0.18 design arc driven by 1,000+ deterministic simulation games.
33
33
 
34
34
  ---
35
35
 
@@ -101,7 +101,7 @@ See [`SECURITY.md`](./SECURITY.md) for vulnerability reporting and the full secu
101
101
 
102
102
  ## Features
103
103
 
104
- - **Solo 12-round game with mandate victory** vs. two scripted opponents (Treasury / Finance and Merchant / Infrastructure by default; Manufacturer / Industry available for batch play). Mandate triggers from end of round 8 if a player holds 15 Influence and a 5-point lead. Otherwise the game ends at the round-12 hard cap.
104
+ - **Solo circuit-victory game** vs. two scripted opponents (Treasury / Finance and Merchant / Infrastructure by default; Manufacturer / Industry available for batch play). The game ends when one player completes their fourth crossing of Treasury Opens. Median ~23 rounds / 67 turns. Highest Influence at Final Accounting wins.
105
105
  - **Deterministic AI** — every opponent decision is a pure function of visible state with a ledgered reason. No LLM, no opaque magic.
106
106
  - **8 game surfaces** — Board, Treasury Panel, Asset Inspector, Event Drawer, Acts of Congress, Shared Tracks, Turn Log / Ledger, Endgame Report.
107
107
  - **Auctions** — declined assets go to multi-player auction with profile-driven scripted bidding.
@@ -127,11 +127,12 @@ The fourth concept-doc profile (Opportunist / Cash) is deferred. The locked v0.1
127
127
 
128
128
  ## Known caveats
129
129
 
130
- - **v1.1.1 is a beta.** The digital mode has been audited against the simulation diagnostics and the in-HTML CANONICAL × 100 batch returned 62 / 100 mandate triggers (vs predicted 67), 51 / 33 / 16 winner split exactly as predicted. It has **not** been cold-walked end-to-end by a fresh human player; behavioral adaptation (how players actually behave once they know about the mandate) is unmeasured. Treat it as opt-in until you've walked it yourself.
131
- - **AI profiles do not yet race for the mandate.** They run the same v0.18 decision functions, which means they play to accumulate Influence over a full game, not to hit the 15-IP threshold quickly. A future version will tune profile decisions for mandate awareness. Real human players may behave differently.
132
- - **Bankruptcy is a soft pressure dynamic at 12 rounds.** ~7 / 100 events in CANONICAL × 100 with mandate (down from ~18 / 100 without mandate, because games end earlier). Worth observing in cold play.
133
- - **Treasury / Finance remains intentionally strongest**, within the target band. This matches the historical thesis: public credit + federal finance were Hamilton's dominant economic lever.
134
- - **Failure events (Default / Rebellion) remain mostly decorative.** Credit Crisis fires ~2 / 100 at 12 rounds. The escalation system has more time to compound but still rarely reaches Default or Rebellion. Future versions may revisit fail-state pressure.
130
+ - **v1.1.2 is a beta.** Numbers from the diagnostic held on the in-HTML batch sim (100 / 100 games trigger circuit-end, median 23 rounds, 56 / 19 / 25 winner split). It has **not** been cold-walked end-to-end by a fresh human player. Treat it as opt-in until you've walked it yourself.
131
+ - **AI profiles do not yet race for circuits.** They run v0.18 decision functions playing to accumulate Influence rather than racing to the fourth circuit. Real human players may behave very differently once they understand the end condition.
132
+ - **Trigger winner.** The player who completes the fourth circuit only wins by Influence in about a third of games. This is intentional Final Accounting rewards economic depth, not speed around the board. Endgame copy makes the distinction explicit.
133
+ - **Late Republic stretch is long with no Acts.** Acts still fire in rounds 1-7. Median play is ~23 rounds, leaving ~16 rounds of Late Republic with no new political shocks. If this feels empty in cold play, the next fix is an Acts redistribution pass, not a return to mandate.
134
+ - **Treasury / Finance remains intentionally strongest**, within the target band. Matches the historical thesis: public credit + federal finance were Hamilton's dominant economic lever.
135
+ - **Failure events (Default / Rebellion) remain mostly decorative.** Credit Crisis fires occasionally; Default and Rebellion almost never. The escalation system has more time to compound but still rarely reaches the top tiers. Future versions may revisit fail-state pressure.
135
136
 
136
137
  ---
137
138
 
package/README.pt-BR.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **Status — v1.1.1 (beta).** A versão v1.1.0 foi descontinuada no mesmo dia do lançamento (2026-05-20) após uma sessão de jogo com jogadores reais que revelou duas falhas estruturais na jogabilidade que as auditorias de simulação não conseguiram detectar. A v1.1.1 é uma nova versão: jogabilidade aprimorada com base em testes com jogadores reais + ritmo de 12 rodadas + modelo de vitória por mandato + introdução de elementos de aluguel. É uma **versão beta opcional**: o modo digital está disponível porque é significativamente melhor que a v1.1.0, mas não foi testado completamente do início ao fim. A versão física do jogo de tabuleiro permanece estável na versão v0.2. Consulte o arquivo `CHANGELOG.md` para obter detalhes completos sobre as alterações e as limitações da versão beta.
22
+ **Status — v1.1.2 (beta).** A versão v1.1.0 foi descontinuada no mesmo dia do lançamento (20 de maio de 2026). A v1.1.1 reformulou o modo digital com correções de jogabilidade + ritmo de 12 rodadas + um limite de vitória por mandato, mas ainda parecia muito curto. A v1.1.2 substitui a condição de término por limite de rodadas por uma condição de término baseada em "circuitos": o jogo termina quando um jogador faz com que sua facção complete quatro voltas pela República. A duração média do jogo é de ~23 rodadas / 67 turnos (1,9 vezes a v1.1.1). O jogador que dispara o fim não vence automaticamente vence quem tiver a maior influência no balanço final. A versão física do jogo permanece estável na versão v0.2. Consulte o arquivo `CHANGELOG.md` para obter todos os detalhes das alterações e as ressalvas da versão beta.
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  Sovereign é um **jogo de tabuleiro do tipo Monopoly, inspirado no sistema Hamilton**, sobre a fundação do crédito público dos EUA, além de uma **adaptação completa para jogar sozinho / digitalmente** que executa as mesmas regras localmente em um navegador contra dois oponentes programados e determinísticos.
29
29
 
30
- - **Jogo de tabuleiro** — edição impressa com 34 páginas. Tabuleiro com 40 espaços, 22 propriedades + 4 rotas + 2 instituições, 8 sistemas de cores, 7 Atos do Congresso em ordem histórica fixa, 4 papéis de jogador, 3 trilhas compartilhadas (Crédito Público · Resistência Pública · Capacidade Industrial), 12 cartas de evento + 12 cartas de evento. Duas opções econômicas viáveis além do Tesouro: Comerciante e Fabricante. Equilíbrio da versão v0.2, fixo.
31
- - **Modo digital** — um único arquivo HTML autônomo. Jogo de 12 rodadas com modelo de vitória por mandato: a partir da rodada 8, um jogador com 15 pontos de influência e uma vantagem de 5 pontos aciona a "Contabilização Final" e encerra o jogo. Se não houver vitória por mandato, o jogo termina na rodada 12. Gerador de números aleatórios mulberry32 determinístico, oponentes de IA programados (Tesouro / Finanças, Comerciante / Infraestrutura, Fabricante / Indústria), salvamento / carregamento com integridade de hash, ferramenta de simulação em lote para o designer.
32
- - **Equilíbrio base** — modelo de mandato de 12 rodadas (versão v1.1.1 beta): Tesouro 51% · Comerciante 33% · Fabricante 16% (VALOR DE REFERÊNCIA × 100). Todos os três perfis podem alcançar a vitória por mandato; nenhum perfil está bloqueado. As mecânicas subjacentes da versão v0.18 (Crise de Crédito, pontuação de propriedade, Carta Industrial, bônus por completar conjuntos) são preservadas byte a byte, derivadas do ciclo de design v0.3 → v0.10 → v0.18, baseado em mais de 1.000 jogos de simulação determinísticos.
30
+ - **Jogo de tabuleiro** — edição impressa de 34 páginas. Tabuleiro com 40 espaços, 22 propriedades + 4 rotas + 2 instituições, 8 sistemas de cores, 7 Atos do Congresso em ordem histórica fixa, 4 papéis de jogador, 3 trilhas compartilhadas (Crédito Público · Resistência Pública · Capacidade Industrial), 12+12 cartas de evento. Dois caminhos econômicos viáveis além do Tesouro: Comerciante e Fabricante. Equilíbrio da versão v0.2, congelado.
31
+ - **Modo digital** — um único arquivo HTML autônomo. Condição de término baseada em "circuitos": o jogo termina quando um jogador completa sua quarta passagem pelo Tesouro. A duração média do jogo é de ~23 rodadas (67 turnos). No balanço final, o jogador com a maior influência vence, *não necessariamente aquele que completou o tabuleiro primeiro*. O limite máximo permanece em 30 rodadas como medida de segurança (nunca é atingido no modo CANONICAL × 100). Gerador de números aleatórios mulberry32 determinístico, oponentes de IA programados (Tesouro / Finanças, Comerciante / Infraestrutura, Fabricante / Indústria), salvar / carregar com integridade de hash, ferramenta de simulação em lote para o designer.
32
+ - **Ponto de referência de equilíbrio** — modelo de "circuitos" (versão beta v1.1.2): Tesouro 56% · Comerciante 19% · Fabricante 25% (CANONICAL × 100). Todos os três perfis têm chances significativas de vitória; o Fabricante se torna mais relevante em jogos mais longos, pois os conjuntos industriais têm tempo para se desenvolver; a participação do Comerciante diminui à medida que as rotas se tornam menos dominantes quando o dinheiro é gasto em melhorias ao longo de um período mais longo. As mecânicas subjacentes da versão v0.18 (Crise de Crédito, pontuação de propriedade de dinheiro, Carta Industrial, bônus de conclusão de conjuntos) são preservadas de forma idêntica em bytes, desde o ciclo de design v0.3 → v0.10 → v0.18, baseado em mais de 1.000 simulações determinísticas.
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ O quarto perfil conceitual (Oportunista / Caixa) está adiado. O conjunto compet
127
127
 
128
128
  ## Observações
129
129
 
130
- - **A versão v1.1.1 é uma versão beta.** O modo digital foi testado com base nos diagnósticos de simulação, e a execução em lote com o VALOR DE REFERÊNCIA × 100 resultou em 62/100 ativações de mandato (em comparação com as 67 previstas), com uma divisão de vencedores de 51/33/16 exatamente como previsto. Não foi testado completamente do início ao fim por um jogador humano; a adaptação comportamental (como os jogadores realmente se comportam depois de entender o conceito de mandato) não foi medida. Utilize-o como uma versão beta opcional até que você mesmo o teste.
131
- - **Os perfis de IA ainda não competem pelo mandato.** Eles usam as mesmas funções de decisão da versão v0.18, o que significa que eles jogam para acumular influência ao longo de todo o jogo, e não para atingir rapidamente o limite de 15 pontos de influência. Uma versão futura ajustará as decisões dos perfis para ter consciência do mandato. Jogadores humanos reais podem se comportar de maneira diferente.
132
- - **A falência é uma pressão sutil em 12 rodadas.** Aproximadamente 7/100 eventos no VALOR DE REFERÊNCIA × 100 com mandato (em comparação com aproximadamente 18/100 sem mandato, porque os jogos terminam mais cedo). Vale a pena observar durante os testes.
133
- - **O Tesouro / Finanças permanece intencionalmente o mais forte**, dentro da faixa alvo. Isso corresponde à tese histórica: o crédito público e as finanças federais eram os principais instrumentos econômicos de Hamilton.
134
- - **Os eventos de falha (Inadimplência / Rebelião) permanecem principalmente decorativos.** A Crise de Crédito ocorre em aproximadamente 2/100 a 12 rodadas. O sistema de escalada tem mais tempo para se desenvolver, mas raramente atinge a Inadimplência ou a Rebelião. Versões futuras podem reavaliar a pressão dos estados de falha.
130
+ - **A v1.1.2 é uma versão beta.** Os números vêm da simulação em lote dentro do HTML (100 / 100 jogos terminam pelo "circuito", duração média de 23 rodadas, divisão de vencedores 56 / 19 / 25). Ela **não** foi testada completamente por um jogador humano. Considere-a como uma versão opcional até que você a experimente você mesmo.
131
+ - **Os perfis de IA ainda não competem pelos "circuitos".** Eles usam as funções de decisão da versão v0.18 jogando para acumular influência, em vez de competir para completar o quarto "circuito". Jogadores humanos reais podem se comportar de maneira muito diferente assim que entenderem a condição de término.
132
+ - **Acionar vencer.** O jogador que completa o quarto "circuito" vence por influência em cerca de um terço dos jogos. Isso é intencional o balanço final recompensa a profundidade econômica, não a velocidade ao redor do tabuleiro. A cópia do final do jogo torna essa distinção explícita.
133
+ - **A parte final da República é longa e não tem Atos.** Os Atos ainda são ativados nas rodadas de 1 a 7. A duração média do jogo é de ~23 rodadas, deixando ~16 rodadas da parte final da República sem novos eventos políticos. Se isso parecer vazio em um jogo "frio", a próxima correção será uma redistribuição dos Atos, e não um retorno ao sistema de mandatos.
134
+ - **O Tesouro / Finanças permanece intencionalmente o mais forte**, dentro da faixa alvo. Isso corresponde à tese histórica: o crédito público + as finanças federais eram o principal instrumento econômico de Hamilton.
135
+ - **Os eventos de falha (Inadimplência / Rebelião) permanecem principalmente decorativos.** A Crise de Crédito ocorre ocasionalmente; a Inadimplência e a Rebelião quase nunca ocorrem. O sistema de escalada tem mais tempo para se desenvolver, mas ainda raramente atinge os níveis mais altos. Versões futuras podem reavaliar a pressão dos estados de falha.
135
136
 
136
137
  ---
137
138
 
package/README.zh.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ---
21
21
 
22
- **状态 — v1.1.1 (beta)。** v1.1.0 版本在发布当天(2026年5月20日)就被下架,因为在实际游戏体验中发现了两个结构性游戏性问题,而模拟审计无法检测到。v1.1.1 是重新构建的版本:优化了游戏体验 + 12轮游戏流程 + 强制胜利模式 + 租金系统。这是一个**可选的 beta 版本**:这里的数字版本之所以发布,是因为它在功能上比 v1.1.0 更好,但尚未经过完整的实际游戏测试。可打印的棋盘游戏仍然稳定在 v0.2 版本。请参阅 `CHANGELOG.md` 文件以获取完整的变更记录和 beta 版本的注意事项。
22
+ **状态 — v1.1.2 (beta)。** v1.1.0 版本在发布当天就被撤回(2026年5月20日)。v1.1.1 版本对数字模式进行了改进,修复了游戏体验问题,增加了12轮的游戏流程,并设置了强制胜利的条件,但仍然感觉太短。v1.1.2 版本将回合限制的结束条件替换为基于“电路”的结束条件:当一名玩家使自己的派系在共和国境内完成了四次循环时,游戏结束。平均游戏时长约为23轮/67回合(比 v1.1.1 版本长 1.9 倍)。触发游戏结束的玩家不一定获胜,最终根据“最终结算”时的影响力值来决定胜负。可打印的桌面游戏版本仍然稳定在 v0.2 版本。请参阅 `CHANGELOG.md` 文件以获取完整的变更记录和 beta 版本的注意事项。
23
23
 
24
24
  ---
25
25
 
@@ -27,9 +27,9 @@
27
27
 
28
28
  Sovereign是一款**基于“汉密尔顿系统”的“大富翁”风格棋盘游戏**,讲述的是美国公共信贷的建立,同时还提供一个**完整的单人/数字版本**,它可以在浏览器中本地运行,与两个具有固定行为的AI对手对战。
29
29
 
30
- - **棋盘游戏** — 可打印的 34 页版本。 棋盘包含 40 个格子,22 处房产 + 4 条路线 + 2 个机构,8 个颜色系统,7 项国会法案按照固定的历史顺序排列,4 种玩家角色,3 条共享轨道(公共信用、公共抵抗、工业能力),12+12 张事件卡。 除了财政部之外,还有两种可行的经济发展路径:商人路径和制造商路径。 v0.2 版本的平衡性已确定,不再进行调整。
31
- - **数字模式** — 单个独立的 HTML 文件。 12 轮游戏,采用强制胜利模式:从第 8 轮开始,如果某个玩家的影响力达到 15 点,并且领先 5 分,则触发“最终结算”,游戏结束。 如果没有强制胜利条件,游戏将在第 12 轮结束。 使用确定性的 mulberry32 随机数生成器,包含预设的 AI 对手(财政部/金融、商人/基础设施、制造商/工业),支持保存/加载功能,并具有哈希完整性校验、回放功能以及设计师提供的批量模拟工具。
32
- - **平衡性基准** — 12 轮强制胜利模式(v1.1.1 beta 版):财政部 51% · 商人 33% · 制造商 16%(标准值 × 100)。 所有三种角色都有可能获得强制胜利;没有角色被排除在外。 基础的 v0.18 机制(信用危机、现金 IP 得分、工业特许、完成套装的奖励)与 v0.3 → v0.10 → v0.18 的设计版本完全一致,并通过 1000 多个确定性的模拟游戏进行验证。
30
+ - **桌面游戏** — 可打印的 34 页版本。游戏棋盘包含 40 个格子,22 处地产 + 4 条路线 + 2 个机构,8 个颜色系统,7 项国会法案按照固定的历史顺序排列,4 个玩家角色,3 条共享进度条(公共信用、公共抵抗、工业能力),12+12 张事件卡。除了财政部之外,还有两种可行的经济发展路径:商人路径和制造商路径。v0.2 版本的平衡性已确定,不再进行调整。
31
+ - **数字模式** — 单个独立的 HTML 文件。基于“电路”的结束条件:当一名玩家完成第四次“财政部开放”时,游戏结束。平均游戏时长约为 23 轮(67 回合)。在“最终结算”时,拥有最高影响力的玩家获胜,*不一定是最先绕完棋盘的玩家*。为了安全起见,回合上限仍然设置为 30 回合(在标准模式下几乎不会达到)。使用确定性的 mulberry32 随机数生成器,包含脚本化的 AI 对手(财政部/金融、商人/基础设施、制造商/工业),支持保存/加载功能,并具有哈希完整性校验、回放清除功能以及设计师提供的批量模拟工具。
32
+ - **平衡性基准** — 基于“电路”模型的 v1.1.2 beta 版本:财政部 56%,商人 19%,制造商 25%(标准模式下)。这三种发展模式都有可能获胜;在较长的游戏中,制造商的发展会更加突出,因为工业组合有时间成熟;随着路线的重要性下降,以及玩家将资金用于升级,商人的份额可能会下降。底层 v0.18 的机制(信用危机、现金 IP 得分、工业特许、完成组合的奖励)与 v0.3 → v0.10 → v0.18 版本设计保持完全一致,并通过 1000 多场确定性模拟游戏进行验证。
33
33
 
34
34
  ---
35
35
 
@@ -127,11 +127,12 @@ Sovereign 是一款独立的、基于浏览器的棋盘游戏。命令行界面
127
127
 
128
128
  ## 已知问题
129
129
 
130
- - **v1.1.1 是一个 beta 版本。** 数字模式已经过模拟诊断的测试,并且在标准值 × 100 的批量测试中,触发强制胜利的次数为 62/100(预测值为 67),获胜比例为 51/33/16,与预测完全一致。 但是,**尚未**由全新的玩家进行完整的实际游戏测试;玩家的行为适应性(即玩家在了解强制胜利机制后实际的行为)尚未得到测量。 在您亲自体验之前,请将其视为可选的 beta 版本。
131
- - **AI 角色目前尚未争夺强制胜利。** 它们运行的是 v0.18 的决策函数,这意味着它们的目标是积累影响力,而不是快速达到 15 点 IP 的阈值。 未来的版本将调整 AI 角色的决策,使其更加关注强制胜利。 真实的玩家可能会表现出不同的行为。
132
- - **破产是一种在 12 轮游戏中的软性压力机制。** 在标准值 × 100 的测试中,约 7/100 的游戏中会出现破产事件(在没有强制胜利的情况下,约为 18/100,因为游戏会提前结束)。 值得在实际游戏中观察。
133
- - **财政部/金融角色仍然是故意设计的,是强度最高的角色之一**,并且在目标范围内。 这符合历史背景:公共信用和联邦金融是汉密尔顿的主要经济杠杆。
134
- - **失败事件(违约/叛乱)主要起到装饰作用。** 信用危机大约在 12 轮游戏中发生 2/100 的概率。 升级系统有更多时间发挥作用,但仍然很少会直接导致违约或叛乱。 未来的版本可能会重新评估失败状态的压力。
130
+ - **v1.1.2 是一个 beta 版本。** 诊断数据来自 HTML 批量模拟(100/100 场游戏触发“电路”结束,平均 23 轮,获胜者比例为 56%/19%/25%)。它**尚未**由全新的人类玩家进行完整的体验测试。请将其视为可选版本,直到您亲自体验过它为止。
131
+ - **AI 角色目前尚未争夺“电路”。** 它们运行的是 v0.18 的决策函数,目标是积累影响力,而不是争夺第四个“电路”。真正的玩家在理解结束条件后,可能会表现出不同的行为。
132
+ - **触发 获胜。** 只有大约三分之一的游戏中,完成第四个“电路”的玩家会获胜。这是有意为之——“最终结算”奖励的是经济深度,而不是在棋盘上的速度。游戏结束时的提示会明确这一点。
133
+ - **共和国晚期阶段的棋盘很长,没有新的法案。** 法案仍然在 1-7 回合生效。平均游戏时长约为 23 轮,这意味着在共和国晚期阶段,有大约 16 轮没有新的政治事件发生。如果这部分内容在体验中感觉空洞,下一个改进方向是重新分配法案,而不是恢复强制胜利的条件。
134
+ - **财政部/金融仍然是最强大的,** 并且在目标范围内。这符合历史背景:公共信用和联邦金融是汉密尔顿的主要经济杠杆。
135
+ - **失败事件(违约/叛乱)仍然主要起到装饰作用。** 信用危机偶尔会触发;违约和叛乱几乎从不发生。升级系统有更多时间来累积,但仍然很少达到最高等级。未来的版本可能会重新考虑失败状态的压力。
135
136
 
136
137
  ---
137
138
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcptoolshop/sovereign",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Sovereign — a Hamilton-system economic board game and its solo / digital adaptation. Browser-based, deterministic, self-contained.",
5
5
  "type": "module",
6
6
  "main": "bin/sovereign.js",
@@ -5,6 +5,66 @@
5
5
 
6
6
  ---
7
7
 
8
+ ## v1.1.2 — Circuit victory + human voice — 2026-05-20
9
+
10
+ **Beta.** Same day as v1.1.1, but a meaningfully different shape. After the v1.1.1 cold playthrough the game still felt too short and the ending too arbitrary — it ended because the clock ran out, not because someone won the Republic. v1.1.2 replaces the round-cap-with-mandate end condition with a **circuit-based** end condition tied to physical movement around the board.
11
+
12
+ **The new end condition:**
13
+
14
+ The game ends when one player has carried their faction around the Republic four times — i.e., completed their fourth crossing of Treasury Opens. At that moment, Final Accounting fires and the highest-Influence player wins, *not necessarily the player who got around first*. Hard cap stays at round 30 (a safety; essentially never fires — diagnostic showed 100 / 100 CANONICAL × 100 games complete by round 28).
15
+
16
+ **Why this is structurally different from v1.1.1:**
17
+
18
+ - v1.1.1: 12-round cap with mandate (15 IP + 5 lead) as early-trigger. Median 9 rounds, 36 turns. Ended by clock.
19
+ - v1.1.2: no round cap that anyone hits in practice. Median **23 rounds / 67 turns** — about 1.9× the previous game length. Ends when somebody physically rounds the board for the fourth time.
20
+
21
+ **CANONICAL × 100 (in-HTML batch sim):**
22
+
23
+ | Metric | v1.1.1 (mandate) | v1.1.2 (circuit) |
24
+ |---|---:|---:|
25
+ | Triggered | 62 / 100 | 100 / 100 |
26
+ | Median rounds | 9 | 23 |
27
+ | Median turns | ~27 | 67 |
28
+ | Treasury wins | 52 % | 56 % |
29
+ | Merchant wins | 32 % | 19 % |
30
+ | Manufacturer wins | 16 % | 25 % |
31
+ | Avg winning IP | ~16 | 28.7 |
32
+ | Avg lead margin | 5 | 7.9 |
33
+ | Bankruptcy events | 7 | observed |
34
+ | Safety-cap fires | n/a | 0 / 100 |
35
+
36
+ Trade-off worth naming: Merchant share drops (32 → 19) while Manufacturer rises (16 → 25). Longer games give Treasury and Manufacturer time to compound industrial / financial scoring, where Merchant's route-rent advantage matures faster in shorter games. Treasury still doesn't run away — share stays in the band.
37
+
38
+ **Trigger ≠ winner.** The player who completes the fourth circuit wins by Influence only 33 / 100 games. The other 67, somebody else holds the heavier ledger at termination. This is intentional — it preserves the "carry it across the line" feel while still rewarding economic depth. Endgame copy makes this explicit in both branches.
39
+
40
+ **Human voice copy pass.** All circuit / endgame narration rewritten away from gameplay-jargon ("Circuit Victory", "trigger player", "claimed the Republic") toward narrative-voice ("Hamilton has been around four times. The books close.", "Hamilton rounded the Republic four times — but the heaviest ledger belonged to Morris."). Per-circuit ledger entries vary by circuit number — first lap, two circuits in, three deep, books close.
41
+
42
+ **What's preserved from v1.1.1:**
43
+
44
+ - All Pass 1 / Pass 2 chrome (action rail above board, positions strip, portfolio strip, collapsed sidebar, 26 px tokens, designer gate, dice overlay)
45
+ - Pass 3 rent surfacing band
46
+ - All v0.18 mechanics: card effects, Acts (still firing rounds 1-7), scoring math, rent math, profile decision functions, RNG, deck order, Credit Crisis / Default / Rebellion triggers
47
+ - Designer URL flag: `?designer=1&circuit_target=N` for tuning the circuit threshold
48
+
49
+ **What changed:**
50
+
51
+ - `SAVE_VERSION = 'v0.21-circuit-candidate'`. v0.20 (v1.1.1) saves refuse to load with a friendly non-crash message.
52
+ - Mandate threshold removed. No more 15-IP + 5-lead trigger; the game ends on the fourth circuit only.
53
+ - Round counter on the chrome no longer reads "Round N of 12" — just "Round N" (and "· Late Republic" after round 7).
54
+ - Acts still fire in rounds 1-7; rounds 8-onward are Late Republic with no new political shocks. **Open risk**: median play has ~16 rounds of Late Republic with no Acts firing. If cold play finds this stretch feels empty, the v1.1.3 fix is an Acts redistribution pass, not a return to mandate.
55
+
56
+ **Beta caveats:**
57
+
58
+ - Not yet cold-walked end-to-end by a fresh human player. Beta tag is the safety net.
59
+ - Behavioral adaptation unmeasured: AI profiles still play current decision functions, not circuit-aware ones (e.g., Treasury doesn't yet race to hit the fourth circuit).
60
+ - The Late Republic stretch (~16 rounds in median play with no Acts firing) is a known open risk. Worth flagging in any playtest notes.
61
+
62
+ **npm history note:**
63
+
64
+ v1.1.0 remains on npm as the historical withdrawn version. v1.1.1 (mandate beta) and v1.1.2 (circuit beta) are both published. `npm install @mcptoolshop/sovereign` resolves to v1.1.2 (`latest`).
65
+
66
+ ---
67
+
8
68
  ## v1.1.1 — Digital mode beta: human playability rebuild + 12-round pacing + mandate victory — 2026-05-20
9
69
 
10
70
  **Beta release.** Second attempt at the digital mode after v1.1.0 was withdrawn the same day it shipped (2026-05-20). v1.1.0 simulation-verified but failed first cold human play; v1.1.1 fixes the structural human-playability gaps that audit could not catch. Not fully cold-validated end-to-end; shipping as beta so anyone who wants the digital mode can opt in while the player experience continues to settle.
@@ -1187,15 +1187,32 @@ html, body { font-size:15px; }
1187
1187
  font-family:var(--ui); font-size:10.5px; letter-spacing:.06em;
1188
1188
  font-weight:800; color:var(--foil); margin-left:4px;
1189
1189
  }
1190
- .positions-strip .pos-mandate {
1190
+ .positions-strip .pos-circuits {
1191
1191
  font-family:var(--ui); font-size:9.5px; letter-spacing:.12em;
1192
1192
  text-transform:uppercase; font-weight:800;
1193
+ color:var(--neutral);
1193
1194
  margin-top:3px;
1194
- padding:2px 7px;
1195
+ display:inline-flex; align-items:center; gap:5px;
1196
+ }
1197
+ .positions-strip .pos-circuits .v {
1198
+ font-family:var(--mono); font-weight:700; font-size:10.5px; letter-spacing:.04em;
1199
+ color:var(--ink);
1200
+ padding:1px 5px 1px;
1201
+ background:var(--parchment-2);
1202
+ box-shadow:inset 0 0 0 1px var(--rule-soft);
1203
+ border-radius:2px;
1204
+ }
1205
+ .positions-strip .pos-row.is-active .pos-circuits .v {
1206
+ background:var(--ink); color:var(--parchment);
1207
+ box-shadow:inset 0 0 0 1px var(--ink);
1208
+ }
1209
+ .positions-strip .pos-row.circuit-warning .pos-circuits {
1210
+ color:var(--foil);
1211
+ }
1212
+ .positions-strip .pos-row.circuit-warning .pos-circuits .v {
1195
1213
  background:var(--foil); color:var(--ink);
1196
- border:1px solid var(--ink); display:inline-block;
1214
+ box-shadow:inset 0 0 0 1px var(--foil);
1197
1215
  }
1198
-
1199
1216
  /* =====================================================================
1200
1217
  PORTFOLIO STRIP — compact "your holdings" near the action rail
1201
1218
  ===================================================================== */
@@ -1821,7 +1838,7 @@ body.sidebar-collapsed .sidebar-toggle:hover { animation:none; }
1821
1838
  <header class="topbar">
1822
1839
  <div class="brand">
1823
1840
  <div class="eyebrow">Solo / Digital Mode · The Hamilton System</div>
1824
- <div class="title">Sovereign<span class="title-mode">Federal economy in twelve rounds</span></div>
1841
+ <div class="title">Sovereign<span class="title-mode">Federal economy · first to four circuits</span></div>
1825
1842
  <div class="sub">Steer the early American republic through debt, credit, public resistance, and industrial capacity. The ledger on the right records every payment, vote, track shift, and event.</div>
1826
1843
  </div>
1827
1844
  <div class="controls">
@@ -1835,7 +1852,7 @@ body.sidebar-collapsed .sidebar-toggle:hover { animation:none; }
1835
1852
  <button id="btnBatch" title="Run a scripted batch of 10 / 50 / 100 games">Balance Sweep</button>
1836
1853
  <button id="btnNewSeed">New game</button>
1837
1854
  <button id="btnReset">Restart this game</button>
1838
- <span class="version-pill" title="Build provenance · no mechanic change since v0.18 candidate">v0.18 · Phase 6.1</span>
1855
+ <span class="version-pill" title="Build provenance · circuit-victory candidate · v0.21">v0.21 · circuit-victory · target <span id="circuitTargetPill">4</span></span>
1839
1856
  </div>
1840
1857
  </header>
1841
1858
 
@@ -1915,7 +1932,7 @@ body.sidebar-collapsed .sidebar-toggle:hover { animation:none; }
1915
1932
  <div class="lap-recap-overlay hidden" id="lapRecapOverlay" role="dialog" aria-modal="true">
1916
1933
  <div class="lap-recap">
1917
1934
  <div class="eyebrow">§ Round closes</div>
1918
- <h2 id="lapRecapTitle">Round 1 of 12</h2>
1935
+ <h2 id="lapRecapTitle">Round 1</h2>
1919
1936
  <div class="lap-sub" id="lapRecapSub">After round 1</div>
1920
1937
  <div class="recap-body" id="lapRecapBody"></div>
1921
1938
  <div class="recap-meta" id="lapRecapMeta"></div>
@@ -2006,7 +2023,7 @@ body.sidebar-collapsed .sidebar-toggle:hover { animation:none; }
2006
2023
  </div>
2007
2024
  <div class="tour-row">
2008
2025
  <div class="tour-num">2</div>
2009
- <div><strong>Each round, every player takes one turn</strong> — twelve rounds total. Passing Treasury Opens is a board circuit; a round is not a full lap around the board.</div>
2026
+ <div><strong>Each round, every player takes one turn.</strong> The game does not end by a turn-counter it ends by state. Pass Treasury Opens to complete a board circuit; build income and influence between crossings.</div>
2010
2027
  </div>
2011
2028
  <div class="tour-row">
2012
2029
  <div class="tour-num">3</div>
@@ -2018,7 +2035,7 @@ body.sidebar-collapsed .sidebar-toggle:hover { animation:none; }
2018
2035
  </div>
2019
2036
  <div class="tour-row">
2020
2037
  <div class="tour-num">5</div>
2021
- <div><strong>The mandate</strong> from round 8 onward, a player with 15 Influence and a 5-point lead can claim the mandate and trigger Final Accounting. If no one does, the game ends after round 12.</div>
2038
+ <div><strong>Four times around ends it.</strong> The game ends when one of you has carried your faction around the Republic four times. Whoever holds the strongest ledger at that moment wins not necessarily the one who got there first.</div>
2022
2039
  </div>
2023
2040
  </div>
2024
2041
 
@@ -2457,7 +2474,7 @@ const NARRATION = {
2457
2474
  x: '',
2458
2475
  },
2459
2476
  'endgame · republic-summary': {
2460
- h: 'Your Republic, after twelve rounds',
2477
+ h: 'Your Republic, at Final Accounting',
2461
2478
  d: '',
2462
2479
  x: '',
2463
2480
  },
@@ -2811,11 +2828,11 @@ function initialState(seed) {
2811
2828
  const rng = makeRng(seed);
2812
2829
  const players = [
2813
2830
  { idx:0, name:'You', profile:'human', role:'Treasury Architect',
2814
- cash:1500, position:0, ownedAssets:[], influencePoints:0, bankruptLaps:0, bankruptThisLap:false, keptHamilton:false, inCrisis:false },
2831
+ cash:1500, position:0, ownedAssets:[], influencePoints:0, bankruptLaps:0, bankruptThisLap:false, keptHamilton:false, inCrisis:false, circuitsCompleted:0 },
2815
2832
  { idx:1, name:'Hamilton', profile:'treasury-finance', role:'Treasury / Finance',
2816
- cash:1500, position:0, ownedAssets:[], influencePoints:0, bankruptLaps:0, bankruptThisLap:false, keptHamilton:false, inCrisis:false },
2833
+ cash:1500, position:0, ownedAssets:[], influencePoints:0, bankruptLaps:0, bankruptThisLap:false, keptHamilton:false, inCrisis:false, circuitsCompleted:0 },
2817
2834
  { idx:2, name:'Morris', profile:'merchant-infrastructure', role:'Merchant / Infrastructure',
2818
- cash:1500, position:0, ownedAssets:[], influencePoints:0, bankruptLaps:0, bankruptThisLap:false, keptHamilton:false, inCrisis:false },
2835
+ cash:1500, position:0, ownedAssets:[], influencePoints:0, bankruptLaps:0, bankruptThisLap:false, keptHamilton:false, inCrisis:false, circuitsCompleted:0 },
2819
2836
  ];
2820
2837
  return {
2821
2838
  rngSeed: seed, rng, lap: 1, turnIndex: 0, activePlayerIndex: 0,
@@ -2878,24 +2895,26 @@ let TURN_SNAPSHOTS = [];
2878
2895
  let NARRATION_LOG = [];
2879
2896
  let NARRATION_ENABLED = true;
2880
2897
  const AUTOSAVE_KEY = 'sovereign.autosave';
2881
- const SAVE_VERSION = 'v0.20-mandate-candidate';
2882
- const TOTAL_ROUNDS = 12;
2898
+ const SAVE_VERSION = 'v0.21-circuit-candidate';
2899
+ /* HARD_CAP_ROUNDS is a safety net for pathological games; the diagnostic
2900
+ showed 100 % of CANONICAL games complete Race N=4 by round 28. The game
2901
+ ends by state (first to N circuits), not by clock. */
2902
+ const HARD_CAP_ROUNDS = 30;
2883
2903
  const LATE_REPUBLIC_START = 8;
2884
2904
 
2885
- /* Mandate victory model — designer-overridable via URL in ?designer=1 mode */
2886
- const MANDATE = (function() {
2887
- const def = { threshold: 15, lead: 5, minRound: 8, hardCap: 12 };
2905
+ /* Circuit victory model — designer-overridable via URL in ?designer=1 mode.
2906
+ target = number of board circuits required to trigger Final Accounting.
2907
+ A circuit is one PASS_TREASURY_OPENS event (landed or passed).
2908
+ Default 4 — chosen because (a) 100 % of CANONICAL games complete by
2909
+ round 28, (b) median ~23 rounds / ~67 turns feels right, (c) N=5 has
2910
+ ~22 % hard-cap fallback, (d) N=6 almost never triggers. */
2911
+ const CIRCUIT_VICTORY = (function() {
2912
+ const def = { target: 4, hardCap: HARD_CAP_ROUNDS };
2888
2913
  try {
2889
2914
  const params = new URLSearchParams(window.location.search);
2890
2915
  if (params.get('designer') === '1') {
2891
- const t = parseInt(params.get('mandate_threshold'), 10);
2892
- const l = parseInt(params.get('mandate_lead'), 10);
2893
- const m = parseInt(params.get('mandate_min_round'), 10);
2894
- const c = parseInt(params.get('mandate_hard_cap'), 10);
2895
- if (Number.isFinite(t)) def.threshold = t;
2896
- if (Number.isFinite(l)) def.lead = l;
2897
- if (Number.isFinite(m)) def.minRound = m;
2898
- if (Number.isFinite(c)) def.hardCap = c;
2916
+ const n = parseInt(params.get('circuit_target'), 10);
2917
+ if (Number.isFinite(n) && n >= 1 && n <= 10) def.target = n;
2899
2918
  }
2900
2919
  } catch (e) {}
2901
2920
  return def;
@@ -3093,6 +3112,35 @@ function reduce(s, action) {
3093
3112
  const pIdx = s.activePlayerIndex;
3094
3113
  const amount = action.landed ? 400 : 200;
3095
3114
  s = adjustCash(s, amount, action.landed ? 'Treasury Opens: landed' : 'Treasury Opens: passed', pIdx);
3115
+ /* v0.21 circuit-victory model — every PASS_TREASURY_OPENS is one
3116
+ board circuit for the active player. The payday math above is
3117
+ unchanged from v0.20; circuit counting is layered on top. */
3118
+ s.players[pIdx].circuitsCompleted += 1;
3119
+ const c = s.players[pIdx].circuitsCompleted;
3120
+ const T = CIRCUIT_VICTORY.target;
3121
+ const pName = s.players[pIdx].name;
3122
+ /* Per-circuit narration in human voice — only for circuits below the trigger.
3123
+ Circuit T fires its own MANDATE row below; emitting both would be redundant. */
3124
+ if (c < T) {
3125
+ const circuitDetail = (c === 1)
3126
+ ? pName + ' finishes their first lap around the Republic.'
3127
+ : (c === 2)
3128
+ ? pName + ' is two circuits in.'
3129
+ : pName + ' is three deep. One more pass and the books close.';
3130
+ s = logRow(s, { actor:'System', event:'CIRCUIT', detail: circuitDetail, cls:'event' });
3131
+ }
3132
+ if (c >= T) {
3133
+ s.circuitTrigger = {
3134
+ playerIdx: pIdx, playerName: pName,
3135
+ round: s.lap, turn: s.turnIndex,
3136
+ circuits: c, target: T,
3137
+ influence: scorePlayer(s, pIdx).total,
3138
+ };
3139
+ s = logRow(s, { actor:'System', event:'MANDATE',
3140
+ detail: pName + ' has been around four times. The books close. Final Accounting.',
3141
+ cls:'event' });
3142
+ return reduce(s, { type:'END_GAME' });
3143
+ }
3096
3144
  return s;
3097
3145
  }
3098
3146
 
@@ -3300,35 +3348,19 @@ function reduce(s, action) {
3300
3348
  }
3301
3349
 
3302
3350
  case 'END_TURN': {
3351
+ if (s.status === 'gameOver') return s;
3303
3352
  s.activePlayerIndex = (s.activePlayerIndex + 1) % s.players.length;
3304
3353
  s.phase = 'awaiting-roll';
3305
3354
  if (s.activePlayerIndex === 0) {
3306
- /* End-of-round mandate check (rounds 8–11). Mandate fires if a player
3307
- has Influence MANDATE.threshold AND a lead of ≥ MANDATE.lead
3308
- over second place. Sole highest-Influence holder triggers; ties for
3309
- highest do not trigger. Evaluated before round/lap advances. */
3310
- if (s.lap >= MANDATE.minRound && s.lap < MANDATE.hardCap) {
3311
- const scored = s.players.map((p, idx) => ({ idx, name: p.name, total: scorePlayer(s, idx).total }));
3312
- const sorted = scored.slice().sort((a, b) => b.total - a.total);
3313
- const top = sorted[0], second = sorted[1];
3314
- const eligible = top.total >= MANDATE.threshold && (top.total - second.total) >= MANDATE.lead;
3315
- const sharedTop = scored.filter(x => x.total === top.total).length > 1;
3316
- if (eligible && !sharedTop) {
3317
- s.mandateTrigger = {
3318
- playerIdx: top.idx, playerName: top.name,
3319
- round: s.lap, influence: top.total, lead: top.total - second.total,
3320
- threshold: MANDATE.threshold, leadRequired: MANDATE.lead,
3321
- };
3322
- s = logRow(s, { actor:'System', event:'MANDATE',
3323
- detail: top.name + ' claims the mandate · ' + top.total + ' Influence · lead ' + (top.total - second.total) + ' over ' + second.name,
3324
- cls:'event' });
3325
- return reduce(s, { type:'END_GAME' });
3326
- }
3327
- }
3328
- /* Full round done · advance lap */
3355
+ /* v0.21 Victory is now state-based (first to CIRCUIT_VICTORY.target
3356
+ circuits, evaluated inside PASS_TREASURY_OPENS). No end-of-round
3357
+ mandate check. We still keep a hard cap at HARD_CAP_ROUNDS as a
3358
+ safety net against pathological games; the diagnostic showed
3359
+ this essentially never fires. */
3329
3360
  s.lap += 1;
3330
- if (s.lap > TOTAL_ROUNDS) {
3331
- s = logRow(s, { actor:'System', event:'GAME OVER', detail: TOTAL_ROUNDS + ' rounds complete · scoring', cls:'event' });
3361
+ if (s.lap > HARD_CAP_ROUNDS) {
3362
+ s = logRow(s, { actor:'System', event:'GAME OVER',
3363
+ detail: HARD_CAP_ROUNDS + ' rounds in. No one made it around four times. The books close anyway.', cls:'event' });
3332
3364
  return reduce(s, { type:'END_GAME' });
3333
3365
  }
3334
3366
  s = logRow(s, { actor:'System', event:'LAP', detail:'Begin lap ' + s.lap, cls:'event' });
@@ -3350,6 +3382,8 @@ function reduce(s, action) {
3350
3382
  }
3351
3383
 
3352
3384
  function finishLanding(s) {
3385
+ /* v0.21 — short-circuit if circuit victory already fired during this move */
3386
+ if (s.status === 'gameOver') return s;
3353
3387
  /* Preserve live sub-phases set by cards (auctions, choices). */
3354
3388
  if (s.phase === 'auction') return s;
3355
3389
  if (s.phase === 'card-choice' && s.pendingCard) return s;
@@ -3558,7 +3592,7 @@ function renderBoard() {
3558
3592
  <div class="bc-eyebrow">Sovereign · Hamilton System</div>
3559
3593
  <div class="bc-title">Founding Credit</div>
3560
3594
  <div class="bc-sub">Fund the debt. Build the bank. Industrialize the republic.</div>
3561
- <div class="bc-lap" id="bcLap">Round 1 of 12</div>
3595
+ <div class="bc-lap" id="bcLap">Round 1</div>
3562
3596
  <div class="bc-tracks">
3563
3597
  <span class="t credit">Credit<span class="v" id="bcCredit">5</span></span>
3564
3598
  <span class="t resist">Resist<span class="v" id="bcResist">2</span></span>
@@ -3616,7 +3650,7 @@ function applyOwnership() {
3616
3650
  /* Your own active space pulse */
3617
3651
  if (youCell) youCell.classList.add('active-space');
3618
3652
  }
3619
- document.getElementById('bcLap').textContent = 'Round ' + Math.min(STATE.lap, TOTAL_ROUNDS) + ' of ' + TOTAL_ROUNDS + (STATE.lap >= LATE_REPUBLIC_START ? ' · Late Republic' : '');
3653
+ document.getElementById('bcLap').textContent = 'Round ' + STATE.lap + (STATE.lap >= LATE_REPUBLIC_START ? ' · Late Republic' : '');
3620
3654
  document.getElementById('bcCredit').textContent = STATE.tracks.credit.value;
3621
3655
  document.getElementById('bcResist').textContent = STATE.tracks.resistance.value;
3622
3656
  document.getElementById('bcIndust').textContent = STATE.tracks.capacity.value;
@@ -3920,39 +3954,27 @@ function renderControls() {
3920
3954
  if (phase !== 'game-over') {
3921
3955
  const strip = el('div', 'positions-strip');
3922
3956
  STATE.players.forEach((p, idx) => {
3923
- const row = el('div', 'pos-row p' + idx + (STATE.activePlayerIndex === idx ? ' is-active' : ''));
3957
+ const circuitsDone = p.circuitsCompleted || 0;
3958
+ const target = CIRCUIT_VICTORY.target;
3959
+ const oneFromVictory = circuitsDone === target - 1;
3960
+ const rowCls = 'pos-row p' + idx
3961
+ + (STATE.activePlayerIndex === idx ? ' is-active' : '')
3962
+ + (oneFromVictory && STATE.phase !== 'game-over' ? ' circuit-warning' : '');
3963
+ const row = el('div', rowCls);
3924
3964
  const glyph = idx === 0 ? (p.glyph || '§') : (p.name?.[0] || ['Y','H','M'][idx]);
3925
3965
  const where = SPACES[p.position]?.name || ('space ' + p.position);
3926
- /* Show current Influence (mandate score) inline */
3966
+ /* Show current Influence inline */
3927
3967
  const ip = scorePlayer(STATE, idx).total;
3928
- /* Mandate distance badge — leader only, only from MANDATE.minRound onward */
3929
- let mandateBadge = '';
3930
- if (STATE.lap >= MANDATE.minRound && STATE.phase !== 'game-over') {
3931
- const scored = STATE.players.map((pl, i) => ({ idx: i, total: scorePlayer(STATE, i).total }));
3932
- const sorted = scored.slice().sort((a, b) => b.total - a.total);
3933
- const top = sorted[0], second = sorted[1];
3934
- if (idx === top.idx && top.total > second.total) {
3935
- const fromThreshold = MANDATE.threshold - top.total;
3936
- const fromLead = MANDATE.lead - (top.total - second.total);
3937
- let badgeText;
3938
- if (fromThreshold > 0 && fromLead > 0) {
3939
- badgeText = fromThreshold + ' from threshold · +' + fromLead + ' lead needed';
3940
- } else if (fromThreshold > 0) {
3941
- badgeText = fromThreshold + ' from threshold';
3942
- } else if (fromLead > 0) {
3943
- badgeText = 'lead ' + (top.total - second.total) + ' of ' + MANDATE.lead;
3944
- } else {
3945
- badgeText = 'mandate eligible';
3946
- }
3947
- mandateBadge = '<div class="pos-mandate">' + badgeText + '</div>';
3948
- }
3949
- }
3968
+ /* Circuit badge — every player, always visible. Active player highlighted;
3969
+ brightens to foil when one circuit from victory. */
3970
+ const circuitBadge = '<div class="pos-circuits" title="Board circuits completed">'
3971
+ + 'Circuits <span class="v">' + circuitsDone + ' / ' + target + '</span></div>';
3950
3972
  row.innerHTML = '<div class="pos-tok"><span>' + glyph + '</span></div>' +
3951
3973
  '<div>' +
3952
3974
  '<div class="pos-name">' + p.name + '</div>' +
3953
3975
  '<div class="pos-space">' + where + '</div>' +
3954
3976
  '<div class="pos-cash">' + p.cash.toLocaleString('en-US') + ' \u00b7 <span class="pos-ip">' + ip + ' IP</span></div>' +
3955
- mandateBadge +
3977
+ circuitBadge +
3956
3978
  '</div>';
3957
3979
  strip.appendChild(row);
3958
3980
  });
@@ -4163,7 +4185,12 @@ function renderControls() {
4163
4185
  }
4164
4186
  else if (phase === 'game-over') {
4165
4187
  document.body.classList.add('endgame-active');
4166
- addBanner('Twelve rounds complete', 'The founding struggle has ended. Final tally posted in the report.', '', [
4188
+ const _ct = STATE.circuitTrigger;
4189
+ const eyebrow = _ct ? 'Final Accounting' : 'Thirty rounds in';
4190
+ const prompt = _ct
4191
+ ? _ct.playerName + ' rounded the Republic for the fourth time at round ' + _ct.round + '.'
4192
+ : 'No one made it around four times. The books close anyway.';
4193
+ addBanner(eyebrow, prompt, 'Final tally posted in the report.', [
4167
4194
  { label:'View final report', primary:true, onClick: () => document.getElementById('endgameView')?.scrollIntoView({behavior:'smooth', block:'start'}) },
4168
4195
  ], { endgame:true });
4169
4196
  }
@@ -4208,11 +4235,15 @@ function renderEndgame() {
4208
4235
  const _rebellionChip = _rebellionFired
4209
4236
  ? '<span class="posture-chip collapsed">Rebellion fired</span>'
4210
4237
  : '<span class="posture-chip avoided">No Rebellion</span>';
4211
- const _m = STATE.mandateTrigger;
4212
- const _endTitle = _m ? 'Final Accounting' : 'Twelve rounds complete';
4213
- const _endSub = _m
4214
- ? _m.playerName + ' claimed the mandate at round ' + _m.round + ' with ' + _m.influence + ' Influence, leading by ' + _m.lead + '.'
4215
- : 'No founder secured a mandate. The Republic decides by final accounting after twelve rounds.';
4238
+ const _ct = STATE.circuitTrigger;
4239
+ const _endTitle = _ct ? 'Final Accounting' : 'Thirty rounds in';
4240
+ const _winnerName = STATE.players[winner.idx].name;
4241
+ const _triggerWon = _ct && _ct.playerIdx === winner.idx;
4242
+ const _endSub = _ct
4243
+ ? (_triggerWon
4244
+ ? _ct.playerName + ' carried the Republic around four times — and the ledger agreed.'
4245
+ : _ct.playerName + ' rounded the Republic four times — but the heaviest ledger belonged to ' + _winnerName + '.')
4246
+ : 'After ' + HARD_CAP_ROUNDS + ' rounds, none of you had carried the Republic around four times. The strongest ledger takes the day.';
4216
4247
  let html = `
4217
4248
  <h2>${_endTitle} <span class="surface-id">H</span></h2>
4218
4249
  <div class="sub">${_endSub}</div>
@@ -4475,6 +4506,9 @@ document.addEventListener('keydown', (e) => {
4475
4506
  const params = new URLSearchParams(window.location.search);
4476
4507
  if (params.get('designer') === '1') document.body.classList.add('designer-mode');
4477
4508
  } catch (e) {}
4509
+ /* Always sync the circuit-target pill so designer chrome reflects the URL flag */
4510
+ const t = document.getElementById('circuitTargetPill');
4511
+ if (t) t.textContent = String(CIRCUIT_VICTORY.target);
4478
4512
  })();
4479
4513
 
4480
4514
  /* Sidebar collapse — defaults to COLLAPSED so the board takes the stage. Persists to localStorage. */
@@ -4705,14 +4739,40 @@ function scanLedgerForToasts() {
4705
4739
  pushToast({ cls:'rebellion', eyebrow:'Catastrophe', title:'Rebellion', body:'Public Resistance reaches twelve. Revenue upgrades destroyed; Resistance resets to 6.' });
4706
4740
  } else if (row.event === 'AUCTION WIN' || (row.event === 'AUCTION' && /wins/i.test(row.detail || ''))) {
4707
4741
  pushToast({ eyebrow:'Auction settled', title: row.detail || 'Auction won', body:'' });
4742
+ } else if (row.event === 'CIRCUIT') {
4743
+ /* v0.21 — quiet circuit progress toast. Foil eyebrow on the
4744
+ penultimate circuit so the player feels the noose tightening. */
4745
+ const T = CIRCUIT_VICTORY.target;
4746
+ const m = (row.detail || '').match(/circuit\s+(\d+)\s+of\s+(\d+)/i);
4747
+ const completed = m ? parseInt(m[1], 10) : 0;
4748
+ const oneShort = completed === T - 1;
4749
+ if (oneShort) {
4750
+ const actorName = row.actor === 'System' ? (STATE.players[STATE.activePlayerIndex]?.name || '') : row.actor;
4751
+ const subject = (row.detail || '').split(' is three')[0].split(' is two')[0].split(' finishes')[0] || actorName;
4752
+ pushToast({ cls:'pass', eyebrow:'Three deep',
4753
+ title: row.detail,
4754
+ body: subject + ' is one pass from closing the books.' });
4755
+ } else {
4756
+ pushToast({ eyebrow:'Board circuit', title: row.detail, body:'' });
4757
+ }
4708
4758
  } else if (row.event === 'MANDATE') {
4709
- pushToast({ cls:'pass', eyebrow:'The mandate is claimed', title: row.detail, body:'The Republic moves to Final Accounting.' });
4759
+ /* v0.21 fired when a player completes their target circuit. */
4760
+ const ct = STATE.circuitTrigger;
4761
+ const title = ct
4762
+ ? ct.playerName + ' has been around four times. The books close.'
4763
+ : row.detail;
4764
+ pushToast({ cls:'pass', eyebrow:'The books close', title,
4765
+ body:'Final Accounting decides the rest.' });
4710
4766
  } else if (row.event === 'GAME OVER') {
4711
- const hadMandate = STATE.mandateTrigger;
4712
- if (hadMandate) {
4713
- pushToast({ eyebrow:'Final Accounting', title: hadMandate.playerName + ' claims the mandate', body: hadMandate.influence + ' Influence at round ' + hadMandate.round + ', lead ' + hadMandate.lead + ' over second place.' });
4767
+ const hadCircuit = STATE.circuitTrigger;
4768
+ if (hadCircuit) {
4769
+ pushToast({ eyebrow:'Final Accounting',
4770
+ title: hadCircuit.playerName + ' rounded the Republic four times',
4771
+ body: hadCircuit.influence + ' Influence at round ' + hadCircuit.round + '. View the report.' });
4714
4772
  } else {
4715
- pushToast({ eyebrow:'Twelve rounds complete', title:'No founder secured a mandate', body:'The Republic decides by final accounting. View the report.' });
4773
+ pushToast({ eyebrow: HARD_CAP_ROUNDS + ' rounds in',
4774
+ title:'No one made it four times around',
4775
+ body:'The strongest ledger decides. View the report.' });
4716
4776
  }
4717
4777
  }
4718
4778
  /* Opponent narration — verbose play-by-play with profile-flavored voice */
@@ -4805,21 +4865,19 @@ function buildLapRecap(lap) {
4805
4865
  const youCash = STATE.players[0].cash;
4806
4866
  const sentences = [];
4807
4867
  sentences.push('Round ' + lap + ' closes.');
4808
- /* Mandate status from round MANDATE.minRound onward */
4809
- if (lap >= MANDATE.minRound) {
4810
- const scored = STATE.players.map((p, idx) => ({ idx, name: p.name, total: scorePlayer(STATE, idx).total }));
4811
- const sorted = scored.slice().sort((a, b) => b.total - a.total);
4812
- const top = sorted[0], second = sorted[1];
4813
- if (top.total === second.total) {
4814
- sentences.push(top.name + ' and ' + second.name + ' are tied at ' + top.total + ' Influence — no mandate yet.');
4815
- } else if (top.total >= MANDATE.threshold && (top.total - second.total) >= MANDATE.lead) {
4816
- sentences.push(top.name + ' has ' + top.total + ' Influence and leads by ' + (top.total - second.total) + '. Final Accounting begins.');
4868
+ /* v0.21 circuit progress instead of mandate status */
4869
+ const circuitLeader = STATE.players
4870
+ .map((p, idx) => ({ idx, name: p.name, circuits: p.circuitsCompleted || 0 }))
4871
+ .sort((a, b) => b.circuits - a.circuits)[0];
4872
+ const T = CIRCUIT_VICTORY.target;
4873
+ if (circuitLeader && circuitLeader.circuits > 0) {
4874
+ const tied = STATE.players.filter(p => (p.circuitsCompleted || 0) === circuitLeader.circuits).length > 1;
4875
+ if (circuitLeader.circuits === T - 1 && !tied) {
4876
+ sentences.push(circuitLeader.name + ' is three deep one more pass and the books close.');
4877
+ } else if (tied) {
4878
+ sentences.push('The leaders are tied at ' + circuitLeader.circuits + ' circuits each.');
4817
4879
  } else {
4818
- const lead = top.total - second.total;
4819
- const need = [];
4820
- if (top.total < MANDATE.threshold) need.push((MANDATE.threshold - top.total) + ' more Influence');
4821
- if (lead < MANDATE.lead) need.push((MANDATE.lead - lead) + ' more lead');
4822
- sentences.push(top.name + ' leads with ' + top.total + ' Influence, but ' + need.join(' and ') + ' — no mandate yet.');
4880
+ sentences.push(circuitLeader.name + ' leads with ' + circuitLeader.circuits + ' circuits.');
4823
4881
  }
4824
4882
  }
4825
4883
  if (passed.length > 0) {
@@ -4845,7 +4903,7 @@ function showLapRecap(lapEnded) {
4845
4903
  if (!STATE || STATE.status === 'gameOver') return;
4846
4904
  const overlay = document.getElementById('lapRecapOverlay');
4847
4905
  if (!overlay) return;
4848
- const title = 'Round ' + lapEnded + ' of ' + TOTAL_ROUNDS;
4906
+ const title = 'Round ' + lapEnded + (lapEnded >= LATE_REPUBLIC_START ? ' · Late Republic' : '');
4849
4907
  const sub = 'A federalist accounting';
4850
4908
  const body = buildLapRecap(lapEnded);
4851
4909
  document.getElementById('lapRecapTitle').textContent = title;
@@ -5023,7 +5081,10 @@ function buildRepublicSummary(state) {
5023
5081
 
5024
5082
  const paras = [];
5025
5083
  /* Para 1 — verdict + headline numbers */
5026
- let p1 = 'After twelve rounds the republic’s books close. ';
5084
+ const _ct = state.circuitTrigger;
5085
+ let p1 = _ct
5086
+ ? ('At round ' + _ct.round + ', ' + _ct.playerName + ' carried the Republic around for the fourth time, and the books closed. ')
5087
+ : ('After ' + state.lap + ' rounds, none of you had carried the Republic around four times. The books closed anyway, and the strongest ledger took the day. ');
5027
5088
  if (won) {
5028
5089
  p1 += 'You hold the largest Influence position, with ' + score.total + ' points against ' + state.finalScores[1].total + ' for Hamilton and ' + state.finalScores[2].total + ' for Morris. ';
5029
5090
  } else {
@@ -5141,11 +5202,15 @@ function hideResumePill() { document.getElementById('resumePill').classList.add(
5141
5202
 
5142
5203
  function loadFromPayload(payload) {
5143
5204
  if (payload && payload.version === 'v0.18-candidate') {
5144
- showIoPill('This save is from an earlier game length and cannot be loaded. Start a new game to play the 12-round model.', true);
5205
+ showIoPill('This save is from an earlier game length and cannot be loaded. Start a new game to play the circuit-victory model.', true);
5145
5206
  return false;
5146
5207
  }
5147
5208
  if (payload && payload.version === 'v0.19-pacing-candidate') {
5148
- showIoPill('This save is from before the mandate model and cannot be loaded. Start a new game to play the mandate victory candidate.', true);
5209
+ showIoPill('This save is from before the circuit-victory model and cannot be loaded. Start a new game.', true);
5210
+ return false;
5211
+ }
5212
+ if (payload && payload.version === 'v0.20-mandate-candidate') {
5213
+ showIoPill('This save is from the withdrawn mandate-victory model and cannot be loaded. Start a new game to play the circuit-victory candidate.', true);
5149
5214
  return false;
5150
5215
  }
5151
5216
  if (!payload || (payload.version !== SAVE_VERSION && payload.version !== 'v0.10' && payload.version !== 'v0.11-candidate' && payload.version !== 'v0.12-candidate' && payload.version !== 'v0.13-candidate' && payload.version !== 'v0.14-candidate' && payload.version !== 'v0.15-candidate' && payload.version !== 'v0.16-candidate' && payload.version !== 'v0.17-candidate')) {