Loop

Ledger

The running state of the loop: every cycle, the instructions from the last one, the master recommendations and their status, and the hypotheses under test. It is read first at the start of a cycle and written last; this page shows it as the last cycle left it.

loop/ledger.md

As written by the loop. Entries from before the vocabulary of 20 October 2026 keep the words they were written in.

The running state of the recursive system. Read first at the start of a cycle, written last.

Cycles

cyclebatchdateparametersgraphchecks pass / warn / failfindingsimplemented
1cycle-0012026-10-200.1.0 -> 0.1.00.2.0251 / 69 / 023none
2cycle-0022026-10-200.1.0 -> 0.1.00.2.0534 / 79 / 018none
3cycle-0032026-10-200.1.0 -> 0.1.10.2.0661 / 52 / 017M-cycle-002

Instructions from the last cycle (cycle-003)

NS-cycle-003-01 [parameter, proposed]: Multiply the trade_and_investment class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml

NS-cycle-003-02 [parameter, proposed]: Multiply the financial_strength class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml

NS-cycle-003-03 [parameter, proposed]: Multiply the information_and_influence class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml

NS-cycle-003-04 [parameter, proposed]: Multiply the production_and_innovation class's decay rates by 0.75 in data/sim/seed/params_v0_1.yaml

NS-cycle-003-05 [structural, proposed]: Treat the domain biases first

NS-cycle-003-06 [harness, proposed]: Count levels still in delivery when mirror_peer measures a gap and when greedy measures the room left below 20

NS-cycle-003-07 [parameter, proposed]: Lower chunk_large from 0.03 to 0.018 in data/sim/seed/params_v0_1.yaml

NS-cycle-003-08 [methodology, proposed]: Decide how the model should read tier movement: against the Index's published tier bands, with a wider tolerance, or not at all

NS-cycle-003-09 [parameter, proposed]: Raise frontier_premium from 1 to 1.5

NS-cycle-003-10 [harness, proposed]: Find the change and either record it with a version bump or revert it

NS-cycle-003-11 [parameter, proposed]: Multiply the built and bought decay rates for these four classes by 0.75 in data/sim/seed/params_v0_1.yaml

NS-cycle-003-12 [structural, proposed]: Add a catch-up term to the income calculation: an additive bonus scaled by distance below the frontier, gated by governance/human capital or

NS-cycle-003-13 [parameter, proposed]: Reduce chunk_large from 0.03 to 0.018 in params_v0_1.yaml

NS-cycle-003-14 [parameter, proposed]: Raise frontier_premium from 1.0 to 1.5 in params_v0_1.yaml

NS-cycle-003-15 [methodology, proposed]: Use the capability index and rank as primary objectives

NS-cycle-003-16 [harness, proposed]: Count pipeline credits

Master recommendations

Approve or reject them in loop/approvals.yaml (masters:). Nothing changes until one is approved.

M-cycle-001 [proposed, reviewer:deepseek-v4-pro]: Fix measurement and policy degeneracy before parameter reductions: backcast, pipeline-aware moves, objective demotion, shock scaling, and two parameter steps

M-cycle-002 [implemented, reviewer:deepseek-v4-pro]: Cycle-003 package: fix credit feedback and decay bias, add score-proportional shock scaling, and curb saturation. 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

M-cycle-003 [proposed, reviewer:deepseek-v4-pro]: Master recommendation: fix backcast calibration, add catch-up income, and curb saturation and degenerate moves

Hypotheses under test

none

Settled

none yet

Flagged for the framework review

F-cycle-001-11: Monetary & Currency Capability cannot be given a defensible cost, decay or vulnerability.

F-cycle-001-12: Economic Leverage & Dependence cannot be given a defensible cost, decay or vulnerability.

F-cycle-001-13: Nuclear Deterrence cannot be given a defensible cost, decay or vulnerability.

F-cycle-001-14: Early Childhood Development cannot be given a defensible cost, decay or vulnerability.

F-cycle-001-15: Diaspora & Global Communities cannot be given a defensible cost, decay or vulnerability.

F-cycle-001-AI08: Several capability groups lack a defensible cost, decay or vulnerability as investment targets.

F-cycle-003-AI07: The model currently produces broad declines for most developing nations but saturates high-rated groups; this is coherent with a maintenance model, not a development model.

Calibration and hold-out

No backcast has been simulated: there are no reconstructed historical starting states yet (finding class data_gap). The stop conditions (hold-out error not improving for three cycles, or calibration improving while the hold-out worsens) cannot be evaluated until it does.

Parameter versions

Every version of the parameter tables, with what changed and the evidence for it.

  • 0.1.0 · 2026-10-20

    Structural seed values for every table, by domain class with single-group overrides.

    None. The first version is structural; no experiment has yet been run against it.

  • 0.1.1 · 2026-10-20

    M-cycle-002: 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

    Master recommendation M-cycle-002, approved: Cycle-003 package: fix credit feedback and decay bias, add score-proportional shock scaling, and curb saturation

Every finding

All findings of all cycles, from the rules and from the reviewer. Open one for its evidence, hypothesis and risk.

58 of 58 findings

Finding
Class
Layer
Source
Cycle
No backcast can be scored: there are no reconstructed historical starting states.F-cycle-001-01

Proposed. Reconstruct nation_states rows for KOR 1990, EST 1995, ARE 2005, SGP 1990 and IRL 1995 (calibration) and CHL and POL (hold-out) from the GINC Research, Patents, Trade and Infrastructure indices, with provenance = reconstructed and a confidence grade; add scripted historical shock schedules and an E4 batch.

Evidence
checks.parquet backcast: nation_states holds year 2026 only; backcast_comparison returns no rows.
Hypothesis
The calibration loop needs starting states for the five calibration nations and the two hold-outs before 2026.
Expected effect
The backcast check reports an error by nation and domain.
Verification
Run E4; accept if the backcast check returns an error for all seven nations.
Risk
Reconstructed data is itself uncertain: every backcast report must carry the caveat. Never tune to CHL or POL.
data gapHarness and dataRules1
Greedy marginal is the best policy on every objective for 3 of the five E3 nations.F-cycle-001-02

Proposed. Add a sequencing-aware comparison policy to the E3 batch (greedy with a two-round lookahead on the same value model) so that the bar a solver must beat is tested against a policy that can exploit lags.

Evidence
checks.parquet greedy_dominates: BRA: greedy is best on 4 of 4 objectives; EST: greedy is best on 4 of 4 objectives; KEN: greedy is best on 4 of 4 objectives [baseline_comparison].
Hypothesis
The other baselines are deliberately naive, so greedy's lead says little about whether the model rewards sequencing. Its value model is the only one that sees the graph's long-run spillovers.
Expected effect
A comparison that can tell whether order matters: lookahead beats greedy where lags matter.
Verification
Run E3 with the lookahead policy; accept if it differs from greedy on at least one objective for at least two nations.
Risk
Adds run time; a lookahead policy multiplies policy cost by the branching factor.
degenerate strategyHarness and dataRules1
The same move is repeated in most rounds in 3 experiments.F-cycle-001-03

Proposed. Count levels still in delivery when mirror_peer measures a gap and when greedy measures the room left below 20 (pipeline/sim/policies).

Evidence
checks.parquet same_action: e3-kor-mirror-peer 95% of rounds; e3-ken-mirror-peer 65% of rounds; e3-ken-greedy-marginal-10y 80% 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.
degenerate strategyHarness and dataRules1
Groups move more than 3 points in a year without any shock.F-cycle-001-04

Proposed. Lower chunk_large from 0.05 to 0.03 in data/sim/seed/params_v0_1.yaml (model).

Evidence
7 experiments: e3-kor-random move_without_shock 3.84; e3-gbr-mirror-peer move_without_shock 3.33; e3-kor-greedy-marginal move_without_shock 3.20; e3-gbr-greedy-marginal move_without_shock 3.20; e3-gbr-random move_without_shock 3.18 (checks.parquet) [decision_sequence]. Of the 135 group-years that moved more than 3 points without a shock, investment arriving averaged 3.11 points and propagation -0.000: 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 e3-gbr-greedy-marginal, e3-gbr-mirror-peer, e3-gbr-random; 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.
implausible dynamicsParameterRules1
Domains gain more than two tiers within five years, including under the hold policy, which makes no moves.F-cycle-001-05

Proposed. Decide how the model should read tier movement: against the Index's published tier bands, with a wider tolerance, or not at all.

Evidence
22 experiments: e3-bra-greedy-marginal 6 tiers; e3-kor-greedy-marginal-30y 6 tiers; e3-kor-greedy-marginal-10y 6 tiers; e3-kor-greedy-marginal 6 tiers; 3 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.
methodology questionMethodologyRules1
The tier rank picks the same best policy as the capability index for 5 of 5 nations, and ties policies for 3.F-cycle-001-06

Proposed. Keep tiers as a reported outcome; use the capability index (the mean of domains of groups) and score_sum as the objectives policies optimise and are ranked by; review whether the tier rank should be dropped from the objective set.

Evidence
batch_summary: median tier rank and median index by nation and policy, 20-year E3 experiments [objective_distributions]. Tier rank has whole-number values over 197 nations and frozen rivals, so it is coarse at the top and saturates once a nation leads.
Hypothesis
As an objective, the lexicographic tier rank mostly repeats the index where they agree and adds noise where they tie; its value is in describing position (which domains lead), not in choosing between policies.
Expected effect
Policy rankings stop depending on ties in the tier rank.
Verification
Rerun E3; compare policy rankings by index and by tier rank.
Risk
Dropping tier rank from the objectives loses the brief's lexicographic reward, which the search layer was designed around.
methodology questionMethodologyRules1
Groups are driven to 20 and held there in many runs, across nations and policies.F-cycle-001-07

Proposed. Raise frontier_premium from 0.6 to 0.9 (model).

Evidence
8 experiments above 25 per cent of runs: e3-gbr-greedy-marginal 96%; e3-kor-greedy-marginal 95%; e3-kor-greedy-marginal-10y 92%; e3-kor-mirror-peer 76%; e3-gbr-random 65%. Groups most often driven to 20: Technical & Vocational Skills (321), Advanced Education (223), Foundational Education (215), Digital & AI Competence (209), Lifelong Learning & Reskilling (174) [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.
saturationParameterRules1
Groups of low-rated nations are driven to 0 by shocks and stay there.F-cycle-001-08

Proposed. Scale a shock's points on each group by min(1, score / 10) in model.event_scale, so damage is proportional for weak groups.

Evidence
e3-ken-hold: 31% of runs end with a group at 0 that did not start there (median 0 groups); e3-ken-mirror-peer: 26% of runs end with a group at 0 that did not start there (median 0 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.
saturationMechanicRules1
23 of the model's scalar parameters move no objective by more than 0.5 per cent at +-20 per cent.F-cycle-001-09

Proposed. Run the sensitivity sweep across three nations (KOR, EST, KEN), two policies (hold, greedy) and a stress scenario before removing any parameter; remove only those still inert.

Evidence
checks.parquet dead_parameter: maintenance_share, upstream_lambda, depth_gain, depth_erosion, depth0_intercept, depth0_slope, partner_vulnerability, propagation_floor, carry_decay, headroom_base, headroom_slope, chunk_small, chunk_medium, chunk_large, shock_magnitude_low, shock_magnitude_high, upside_magnitude_low, upside_magnitude_high, upside_probability_scale, absorption_max, credit_effect_high, credit_effect_medium, credit_effect_low (sensitivity.parquet; one nation, greedy, 12 seeds).
Hypothesis
The sweep runs one nation under one policy, which exercises few mechanics: shock magnitudes matter little to a rich nation, chunk sizes change how lumpy spending is but not how much, and depth acts only through vulnerability. Most are untested rather than dead.
Expected effect
A list of parameters inert across the wider sweep, each then removed or justified.
Verification
The next scheduled sensitivity batch.
Risk
Removing a parameter is a model change and bumps the minor version.
dead parameterHarness and dataRules1
frontier dominates the model's sensitivity.F-cycle-001-10

Proposed. Put frontier to the expert network for an elicited range, and report results at both ends.

Evidence
sensitivity.parquet: +-20 per cent moves the score sum by -213.4 / +42.3 (max 100.0 per cent of an objective).
Hypothesis
A structural judgement with no evidence behind it carries the results.
Expected effect
A range with provenance 'expert' instead of a structural point value.
Verification
Rerun E3 at both ends of the elicited range.
Risk
None to the model; delays the next change to this parameter.
sensitivityParameterRules1
Monetary & Currency Capability cannot be given a defensible cost, decay or vulnerability.F-cycle-001-11

Proposed. None here: a question for the framework review.

Evidence
cost_params and decay_params, defensible = false: Monetary credibility and the international use of a currency follow from history and the size of the economy; neither a cost per level nor a decay rate is defensible. Left at the class values.
Hypothesis
The group may be mis-specified for a single-nation investment model.
Expected effect
A decision from the framework review.
Verification
Not applicable.
Risk
Tuning it here would hide a framework question.
framework questionFrameworkRules1
Economic Leverage & Dependence cannot be given a defensible cost, decay or vulnerability.F-cycle-001-12

Proposed. None here: a question for the framework review.

Evidence
cost_params and decay_params, defensible = false: Leverage is relational; a nation's level depends on others' dependence on it, which phase one freezes. No cost or vulnerability is defensible for a single-nation model.
Hypothesis
The group may be mis-specified for a single-nation investment model.
Expected effect
A decision from the framework review.
Verification
Not applicable.
Risk
Tuning it here would hide a framework question.
framework questionFrameworkRules1
Nuclear Deterrence cannot be given a defensible cost, decay or vulnerability.F-cycle-001-13

Proposed. None here: a question for the framework review.

Evidence
cost_params and decay_params, defensible = false: Deterrence is close to binary and governed by treaty; a level scale, a yearly cost per level and a decay rate do not describe it. Kept expensive and unbuyable so the solver cannot treat it as a cheap source of points.
Hypothesis
The group may be mis-specified for a single-nation investment model.
Expected effect
A decision from the framework review.
Verification
Not applicable.
Risk
Tuning it here would hide a framework question.
framework questionFrameworkRules1
Early Childhood Development cannot be given a defensible cost, decay or vulnerability.F-cycle-001-14

Proposed. None here: a question for the framework review.

Evidence
cost_params and decay_params, defensible = false: Early childhood investment pays out in adult skills ten to fifteen years later; a six-year delivery and a decay rate on the group's own score do not represent that lag. The graph's edges carry it instead.
Hypothesis
The group may be mis-specified for a single-nation investment model.
Expected effect
A decision from the framework review.
Verification
Not applicable.
Risk
Tuning it here would hide a framework question.
framework questionFrameworkRules1
Diaspora & Global Communities cannot be given a defensible cost, decay or vulnerability.F-cycle-001-15

Proposed. None here: a question for the framework review.

Evidence
cost_params and decay_params, defensible = false: A diaspora is a demographic stock formed over generations; a budget does not build it, so no cost per level is defensible. Kept costly so that it is not a cheap target.
Hypothesis
The group may be mis-specified for a single-nation investment model.
Expected effect
A decision from the framework review.
Verification
Not applicable.
Risk
Tuning it here would hide a framework question.
framework questionFrameworkRules1

Showing 1–15 of 58 findings · page 1 of 4