### Moai functional-inference framework — reproduction master run ###
Execution path: /home/claude/repro/repro
Python: Python 3.12.3
Started: 2026-07-22T20:26:21Z

>>> [00] Fetch/verify data (FATAL on checksum mismatch)
[fetch] present: data/MOAI_DATABASE_PUBLIC.xlsx
[fetch] present: data/VanTilburgData.xlsx
[fetch] present: data/all_moai_combined.csv
[fetch] verifying checksums (FATAL on mismatch)...
data/MOAI_DATABASE_PUBLIC.xlsx: OK
data/VanTilburgData.xlsx: OK
data/all_moai_combined.csv: OK
[fetch] all checksums OK.

>>> [01] Component A raw contrast
[A] {'road_n': 47, 'road_mean': np.float64(1.025), 'road_sd': np.float64(0.155), 'ahu_n': 76, 'ahu_mean': np.float64(1.132), 'ahu_sd': np.float64(0.216), 'welch_t': np.float64(3.181), 'p': np.float64(0.0019), 'cohens_d': np.float64(0.547), 'diff': np.float64(0.107)}

>>> [02] Component B bounds + eye-socket positive control
[B] bounds: {'QUARRY': {'N': 362, 'obs': 8, 'd': 3, 'lo': 0.8, 'hi': 98.6}, 'ROAD': {'N': 62, 'obs': 23, 'd': 5, 'lo': 8.1, 'hi': 71.0}, 'AHU': {'N': 481, 'obs': 108, 'd': 53, 'lo': 11.0, 'hi': 88.6}}
[EYE] bounds: {'QUARRY': {'N': 362, 'obs': 272, 'd': 2, 'lo': 0.6, 'hi': 25.4}, 'ROAD': {'N': 62, 'obs': 39, 'd': 2, 'lo': 3.2, 'hi': 40.3}, 'AHU': {'N': 481, 'obs': 204, 'd': 201, 'lo': 41.8, 'hi': 99.4}} | disjoint quarry/ahu: True
[quarry composition] {'QUARRY_proper': {'N': 315, 'obs': 2, 'D_Shaped': 0}, 'QUARRY_detached': {'N': 44, 'obs': 6, 'D_Shaped': 3}, 'full_quarry': {'N': 362, 'obs': 8, 'D_Shaped': 3}}

>>> [03] Fisher contingency (observable cases)
[D_Shaped] road=[5, 18] ahu=[53, 55] OR=0.288 p=0.02
[front_contracting] road=[17, 6] ahu=[74, 46] OR=1.761 p=0.346
[back_expanding] road=[16, 6] ahu=[84, 49] OR=1.556 p=0.475
[forward_lean] road=[24, 8] ahu=[70, 43] OR=1.843 p=0.211

>>> [05] Component A full specificity bench (object-level bootstrap with refitting, all sensitivities)
  component_A_specificity.json written

>>> [06] Observability signature (per-field) + rescue frontier
[observability aggregate] {'4_ahu': {'obs': 188, 'tot': 481, 'pct': 39.1}, '2_detached': {'obs': 10, 'tot': 44, 'pct': 22.7}, '3_road': {'obs': 34, 'tot': 62, 'pct': 54.8}, '1_bedrock': {'obs': 5, 'tot': 315, 'pct': 1.6}}
[bedrock->detached] Fisher p=5.42e-07
[per-field reproduces bedrock->detached] all five: True
    BASAL_SURFACE_OUTLINE: 0.6%->13.6% p=5.71e-05 OK
    BASAL_EDGE_1: 1.0%->9.1% p=0.00526 OK
    BASE_PROFILE_FRONT_SHAPE: 0.6%->15.9% p=7.91e-06 OK
    BASE_PROFILE_BACK_SHAPE: 0.0%->11.4% p=2.25e-05 OK
    BASE_ANGLE: 0.6%->11.4% p=0.000389 OK
[rescue adverse] 38 of 39 (identifies road<ahu)
[rescue supportive] road-only enough: False; joint needs 124 obs (39 road D + 85 ahu non-D)

>>> [11] Site-clustered robustness
  site_clustered.json written

>>> [14] Prospective targets, unit identity, adversarial coding margin
  prospective_and_identity.json written

>>> [13] Observability negative control (pre-specified field lists)
  observability_negative_control.json written

>>> [12] Specificity: site-structure and differential-availability sensitivities
  specificity_site_sensitivity.json written

>>> [10] D/W proxy analysis
  dw_proxy.json written

>>> [07] Detached D-shaped fiches + Component C
  detached_and_C.json written

>>> [08] Regenerate all five figures from JSON
done
figures regenerated: {'fig_generic.png': (4110, 1380), 'fig_gate0.png': (4110, 1830), 'fig_bounds.png': (4110, 2100), 'fig_dag.png': (4110, 1650), 'fig_rescue.png': (4110, 1950)}

>>> [09] Manuscript-value consistency (written constants vs regenerated JSON)
MANUSCRIPT-VALUE CONSISTENCY (written constants vs regenerated JSON)
============================================================
  [OK] Welch t (abstract/3.5): manuscript=3.18 json=3.181
  [OK] Cohen d (abstract/3.5): manuscript=0.55 json=0.547
  [OK] Part x Stage interaction, centered (3.5, Table 6): manuscript=-0.103 json=-0.1025
  [OK] Part x Stage p, centered: manuscript=0.008 json=0.0081
  [OK] base within-effect (3.5): manuscript=-0.004 json=-0.004
  [OK] shoulder within-effect (3.5): manuscript=-0.106 json=-0.1056
  [OK] A2 direct base effect (3.5, Table 6): manuscript=-0.037 json=-0.0371
  [OK] A2 direct base p: manuscript=0.33 json=0.3329
  [OK] neg-control difference (3.5): manuscript=-0.02 json=-0.02
  [OK] B ROAD lower bound (3.3, Table 4): manuscript=8.1 json=8.1
  [OK] B AHU upper bound: manuscript=88.6 json=88.6
  [OK] observability bedrock % (3.9): manuscript=1.6 json=1.6
  [OK] observability detached % (3.9): manuscript=22.7 json=22.7
  [OK] rescue frontier k (3.10): manuscript=38 json=38
  [OK] Component C n (3.7): manuscript=34 json=34
  [OK] Component C mean deg: manuscript=9.5 json=9.5
============================================================
ALL 16 MANUSCRIPT VALUES MATCH REGENERATED OUTPUTS
============================================================

>>> [04] Verify the principal inferential values reported in the manuscript against pipeline outputs
================================================================
MANUSCRIPT VALUE VERIFICATION (comprehensive)
================================================================
-- Component A raw (Table 6 row 1, abstract) --
  [PASS] A road_mean: got=1.025 expected=1.025
  [PASS] A ahu_mean: got=1.132 expected=1.132
  [PASS] A welch_t: got=3.181 expected=3.181
  [PASS] A p: got=0.0019 expected=0.0019
  [PASS] A d: got=0.547 expected=0.55
  [PASS] A road_n: got=47 expected=47
  [PASS] A ahu_n: got=76 expected=76
  [PASS] A road_sd: got=0.155 expected=0.155
  [PASS] A ahu_sd: got=0.216 expected=0.216
  [PASS] A diff: got=0.107 expected=0.107
-- Component A specificity bench (Table 6 rows 2-8) --
  [PASS] scale logL_p: got=0.118 expected=0.118
  [PASS] scale interaction_p: got=0.261 expected=0.261
  [PASS] scale stage_coef: got=-0.1017 expected=-0.102
  [PASS] PartxStage interaction_coef (centered): got=-0.1025 expected=-0.103
  [PASS] PartxStage interaction_p (centered): got=0.0081 expected=0.008
  [PASS] PartxStage uncentered_atLog0: got=0.3959 expected=0.396
  [PASS] within base p: got=0.9284 expected=0.928
  [PASS] within shoulder p: got=0.0316 expected=0.032
  [PASS] bg base_pooled d: got=-0.171 expected=-0.171
  [PASS] bg base_ahu d: got=-0.193 expected=-0.193
  [PASS] bg base_leave1ctx d: got=-0.348 expected=-0.35
  [PASS] bg shoulder_pooled d: got=-0.471 expected=-0.471
  [PASS] bg shoulder_ahu d: got=-0.562 expected=-0.562
  [PASS] bg shoulder_leave1ctx d: got=-1.001 expected=-1.0
  [PASS] negctrl diff: got=-0.02 expected=-0.02
  [PASS] negctrl ci_lo: got=-0.359 expected=-0.359
  [PASS] negctrl ci_hi: got=0.302 expected=0.302
  [PASS] negctrl cand_mean: got=0.378 expected=0.378
  [PASS] negctrl ctrl_mean: got=0.397 expected=0.397
  [PASS] negctrl base-only diff: got=-0.204 expected=-0.204
  [PASS] negctrl base-only ci crosses 0: got=True expected=True
  [PASS] partition base_only_vs_facial: got=-0.204 expected=-0.204
  [PASS] partition base_shoulder_vs_facial: got=-0.02 expected=-0.02
  [PASS] partition base_shoulder_vs_allctrl: got=-0.053 expected=-0.053
  [PASS] partition low_transverse_vs_facial: got=0.157 expected=0.157
  [PASS] partition base_shoulder_vs_strictface: got=-0.077 expected=-0.077
  [PASS] robust ols: got=-0.1017 expected=-0.102
  [PASS] robust huber: got=-0.1184 expected=-0.118
  [PASS] robust no_influential: got=-0.123 expected=-0.123
  [PASS] robust n_influential: got=9 expected=9
  [PASS] robust quadratic: got=-0.0859 expected=-0.086
  [PASS] coding 6_vs_7 p: got=0.901 expected=0.9
  [PASS] coding jackknife pmax: got=0.0032 expected=0.003
  [PASS] levene base: got=0.184 expected=0.184
  [PASS] levene shoulder: got=0.115 expected=0.115
  [PASS] A2 base_direct effect: got=-0.0371 expected=-0.037
  [PASS] A2 base_direct p: got=0.3329 expected=0.333
  [PASS] A2 base_direct n_road: got=56 expected=56
-- Component B bounds + eye control (Tables 4,5; abstract) --
  [PASS] B ROAD lo: got=8.1 expected=8.1
  [PASS] B ROAD hi: got=71.0 expected=71.0
  [PASS] B AHU lo: got=11.0 expected=11.0
  [PASS] B AHU hi: got=88.6 expected=88.6
  [PASS] B QUARRY lo: got=0.8 expected=0.8
  [PASS] B QUARRY hi: got=98.6 expected=98.6
  [PASS] B overlap: got=True expected=True
  [PASS] EYE QUARRY hi: got=25.4 expected=25.4
  [PASS] EYE AHU lo: got=41.8 expected=41.8
  [PASS] EYE disjoint: got=True expected=True
-- Fisher contingency (Table 3) --
  [PASS] Fisher D_Shaped p: got=0.02 expected=0.02
  [PASS] Fisher D_Shaped OR: got=0.288 expected=0.288
  [PASS] Fisher front_contracting present: got=True expected=True
  [PASS] Fisher back_expanding present: got=True expected=True
  [PASS] Fisher forward_lean present: got=True expected=True
-- Observability signature + rescue frontier (Sec 3.9, 3.10, Fig 4) --
  [PASS] obs bedrock pct: got=1.6 expected=1.6
  [PASS] obs detached pct: got=22.7 expected=22.7
  [PASS] obs road pct: got=54.8 expected=54.8
  [PASS] obs ahu pct: got=39.1 expected=39.1
  [PASS] bedrock-detached Fisher p<1e-6: got=True expected=True
  [PASS] per-field all reproduce: got=True expected=True
  [PASS] rescue_k (adverse): got=38 expected=38
  [PASS] rescue_of: got=39 expected=39
  [PASS] road-only insufficient for supportive: got=False expected=False
  [PASS] supportive ahu needed: got=85 expected=85
  [PASS] supportive total obs: got=124 expected=124
  [PASS] rescue d_road derived: got=5 expected=5
  [PASS] rescue d_ahu derived: got=53 expected=53
-- Detached D-shaped fiches (Sec 3.11) --
  [PASS] detached count: got=3 expected=3
  [PASS] detached 35 near RR quarry (<=0.6km ext): got=True expected=True
  [PASS] detached 442 near RR quarry (<=0.6km ext): got=True expected=True
  [PASS] detached 839 near RR quarry (<=0.6km ext): got=True expected=True
-- Component C base angle (Sec 3.7) --
  [PASS] C n: got=34 expected=34
  [PASS] C mean_deg: got=9.5 expected=9.5
  [PASS] C min_deg: got=5.2 expected=5.2
  [PASS] C max_deg: got=15.0 expected=15.0
-- Specificity sensitivities (Sec 3.12) --
  [PASS] avail max gap pp: got=26.2 expected=26.2
  [PASS] neck road pct: got=58.3 expected=58.3
  [PASS] neck ahu pct: got=32.1 expected=32.1
  [PASS] neck fisher p: got=0.0022 expected=0.0022
  [PASS] forehead road pct: got=61.7 expected=61.7
  [PASS] forehead ahu pct: got=41.7 expected=41.7
  [PASS] base road pct: got=93.3 expected=93.3
  [PASS] base ahu pct: got=90.5 expected=90.5
  [PASS] base-only hedges g: got=-0.2002 expected=-0.2
  [PASS] object_level CI covers 0: got=True expected=True
  [PASS] site_clustered CI covers 0: got=True expected=True
  [PASS] context_stratified CI covers 0: got=True expected=True
  [PASS] site_context_cell_stratified CI covers 0: got=True expected=True
  [PASS] P_gt_0 falls under site clustering: got=True expected=True
  [PASS] equal-weight-site contrast negative: got=True expected=True
  [PASS] common-set n: got=12 expected=12
  [PASS] mixed sites = 4: got=4 expected=4
  [PASS] mixed-site exclusion point: got=-0.2227 expected=-0.2227
  [PASS] mixed-site exclusion CI covers 0: got=True expected=True
  [PASS] site-context cells: got=94 expected=94
-- Site-weighting sensitivities (Sec 3.12) --
  [PASS] ratio object welch p: got=0.0085 expected=0.009
  [PASS] ratio equal-weight site p: got=0.1352 expected=0.135
  [PASS] ratio equal-weight site mwu: got=0.0652 expected=0.065
  [PASS] base object welch p: got=0.3207 expected=0.32
  [PASS] base equal-weight site p: got=0.7829 expected=0.78
-- Observability negative control (Sec 3.9) --
  [PASS] candidate fields = 5: got=5 expected=5
  [PASS] matched controls = 5: got=5 expected=5
  [PASS] broad controls = 29: got=29 expected=29
  [PASS] detached basal pct: got=12.3 expected=12.3
  [PASS] detached matched pct: got=48.2 expected=48.2
  [PASS] road basal pct: got=39.0 expected=39.0
  [PASS] road matched pct: got=48.7 expected=48.7
  [PASS] primary DiD: got=26.23 expected=26.23
  [PASS] primary CI excludes 0: got=True expected=True
  [PASS] primary replicates non-positive: got=0 expected=0
  [PASS] no p-value language on bootstrap tail: got=True expected=True
  [PASS] bedrock->detached DiD negative: got=True expected=True
  [PASS] broad DiD: got=39.02 expected=39.02
  [PASS] exact enumeration universe: got=118755 expected=118755
  [PASS] exact enumeration all positive: got=0 expected=0
  [PASS] exact enumeration min positive: got=True expected=True
  [PASS] interaction p < 1e-4: got=True expected=True
  [PASS] S1 row matches JSON: bedrock_to_detached: got=True expected=True
  [PASS] S1 DiD matches JSON: bedrock_to_detached: got=True expected=True
  [PASS] S1 row matches JSON: primary: got=True expected=True
  [PASS] S1 DiD matches JSON: primary: got=True expected=True
  [PASS] S1 row matches JSON: detached_to_road_broad: got=True expected=True
  [PASS] S1 DiD matches JSON: detached_to_road_broad: got=True expected=True
-- Prospective targets / unit identity / adversarial margin --
  [PASS] rescue targets listed: got=39 expected=39
  [PASS] all targets have coordinates: got=True expected=True
  [PASS] no priority ranking imposed: got=True expected=True
  [PASS] flagged pair both road: got=True expected=True
  [PASS] as-recorded frontier k: got=38 expected=38
  [PASS] as-recorded unobserved: got=39 expected=39
  [PASS] collapsed frontier k: got=37 expected=37
  [PASS] collapsed unobserved: got=38 expected=38
  [PASS] overlap holds as recorded: got=True expected=True
  [PASS] overlap holds when collapsed: got=True expected=True
  [PASS] collapsed N: got=61 expected=61
  [PASS] adversarial minimum: got=60 expected=60
  [PASS] minimal configurations: got=3 expected=3
  [PASS] feasible pairs searched: got=54742 expected=54742
  [PASS] pairs reaching contact: got=52340 expected=52340
  [PASS] searched exceeds contact set: got=True expected=True
  [PASS] control separation pp: got=16.4 expected=16.4
-- Figure regeneration (Sec figures) --
  [PASS] fig_generic.png regenerated: got=True expected=True
  [PASS] fig_gate0.png regenerated: got=True expected=True
  [PASS] fig_bounds.png regenerated: got=True expected=True
  [PASS] fig_dag.png regenerated: got=True expected=True
  [PASS] fig_rescue.png regenerated: got=True expected=True
-- D/W proxy (Sec 3.2) --
  [PASS] D/W road_n: got=28 expected=28
  [PASS] D/W pearson_r: got=0.065 expected=0.065
  [PASS] D/W pearson_p: got=0.744 expected=0.744
  [PASS] D/W ahu_within_range: got=98 expected=98
  [PASS] D/W cv_road: got=11.4 expected=11.4
  [PASS] D/W cv_ahu: got=24.5 expected=24.5
  [PASS] D/W levene_p: got=0.036 expected=0.036
  [PASS] D/W mean_road: got=0.603 expected=0.603
-- Site-clustered robustness (Sec 3.12) --
  [PASS] SC base_sites: got=85 expected=85
  [PASS] SC base_mixed: got=3 expected=3
  [PASS] SC ratio_sites: got=66 expected=66
  [PASS] SC ratio_mixed: got=2 expected=2
  [PASS] SC ratio_road_p: got=0.023 expected=0.023
  [PASS] SC base_road_p: got=0.35 expected=0.35
  [PASS] SC triple_object_p: got=0.3748 expected=0.3748
  [PASS] SC triple_site_p: got=0.4156 expected=0.4156
================================================================
ALL 170 CHECKS PASSED
================================================================

Finished: 2026-07-22T20:28:59Z
Exit code: 0
