{
 "study": "s1-direction-rings",
 "run_id": "20261031T051913Z",
 "date": "2026-10-31",
 "prereg": {
  "path": "PREREG.txt",
  "sha256": "54fc1c57bcd3fe569455c2bf4203e4a4c59054b3a81099266db058289a7089da",
  "anchors": [
   "sidecar",
   "lock"
  ],
  "plan_sha256": "7a1ef29b4cc14024600c542bbe2fcfb706e7086845a4014fc501becb18884d4c",
  "locked_at": "2026-10-31T05:19:08+00:00"
 },
 "hashes": {
  "sites.json": "21f5e879bda4c8bb5ce734b93101c5be8c185dffb6a2949803a095fa237c319a",
  "s1_core.py": "91fe44dfea3c7faa6b93c98c4490698878d2639aebad498c0ba372ba1ce06388",
  "s1_worker.py": "1f8866ffa5630448b22813a7e5aeb29dc94b9c21d24d71f03be3a60ea6bc1f30",
  "s1_units.py": "c392fdf1ff249bb25a1df4f90b460a4e99dca1e2de979c7aa33a892273bd462a",
  "rc_core.py": "79c2ecead8731412ad8c2ae2a47ae05eb661a8a88b3d35e3895b4d1b8eff7449",
  "rc_panel.py": "62ea7243afcf1e59520b1c8a5fe736004139e8e1f9613e7ced24f8343d9eeb7f"
 },
 "analysis": {
  "n_sites": 135,
  "median_years": 78.0,
  "regions": {
   "alps": {
    "n": 51,
    "forward_rate": 0.13725490196078433,
    "reverse_rate": 0.13725490196078433,
    "v1_forward_rate": 0.09803921568627451,
    "v1_reverse_rate": 0.058823529411764705,
    "accuracy": 0.49019607843137253,
    "v1_accuracy": 0.5294117647058824,
    "mean_r0": 0.07932967591327103
   },
   "fennoscandia": {
    "n": 24,
    "forward_rate": 0.375,
    "reverse_rate": 0.2916666666666667,
    "v1_forward_rate": 0.16666666666666666,
    "v1_reverse_rate": 0.041666666666666664,
    "accuracy": 0.5833333333333334,
    "v1_accuracy": 0.5416666666666666,
    "mean_r0": 0.3184165527256473
   },
   "other": {
    "n": 60,
    "forward_rate": 0.08333333333333333,
    "reverse_rate": 0.03333333333333333,
    "v1_forward_rate": 0.05,
    "v1_reverse_rate": 0.016666666666666666,
    "accuracy": 0.5166666666666667,
    "v1_accuracy": 0.5333333333333333,
    "mean_r0": 0.06741241351501087
   }
  },
  "n_blocks": 57,
  "common": {
   "n": 135,
   "forward_rate": 0.05925925925925926,
   "reverse_rate": 0.0962962962962963,
   "v1_forward_rate": 0.037037037037037035,
   "v1_reverse_rate": 0.05185185185185185,
   "forward_ci": [
    0.02272406266050334,
    0.11226896418944923
   ],
   "reverse_ci": [
    0.04928289247681209,
    0.15384615384615385
   ],
   "v1_forward_ci": [
    0.0065348866819455054,
    0.08823529411764706
   ],
   "v1_reverse_ci": [
    0.020687877710629222,
    0.09701673670482538
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.5407407407407407,
   "v1_accuracy": 0.5185185185185185,
   "false_ranked_at_or_above": 0.45925925925925926,
   "v1_false_ranked_at_or_above": 0.4814814814814815,
   "te_f_by_lag": [
    0.03264575595499814,
    -0.00048794226755738906,
    0.011672994458412083,
    0.0032726084020950775
   ],
   "te_r_by_lag": [
    0.028135226005308597,
    0.0007068789996250899,
    0.002772948326925117,
    -0.0033675787563320885
   ],
   "mean_abs_r0": 0.20057092282662206,
   "mean_r0": 0.1990724466016904,
   "mean_ac_ring": 0.280652053018089,
   "mean_ac_climate": 0.0049349806158180505
  },
  "null": {
   "n": 135,
   "forward_rate": 0.07407407407407407,
   "reverse_rate": 0.037037037037037035,
   "v1_forward_rate": 0.06666666666666667,
   "v1_reverse_rate": 0.07407407407407407,
   "forward_ci": [
    0.03361344537815126,
    0.11458499203821655
   ],
   "reverse_ci": [
    0.010416666666666666,
    0.06470694033008886
   ],
   "v1_forward_ci": [
    0.030295454545454546,
    0.10084226351090894
   ],
   "v1_reverse_ci": [
    0.03333333333333333,
    0.11305244285073952
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.5777777777777777,
   "v1_accuracy": 0.5481481481481482,
   "false_ranked_at_or_above": 0.4222222222222223,
   "v1_false_ranked_at_or_above": 0.45185185185185184,
   "te_f_by_lag": [
    0.000584821667538066,
    0.0031017305654199,
    0.005616294343832247,
    -0.008752002111469731
   ],
   "te_r_by_lag": [
    -0.009821706726519797,
    -0.01048037419255793,
    -0.0018589818030980562,
    0.0069451030964488335
   ],
   "mean_abs_r0": 0.0895721872157333,
   "mean_r0": 0.008531474155173665,
   "mean_ac_ring": 0.34615658123032084,
   "mean_ac_climate": 0.00387899474197915
  },
  "planted_matched": {
   "n": 135,
   "forward_rate": 0.1925925925925926,
   "reverse_rate": 0.18518518518518517,
   "v1_forward_rate": 0.02962962962962963,
   "v1_reverse_rate": 0.07407407407407407,
   "forward_ci": [
    0.10414870689655173,
    0.31482732732732727
   ],
   "reverse_ci": [
    0.10759323533415,
    0.2924647417571945
   ],
   "v1_forward_ci": [
    0.005915429599640126,
    0.061946902654867256
   ],
   "v1_reverse_ci": [
    0.03389544205222171,
    0.12223684210526307
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.4740740740740741,
   "v1_accuracy": 0.45925925925925926,
   "false_ranked_at_or_above": 0.5259259259259259,
   "v1_false_ranked_at_or_above": 0.5407407407407407,
   "te_f_by_lag": [
    0.05376182323062923,
    -0.00745651915706546,
    -0.009534789645082207,
    0.0004313652820421245
   ],
   "te_r_by_lag": [
    0.05938171059939812,
    -0.001844650695956644,
    0.008337652928703676,
    0.002627627112357259
   ],
   "mean_abs_r0": 0.2474907686369305,
   "mean_r0": 0.11279002982213547,
   "mean_ac_ring": 0.351399474387935,
   "mean_ac_climate": 0.004714588687378737
  },
  "planted_strong": {
   "n": 135,
   "forward_rate": 0.9777777777777777,
   "reverse_rate": 0.9185185185185185,
   "v1_forward_rate": 0.022222222222222223,
   "v1_reverse_rate": 0.007407407407407408,
   "forward_ci": [
    0.9537567111677947,
    1.0
   ],
   "reverse_ci": [
    0.8571428571428571,
    0.9625046641791045
   ],
   "v1_forward_ci": [
    0.0,
    0.050863035892322946
   ],
   "v1_reverse_ci": [
    0.0,
    0.01744186046511628
   ],
   "forward_bh_rate": 0.9777777777777777,
   "reverse_bh_rate": 0.9185185185185185,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.6,
   "v1_accuracy": 0.6296296296296297,
   "false_ranked_at_or_above": 0.4,
   "v1_false_ranked_at_or_above": 0.37037037037037035,
   "te_f_by_lag": [
    0.34978444676445297,
    0.013176997902276147,
    0.015814300791394675,
    0.007199555760135259
   ],
   "te_r_by_lag": [
    0.3282019926948795,
    0.003985883555541018,
    -0.006350284400005817,
    0.002851027999629507
   ],
   "mean_abs_r0": 0.6012935864759285,
   "mean_r0": 0.6012935864759285,
   "mean_ac_ring": 0.36665262017940126,
   "mean_ac_climate": 0.0041298794177735115,
   "ccm_forward_rate": 0.9259259259259259,
   "ccm_reverse_rate": 0.9703703703703703,
   "ccm_accuracy": 0.37777777777777777
  },
  "real": {
   "n": 135,
   "forward_rate": 0.15555555555555556,
   "reverse_rate": 0.11851851851851852,
   "v1_forward_rate": 0.08888888888888889,
   "v1_reverse_rate": 0.037037037037037035,
   "forward_ci": [
    0.08770752384316495,
    0.26231665228645373
   ],
   "reverse_ci": [
    0.048542218299499854,
    0.22486139986139983
   ],
   "v1_forward_ci": [
    0.04493962770417575,
    0.1538617886178861
   ],
   "v1_reverse_ci": [
    0.00819672131147541,
    0.06429147465437784
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.5185185185185185,
   "v1_accuracy": 0.5333333333333333,
   "false_ranked_at_or_above": 0.4814814814814815,
   "v1_false_ranked_at_or_above": 0.4666666666666667,
   "te_f_by_lag": [
    0.04395348680759307,
    0.034778678338790225,
    0.005844232246821524,
    0.0034971446222130304
   ],
   "te_r_by_lag": [
    0.04371241416742578,
    0.0024859477468593973,
    0.005133420098945688,
    0.0035293936086914605
   ],
   "mean_abs_r0": 0.21817814641507244,
   "mean_r0": 0.11653744850291119,
   "mean_ac_ring": 0.36091631948984887,
   "mean_ac_climate": 0.0066371194408998135,
   "ccm_forward_rate": 0.18518518518518517,
   "ccm_reverse_rate": 0.28888888888888886,
   "ccm_accuracy": 0.31851851851851853
  },
  "real_prec": {
   "n": 135,
   "forward_rate": 0.06666666666666667,
   "reverse_rate": 0.0962962962962963,
   "v1_forward_rate": 0.07407407407407407,
   "v1_reverse_rate": 0.07407407407407407,
   "forward_ci": [
    0.028026103770544635,
    0.11460336538461527
   ],
   "reverse_ci": [
    0.053426670269539955,
    0.14657214156079842
   ],
   "v1_forward_ci": [
    0.03569862155388471,
    0.10691907981031178
   ],
   "v1_reverse_ci": [
    0.03360644257703081,
    0.114458980962016
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.5777777777777777,
   "v1_accuracy": 0.5851851851851851,
   "false_ranked_at_or_above": 0.4222222222222223,
   "v1_false_ranked_at_or_above": 0.41481481481481486,
   "te_f_by_lag": [
    0.017828086944449907,
    0.02742524073761448,
    0.0016774807953451197,
    0.002016408875356777
   ],
   "te_r_by_lag": [
    0.005141925349044119,
    -0.003321834102156952,
    0.00036738174078192014,
    0.0044141402655222895
   ],
   "mean_abs_r0": 0.14959813877783343,
   "mean_r0": 0.01364836087346858,
   "mean_ac_ring": 0.36091631948984887,
   "mean_ac_climate": -0.12567394917885136
  },
  "reversed": {
   "n": 135,
   "forward_rate": 0.1925925925925926,
   "reverse_rate": 0.2222222222222222,
   "v1_forward_rate": 0.037037037037037035,
   "v1_reverse_rate": 0.08888888888888889,
   "forward_ci": [
    0.12781954887218044,
    0.2795721705850191
   ],
   "reverse_ci": [
    0.15383771929824563,
    0.32710705182667793
   ],
   "v1_forward_ci": [
    0.008545197740112996,
    0.06707701373232218
   ],
   "v1_reverse_ci": [
    0.04838431590656285,
    0.1325371799698795
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.5111111111111111,
   "v1_accuracy": 0.5111111111111111,
   "false_ranked_at_or_above": 0.48888888888888893,
   "v1_false_ranked_at_or_above": 0.48888888888888893,
   "te_f_by_lag": [
    0.05390814311406396,
    0.010984356523548571,
    0.0043034321139901865,
    0.0073389840855578896
   ],
   "te_r_by_lag": [
    0.04274948915021914,
    0.024155742417558856,
    0.013523853674480273,
    0.0007557645273267827
   ],
   "mean_abs_r0": 0.21817814641507244,
   "mean_r0": 0.11653744850291117,
   "mean_ac_ring": 0.36091631948984887,
   "mean_ac_climate": 0.006637119440899828
  },
  "trend": {
   "n": 135,
   "forward_rate": 0.1259259259259259,
   "reverse_rate": 0.17037037037037037,
   "v1_forward_rate": 0.1037037037037037,
   "v1_reverse_rate": 0.1037037037037037,
   "forward_ci": [
    0.07207027027027027,
    0.1913134057971014
   ],
   "reverse_ci": [
    0.10937286543715848,
    0.25
   ],
   "v1_forward_ci": [
    0.05434782608695652,
    0.16669580419580401
   ],
   "v1_reverse_ci": [
    0.05554597701149425,
    0.168141592920354
   ],
   "forward_bh_rate": 0.0,
   "reverse_bh_rate": 0.0,
   "v1_forward_bh_rate": 0.0,
   "v1_reverse_bh_rate": 0.0,
   "accuracy": 0.4888888888888889,
   "v1_accuracy": 0.48148148148148145,
   "false_ranked_at_or_above": 0.5111111111111111,
   "v1_false_ranked_at_or_above": 0.5185185185185186,
   "te_f_by_lag": [
    0.028678336560050813,
    0.009276223813668829,
    0.0076032673796952305,
    -0.010373041102572084
   ],
   "te_r_by_lag": [
    0.03227609418454864,
    0.015561972247783091,
    0.006366375955387698,
    0.01130839546805204
   ],
   "mean_abs_r0": 0.2165584562493837,
   "mean_r0": 0.2062487280619145,
   "mean_ac_ring": 0.41190675256708126,
   "mean_ac_climate": 0.1306699495834831
  },
  "pair_null": {
   "forward": [
    0.044444444444444446,
    0.07407407407407407,
    0.02962962962962963,
    0.037037037037037035,
    0.05185185185185185,
    0.08148148148148149,
    0.05185185185185185,
    0.06666666666666667,
    0.037037037037037035,
    0.05185185185185185,
    0.037037037037037035,
    0.08888888888888889,
    0.02962962962962963,
    0.05925925925925926,
    0.05185185185185185,
    0.07407407407407407,
    0.05185185185185185,
    0.06666666666666667,
    0.05925925925925926,
    0.07407407407407407
   ],
   "reverse": [
    0.037037037037037035,
    0.022222222222222223,
    0.05925925925925926,
    0.037037037037037035,
    0.044444444444444446,
    0.07407407407407407,
    0.05185185185185185,
    0.07407407407407407,
    0.037037037037037035,
    0.05925925925925926,
    0.07407407407407407,
    0.05185185185185185,
    0.037037037037037035,
    0.08888888888888889,
    0.07407407407407407,
    0.06666666666666667,
    0.022222222222222223,
    0.08148148148148149,
    0.05185185185185185,
    0.06666666666666667
   ],
   "v1_forward": [
    0.05185185185185185,
    0.05925925925925926,
    0.02962962962962963,
    0.037037037037037035,
    0.044444444444444446,
    0.06666666666666667,
    0.05185185185185185,
    0.05925925925925926,
    0.037037037037037035,
    0.037037037037037035,
    0.022222222222222223,
    0.05925925925925926,
    0.037037037037037035,
    0.05925925925925926,
    0.02962962962962963,
    0.05185185185185185,
    0.044444444444444446,
    0.037037037037037035,
    0.037037037037037035,
    0.037037037037037035
   ],
   "v1_reverse": [
    0.044444444444444446,
    0.022222222222222223,
    0.07407407407407407,
    0.044444444444444446,
    0.02962962962962963,
    0.037037037037037035,
    0.044444444444444446,
    0.06666666666666667,
    0.037037037037037035,
    0.05925925925925926,
    0.05185185185185185,
    0.05185185185185185,
    0.037037037037037035,
    0.05925925925925926,
    0.05925925925925926,
    0.044444444444444446,
    0.037037037037037035,
    0.06666666666666667,
    0.05185185185185185,
    0.05925925925925926
   ]
  },
  "family_p": {
   "forward_vs_pairing": 0.047619047619047616,
   "reverse_vs_nominal": 0.001222221118624201,
   "v1_forward_vs_pairing": 0.047619047619047616,
   "v1_reverse_vs_nominal": 0.8100619559640638,
   "ccm_forward_vs_nominal": 1.4789649452823793e-08,
   "ccm_reverse_vs_nominal": 2.011437682534559e-19
  },
  "family_q": {
   "forward_vs_pairing": 0.05714285714285714,
   "reverse_vs_nominal": 0.002444442237248402,
   "v1_forward_vs_pairing": 0.05714285714285714,
   "v1_reverse_vs_nominal": 0.8100619559640639,
   "ccm_forward_vs_nominal": 4.436894835847138e-08,
   "ccm_reverse_vs_nominal": 1.2068626095207354e-18
  }
 },
 "controls": {
  "pair_f": {
   "n": 20,
   "usable": true,
   "mean": 0.05592592592592592,
   "q95": 0.08185185185185187,
   "q05": 0.02962962962962963,
   "p_ge": 0.047619047619047616,
   "compare": "analysis.real.forward_rate",
   "description": "site-shuffled pairing at 1000 km or more, forward, as written"
  },
  "pair_r": {
   "n": 20,
   "usable": true,
   "mean": 0.05555555555555556,
   "q95": 0.08185185185185187,
   "q05": 0.022222222222222223,
   "p_ge": 0.047619047619047616,
   "compare": "analysis.real.reverse_rate",
   "description": "site-shuffled pairing, reverse, as written"
  },
  "pair_v1f": {
   "n": 20,
   "usable": true,
   "mean": 0.04444444444444444,
   "q95": 0.05962962962962964,
   "q05": 0.029259259259259263,
   "p_ge": 0.047619047619047616,
   "compare": "analysis.real.v1_forward_rate",
   "description": "pairing, forward, variant V1"
  },
  "pair_v1r": {
   "n": 20,
   "usable": true,
   "mean": 0.048888888888888885,
   "q95": 0.06703703703703705,
   "q05": 0.029259259259259263,
   "p_ge": 0.9047619047619048,
   "compare": "analysis.real.v1_reverse_rate",
   "description": "pairing, reverse, variant V1"
  }
 },
 "timing_s": {
  "analysis": 315.41088470001705,
  "pair_f": 0.0003798999823629856,
  "pair_r": 0.00019150000298395753,
  "pair_v1f": 0.000201700022444129,
  "pair_v1r": 0.00017889996524900198
 },
 "verdicts": {
  "H0_anchor": {
   "verdict": "FAIL",
   "rules": [
    {
     "rule": "analysis.planted_strong.forward_rate > 0.8",
     "left": 0.9777777777777777,
     "right": 0.8,
     "holds": true
    },
    {
     "rule": "analysis.planted_strong.accuracy > 0.8",
     "left": 0.6,
     "right": 0.8,
     "holds": false
    },
    {
     "rule": "analysis.null.forward_rate <= 0.1",
     "left": 0.07407407407407407,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.null.reverse_rate <= 0.1",
     "left": 0.037037037037037035,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.trend.forward_rate <= 0.1",
     "left": 0.1259259259259259,
     "right": 0.1,
     "holds": false
    },
    {
     "rule": "analysis.trend.reverse_rate <= 0.1",
     "left": 0.17037037037037037,
     "right": 0.1,
     "holds": false
    }
   ]
  },
  "H0v_anchor": {
   "verdict": "FAIL",
   "rules": [
    {
     "rule": "analysis.planted_strong.v1_forward_rate > 0.8",
     "left": 0.022222222222222223,
     "right": 0.8,
     "holds": false
    },
    {
     "rule": "analysis.planted_strong.v1_accuracy > 0.8",
     "left": 0.6296296296296297,
     "right": 0.8,
     "holds": false
    },
    {
     "rule": "analysis.null.v1_forward_rate <= 0.1",
     "left": 0.06666666666666667,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.null.v1_reverse_rate <= 0.1",
     "left": 0.07407407407407407,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.trend.v1_forward_rate <= 0.1",
     "left": 0.1037037037037037,
     "right": 0.1,
     "holds": false
    },
    {
     "rule": "analysis.trend.v1_reverse_rate <= 0.1",
     "left": 0.1037037037037037,
     "right": 0.1,
     "holds": false
    }
   ]
  },
  "Hc_common": {
   "verdict": "PASS",
   "rules": [
    {
     "rule": "analysis.common.forward_rate <= 0.1",
     "left": 0.05925925925925926,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.common.reverse_rate <= 0.1",
     "left": 0.0962962962962963,
     "right": 0.1,
     "holds": true
    }
   ]
  },
  "Hcv_common": {
   "verdict": "PASS",
   "rules": [
    {
     "rule": "analysis.common.v1_forward_rate <= 0.1",
     "left": 0.037037037037037035,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.common.v1_reverse_rate <= 0.1",
     "left": 0.05185185185185185,
     "right": 0.1,
     "holds": true
    }
   ]
  },
  "K_as_written": {
   "verdict": "FAIL",
   "rules": [
    {
     "rule": "analysis.real.forward_rate > controls.pair_f.q95",
     "left": 0.15555555555555556,
     "right": 0.08185185185185187,
     "holds": true
    },
    {
     "rule": "analysis.real.reverse_rate <= 0.1",
     "left": 0.11851851851851852,
     "right": 0.1,
     "holds": false
    }
   ]
  },
  "P1": {
   "verdict": "FAIL",
   "rules": [
    {
     "rule": "analysis.real.forward_rate > 0.5",
     "left": 0.15555555555555556,
     "right": 0.5,
     "holds": false
    }
   ]
  },
  "P2": {
   "verdict": "FAIL",
   "rules": [
    {
     "rule": "analysis.real.reverse_rate <= 0.05",
     "left": 0.11851851851851852,
     "right": 0.05,
     "holds": false
    }
   ]
  },
  "P3": {
   "verdict": "FAIL",
   "rules": [
    {
     "rule": "analysis.real.ccm_forward_rate > analysis.real.ccm_reverse_rate",
     "left": 0.18518518518518517,
     "right": 0.28888888888888886,
     "holds": false
    },
    {
     "rule": "analysis.real.ccm_reverse_rate <= 0.1",
     "left": 0.28888888888888886,
     "right": 0.1,
     "holds": false
    }
   ]
  },
  "K_v1": {
   "verdict": "PASS",
   "rules": [
    {
     "rule": "analysis.real.v1_forward_rate > controls.pair_v1f.q95",
     "left": 0.08888888888888889,
     "right": 0.05962962962962964,
     "holds": true
    },
    {
     "rule": "analysis.real.v1_reverse_rate <= 0.1",
     "left": 0.037037037037037035,
     "right": 0.1,
     "holds": true
    },
    {
     "rule": "analysis.real.v1_accuracy > 0.5",
     "left": 0.5333333333333333,
     "right": 0.5,
     "holds": true
    }
   ]
  }
 },
 "reproduce": null,
 "status": "scored"
}
