Cycle 2
Batch cycle-002: 50 experiments and 1,500 simulations under parameters 0.1.0. 534 checks passed, 79 warned and 0 failed; 18 findings and 18 recommendations.
Model 0.1.0 · graph 0.2.0 · parameters 0.1.0
The batch
Every experiment the cycle ran: E4: 50 economies from reconstructed 1996 positions, played for 30 years along the pathways they actually pursued and the shocks they actually suffered, 30 seeds each, scored against the 2026 ratings. Chile and Poland are held out.
Experiment | Scenario | Position | Horizon | Simulations | Index | Rank | Tier 1 | Tier rank |
|---|---|---|---|---|---|---|---|---|
| South Korea, scripted, 30 years from 1996cycle-002.e4-kor · Backcast | 4 historical events | 1996 | 30 | 30 | 13.13 → 12.81(−0.31)12.80 to 12.82 | 21 → 22 | 0 → 2 | 22 → 8 |
| Estonia, scripted, 30 years from 1996cycle-002.e4-est · Backcast | 7 historical events | 1996 | 30 | 30 | 10.47 → 9.74(−0.72)9.71 to 9.76 | 44 → 48 | 0 → 1 | 50 → 19 |
| Singapore, scripted, 30 years from 1996cycle-002.e4-sgp · Backcast | 5 historical events | 1996 | 30 | 30 | 15.25 → 15.34(+0.09)15.33 to 15.35 | 10 → 9 | 6 → 6 | 2 → 2 |
| Ireland, scripted, 30 years from 1996cycle-002.e4-irl · Backcast | 4 historical events | 1996 | 30 | 30 | 11.93 → 12.10(+0.17)12.09 to 12.11 | 29 → 28 | 1 → 5 | 19 → 3 |
| United Arab Emirates, scripted, 30 years from 1996cycle-002.e4-are · Backcast | 5 historical events | 1996 | 30 | 30 | 9.78 → 9.77(−0.01)9.75 to 9.79 | 48 → 48 | 0 → 0 | 29 → 20 |
| Chile, scripted, 30 years from 1996cycle-002.e4-chl · Backcast (hold-out) | 6 historical events | 1996 | 30 | 30 | 10.29 → 9.36(−0.93)9.35 to 9.37 | 44 → 53 | 0 → 1 | 48 → 19 |
| Poland, scripted, 30 years from 1996cycle-002.e4-pol · Backcast (hold-out) | 6 historical events | 1996 | 30 | 30 | 9.92 → 9.54(−0.37)9.54 to 9.55 | 47 → 50 | 0 → 0 | 56 → 38 |
| China, scripted, 30 years from 1996cycle-002.e4-chn · Backcast | 9 historical events | 1996 | 30 | 30 | 9.13 → 5.49(−3.63)5.47 to 5.53 | 55 → 111 | 0 → 0 | 36 → 56 |
| India, scripted, 30 years from 1996cycle-002.e4-ind · Backcast | 12 historical events | 1996 | 30 | 30 | 8.92 → 5.92(−3.00)5.89 to 5.95 | 59 → 99 | 0 → 0 | 48 → 49 |
| Vietnam, scripted, 30 years from 1996cycle-002.e4-vnm · Backcast | 7 historical events | 1996 | 30 | 30 | 7.67 → 7.62(−0.05)7.61 to 7.62 | 71 → 71 | 0 → 0 | 83 → 65 |
| Taiwan, scripted, 30 years from 1996cycle-002.e4-twn · Backcast | 8 historical events | 1996 | 30 | 30 | 14.85 → 14.99(+0.13)14.98 to 14.99 | 13 → 12 | 2 → 5 | 11 → 3 |
| Israel, scripted, 30 years from 1996cycle-002.e4-isr · Backcast | 7 historical events | 1996 | 30 | 30 | 15.14 → 16.01(+0.87)16.00 to 16.03 | 11 → 6 | 2 → 7 | 9 → 2 |
| Finland, scripted, 30 years from 1996cycle-002.e4-fin · Backcast | 6 historical events | 1996 | 30 | 30 | 15.66 → 15.42(−0.24)15.41 to 15.42 | 7 → 9 | 5 → 6 | 3 → 2 |
| Malaysia, scripted, 30 years from 1996cycle-002.e4-mys · Backcast | 5 historical events | 1996 | 30 | 30 | 12.22 → 11.88(−0.34)11.88 to 11.89 | 27 → 30 | 0 → 0 | 22 → 22 |
| Indonesia, scripted, 30 years from 1996cycle-002.e4-idn · Backcast | 6 historical events | 1996 | 30 | 30 | 8.28 → 6.29(−1.99)6.26 to 6.30 | 64 → 93 | 0 → 0 | 68 → 64 |
| Brazil, scripted, 30 years from 1996cycle-002.e4-bra · Backcast | 4 historical events | 1996 | 30 | 30 | 11.43 → 11.78(+0.36)11.77 to 11.79 | 34 → 30 | 0 → 3 | 22 → 5 |
| Mexico, scripted, 30 years from 1996cycle-002.e4-mex · Backcast | 7 historical events | 1996 | 30 | 30 | 9.67 → 8.21(−1.45)8.20 to 8.22 | 49 → 64 | 0 → 0 | 56 → 47 |
| Türkiye, scripted, 30 years from 1996cycle-002.e4-tur · Backcast | 9 historical events | 1996 | 30 | 30 | 10.83 → 7.26(−3.57)7.25 to 7.29 | 36 → 76 | 0 → 0 | 26 → 52 |
| Russia, scripted, 30 years from 1996cycle-002.e4-rus · Backcast | 9 historical events | 1996 | 30 | 30 | 11.19 → 11.13(−0.06)11.10 to 11.15 | 35 → 35 | 1 → 4 | 16 → 5 |
| South Africa, scripted, 30 years from 1996cycle-002.e4-zaf · Backcast | 6 historical events | 1996 | 30 | 30 | 11.66 → 11.68(+0.02)11.67 to 11.68 | 32 → 32 | 0 → 0 | 30 → 20 |
| Nigeria, scripted, 30 years from 1996cycle-002.e4-nga · Backcast | 6 historical events | 1996 | 30 | 30 | 7.51 → 7.54(+0.03)7.54 to 7.55 | 73 → 73 | 0 → 0 | 70 → 49 |
| Kenya, scripted, 30 years from 1996cycle-002.e4-ken · Backcast | 9 historical events | 1996 | 30 | 30 | 7.31 → 4.18(−3.14)4.16 to 4.19 | 77 → 136 | 0 → 0 | 85 → 95 |
| Ethiopia, scripted, 30 years from 1996cycle-002.e4-eth · Backcast | 9 historical events | 1996 | 30 | 30 | 5.96 → 1.74(−4.22)1.72 to 1.77 | 97 → 192 | 0 → 0 | 100 → 183 |
| Rwanda, scripted, 30 years from 1996cycle-002.e4-rwa · Backcast | 5 historical events | 1996 | 30 | 30 | 5.13 → 3.50(−1.64)3.49 to 3.50 | 116 → 159 | 0 → 0 | 101 → 146 |
| Bangladesh, scripted, 30 years from 1996cycle-002.e4-bgd · Backcast | 6 historical events | 1996 | 30 | 30 | 6.47 → 4.17(−2.30)4.16 to 4.18 | 90 → 136 | 0 → 0 | 101 → 136 |
Showing 1–25 of 50 experiments · page 1 of 2
Checks
Every experiment is checked before anything is written about it: invariants, plausibility, saturation, degeneracy, dead parameters, calibration, regression, performance and vocabulary. A warning is a candidate finding.
534 of 619 checks passed; 85 warned and 0 failed.
InvariantStatus
- credits_conservedpass
- ledger_balancespass
- no_nanspass
- probe_replay_reproducespass
- scores_in_boundspass
Across the batch
- backcast_skill_calibration (warn): 48 calibration nations: simulated 2026 groups miss the ratings by 2.66 points on average, against 1.69 for assuming nothing changed (skill -0.57); bias -1.00; the change in each domain has the right sign 39 per cent of the time; index error 1.97 against 1.25
- backcast_skill_holdout (warn): 2 holdout nations: simulated 2026 groups miss the ratings by 2.53 points on average, against 1.64 for assuming nothing changed (skill -0.54); bias -1.95; the change in each domain has the right sign 22 per cent of the time; index error 2.05 against 1.40
- backcast_bias:financial_strength (warn): financial_strength: simulated -1.87 points of change on average against -0.04 observed (bias -1.83, error 3.32 against 1.79 for persistence, direction right 35 per cent)
- backcast_bias:information_and_influence (warn): information_and_influence: simulated -1.70 points of change on average against -0.03 observed (bias -1.67, error 2.73 against 1.93 for persistence, direction right 50 per cent)
- backcast_bias:national_security (warn): national_security: simulated -0.98 points of change on average against +0.04 observed (bias -1.02, error 2.29 against 1.78 for persistence, direction right 44 per cent)
- backcast_bias:production_and_innovation (warn): production_and_innovation: simulated -1.63 points of change on average against -0.04 observed (bias -1.59, error 2.92 against 1.50 for persistence, direction right 33 per cent)
- backcast_bias:trade_and_investment (warn): trade_and_investment: simulated -1.92 points of change on average against -0.04 observed (bias -1.88, error 3.35 against 1.76 for persistence, direction right 42 per cent)
- retired_words (warn): diagnosis.md: 'runs' 12 time(s), first near line 104; use 'simulations'
- retired_words (warn): diagnosis.md: 'policy' 7 time(s), first near line 75; use 'method'
- retired_words (warn): next-steps.md: 'runs' 1 time(s), first near line 172; use 'simulations'
- retired_words (warn): master-recommendation.md: 'per run' 1 time(s), first near line 25; use 'per simulation'
- retired_words (warn): master-recommendation.md: 'runs' 4 time(s), first near line 3; use 'simulations'
- retired_words (warn): master-recommendation.md: 'policy' 2 time(s), first near line 19; use 'method'
Experiment: checks that warned or failed72
- South Korea, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- Estonia, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- saturation_low (warn): 97% of simulations end with a group at 0 that did not start there (median 1 groups)
- Singapore, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 4 groups)
- Ireland, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 7 tiers (30 simulations above 2)
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 1 groups)
- United Arab Emirates, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 3 tiers (30 simulations above 2)
- Chile, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Poland, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- China, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 3 tiers (30 simulations above 2)
- Vietnam, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- Taiwan, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 1 groups)
- Israel, scripted, 30 years from 1996
- move_without_shock (warn): largest one-year move in a group with no shock landing: 3.48 points; 100% of simulations have one above 3
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (30 simulations above 2)
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 5 groups)
- Finland, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 3 groups)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Malaysia, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- Indonesia, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (30 simulations above 2)
- Brazil, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- Mexico, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (30 simulations above 2)
- Türkiye, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Russia, scripted, 30 years from 1996
- move_without_shock (warn): largest one-year move in a group with no shock landing: 3.65 points; 100% of simulations have one above 3
- tier_jump (warn): largest gain in one domain within five years: 11 tiers (30 simulations above 2)
- same_action (warn): the most repeated move (group and mode) appears in a median 63% of rounds
- South Africa, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- Nigeria, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (30 simulations above 2)
- same_action (warn): the most repeated move (group and mode) appears in a median 63% of rounds
- Kenya, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (9 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 3 groups)
- Ethiopia, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 5 groups)
- Rwanda, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 5 groups)
- Bangladesh, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 4 groups)
- Philippines, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- same_action (warn): the most repeated move (group and mode) appears in a median 77% of rounds
- Thailand, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Saudi Arabia, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 7 tiers (30 simulations above 2)
- Qatar, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Egypt, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 4 tiers (30 simulations above 2)
- Argentina, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 7 tiers (30 simulations above 2)
- Venezuela, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- Colombia, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- Peru, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 3 tiers (14 simulations above 2)
- same_action (warn): the most repeated move (group and mode) appears in a median 77% of rounds
- Japan, scripted, 30 years from 1996
- move_without_shock (warn): largest one-year move in a group with no shock landing: 3.67 points; 100% of simulations have one above 3
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 6 groups)
- Germany, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 9 groups)
- United Kingdom, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 3 groups)
- United States, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 3 groups)
- Italy, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 1 groups)
- Greece, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 8 tiers (30 simulations above 2)
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 2 groups)
- Czechia, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- Hungary, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 6 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Lithuania, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 7 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Ukraine, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
- Kazakhstan, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 2 groups)
- same_action (warn): the most repeated move (group and mode) appears in a median 73% of rounds
- Georgia, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 11 groups)
- Norway, scripted, 30 years from 1996
- saturation_high (warn): 100% of simulations end with a group at 20 that did not start there (median 3 groups)
- Botswana, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 5 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 2 groups)
- Zimbabwe, scripted, 30 years from 1996
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 32 groups)
- Sri Lanka, scripted, 30 years from 1996
- tier_jump (warn): largest gain in one domain within five years: 3 tiers (30 simulations above 2)
- saturation_low (warn): 100% of simulations end with a group at 0 that did not start there (median 1 groups)
Diagnosis
The loop's analyst's write-up of the cycle, as it was written. Cycles before the vocabulary of 20 October 2026 use the older words.
18 findings. Ordered by priority: invariants, calibration, degeneracy, plausibility, saturation, sensitivity, framework.
F-cycle-002-01: The backcast ends trade and investment 1.9 points too low against the 2026 ratings.
Layer: parameter. Class: calibration_error. Source: rules
Evidence: checks.parquet backcast_bias:trade_and_investment: trade_and_investment: simulated -1.92 points of change on average against -0.04 observed (bias -1.88, error 3.35 against 1.76 for persistence, direction right 42 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
Hypothesis: Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
Proposed change: Multiply the trade_and_investment class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Scope: parameter
Expected effect: |bias| in trade_and_investment under 1 point on the calibration nations, without worsening the hold-out.
Verification: Rerun the backcast; accept if backcast_bias:trade_and_investment passes and backcast_skill_holdout does not fall.
Risk: Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
F-cycle-002-02: The backcast ends financial strength 1.8 points too low against the 2026 ratings.
Layer: parameter. Class: calibration_error. Source: rules
Evidence: checks.parquet backcast_bias:financial_strength: financial_strength: simulated -1.87 points of change on average against -0.04 observed (bias -1.83, error 3.32 against 1.79 for persistence, direction right 35 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
Hypothesis: Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
Proposed change: Multiply the financial_strength class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Scope: parameter
Expected effect: |bias| in financial_strength under 1 point on the calibration nations, without worsening the hold-out.
Verification: Rerun the backcast; accept if backcast_bias:financial_strength passes and backcast_skill_holdout does not fall.
Risk: Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
F-cycle-002-03: The backcast ends information and influence 1.7 points too low against the 2026 ratings.
Layer: parameter. Class: calibration_error. Source: rules
Evidence: checks.parquet backcast_bias:information_and_influence: information_and_influence: simulated -1.70 points of change on average against -0.03 observed (bias -1.67, error 2.73 against 1.93 for persistence, direction right 50 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
Hypothesis: Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
Proposed change: Multiply the information_and_influence class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Scope: parameter
Expected effect: |bias| in information_and_influence under 1 point on the calibration nations, without worsening the hold-out.
Verification: Rerun the backcast; accept if backcast_bias:information_and_influence passes and backcast_skill_holdout does not fall.
Risk: Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
F-cycle-002-04: The backcast ends production and innovation 1.6 points too low against the 2026 ratings.
Layer: parameter. Class: calibration_error. Source: rules
Evidence: checks.parquet backcast_bias:production_and_innovation: production_and_innovation: simulated -1.63 points of change on average against -0.04 observed (bias -1.59, error 2.92 against 1.50 for persistence, direction right 33 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
Hypothesis: Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
Proposed change: Multiply the production_and_innovation class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Scope: parameter
Expected effect: |bias| in production_and_innovation under 1 point on the calibration nations, without worsening the hold-out.
Verification: Rerun the backcast; accept if backcast_bias:production_and_innovation passes and backcast_skill_holdout does not fall.
Risk: Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
F-cycle-002-05: The backcast ends national security 1.0 points too low against the 2026 ratings.
Layer: parameter. Class: calibration_error. Source: rules
Evidence: checks.parquet backcast_bias:national_security: national_security: simulated -0.98 points of change on average against +0.04 observed (bias -1.02, error 2.29 against 1.78 for persistence, direction right 44 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
Hypothesis: Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
Proposed change: Multiply the national_security class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Scope: parameter
Expected effect: |bias| in national_security under 1 point on the calibration nations, without worsening the hold-out.
Verification: Rerun the backcast; accept if backcast_bias:national_security passes and backcast_skill_holdout does not fall.
Risk: Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
F-cycle-002-06: The backcast does worse than assuming nothing changed since 1996.
Layer: mechanic. Class: calibration_error. Source: rules
Evidence: checks.parquet backcast_skill_calibration: 48 calibration nations: simulated 2026 groups miss the ratings by 2.66 points on average, against 1.69 for assuming nothing changed (skill -0.57); bias -1.00; the change in each domain has the right sign 39 per cent of the time; index error 1.97 against 1.25 [backcast_comparison].
Hypothesis: The model moves capability by the wrong amounts or in the wrong places: compare simulated with observed change by domain.
Proposed change: Treat the domain biases first; then test whether the credit calibration (income proportional to the cost of the starting position) lets low-rated nations catch up as history shows.
Scope: structural
Expected effect: backcast_skill_calibration above 0.
Verification: Rerun the backcast; accept if skill is positive on the calibration nations and not worse on the hold-out.
Risk: Over-fitting to reconstructed starting positions.
F-cycle-002-07: The same move is repeated in most rounds in 5 experiments.
Layer: harness. Class: degenerate_strategy. Source: rules
Evidence: checks.parquet same_action: e4-rus 63% of rounds; e4-nga 63% of rounds; e4-phl 77% of rounds; e4-per 77% of rounds; e4-kaz 73% of rounds [decision_sequence].
Hypothesis: The mirror-peer policy measures its gaps against current scores and ignores levels still in delivery, so it keeps funding a gap it has already paid to close; near its horizon greedy can only value fast (bought) moves, so it repeats them.
Proposed change: Count levels still in delivery when mirror_peer measures a gap and when greedy measures the room left below 20 (pipeline/sim/policies).
Scope: harness
Expected effect: same_action passes for the mirror-peer experiments.
Verification: Rerun e3-*-mirror-peer; accept if same_action passes for all five nations.
Risk: Changes the baselines' behaviour, so cycle-on-cycle comparison of those experiments breaks once.
F-cycle-002-08: Groups move more than 3 points in a year without any shock.
Layer: parameter. Class: implausible_dynamics. Source: rules
Evidence: 3 experiments: e4-jpn move_without_shock 3.67; e4-rus move_without_shock 3.65; e4-isr move_without_shock 3.48 (checks.parquet) [decision_sequence]. Of the 130 group-years that moved more than 3 points without a shock, investment arriving averaged 3.43 points and propagation +0.004: the moves are investment, not the graph.
Hypothesis: A move is a share of income, and income scales with the cost of holding the whole position, so the largest chunk buys several levels of a weak group in one year.
Proposed change: Lower chunk_large from 0.05 to 0.03 in data/sim/seed/params_v0_1.yaml (model).
Scope: parameter
Expected effect: move_without_shock at or below 3 points in the E3 experiments that fail it.
Verification: Rerun e4-isr, e4-jpn, e4-rus; accept if the share of failing experiments falls by half.
Risk: Slower growth for every nation and policy; less of the headroom is spent, so carried credits rise.
F-cycle-002-09: Domains gain more than two tiers within five years, including under the hold policy, which makes no moves.
Layer: methodology. Class: methodology_question. Source: rules
Evidence: 33 experiments: e4-rus 11 tiers; e4-grc 8 tiers; e4-arg 7 tiers; e4-irl 7 tiers; 0 of them hold experiments (checks.parquet) [tier_transitions].
Hypothesis: Below Tier 1 the Pareto layers of a domain are close together (a tolerance of a quarter of a point across 197 nations), so a small move crosses several layers. The heuristic's two tiers may suit coarse tiers, not Pareto layers.
Proposed change: Decide how the model should read tier movement: against the Index's published tier bands, with a wider tolerance, or not at all.
Scope: methodology
Expected effect: A tier measure that moves only when capability moves materially.
Verification: Rerun the cycle batch with the chosen measure; accept if tier_jump passes for the hold experiments.
Risk: Changing the tiering here would make results incomparable with the Index's own tiers.
F-cycle-002-10: Groups are driven to 20 and held there in many runs, across nations and policies.
Layer: parameter. Class: saturation. Source: rules
Evidence: 12 experiments above 25 per cent of runs: e4-sgp 100%; e4-irl 100%; e4-twn 100%; e4-isr 100%; e4-fin 100%. Groups most often driven to 20: National Resilience & Crisis Management (133), Semiconductors & Advanced Computing (120), Health System Capability (120), Energy Technologies (90), Communications & Digital Infrastructure (90) [trajectory_by_domain].
Hypothesis: Costs above the frontier (17) do not steepen enough to stop a well-funded nation buying the last levels.
Proposed change: Raise frontier_premium from 0.6 to 0.9 (model).
Scope: parameter
Expected effect: The share of runs ending with a group newly at 20 falls below 25 per cent in the greedy E3 experiments.
Verification: Rerun the E3 greedy experiments; accept if saturation_high passes in at least half of those that failed.
Risk: Frontier nations gain less; the frontier parameter is already the most sensitive.
F-cycle-002-11: Groups of low-rated nations are driven to 0 by shocks and stay there.
Layer: mechanic. Class: saturation. Source: rules
Evidence: e4-est: 97% of runs end with a group at 0 that did not start there (median 1 groups); e4-chl: 100% of runs end with a group at 0 that did not start there (median 1 groups); e4-fin: 100% of runs end with a group at 0 that did not start there (median 1 groups); e4-tur: 100% of runs end with a group at 0 that did not start there (median 1 groups) (checks.parquet) [shock_damage_by_group].
Hypothesis: Shock damage is in points regardless of the group's score, so a group rated near 1 loses everything to one shock; nothing rebuilds it unless the policy chooses it.
Proposed change: Scale a shock's points on each group by min(1, score / 10) in model.event_scale, so damage is proportional for weak groups.
Scope: structural
Expected effect: saturation_low passes for KEN.
Verification: Rerun e3-ken-*; accept if saturation_low passes and the shock tests of the scenario library are unchanged for nations above 10.
Risk: Departs from the scenario load test, which is in points; needs approval.
F-cycle-002-AI01: All nine domain decay rates produce simulated 1996-2026 changes below observed, with biases from -0.43 to -1.88.
Layer: parameter. Class: calibration_error. Source: ai:deepseek-v4-pro
Evidence: [backcast_by_domain] biases: trade_and_investment -1.88, financial_strength -1.83, information_and_influence -1.67, production_and_innovation -1.59, national_security -1.02; all others negative.
Hypothesis: The decay rates are uniformly overestimated as a family, not five independent domain errors.
Proposed change: Scale all built and bought decay rates by 0.75 and rerun the backcast before any domain-specific changes.
Scope: parameter
Expected effect: Domain biases move closer to zero and MAE falls below 1.5 for most domains.
Verification: Check backcast_by_domain bias and MAE; require no domain bias below -0.5.
Risk: May understate decay for domains with genuinely faster erosion; monitor whether high-end saturation worsens.
F-cycle-002-AI02: Low-rated nations lose capability because income is calibrated to the cost of the starting position, so they never accumulate credits for catch-up.
Layer: mechanic. Class: calibration_error. Source: ai:deepseek-v4-pro
Evidence: [research_notes] fastest risers observed +3.5 vs simulated -1.4; [backcast_by_nation] CHN bias -10.18, IND -6.60, KEN -2.76, GEO -4.76.
Hypothesis: The credit function's base calibration is the primary block to catch-up growth.
Proposed change: Replace base_credits with a country income term not tied to the 2026 score, or add a convergence bonus for groups below their historical potential.
Scope: structural
Expected effect: Emerging economies with low starting scores can sustain positive moves and reproduce observed rises.
Verification: Rerun backcast for CHN, IND, KEN, GEO; require biases above -1.5 and rising directions positive.
Risk: Could over-boost convergence and produce unrealistic growth in weak states; bound any bonus.
F-cycle-002-AI03: One-year moves exceed 3 points with no shock in ISR and RUS in 100% of runs.
Layer: parameter. Class: implausible_dynamics. Source: ai:deepseek-v4-pro
Evidence: [checks] move_without_shock: e4-isr largest one-year move 3.48, e4-rus 3.65, 100% above 3; [model_params] chunk_large 0.05.
Hypothesis: chunk_large=0.05 is too large relative to the 0-20 scale and convexity.
Proposed change: Lower chunk_large to 0.03.
Scope: parameter
Expected effect: Maximum no-shock one-year moves fall below 3 points.
Verification: Rerun move_without_shock check; require no run above 3.
Risk: May slow legitimate large investments; test medium-term responsiveness.
F-cycle-002-AI04: Five nations end 100% of runs with newly saturated groups at 20, medians 1-5 groups.
Layer: parameter. Class: saturation. Source: ai:deepseek-v4-pro
Evidence: [checks] saturation_high: e4-sgp median 4, e4-isr median 5, e4-fin median 3, e4-twn median 1, e4-irl median 1.
Hypothesis: frontier_premium=0.60 and convexity are too low to make top levels costly enough.
Proposed change: Raise frontier_premium to 1.0 and increase domain convexity by 0.5 for domains that saturate.
Scope: parameter
Expected effect: Fewer runs end with groups at 20; saturated_high_share falls below 0.5.
Verification: Rerun saturation_high check; compare distributions of final scores.
Risk: May create too much resistance and reduce top-end differentiation.
F-cycle-002-AI05: Weak groups are driven to 0 by shocks and remain there, producing low-saturation warnings.
Layer: mechanic. Class: saturation. Source: ai:deepseek-v4-pro
Evidence: [checks] saturation_low: e4-est 97%, e4-chl 100%, e4-tur 100%, e4-fin 100%; [batch_summary] ETH 5.96 to 1.74, ZWE 7.22 to 1.18.
Hypothesis: Shock points are applied proportionally to exposure but not to the group's current score, so low-score groups receive full damage.
Proposed change: Scale shock points by min(1, score/10) in event_scale before applying to each group.
Scope: structural
Expected effect: Low-score groups decline less sharply and are less likely to be pinned at 0.
Verification: Rerun saturation_low check; require no 100% low-saturation warnings and median new zeros below 1.
Risk: May understate vulnerability of already weak systems; test shock realism separately.
F-cycle-002-AI06: Domain tier jumps of 2-7 within five years are widespread, including under scripted policy, making the lexicographic tier rank a noisy objective.
Layer: methodology. Class: methodology_question. Source: ai:deepseek-v4-pro
Evidence: [checks] tier_jump warnings in at least 15 experiments: e4-irl 7 tiers, e4-kor 6, e4-est 6, e4-bra 6, e4-chl 5, e4-pol 5, e4-vnm 5, e4-mys 5, etc.; [batch_summary] tier_rank_p50 changes sharply for many.
Hypothesis: Pareto tiering with 0.25 tolerance is too fine for the model's noise and propagation lags.
Proposed change: Make the capability index and resilient score the primary objectives; report tier metrics as secondary with wider tolerance or only against published Index bands.
Scope: methodology
Expected effect: Objective comparisons become more stable and less driven by arbitrary tier thresholds.
Verification: Compare rank correlations between index and tier_rank across runs; check if tier_rank volatility exceeds index volatility.
Risk: Loses some policy nuance from Pareto dominance; may require stakeholder discussion.
F-cycle-002-AI07: No sensitivity analysis has been run for the model scalars.
Layer: harness. Class: data_gap. Source: ai:deepseek-v4-pro
Evidence: [sensitivity] not run.
Hypothesis: The loop cannot prioritise scalar fixes without local sensitivity information, so recommendations remain piecemeal.
Proposed change: Run +-20% one-at-a-time sensitivity on credit_eta, chunk_large, frontier_premium, decay rates, shock magnitudes and upside scale for one advanced (KOR or ISR) and one emerging (VNM or KEN) nation.
Scope: harness
Expected effect: Identifies which parameters dominate the observed failures and saturation.
Verification: Produce tornado plots of index, saturation and move_without_shock.
Risk: Computational cost; may require simplifying scenario runs.
What the batch taught (research notes, not defects)
Backcast: across 48 calibration nations, the correlation between observed and simulated change in the index from 1996 to 2026 is -0.10; the observed changes range from -5.6 to +6.5 points, the simulated from -6.0 to +0.9 [backcast_comparison].
Backcast: closest to history IRL (error 0.02), SAU (error 0.04), BRA (error 0.09), QAT (error 0.11); furthest CHN (observed +6.5, simulated -3.6), IND (observed +3.7, simulated -3.0), GEO (observed +1.1, simulated -3.9), TUR (observed +1.3, simulated -3.6) [backcast_comparison].
Backcast: the five fastest risers in history (CHN, IND, KOR, ARE, VNM) gained +3.5 index points on average; the model gives them -1.4. It has no mechanism for catch-up growth: income is calibrated to the cost of the starting position, so a nation that starts low stays poor in credits [backcast_comparison].
Across the batch, the graph's busiest edges are Economic Output & Productivity to Fiscal Capacity & Public Finance (-0.35 points a run); Fiscal Capacity & Public Finance to Social Infrastructure (-0.26 points a run); Fiscal Capacity & Public Finance to Force Generation & Mobilisation (-0.26 points a run) [top_edges].
Master recommendation
M-cycle-002, written by the reviewer (deepseek-v4-pro) from every recommendation of the cycle. It changes nothing until a person approves it in loop/approvals.yaml.
Cycle-003 package: fix credit feedback and decay bias, add score-proportional shock scaling, and curb saturation
The next run should first correct the credit-income feedback that locks low-rated nations into decline, then rescale uniform decay to remove the 1996-2026 downward bias, and finally add protections against implausible one-year moves, frontier saturation and weak-group collapse. The primary objectives become the capability index and resilient score; tier-based ranks are reported secondarily with wider tolerance. These changes are ordered so that the credit mechanism is fixed before decay rates are re-estimated, and shock scaling is introduced before tuning saturation penalties. The package draws on the strongest evidence from backcast bias, saturation warnings and move-without-shock checks, and includes a sensitivity run after acceptance. It does not alter 2026 starting scores or tune to hold-out nations.
- 1Methodologyobjectives
Use the capability index and resilient score as the primary acceptance objectives; report tier metrics as secondary with wider tolerance (e.g. domain tier tolerance 1.0 or only against published Index bands).
- 2Mechanicevent_scale
Scale each shock's group points by min(1, score/10) before applying, so weak groups suffer proportional damage and are not driven to 0.
- 3Parametercredit_eta
Reduce credit_eta from 1.0 to 0.7 to weaken the positive feedback that lowers income when the index falls below the 2026 start. Sets
credit_etato 0.7. - 4Parameterdomain decay rates built and bought
Scale all built and bought domain decay rates by 0.75 uniformly after the credit calibration is fixed. (Approved with a machine-readable spec: every decay rate, built, bought and partnered, in every domain class and override, x 0.75; partnered is scaled with the others so it stays between built and bought.)
- 5Parameterchunk_large
Lower chunk_large from 0.05 to 0.03 to cap plausible one-year capability moves. Sets
chunk_largeto 0.03. - 6Parameterfrontier_premium
Increase frontier_premium from 0.60 to 1.0 to raise the cost of pushing groups far beyond the frontier and reduce saturation at 20. Sets
frontier_premiumto 1. - 7Parametermaintenance_share
Increase maintenance_share from 0.50 to 0.75 so holding high scores consumes more income and saturation is less attractive. Sets
maintenance_shareto 0.75.
parameters 0.1.0 -> 0.1.1: model credit_eta: 1 -> 0.7; every decay rate x 0.75 (12 lines: built, bought and partnered); model chunk_large: 0.05 -> 0.03; model frontier_premium: 0.6 -> 1; model maintenance_share: 0.5 -> 0.75. Implemented by the agent before the run: 1. [methodology] objectives; 2. [mechanic] event_scale
Every recommendation, by layer
All the cycle's recommendations, from the rules and from the reviewer, each tied to the finding behind it. The master recommendation chooses among them.
The backcast ends trade and investment 1.9 points too low against the 2026 ratings.
Change. Multiply the trade_and_investment class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Verify. Rerun the backcast; accept if backcast_bias:trade_and_investment passes and backcast_skill_holdout does not fall.
not chosen for cycle 3
The finding behind it (F-cycle-002-01)
- Evidence
- checks.parquet backcast_bias:trade_and_investment: trade_and_investment: simulated -1.92 points of change on average against -0.04 observed (bias -1.88, error 3.35 against 1.76 for persistence, direction right 42 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
- Hypothesis
- Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
- Expected effect
- |bias| in trade_and_investment under 1 point on the calibration nations, without worsening the hold-out.
- Verification
- Rerun the backcast; accept if backcast_bias:trade_and_investment passes and backcast_skill_holdout does not fall.
- Risk
- Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
The backcast ends financial strength 1.8 points too low against the 2026 ratings.
Change. Multiply the financial_strength class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Verify. Rerun the backcast; accept if backcast_bias:financial_strength passes and backcast_skill_holdout does not fall.
not chosen for cycle 3
The finding behind it (F-cycle-002-02)
- Evidence
- checks.parquet backcast_bias:financial_strength: financial_strength: simulated -1.87 points of change on average against -0.04 observed (bias -1.83, error 3.32 against 1.79 for persistence, direction right 35 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
- Hypothesis
- Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
- Expected effect
- |bias| in financial_strength under 1 point on the calibration nations, without worsening the hold-out.
- Verification
- Rerun the backcast; accept if backcast_bias:financial_strength passes and backcast_skill_holdout does not fall.
- Risk
- Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
The backcast ends information and influence 1.7 points too low against the 2026 ratings.
Change. Multiply the information_and_influence class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Verify. Rerun the backcast; accept if backcast_bias:information_and_influence passes and backcast_skill_holdout does not fall.
not chosen for cycle 3
The finding behind it (F-cycle-002-03)
- Evidence
- checks.parquet backcast_bias:information_and_influence: information_and_influence: simulated -1.70 points of change on average against -0.03 observed (bias -1.67, error 2.73 against 1.93 for persistence, direction right 50 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
- Hypothesis
- Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
- Expected effect
- |bias| in information_and_influence under 1 point on the calibration nations, without worsening the hold-out.
- Verification
- Rerun the backcast; accept if backcast_bias:information_and_influence passes and backcast_skill_holdout does not fall.
- Risk
- Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
The backcast ends production and innovation 1.6 points too low against the 2026 ratings.
Change. Multiply the production_and_innovation class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Verify. Rerun the backcast; accept if backcast_bias:production_and_innovation passes and backcast_skill_holdout does not fall.
not chosen for cycle 3
The finding behind it (F-cycle-002-04)
- Evidence
- checks.parquet backcast_bias:production_and_innovation: production_and_innovation: simulated -1.63 points of change on average against -0.04 observed (bias -1.59, error 2.92 against 1.50 for persistence, direction right 33 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
- Hypothesis
- Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
- Expected effect
- |bias| in production_and_innovation under 1 point on the calibration nations, without worsening the hold-out.
- Verification
- Rerun the backcast; accept if backcast_bias:production_and_innovation passes and backcast_skill_holdout does not fall.
- Risk
- Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
The backcast ends national security 1.0 points too low against the 2026 ratings.
Change. Multiply the national_security class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml
Verify. Rerun the backcast; accept if backcast_bias:national_security passes and backcast_skill_holdout does not fall.
not chosen for cycle 3
The finding behind it (F-cycle-002-05)
- Evidence
- checks.parquet backcast_bias:national_security: national_security: simulated -0.98 points of change on average against +0.04 observed (bias -1.02, error 2.29 against 1.78 for persistence, direction right 44 per cent) (calibration nations; reconstructed 1996 starting positions) [backcast_comparison].
- Hypothesis
- Capability in this domain decays too fast for what nations actually spent on it, or costs too much to build: the model cannot reproduce the gains history shows.
- Expected effect
- |bias| in national_security under 1 point on the calibration nations, without worsening the hold-out.
- Verification
- Rerun the backcast; accept if backcast_bias:national_security passes and backcast_skill_holdout does not fall.
- Risk
- Changes every nation's trajectory in this domain, not only the backcast's; the reconstruction itself may be what is wrong.
The backcast does worse than assuming nothing changed since 1996.
Change. Treat the domain biases first; then test whether the credit calibration (income proportional to the cost of the starting position) lets low-rated nations catch up as history shows.
Verify. Rerun the backcast; accept if skill is positive on the calibration nations and not worse on the hold-out.
not chosen for cycle 3
The finding behind it (F-cycle-002-06)
- Evidence
- checks.parquet backcast_skill_calibration: 48 calibration nations: simulated 2026 groups miss the ratings by 2.66 points on average, against 1.69 for assuming nothing changed (skill -0.57); bias -1.00; the change in each domain has the right sign 39 per cent of the time; index error 1.97 against 1.25 [backcast_comparison].
- Hypothesis
- The model moves capability by the wrong amounts or in the wrong places: compare simulated with observed change by domain.
- Expected effect
- backcast_skill_calibration above 0.
- Verification
- Rerun the backcast; accept if skill is positive on the calibration nations and not worse on the hold-out.
- Risk
- Over-fitting to reconstructed starting positions.
The same move is repeated in most rounds in 5 experiments.
Change. Count levels still in delivery when mirror_peer measures a gap and when greedy measures the room left below 20 (pipeline/sim/policies).
Verify. Rerun e3-*-mirror-peer; accept if same_action passes for all five nations.
not chosen for cycle 3
The finding behind it (F-cycle-002-07)
- Evidence
- checks.parquet same_action: e4-rus 63% of rounds; e4-nga 63% of rounds; e4-phl 77% of rounds; e4-per 77% of rounds; e4-kaz 73% of rounds [decision_sequence].
- Hypothesis
- The mirror-peer policy measures its gaps against current scores and ignores levels still in delivery, so it keeps funding a gap it has already paid to close; near its horizon greedy can only value fast (bought) moves, so it repeats them.
- Expected effect
- same_action passes for the mirror-peer experiments.
- Verification
- Rerun e3-*-mirror-peer; accept if same_action passes for all five nations.
- Risk
- Changes the baselines' behaviour, so cycle-on-cycle comparison of those experiments breaks once.
Groups move more than 3 points in a year without any shock.
Change. Lower chunk_large from 0.05 to 0.03 in data/sim/seed/params_v0_1.yaml (model).
Verify. Rerun e4-isr, e4-jpn, e4-rus; accept if the share of failing experiments falls by half.
not chosen for cycle 3
The finding behind it (F-cycle-002-08)
- Evidence
- 3 experiments: e4-jpn move_without_shock 3.67; e4-rus move_without_shock 3.65; e4-isr move_without_shock 3.48 (checks.parquet) [decision_sequence]. Of the 130 group-years that moved more than 3 points without a shock, investment arriving averaged 3.43 points and propagation +0.004: the moves are investment, not the graph.
- Hypothesis
- A move is a share of income, and income scales with the cost of holding the whole position, so the largest chunk buys several levels of a weak group in one year.
- Expected effect
- move_without_shock at or below 3 points in the E3 experiments that fail it.
- Verification
- Rerun e4-isr, e4-jpn, e4-rus; accept if the share of failing experiments falls by half.
- Risk
- Slower growth for every nation and policy; less of the headroom is spent, so carried credits rise.
Domains gain more than two tiers within five years, including under the hold policy, which makes no moves.
Change. Decide how the model should read tier movement: against the Index's published tier bands, with a wider tolerance, or not at all.
Verify. Rerun the cycle batch with the chosen measure; accept if tier_jump passes for the hold experiments.
not chosen for cycle 3
The finding behind it (F-cycle-002-09)
- Evidence
- 33 experiments: e4-rus 11 tiers; e4-grc 8 tiers; e4-arg 7 tiers; e4-irl 7 tiers; 0 of them hold experiments (checks.parquet) [tier_transitions].
- Hypothesis
- Below Tier 1 the Pareto layers of a domain are close together (a tolerance of a quarter of a point across 197 nations), so a small move crosses several layers. The heuristic's two tiers may suit coarse tiers, not Pareto layers.
- Expected effect
- A tier measure that moves only when capability moves materially.
- Verification
- Rerun the cycle batch with the chosen measure; accept if tier_jump passes for the hold experiments.
- Risk
- Changing the tiering here would make results incomparable with the Index's own tiers.
Groups are driven to 20 and held there in many runs, across nations and policies.
Change. Raise frontier_premium from 0.6 to 0.9 (model).
Verify. Rerun the E3 greedy experiments; accept if saturation_high passes in at least half of those that failed.
not chosen for cycle 3
The finding behind it (F-cycle-002-10)
- Evidence
- 12 experiments above 25 per cent of runs: e4-sgp 100%; e4-irl 100%; e4-twn 100%; e4-isr 100%; e4-fin 100%. Groups most often driven to 20: National Resilience & Crisis Management (133), Semiconductors & Advanced Computing (120), Health System Capability (120), Energy Technologies (90), Communications & Digital Infrastructure (90) [trajectory_by_domain].
- Hypothesis
- Costs above the frontier (17) do not steepen enough to stop a well-funded nation buying the last levels.
- Expected effect
- The share of runs ending with a group newly at 20 falls below 25 per cent in the greedy E3 experiments.
- Verification
- Rerun the E3 greedy experiments; accept if saturation_high passes in at least half of those that failed.
- Risk
- Frontier nations gain less; the frontier parameter is already the most sensitive.
Groups of low-rated nations are driven to 0 by shocks and stay there.
Change. Scale a shock's points on each group by min(1, score / 10) in model.event_scale, so damage is proportional for weak groups.
Verify. Rerun e3-ken-*; accept if saturation_low passes and the shock tests of the scenario library are unchanged for nations above 10.
not chosen for cycle 3
The finding behind it (F-cycle-002-11)
- Evidence
- e4-est: 97% of runs end with a group at 0 that did not start there (median 1 groups); e4-chl: 100% of runs end with a group at 0 that did not start there (median 1 groups); e4-fin: 100% of runs end with a group at 0 that did not start there (median 1 groups); e4-tur: 100% of runs end with a group at 0 that did not start there (median 1 groups) (checks.parquet) [shock_damage_by_group].
- Hypothesis
- Shock damage is in points regardless of the group's score, so a group rated near 1 loses everything to one shock; nothing rebuilds it unless the policy chooses it.
- Expected effect
- saturation_low passes for KEN.
- Verification
- Rerun e3-ken-*; accept if saturation_low passes and the shock tests of the scenario library are unchanged for nations above 10.
- Risk
- Departs from the scenario load test, which is in points; needs approval.
All nine domain decay rates produce simulated 1996-2026 changes below observed, with biases from -0.43 to -1.88.
Change. Scale all built and bought decay rates by 0.75 and rerun the backcast before any domain-specific changes.
Verify. Check backcast_by_domain bias and MAE; require no domain bias below -0.5.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI01)
- Evidence
- [backcast_by_domain] biases: trade_and_investment -1.88, financial_strength -1.83, information_and_influence -1.67, production_and_innovation -1.59, national_security -1.02; all others negative.
- Hypothesis
- The decay rates are uniformly overestimated as a family, not five independent domain errors.
- Expected effect
- Domain biases move closer to zero and MAE falls below 1.5 for most domains.
- Verification
- Check backcast_by_domain bias and MAE; require no domain bias below -0.5.
- Risk
- May understate decay for domains with genuinely faster erosion; monitor whether high-end saturation worsens.
Low-rated nations lose capability because income is calibrated to the cost of the starting position, so they never accumulate credits for catch-up.
Change. Replace base_credits with a country income term not tied to the 2026 score, or add a convergence bonus for groups below their historical potential.
Verify. Rerun backcast for CHN, IND, KEN, GEO; require biases above -1.5 and rising directions positive.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI02)
- Evidence
- [research_notes] fastest risers observed +3.5 vs simulated -1.4; [backcast_by_nation] CHN bias -10.18, IND -6.60, KEN -2.76, GEO -4.76.
- Hypothesis
- The credit function's base calibration is the primary block to catch-up growth.
- Expected effect
- Emerging economies with low starting scores can sustain positive moves and reproduce observed rises.
- Verification
- Rerun backcast for CHN, IND, KEN, GEO; require biases above -1.5 and rising directions positive.
- Risk
- Could over-boost convergence and produce unrealistic growth in weak states; bound any bonus.
One-year moves exceed 3 points with no shock in ISR and RUS in 100% of runs.
Change. Lower chunk_large to 0.03.
Verify. Rerun move_without_shock check; require no run above 3.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI03)
- Evidence
- [checks] move_without_shock: e4-isr largest one-year move 3.48, e4-rus 3.65, 100% above 3; [model_params] chunk_large 0.05.
- Hypothesis
- chunk_large=0.05 is too large relative to the 0-20 scale and convexity.
- Expected effect
- Maximum no-shock one-year moves fall below 3 points.
- Verification
- Rerun move_without_shock check; require no run above 3.
- Risk
- May slow legitimate large investments; test medium-term responsiveness.
Five nations end 100% of runs with newly saturated groups at 20, medians 1-5 groups.
Change. Raise frontier_premium to 1.0 and increase domain convexity by 0.5 for domains that saturate.
Verify. Rerun saturation_high check; compare distributions of final scores.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI04)
- Evidence
- [checks] saturation_high: e4-sgp median 4, e4-isr median 5, e4-fin median 3, e4-twn median 1, e4-irl median 1.
- Hypothesis
- frontier_premium=0.60 and convexity are too low to make top levels costly enough.
- Expected effect
- Fewer runs end with groups at 20; saturated_high_share falls below 0.5.
- Verification
- Rerun saturation_high check; compare distributions of final scores.
- Risk
- May create too much resistance and reduce top-end differentiation.
Weak groups are driven to 0 by shocks and remain there, producing low-saturation warnings.
Change. Scale shock points by min(1, score/10) in event_scale before applying to each group.
Verify. Rerun saturation_low check; require no 100% low-saturation warnings and median new zeros below 1.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI05)
- Evidence
- [checks] saturation_low: e4-est 97%, e4-chl 100%, e4-tur 100%, e4-fin 100%; [batch_summary] ETH 5.96 to 1.74, ZWE 7.22 to 1.18.
- Hypothesis
- Shock points are applied proportionally to exposure but not to the group's current score, so low-score groups receive full damage.
- Expected effect
- Low-score groups decline less sharply and are less likely to be pinned at 0.
- Verification
- Rerun saturation_low check; require no 100% low-saturation warnings and median new zeros below 1.
- Risk
- May understate vulnerability of already weak systems; test shock realism separately.
Domain tier jumps of 2-7 within five years are widespread, including under scripted policy, making the lexicographic tier rank a noisy objective.
Change. Make the capability index and resilient score the primary objectives; report tier metrics as secondary with wider tolerance or only against published Index bands.
Verify. Compare rank correlations between index and tier_rank across runs; check if tier_rank volatility exceeds index volatility.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI06)
- Evidence
- [checks] tier_jump warnings in at least 15 experiments: e4-irl 7 tiers, e4-kor 6, e4-est 6, e4-bra 6, e4-chl 5, e4-pol 5, e4-vnm 5, e4-mys 5, etc.; [batch_summary] tier_rank_p50 changes sharply for many.
- Hypothesis
- Pareto tiering with 0.25 tolerance is too fine for the model's noise and propagation lags.
- Expected effect
- Objective comparisons become more stable and less driven by arbitrary tier thresholds.
- Verification
- Compare rank correlations between index and tier_rank across runs; check if tier_rank volatility exceeds index volatility.
- Risk
- Loses some policy nuance from Pareto dominance; may require stakeholder discussion.
No sensitivity analysis has been run for the model scalars.
Change. Run +-20% one-at-a-time sensitivity on credit_eta, chunk_large, frontier_premium, decay rates, shock magnitudes and upside scale for one advanced (KOR or ISR) and one emerging (VNM or KEN) nation.
Verify. Produce tornado plots of index, saturation and move_without_shock.
not chosen for cycle 3
The finding behind it (F-cycle-002-AI07)
- Evidence
- [sensitivity] not run.
- Hypothesis
- The loop cannot prioritise scalar fixes without local sensitivity information, so recommendations remain piecemeal.
- Expected effect
- Identifies which parameters dominate the observed failures and saturation.
- Verification
- Produce tornado plots of index, saturation and move_without_shock.
- Risk
- Computational cost; may require simplifying scenario runs.
The reviewer's review
What the reviewer (deepseek-v4-pro) made of the cycle, given the batch summary, the checks, the rule findings and two reports. Its proposals appear above and always wait for approval.
This batch of 47 scripted 30-year runs shows a model that is stable at the top but unable to reproduce historical catch-up and prone to corner-saturating group scores. The median capability index at the horizon is close to or above the 2026 start for most advanced economies (e.g. JPN 17.08 from 16.49, DEU 17.58 from 16.98, NOR 16.67 from 16.23) but below start for many emerging and frontier nations (CHN 5.49 from 9.13, IND 5.92 from 8.92, KEN 4.18 from 7.31, ETH 1.74 from 5.96) [batch_summary]. The backcast against 1996-2026 history confirms the failure: the correlation between observed and simulated index change is -0.10, and the five fastest historical risers gained +3.5 points on average while the model gives them -1.4 [backcast_comparison, research_notes]. Domain-level biases are negative for all nine domains, from -0.43 to -1.88 [backcast_by_domain]. Saturation warnings appear in both directions: 100% of runs end with a newly saturated high group in SGP, IRL, TWN, ISR and FIN, and 97-100% end with a newly saturated low group in EST, CHL, TUR and FIN [checks]. One-year moves above 3 points occur without any shock in ISR and RUS in 100% of runs [checks]. Tier jumps of 2-7 within five years are widespread [checks]. These distributions point to excessive decay and/or a self-reinforcing credit function, insufficient cost convexity near the frontier, and event damage that is disproportionate for weak groups. The experiment design is informative; the main question is whether the credit calibration and event scaling are the right frame for catch-up growth, not whether individual nations are tuned.
Stability at the top is differentiated
Most advanced economies hold or slightly improve their capability index over 30 years under scripted policy, but the USA is an exception with a median decline of about 0.79 points.
[batch_summary] JPN 16.49 to 17.08, DEU 16.98 to 17.58, NOR 16.23 to 16.67, GBR 17.25 to 17.50; USA 19.15 to 18.36.
Middle powers show two-way movement
Some middle powers improve materially, notably IRL (11.93 to 12.10), ISR (15.15 to 16.01) and BRA (11.43 to 11.78), while others decline, e.g. TUR (10.83 to 7.27) and MEX (9.67 to 8.22).
[batch_summary]
Propagation edges concentrate on fiscal and social domains
The graph's busiest edges transmit persistent negative changes from Economic Output to Fiscal Capacity and from Fiscal Capacity to Social Infrastructure and Force Generation, which may explain broad co-movement.
[top_edges] Economic Output to Fiscal Capacity -0.35 points per run; Fiscal Capacity to Social Infrastructure -0.26; Fiscal Capacity to Force Generation -0.26.
Some low-rated nations are resilient to collapse
Not all low-start nations decline: NGA (7.51 to 7.54), ZAF (11.66 to 11.68) and VNM (7.67 to 7.62) hold close to start, showing the model's exposure and buffer effects can offset decay.
[batch_summary]
Critique of a rule finding
F-cycle-002-01 to F-cycle-002-05: These five domain decay reductions are premature as separate fixes; the domain biases are all negative and likely share the same credit/income feedback, so a joint decay scaling after fixing the credit calibration is more parsimonious.
Critique of a rule finding
F-cycle-002-10: Raising frontier_premium from 0.6 to 0.9 is too weak given 100% saturation_high warnings in five nations; a stronger increase to 1.0 or a convexity increase is needed.
Parameter judgements
The reviewer's verdict on each parameter or family of parameters: too high, too low or about right, with what it would set instead. The 2026 starting scores are fixed inputs and are never judged.
| Parameter | Now | Verdict | Suggested | Why |
|---|---|---|---|---|
| domain decay rates by class | built/bought: critical_technology 0.05/0.09, financial_strength 0.02/0.05, governance_and_integrity 0.01/0.03, human_capital 0.015/0.04, information_and_influence 0.03/0.06, national_security 0.04/0.07, production_and_innovation 0.03/0.06, strategic_infrastructure 0.025/0.04, trade_and_investment 0.03/0.06 | Too high | scale all built and bought decay rates by 0.75, after fixing the credit calibration | Every domain simulates lower 1996-2026 change than observed; the largest biases are in trade_and_investment (-1.88), financial_strength (-1.83), information_and_influence (-1.67) and production_and_innovation (-1.59). A uniform over-decay is more parsimonious than five separate domain fixes.[backcast_by_domain] |
| credit function coefficients | credit_eta 1.0, headroom_base 0.10, headroom_slope 0.30 | Too high | reduce credit_eta to 0.7 or 0.5 and re-examine base credit calibration; consider adding a floor independent of E/E0 | With credit_eta=1.0, any capability index below its 2026 start lowers income proportionally, creating a positive feedback that locks low-rated nations into decline.[batch_summary] CHN 9.13 to 5.49, IND 8.92 to 5.92, KEN 7.31 to 4.18; [backcast_by_nation] CHN bias -10.18, IND -6.60; [research_notes] no mechanism for catch-up growth. |
| shock magnitudes | shock_magnitude_low 0.60, shock_magnitude_high 1.20 | About right | keep magnitude draws, but scale event points by min(1, score/10) before applying to each group | The raw magnitudes are plausible for capable states, but the batch shows weak groups are driven to 0 and stay there; the defect is likely in the lack of score-dependent scaling rather than the draw range.[checks] saturation_low in e4-est, e4-chl, e4-tur, e4-fin; [batch_summary] ETH 5.96 to 1.74, ZWE 7.22 to 1.18, GEO 6.45 to 2.53. |
| upside magnitudes and probability | upside_magnitude_low 0.30, upside_magnitude_high 0.60, upside_probability_scale 0.50 | Too low | raise upside_probability_scale to 1.0 and test high magnitude 0.75 | The model systematically under-produces upward change; the fastest historical risers are simulated as falling on average. Upside events are only half as likely as the scenario library implies and have lower magnitude than shocks.[research_notes] fastest risers observed +3.5, simulated -1.4; [model_params] upside_probability_scale 0.50. |
| frontier_premium and convexity | frontier_premium 0.60, convexity 2.0-2.5 by domain | Too low | raise frontier_premium to 1.0 and increase convexity by 0.5 for domains with saturation_high warnings | The current cost curvature is insufficient to prevent five of 47 nations from ending every run with newly saturated groups at 20, often 3-5 groups per run.[checks] saturation_high in e4-sgp, e4-irl, e4-twn, e4-isr, e4-fin; [model_params] frontier_premium 0.60. |
| maintenance_share | 0.50 | Too low | raise to 0.75 | Maintenance is only half the decay-weighted build cost, so holding a group at 20 is too cheap and does not consume enough income to prevent saturating high scores.[checks] saturation_high in e4-isr median 5 groups, e4-sgp median 4 groups, e4-fin median 3 groups; [model_params] maintenance_share 0.50. |
| chunk_large | 0.05 | Too high | lower to 0.03 | A 5% of income chunk allows one-year moves above 3 points even without shocks, which is implausible for capability groups on a 0-20 scale.[checks] move_without_shock in e4-isr 3.48 points, e4-rus 3.65 points, 100% of runs above 3; [model_params] chunk_large 0.05. |
Research notes
What the cycle taught that is not a defect, as written at the time.
- Backcast: across 48 calibration nations, the correlation between observed and simulated change in the index from 1996 to 2026 is -0.10; the observed changes range from -5.6 to +6.5 points, the simulated from -6.0 to +0.9 [backcast_comparison].
- Backcast: closest to history IRL (error 0.02), SAU (error 0.04), BRA (error 0.09), QAT (error 0.11); furthest CHN (observed +6.5, simulated -3.6), IND (observed +3.7, simulated -3.0), GEO (observed +1.1, simulated -3.9), TUR (observed +1.3, simulated -3.6) [backcast_comparison].
- Backcast: the five fastest risers in history (CHN, IND, KOR, ARE, VNM) gained +3.5 index points on average; the model gives them -1.4. It has no mechanism for catch-up growth: income is calibrated to the cost of the starting position, so a nation that starts low stays poor in credits [backcast_comparison].
- Across the batch, the graph's busiest edges are Economic Output & Productivity to Fiscal Capacity & Public Finance (-0.35 points a run); Fiscal Capacity & Public Finance to Social Infrastructure (-0.26 points a run); Fiscal Capacity & Public Finance to Force Generation & Mobilisation (-0.26 points a run) [top_edges].
Every check that warned or failed
From the loop's history, with the check's category, for filtering.
79 of 79 checks
Check | Category | Experiment | Status | Detail |
|---|---|---|---|---|
| tier_jump | plausibility | e4-kor | warn | largest gain in one domain within five years: 6 tiers (30 simulations above 2) |
| tier_jump | plausibility | e4-est | warn | largest gain in one domain within five years: 6 tiers (30 simulations above 2) |
| saturation_low | saturation | e4-est | warn | 97% of simulations end with a group at 0 that did not start there (median 1 groups) |
| saturation_high | saturation | e4-sgp | warn | 100% of simulations end with a group at 20 that did not start there (median 4 groups) |
| tier_jump | plausibility | e4-irl | warn | largest gain in one domain within five years: 7 tiers (30 simulations above 2) |
| saturation_high | saturation | e4-irl | warn | 100% of simulations end with a group at 20 that did not start there (median 1 groups) |
| tier_jump | plausibility | e4-are | warn | largest gain in one domain within five years: 3 tiers (30 simulations above 2) |
| tier_jump | plausibility | e4-chl | warn | largest gain in one domain within five years: 5 tiers (30 simulations above 2) |
| saturation_low | saturation | e4-chl | warn | 100% of simulations end with a group at 0 that did not start there (median 1 groups) |
| tier_jump | plausibility | e4-pol | warn | largest gain in one domain within five years: 5 tiers (30 simulations above 2) |
| tier_jump | plausibility | e4-chn | warn | largest gain in one domain within five years: 3 tiers (30 simulations above 2) |
| tier_jump | plausibility | e4-vnm | warn | largest gain in one domain within five years: 5 tiers (30 simulations above 2) |
| saturation_high | saturation | e4-twn | warn | 100% of simulations end with a group at 20 that did not start there (median 1 groups) |
| move_without_shock | plausibility | e4-isr | warn | largest one-year move in a group with no shock landing: 3.48 points; 100% of simulations have one above 3 |
| tier_jump | plausibility | e4-isr | warn | largest gain in one domain within five years: 4 tiers (30 simulations above 2) |
| saturation_high | saturation | e4-isr | warn | 100% of simulations end with a group at 20 that did not start there (median 5 groups) |
| saturation_high | saturation | e4-fin | warn | 100% of simulations end with a group at 20 that did not start there (median 3 groups) |
| saturation_low | saturation | e4-fin | warn | 100% of simulations end with a group at 0 that did not start there (median 1 groups) |
| tier_jump | plausibility | e4-mys | warn | largest gain in one domain within five years: 5 tiers (30 simulations above 2) |
| tier_jump | plausibility | e4-idn | warn | largest gain in one domain within five years: 4 tiers (30 simulations above 2) |
Showing 1–20 of 79 checks · page 1 of 4