From 7323a235f40f70fe215f22182c539c3418cefe54 Mon Sep 17 00:00:00 2001 From: Frank14f <1515444314@qq.com> Date: Thu, 6 Aug 2026 22:16:53 +0800 Subject: [PATCH] refactor(SR): freeze compact legacy evidence package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Archive excluded experiments and superseded outputs so the active tree exposes only the auditable Kármán and Illusion workflow while preserving scientific provenance. Co-authored-by: Cursor --- src/SR_analysis/PIPELINE.md | 371 +++--------------- src/SR_analysis/README.md | 268 ++----------- src/SR_analysis/archive/README.md | 12 + .../action_timeseries.png | Bin .../degradation_analysis/autocorrelation.png | Bin .../data/degradation_analysis/fft_spectra.png | Bin .../phase_portrait_illusion_0.75L.png | Bin .../phase_portrait_illusion_1.5L.png | Bin .../phase_portrait_illusion_1L.png | Bin .../timeseries_full_illusion_0.75L.png | Bin .../timeseries_full_illusion_1.5L.png | Bin .../timeseries_full_illusion_1L.png | Bin .../karman/karman_re100/config.json | 0 .../karman/karman_re100/manifest.json | 0 .../karman/karman_re100/norm.json | 0 .../karman/karman_re50/config.json | 0 .../karman/karman_re50/manifest.json | 0 .../karman/karman_re50/norm.json | 0 .../karman/karman_re50/result.json | 0 .../illusion/illusion_0.75L/config.json | 0 .../illusion/illusion_0.75L/manifest.json | 0 .../illusion/illusion_0.75L/norm.json | 0 .../illusion/illusion_0.75L/result.json | 0 .../illusion_0.75L/target_harmonics.json | 0 .../illusion/illusion_1L/config.json | 0 .../illusion/illusion_1L/manifest.json | 0 .../illusion/illusion_1L/norm.json | 0 .../illusion/illusion_1L/result.json | 0 .../illusion_1L/target_harmonics.json | 0 .../karman/karman_re100/config.json | 0 .../karman/karman_re100/manifest.json | 0 .../karman/karman_re100/norm.json | 0 .../karman/karman_re100/result.json | 0 .../karman/karman_re200/config.json | 0 .../karman/karman_re200/manifest.json | 0 .../karman/karman_re200/norm.json | 0 .../karman/karman_re200/result.json | 0 .../karman/karman_re400/config.json | 0 .../karman/karman_re400/manifest.json | 0 .../karman/karman_re400/norm.json | 0 .../karman/karman_re400/result.json | 0 .../karman/karman_re50/config.json | 0 .../karman/karman_re50/manifest.json | 0 .../karman/karman_re50/norm.json | 0 .../karman/karman_re50/result.json | 0 .../illusion/illusion_1L/config.json | 0 .../illusion/illusion_1L/manifest.json | 0 .../illusion/illusion_1L/norm.json | 0 .../illusion/illusion_1L/result.json | 0 .../illusion_1L/target_harmonics.json | 0 .../karman/karman_re100/config.json | 0 .../karman/karman_re100/manifest.json | 0 .../karman/karman_re100/norm.json | 0 .../karman/karman_re100/result.json | 0 .../illusion/illusion_1L/config.json | 0 .../illusion/illusion_1L/manifest.json | 0 .../illusion/illusion_1L/norm.json | 0 .../illusion/illusion_1L/result.json | 0 .../illusion_1L/target_harmonics.json | 0 .../karman/karman_re100/config.json | 0 .../karman/karman_re100/manifest.json | 0 .../karman/karman_re100/norm.json | 0 .../karman/karman_re100/result.json | 0 .../data/v5/ill_075L/config.json | 0 .../{ => archive}/data/v5/ill_075L/norm.json | 0 .../data/v5/ill_075L/target_harmonics.json | 0 .../{ => archive}/data/v5/ill_15L/config.json | 0 .../{ => archive}/data/v5/ill_15L/norm.json | 0 .../data/v5/ill_15L/target_harmonics.json | 0 .../{ => archive}/data/v5/ill_1L/config.json | 0 .../{ => archive}/data/v5/ill_1L/norm.json | 0 .../data/v5/ill_1L/target_harmonics.json | 0 .../{ => archive}/data/v5/ill_2L/config.json | 0 .../{ => archive}/data/v5/ill_2L/norm.json | 0 .../data/v5/ill_2L/target_harmonics.json | 0 .../data/v5/kar_d075/config.json | 0 .../{ => archive}/data/v5/kar_d075/norm.json | 0 .../{ => archive}/data/v5/kar_d15/config.json | 0 .../{ => archive}/data/v5/kar_d15/norm.json | 0 .../{ => archive}/data/v5/kar_d2/config.json | 0 .../{ => archive}/data/v5/kar_d2/norm.json | 0 .../data/v5/kar_re100/config.json | 0 .../{ => archive}/data/v5/kar_re100/norm.json | 0 .../data/vortex/vortex_lamb/config.json | 0 .../data/vortex/vortex_lamb/norm.json | 0 .../data/vortex/vortex_lamb/result.json | 0 .../data/vortex/vortex_taylor/config.json | 0 .../data/vortex/vortex_taylor/norm.json | 0 .../data/vortex/vortex_taylor/result.json | 0 .../{ => archive}/diagnostics/__init__.py | 0 .../diagnostics/audit_symmetry.py | 0 .../diagnostics/compare_trajectories.py | 0 .../diagnostics/diagnose_illusion_phase.py | 0 .../{ => archive}/experiments/__init__.py | 0 .../{ => archive}/experiments/v5/__init__.py | 0 .../{ => archive}/experiments/v5/bridge_v5.py | 0 .../experiments/v5/stage_2_fit_v5.py | 0 .../historical}/literature_note.md | 0 .../historical}/scene_registry.json | 0 .../historical_docs/SR_analysis_report.md | 196 +++++++++ .../illusion_joint_formula_analysis.md | 122 ++++++ .../legacy_utils}/sindy_fitter.py | 0 .../old/archive/raw/illusion_0.5L_pysr.json | 0 .../old/archive/raw/illusion_0.6L_pysr.json | 0 .../old/archive/raw/illusion_0.75L_pysr.json | 0 .../old/archive/raw/illusion_0.75L_v23.json | 0 .../old/archive/raw/illusion_0.8L_pysr.json | 0 .../old/archive/raw/illusion_1.2L_pysr.json | 0 .../old/archive/raw/illusion_1.5L_v23.json | 0 .../old/archive/raw/illusion_1L_pysr.json | 0 .../archive/raw/illusion_1L_target_pysr.json | 0 .../old/archive/raw/illusion_1L_v23.json | 0 .../old/archive/raw/illusion_2L_pysr.json | 0 .../archive/raw/karman_joint_deep_front.json | 0 .../archive/raw/karman_joint_deep_top.json | 0 .../old/archive/raw/karman_re100_abs.json | 0 .../old/archive/raw/karman_re100_deriv.json | 0 .../old/archive/raw/karman_re100_mu_pysr.json | 0 .../archive/raw/karman_re100_phase_pysr.json | 0 .../old/archive/raw/karman_re100_pysr.json | 0 .../archive/raw/karman_re100_v23_th0.003.json | 0 .../old/archive/raw/karman_re150_v23.json | 0 .../old/archive/raw/karman_re200_pysr.json | 0 .../old/archive/raw/karman_re200_v23.json | 0 .../old/archive/raw/karman_re25_v23.json | 0 .../old/archive/raw/karman_re300_v23.json | 0 .../old/archive/raw/karman_re400_pysr.json | 0 .../archive/raw/karman_re400_pysr_SI200.json | 0 .../archive/raw/karman_re400_pysr_SI400.json | 0 .../old/archive/raw/karman_re400_v23.json | 0 .../old/archive/raw/karman_re50_pysr.json | 0 .../old/archive/raw/karman_re50_v23.json | 0 .../old/archive/raw/karman_re70_deriv.json | 0 .../old/archive/raw/karman_re70_v23.json | 0 .../raw/pysr_illusion_0.75L_front.json | 0 .../raw/pysr_illusion_0.75L_front_target.json | 0 .../archive/raw/pysr_illusion_0.75L_top.json | 0 .../raw/pysr_illusion_0.75L_top_target.json | 0 .../archive/raw/pysr_illusion_1.5L_front.json | 0 .../archive/raw/pysr_illusion_1.5L_top.json | 0 .../archive/raw/pysr_illusion_1L_front.json | 0 .../raw/pysr_illusion_1L_front_target.json | 0 .../old/archive/raw/pysr_illusion_1L_top.json | 0 .../raw/pysr_illusion_1L_top_target.json | 0 .../raw/pysr_illusion_joint_front.json | 0 .../raw/pysr_illusion_joint_marker_front.json | 0 .../archive/raw/pysr_illusion_joint_top.json | 0 .../archive/raw/pysr_karman_re100_front.json | 0 .../raw/pysr_karman_re100_front_deep.json | 0 .../raw/pysr_karman_re100_mu_front.json | 0 .../archive/raw/pysr_karman_re100_mu_top.json | 0 .../archive/raw/pysr_karman_re100_top.json | 0 .../raw/pysr_karman_re100_top_deep.json | 0 .../archive/raw/pysr_karman_re200_front.json | 0 .../raw/pysr_karman_re200_front_deep.json | 0 .../raw/pysr_karman_re200_front_mu.json | 0 .../archive/raw/pysr_karman_re200_top.json | 0 .../raw/pysr_karman_re200_top_deep.json | 0 .../archive/raw/pysr_karman_re200_top_mu.json | 0 .../archive/raw/pysr_karman_re400_front.json | 0 .../raw/pysr_karman_re400_front_deep.json | 0 .../raw/pysr_karman_re400_front_mu.json | 0 .../archive/raw/pysr_karman_re400_top.json | 0 .../raw/pysr_karman_re400_top_deep.json | 0 .../archive/raw/pysr_karman_re400_top_mu.json | 0 .../archive/raw/pysr_karman_re50_front.json | 0 .../raw/pysr_karman_re50_front_deep.json | 0 .../raw/pysr_karman_re50_front_mu.json | 0 .../old/archive/raw/pysr_karman_re50_top.json | 0 .../raw/pysr_karman_re50_top_deep.json | 0 .../archive/raw/pysr_karman_re50_top_mu.json | 0 .../old/archive/raw/vortex_lamb_pysr.json | 0 .../old/archive/raw/vortex_taylor_pysr.json | 0 .../old/batch_illusion_generalization.sh | 0 .../old/compare/illusion_shared_core.json | 0 .../old/compare/karman_shared_core.json | 0 .../{ => archive}/old/eval_rollout.py | 0 .../old/launch_pysr_validation.py | 0 .../{ => archive}/old/legacy/config_cuda.json | 0 .../old/legacy/config_flowfield.json | 0 .../old/old_data/pareto_karman_re100.json | 0 .../old/old_data/pareto_vortex_lamb.json | 0 .../old/old_data/pareto_vortex_taylor.json | 0 .../illusion_0.75L_PPO_step0000_pct00.png | Bin .../illusion_0.75L_PPO_step0060_pct12.png | Bin .../illusion_0.75L_PPO_step0120_pct25.png | Bin .../illusion_0.75L_PPO_step0180_pct37.png | Bin .../illusion_0.75L_PPO_step0240_pct50.png | Bin .../illusion_0.75L_PPO_step0300_pct62.png | Bin .../illusion_0.75L_PPO_step0360_pct75.png | Bin .../illusion_0.75L_PPO_step0420_pct87.png | Bin .../illusion_0.75L_PPO_step0479_pct99.png | Bin .../illusion_1.5L_PPO_step0000_pct00.png | Bin .../illusion_1.5L_PPO_step0037_pct12.png | Bin .../illusion_1.5L_PPO_step0074_pct24.png | Bin .../illusion_1.5L_PPO_step0111_pct37.png | Bin .../illusion_1.5L_PPO_step0148_pct49.png | Bin .../illusion_1.5L_PPO_step0185_pct61.png | Bin .../illusion_1.5L_PPO_step0222_pct74.png | Bin .../illusion_1.5L_PPO_step0259_pct86.png | Bin .../illusion_1.5L_PPO_step0296_pct98.png | Bin .../illusion_1.5L_PPO_step0299_pct99.png | Bin .../illusion_1L_PPO_step0000_pct00.png | Bin .../illusion_1L_PPO_step0040_pct12.png | Bin .../illusion_1L_PPO_step0080_pct25.png | Bin .../illusion_1L_PPO_step0120_pct37.png | Bin .../illusion_1L_PPO_step0160_pct50.png | Bin .../illusion_1L_PPO_step0200_pct62.png | Bin .../illusion_1L_PPO_step0240_pct75.png | Bin .../illusion_1L_PPO_step0280_pct87.png | Bin .../illusion_1L_PPO_step0319_pct99.png | Bin .../old/old_data/pysr_all_results.json | 0 .../old/old_data/sindy_karman_v1.json | 0 .../old/old_data/sindy_karman_with_mu.json | 0 .../old/old_data/sindy_karman_with_sin.json | 0 .../old/old_data/sindy_vortex_v1.json | 0 .../{ => archive}/old/predict_pysr.py | 0 .../{ => archive}/old/run_closed_loop.py | 0 .../old/run_closed_loop_illusion.py | 0 .../old/run_closed_loop_re400_si.py | 0 .../old/run_closed_loop_vortex.py | 0 .../scripts/analyze_illusion_degradation.py | 0 .../old/scripts/diagnose_illusion.py | 0 .../old/scripts/gen_illusion_target.py | 0 .../old/scripts/infer_illusion.py | 0 .../{ => archive}/old/scripts/infer_karman.py | 0 .../{ => archive}/old/scripts/infer_vortex.py | 0 .../old/scripts/test_cylinder_order.py | 0 .../old/scripts/visualize_ppo_illusion.py | 0 .../{ => archive}/old/sindy/run_pysr.py | 0 .../{ => archive}/old/sindy/run_pysr_deep.py | 0 .../old/sindy/run_pysr_deep_illusion.py | 0 .../{ => archive}/old/sindy_sr_knowledge.md | 0 .../{ => archive}/old/sindy_sr_notes.md | 0 .../pysr_deep_indiv_top.json | 0 .../pysr_deep_individual_deep.json | 0 .../pysr_deep_joint_deep.json | 0 .../pysr_deep_joint_top.json | 0 .../pysr_illusion_deep_individual_deep.json | 0 .../pysr_illusion_front.json | 0 .../pysr_illusion_joint_deep.json | 0 .../pysr_illusion_joint_marker_deep.json | 0 .../pysr_illusion_top.json | 0 .../pysr_karman_front.json | 0 .../pysr_karman_joint.json | 0 .../pysr_karman_joint_front.json | 0 .../pysr_karman_joint_mu.json | 0 .../pysr_karman_joint_phasemu.json | 0 .../pysr_karman_joint_phys_dadt.json | 0 .../pysr_karman_joint_top.json | 0 .../pysr_karman_joint_v2_full.json | 0 .../pysr_karman_joint_whitelist.json | 0 .../pysr_karman_top.json | 0 .../illusion_0.75L_PPO_vorticity.png | Bin .../illusion_0.75L_target.png | Bin .../illusion_0.75L_target_vorticity.png | Bin .../illusion_0.75L_uncontrolled.png | Bin .../illusion_0.75L_uncontrolled_vorticity.png | Bin .../illusion_0.75L_vorticity.png | Bin .../illusion_1.5L_PPO_vorticity.png | Bin .../illusion_1.5L_target.png | Bin .../illusion_1.5L_target_vorticity.png | Bin .../illusion_1.5L_uncontrolled.png | Bin .../illusion_1.5L_uncontrolled_vorticity.png | Bin .../illusion_1.5L_vorticity.png | Bin .../illusion_1L_PPO_vorticity.png | Bin .../illusion_1L_target.png | Bin .../illusion_1L_target_vorticity.png | Bin .../illusion_1L_uncontrolled.png | Bin .../illusion_1L_uncontrolled_vorticity.png | Bin .../illusion_1L_vorticity.png | Bin .../results/figures/FIGURE_INDEX.md | 0 .../results/figures/fig_action_comparison.pdf | Bin .../results/figures/fig_action_comparison.png | Bin .../figures/fig_formula_comparison.pdf | Bin .../figures/fig_formula_comparison.png | Bin .../figures/fig_illusion_degradation.pdf | Bin .../figures/fig_illusion_degradation.png | Bin .../results/figures/fig_karman_cross_re.pdf | Bin .../results/figures/fig_karman_cross_re.png | Bin .../results/figures/fig_master_table.pdf | Bin .../results/figures/fig_master_table.png | Bin .../figures/fig_vortex_generalization.pdf | Bin .../figures/fig_vortex_generalization.png | Bin .../formulas/illusion_0.75L_front.json | 0 .../formulas/illusion_0.75L_front_target.json | 0 .../results/formulas/illusion_0.75L_top.json | 0 .../formulas/illusion_0.75L_top_target.json | 0 .../results/formulas/illusion_1.5L_front.json | 0 .../results/formulas/illusion_1.5L_top.json | 0 .../results/formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_front_target.json | 0 .../results/formulas/illusion_1L_top.json | 0 .../formulas/illusion_1L_top_target.json | 0 .../formulas/illusion_joint_front.json | 0 .../formulas/illusion_joint_marker_front.json | 0 .../results/formulas/illusion_joint_top.json | 0 .../results/formulas/karman_joint_front.json | 0 .../results/formulas/karman_joint_top.json | 0 .../results/formulas/karman_re100_front.json | 0 .../results/formulas/karman_re100_top.json | 0 .../results/formulas/karman_re200_front.json | 0 .../results/formulas/karman_re200_top.json | 0 .../results/formulas/karman_re400_front.json | 0 .../results/formulas/karman_re400_top.json | 0 .../results/formulas/karman_re50_front.json | 0 .../results/formulas/karman_re50_top.json | 0 .../ill_075L_ill_1L_ill_15L_ill_2L_front.json | 0 .../results/formulas_v5/ill_1L_front.json | 0 .../results/formulas_v5/ill_1L_top.json | 0 .../results/formulas_v5/kar_d075_front.json | 0 .../results/formulas_v5/kar_d075_top.json | 0 .../results/formulas_v5/kar_d15_front.json | 0 .../results/formulas_v5/kar_d15_top.json | 0 .../results/formulas_v5/kar_d2_front.json | 0 .../results/formulas_v5/kar_d2_top.json | 0 .../results/formulas_v5/kar_re100_front.json | 0 ...r_re100_kar_d075_kar_d15_kar_d2_front.json | 0 .../formulas_v5/karman_v5_nodadt_front.json | 0 .../mixed_karman_5cases_front.json | 0 .../results/runs/pre_fix_manifest.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 ...sion_1L__pysr__f-b097927baeb7__si-600.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 .../formulas/joint_front.json | 0 .../formulas/joint_rear_shared_upper.json | 0 ...n_0p75L__pysr__f-508b04750c4f__si-400.json | 0 ...sion_1L__pysr__f-508b04750c4f__si-600.json | 0 ...n_0p75L__pysr__f-44891e22e744__si-400.json | 0 ...sion_1L__pysr__f-44891e22e744__si-600.json | 0 .../formulas/joint_front.json | 0 .../formulas/joint_rear_shared_upper.json | 0 .../formulas/joint_front.json | 0 .../formulas/joint_rear_shared_upper.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 .../formulas/joint_front.json | 0 .../formulas/joint_rear_shared_upper.json | 0 ...n_re100__pysr__f-d2b16c777e41__si-800.json | 0 ...n_re200__pysr__f-d2b16c777e41__si-800.json | 0 ...n_re400__pysr__f-d2b16c777e41__si-800.json | 0 ...an_re50__pysr__f-d2b16c777e41__si-800.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 ...n_re100__pysr__f-16231fd8a6aa__si-800.json | 0 .../illusion_1L.json | 0 .../karman_re100.json | 0 .../static_ablation.json | 0 .../order/illusion_1L.json | 0 .../order/karman_re100.json | 0 .../illusion_1L.json | 0 .../karman_re100.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 ...n_re100__pysr__f-6769ae4d536c__si-800.json | 0 ...n_re100__pysr__f-6769ae4d536c__si-800.json | 0 ...n_re100__pysr__f-ddb9ca1f4e25__si-800.json | 0 .../illusion_1L__ppo__f-ppo__si-600.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 ...n_re100__pysr__f-ddb9ca1f4e25__si-800.json | 0 .../karman_re100__ppo__f-ppo__si-800.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../illusion_1L.json | 0 .../karman_re100.json | 0 ...sion_1L__uncontrolled__f-none__si-600.json | 0 ...n_re100__uncontrolled__f-none__si-800.json | 0 .../evidence_manifest.json | 0 .../review_record.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_lower.json | 0 .../formulas/illusion_1L_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_lower.json | 0 .../formulas/illusion_1L_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_lower.json | 0 .../formulas/illusion_1L_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../formulas/karman_re100_lower.json | 0 .../formulas/karman_re100_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../formulas/karman_re100_lower.json | 0 .../formulas/karman_re100_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../formulas/karman_re100_lower.json | 0 .../formulas/karman_re100_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../illusion_1L_rear_shared_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_lower.json | 0 .../formulas/illusion_1L_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_lower.json | 0 .../formulas/illusion_1L_upper.json | 0 .../formulas/illusion_1L_front.json | 0 .../formulas/illusion_1L_lower.json | 0 .../formulas/illusion_1L_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../formulas/karman_re100_lower.json | 0 .../formulas/karman_re100_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../formulas/karman_re100_lower.json | 0 .../formulas/karman_re100_upper.json | 0 .../formulas/karman_re100_front.json | 0 .../formulas/karman_re100_lower.json | 0 .../formulas/karman_re100_upper.json | 0 .../static_ablation.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 .../formulas/karman_re100_front.json | 0 .../karman_re100_rear_shared_upper.json | 0 .../illusion_1L.json | 0 .../karman_re100.json | 0 .../illusion_1L__ppo__f-ppo__si-600.json | 0 .../karman_re100__ppo__f-ppo__si-800.json | 0 .../illusion_1L.json | 0 .../karman_re100.json | 0 .../order/illusion_1L.json | 0 .../order/karman_re100.json | 0 .../illusion_1L.json | 0 .../karman_re100.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 ...sion_1L__pysr__f-46782190a6b7__si-600.json | 0 ...n_re100__pysr__f-a5d2d9b2cca0__si-800.json | 0 ...sion_1L__pysr__f-eeed591da8b0__si-600.json | 0 .../audit_report.json | 0 .../candidate_registry.json | 0 ...n_re100__pysr__f-536a929fa545__si-800.json | 0 .../results/validations/illusion_0.5L.json | 0 .../results/validations/illusion_0.6L.json | 0 .../results/validations/illusion_0.75L.json | 0 .../validations/illusion_0.75L_ppo.json | 0 .../results/validations/illusion_0.8L.json | 0 .../results/validations/illusion_1.2L.json | 0 .../validations/illusion_1.5L_ppo.json | 0 .../results/validations/illusion_1L.json | 0 .../results/validations/illusion_1L_ppo.json | 0 .../validations/illusion_1L_target.json | 0 .../results/validations/illusion_2L.json | 0 .../results/validations/karman_re100.json | 0 .../results/validations/karman_re100_ppo.json | 0 .../results/validations/karman_re200.json | 0 .../results/validations/karman_re200_ppo.json | 0 .../results/validations/karman_re400.json | 0 .../validations/karman_re400_SI400.json | 0 .../results/validations/karman_re400_ppo.json | 0 .../results/validations/karman_re50.json | 0 .../results/validations/karman_re50_ppo.json | 0 .../results/validations/vortex_lamb.json | 0 .../results/validations/vortex_lamb_ppo.json | 0 .../results/validations/vortex_taylor.json | 0 .../validations/vortex_taylor_ppo.json | 0 .../{ => archive}/tests/test_audit_round1.py | 0 .../{ => archive}/tools/audit_round1.py | 0 src/SR_analysis/configs.py | 32 -- src/SR_analysis/results/README.md | 324 +++------------ src/SR_analysis/stage_1_infer.py | 59 +-- src/SR_analysis/stage_3_validate.py | 3 - .../tests/test_formula_provenance.py | 24 -- src/SR_analysis/utils/cfd_interface.py | 2 +- src/SR_analysis/utils/feature_builder.py | 2 +- 576 files changed, 462 insertions(+), 953 deletions(-) create mode 100644 src/SR_analysis/archive/README.md rename src/SR_analysis/{ => archive}/data/degradation_analysis/action_timeseries.png (100%) rename src/SR_analysis/{ => archive}/data/degradation_analysis/autocorrelation.png (100%) rename src/SR_analysis/{ => archive}/data/degradation_analysis/fft_spectra.png (100%) rename src/SR_analysis/{ => archive}/data/diagnostics/phase_portrait_illusion_0.75L.png (100%) rename src/SR_analysis/{ => archive}/data/diagnostics/phase_portrait_illusion_1.5L.png (100%) rename src/SR_analysis/{ => archive}/data/diagnostics/phase_portrait_illusion_1L.png (100%) rename src/SR_analysis/{ => archive}/data/diagnostics/timeseries_full_illusion_0.75L.png (100%) rename src/SR_analysis/{ => archive}/data/diagnostics/timeseries_full_illusion_1.5L.png (100%) rename src/SR_analysis/{ => archive}/data/diagnostics/timeseries_full_illusion_1L.png (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re100/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re100/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re100/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re50/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re50/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re50/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-20260716/karman/karman_re50/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re100/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re100/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re100/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re100/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re200/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re200/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re200/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re200/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re400/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re400/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re400/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re400/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re50/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re50/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re50/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/round1-legacy-v2-20260716/karman/karman_re50/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/result.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/config.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/manifest.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/norm.json (100%) rename src/SR_analysis/{ => archive}/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/result.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_075L/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_075L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_075L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_15L/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_15L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_15L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_1L/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_1L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_1L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_2L/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_2L/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/ill_2L/target_harmonics.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_d075/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_d075/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_d15/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_d15/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_d2/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_d2/norm.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_re100/config.json (100%) rename src/SR_analysis/{ => archive}/data/v5/kar_re100/norm.json (100%) rename src/SR_analysis/{ => archive}/data/vortex/vortex_lamb/config.json (100%) rename src/SR_analysis/{ => archive}/data/vortex/vortex_lamb/norm.json (100%) rename src/SR_analysis/{ => archive}/data/vortex/vortex_lamb/result.json (100%) rename src/SR_analysis/{ => archive}/data/vortex/vortex_taylor/config.json (100%) rename src/SR_analysis/{ => archive}/data/vortex/vortex_taylor/norm.json (100%) rename src/SR_analysis/{ => archive}/data/vortex/vortex_taylor/result.json (100%) rename src/SR_analysis/{ => archive}/diagnostics/__init__.py (100%) rename src/SR_analysis/{ => archive}/diagnostics/audit_symmetry.py (100%) rename src/SR_analysis/{ => archive}/diagnostics/compare_trajectories.py (100%) rename src/SR_analysis/{ => archive}/diagnostics/diagnose_illusion_phase.py (100%) rename src/SR_analysis/{ => archive}/experiments/__init__.py (100%) rename src/SR_analysis/{ => archive}/experiments/v5/__init__.py (100%) rename src/SR_analysis/{ => archive}/experiments/v5/bridge_v5.py (100%) rename src/SR_analysis/{ => archive}/experiments/v5/stage_2_fit_v5.py (100%) rename src/SR_analysis/{ => archive/historical}/literature_note.md (100%) rename src/SR_analysis/{ => archive/historical}/scene_registry.json (100%) create mode 100644 src/SR_analysis/archive/historical_docs/SR_analysis_report.md create mode 100644 src/SR_analysis/archive/historical_docs/illusion_joint_formula_analysis.md rename src/SR_analysis/{utils => archive/legacy_utils}/sindy_fitter.py (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_0.5L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_0.6L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_0.75L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_0.75L_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_0.8L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_1.2L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_1.5L_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_1L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_1L_target_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_1L_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/illusion_2L_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_joint_deep_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_joint_deep_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re100_abs.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re100_deriv.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re100_mu_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re100_phase_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re100_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re100_v23_th0.003.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re150_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re200_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re200_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re25_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re300_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re400_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re400_pysr_SI200.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re400_pysr_SI400.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re400_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re50_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re50_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re70_deriv.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/karman_re70_v23.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_0.75L_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_0.75L_front_target.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_0.75L_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_0.75L_top_target.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_1.5L_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_1.5L_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_1L_front_target.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_1L_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_1L_top_target.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_joint_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_joint_marker_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_illusion_joint_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re100_front_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re100_mu_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re100_mu_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re100_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re100_top_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re200_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re200_front_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re200_front_mu.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re200_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re200_top_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re200_top_mu.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re400_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re400_front_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re400_front_mu.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re400_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re400_top_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re400_top_mu.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re50_front.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re50_front_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re50_front_mu.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re50_top.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re50_top_deep.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/pysr_karman_re50_top_mu.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/vortex_lamb_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/archive/raw/vortex_taylor_pysr.json (100%) rename src/SR_analysis/{ => archive}/old/batch_illusion_generalization.sh (100%) rename src/SR_analysis/{ => archive}/old/compare/illusion_shared_core.json (100%) rename src/SR_analysis/{ => archive}/old/compare/karman_shared_core.json (100%) rename src/SR_analysis/{ => archive}/old/eval_rollout.py (100%) rename src/SR_analysis/{ => archive}/old/launch_pysr_validation.py (100%) rename src/SR_analysis/{ => archive}/old/legacy/config_cuda.json (100%) rename src/SR_analysis/{ => archive}/old/legacy/config_flowfield.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/pareto_karman_re100.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/pareto_vortex_lamb.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/pareto_vortex_taylor.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0000_pct00.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0060_pct12.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0120_pct25.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0180_pct37.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0240_pct50.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0300_pct62.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0360_pct75.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0420_pct87.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0479_pct99.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0000_pct00.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0037_pct12.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0074_pct24.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0111_pct37.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0148_pct49.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0185_pct61.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0222_pct74.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0259_pct86.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0296_pct98.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0299_pct99.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0000_pct00.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0040_pct12.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0080_pct25.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0120_pct37.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0160_pct50.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0200_pct62.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0240_pct75.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0280_pct87.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/ppo_step_images/illusion_1L_PPO_step0319_pct99.png (100%) rename src/SR_analysis/{ => archive}/old/old_data/pysr_all_results.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/sindy_karman_v1.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/sindy_karman_with_mu.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/sindy_karman_with_sin.json (100%) rename src/SR_analysis/{ => archive}/old/old_data/sindy_vortex_v1.json (100%) rename src/SR_analysis/{ => archive}/old/predict_pysr.py (100%) rename src/SR_analysis/{ => archive}/old/run_closed_loop.py (100%) rename src/SR_analysis/{ => archive}/old/run_closed_loop_illusion.py (100%) rename src/SR_analysis/{ => archive}/old/run_closed_loop_re400_si.py (100%) rename src/SR_analysis/{ => archive}/old/run_closed_loop_vortex.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/analyze_illusion_degradation.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/diagnose_illusion.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/gen_illusion_target.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/infer_illusion.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/infer_karman.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/infer_vortex.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/test_cylinder_order.py (100%) rename src/SR_analysis/{ => archive}/old/scripts/visualize_ppo_illusion.py (100%) rename src/SR_analysis/{ => archive}/old/sindy/run_pysr.py (100%) rename src/SR_analysis/{ => archive}/old/sindy/run_pysr_deep.py (100%) rename src/SR_analysis/{ => archive}/old/sindy/run_pysr_deep_illusion.py (100%) rename src/SR_analysis/{ => archive}/old/sindy_sr_knowledge.md (100%) rename src/SR_analysis/{ => archive}/old/sindy_sr_notes.md (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_deep_indiv_top.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_deep_individual_deep.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_deep_joint_deep.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_deep_joint_top.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_illusion_deep_individual_deep.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_illusion_front.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_illusion_joint_deep.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_illusion_joint_marker_deep.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_illusion_top.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_front.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_front.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_mu.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_phasemu.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_phys_dadt.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_top.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_v2_full.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_joint_whitelist.json (100%) rename src/SR_analysis/{ => archive}/old/validate_results_archive/pysr_karman_top.json (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_0.75L_PPO_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_0.75L_target.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_0.75L_target_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_0.75L_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1.5L_PPO_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1.5L_target.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1.5L_target_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1.5L_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1L_PPO_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1L_target.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1L_target_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1L_uncontrolled.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1L_uncontrolled_vorticity.png (100%) rename src/SR_analysis/{ => archive}/old/validate_vorticity_pngs/illusion_1L_vorticity.png (100%) rename src/SR_analysis/{ => archive}/results/figures/FIGURE_INDEX.md (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_action_comparison.pdf (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_action_comparison.png (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_formula_comparison.pdf (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_formula_comparison.png (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_illusion_degradation.pdf (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_illusion_degradation.png (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_karman_cross_re.pdf (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_karman_cross_re.png (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_master_table.pdf (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_master_table.png (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_vortex_generalization.pdf (100%) rename src/SR_analysis/{ => archive}/results/figures/fig_vortex_generalization.png (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_0.75L_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_0.75L_front_target.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_0.75L_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_0.75L_top_target.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_1.5L_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_1.5L_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_1L_front_target.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_1L_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_1L_top_target.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_joint_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_joint_marker_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/illusion_joint_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_joint_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_joint_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re100_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re200_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re200_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re400_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re400_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re50_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas/karman_re50_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/ill_075L_ill_1L_ill_15L_ill_2L_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/ill_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/ill_1L_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_d075_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_d075_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_d15_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_d15_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_d2_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_d2_top.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/kar_re100_kar_d075_kar_d15_kar_d2_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/karman_v5_nodadt_front.json (100%) rename src/SR_analysis/{ => archive}/results/formulas_v5/mixed_karman_5cases_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/pre_fix_manifest.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-safe-mapped-20260717/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-1L/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-1L/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-1L/validations/illusion_1L__pysr__f-b097927baeb7__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_0p75L__pysr__f-508b04750c4f__si-400.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_1L__pysr__f-508b04750c4f__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_0p75L__pysr__f-44891e22e744__si-400.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_1L__pysr__f-44891e22e744__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re100__pysr__f-d2b16c777e41__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re200__pysr__f-d2b16c777e41__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re400__pysr__f-d2b16c777e41__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re50__pysr__f-d2b16c777e41__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-re100/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-re100/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/round1-legacy-v2-20260716-karman-re100/validations/karman_re100__pysr__f-16231fd8a6aa__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-equivalence-20260717/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-equivalence-20260717/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-illusion-diagnostic-20260717/static_ablation.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-order-20260717/order/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-order-20260717/order/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-symmetry-20260717/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/scientific-rebuild-symmetry-20260717/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L2-karman-front_feedback-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L2-karman-front_feedback-v2-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L2-karman-rear_constant-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L3-illusion_1L-ppo-v2-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L3-karman-rear_constant-v2-20260717/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L3-karman-rear_constant-v2-20260717/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L3-karman-rear_constant-v2-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-L3-karman_re100-ppo-v2-20260717/validations/karman_re100__ppo__f-ppo__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-baseline-comparison-20260717/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-baseline-comparison-20260717/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-baseline-illusion-uncontrolled-20260717/validations/illusion_1L__uncontrolled__f-none__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-baseline-karman-uncontrolled-20260717/validations/karman_re100__uncontrolled__f-none__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-evidence-round1-20260717/evidence_manifest.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-evidence-round1-20260717/review_record.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-illusion-ablation-20260717/static_ablation.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-karman-baseline-rear_constant-20260717/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-karman-baseline-rear_constant-20260717/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_front.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_rear_shared_upper.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-parity-report-20260717/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-parity-report-20260717/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-parity-stage3-illusion-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-parity-stage3-karman-20260717/validations/karman_re100__ppo__f-ppo__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-policy-replay-20260717/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-policy-replay-20260717/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-rebuild-order-20260717/order/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-rebuild-order-20260717/order/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-symmetry-audit-20260717/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/runs/trusted-symmetry-audit-20260717/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/validations/illusion_1L__pysr__f-46782190a6b7__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/validate-rebuild-karman-re100-safe-mapped-20260717/validations/karman_re100__pysr__f-a5d2d9b2cca0__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/runs/wiring-illusion-1L-safe-20260716/validations/illusion_1L__pysr__f-eeed591da8b0__si-600.json (100%) rename src/SR_analysis/{ => archive}/results/runs/wiring-karman-re100-20260716/audit_report.json (100%) rename src/SR_analysis/{ => archive}/results/runs/wiring-karman-re100-20260716/candidate_registry.json (100%) rename src/SR_analysis/{ => archive}/results/runs/wiring-karman-re100-20260716/validations/karman_re100__pysr__f-536a929fa545__si-800.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_0.5L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_0.6L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_0.75L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_0.75L_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_0.8L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_1.2L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_1.5L_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_1L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_1L_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_1L_target.json (100%) rename src/SR_analysis/{ => archive}/results/validations/illusion_2L.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re100.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re100_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re200.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re200_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re400.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re400_SI400.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re400_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re50.json (100%) rename src/SR_analysis/{ => archive}/results/validations/karman_re50_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/vortex_lamb.json (100%) rename src/SR_analysis/{ => archive}/results/validations/vortex_lamb_ppo.json (100%) rename src/SR_analysis/{ => archive}/results/validations/vortex_taylor.json (100%) rename src/SR_analysis/{ => archive}/results/validations/vortex_taylor_ppo.json (100%) rename src/SR_analysis/{ => archive}/tests/test_audit_round1.py (100%) rename src/SR_analysis/{ => archive}/tools/audit_round1.py (100%) diff --git a/src/SR_analysis/PIPELINE.md b/src/SR_analysis/PIPELINE.md index 7ee079c..7bbb722 100644 --- a/src/SR_analysis/PIPELINE.md +++ b/src/SR_analysis/PIPELINE.md @@ -1,358 +1,85 @@ -# Article SR pipeline +# Frozen SR pipeline -This is the authoritative execution and design document for `SR_analysis`. Read `README.md` first for the scientific summary and current conclusions. +## Authority -## 1. Method in one diagram - -```mermaid -flowchart LR - contracts[Channel and causal contracts] --> data[PPO trajectories] - data --> perCase[Per-case broad discovery] - perCase --> joint[Within-objective joint discovery] - joint --> refit[Fixed-topology all-data refit] - refit --> safety[Static and replay safety] - safety --> shortCFD[Short serial CFD] - shortCFD --> standardCFD[200-step legacy DTW] - standardCFD --> longCFD[400-step duration check] - longCFD --> generalization[Unseen-condition CFD] - standardCFD --> steady[Steady-cloak calibration] - standardCFD --> ablation[Term deletion and scaling] - steady --> interpretation[Physical interpretation and limits] - generalization --> interpretation - ablation --> interpretation -``` - -The workflow has one scientific route: +The only active route is: ```text stage_1_infer.py -> stage_2_fit.py -> stage_3_validate.py ``` -Checks and diagnostics gate or interpret this route; they do not create a parallel pipeline. +It covers Kármán and Illusion. The `steady` Stage 3/config scene is retained solely for the Article2 constant-rotation calibration used to interpret the Kármán rear constant. Current evidence is indexed by `results/README.md`; archived workflows are non-authoritative and may not execute. -## 1.1 Article2 extension commands +## Preconditions and immutable contracts -All CFD commands remain serialized and use physical GPU 2. `--device 0` is the logical device after masking. +Use LegacyCelerisLab, its frozen PPO model, and the scene's frozen norm. Keep native body/action order `front, upper, lower`, native force order `front_fx, front_fy, upper_fx, upper_fy, lower_fx, lower_fy`, and sensor order upper/centre/lower `(u_x,u_y)`. Run `checks/order_contract.py` after any solver/kernel change and `checks/policy_replay.py` before admitting data. + +The fit alignment is exactly `causal_post_state_to_next_action`: post-state `i` predicts decoded physical action `i+1`; no lag, derivative, split, or warm-up state crosses a trajectory boundary. Formula output is `alpha=omega/U0`. Canonical deployment is mapped-shared under reflection `G`: `alpha_F=(h_F(x)-h_F(Gx))/2`, `alpha_U=h_R(x)`, `alpha_L=-h_R(Gx)`. + +The validation metric is exactly `legacy_dtw_v1_abs_n_unclipped` / `legacy_reference_cycle_vs_last_recorded_cycle`: estimate lag from transverse sensor channel 1 using the historical target/reference windows, circularly shift the full target, compute absolute normalized unclipped DTW independently for six channels, then average. Lag is alignment metadata, not a physical delay. + +Interpret names literally: `Re_D=re_code/2` because the code Reynolds reference is `2D`; the Illusion `target_diameter` field is historically named but passed as the Legacy cylinder radius. + +## Stage 1 — collect accepted trajectories + +Environment: `pycuda_3_10`. CFD is serial. With physical GPU 2 masked, PyCUDA sees logical device 0; keep PPO inference on CPU. ```bash -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python src/SR_analysis/stage_3_validate.py --scene steady --mode constant \ - --constant-alpha 0 -5 5 --device 0 --steps 200 \ - --run-id article2-steady-sweep-a5-20260720 - -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python src/SR_analysis/stage_3_validate.py --group karman_re50,karman_re100,karman_re200,karman_re400 \ - --mode pysr --formula-front --formula-rear \ - --device 0 --steps 400 --run-id article2-long-karman-20260720 - -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python src/SR_analysis/stage_3_validate.py --group karman_re25,karman_re70,karman_re150,karman_re300 \ - --mode pysr --formula-front --formula-rear \ - --device 0 --steps 200 --run-id article2-gen-karman-20260720 +CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 python src/SR_analysis/stage_1_infer.py --group karman_trained --run-id --device 0 --model-device cpu --steps 200 --norm-source existing +CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 python src/SR_analysis/stage_1_infer.py --group illusion_trained --run-id --device 0 --model-device cpu --steps 200 --norm-source existing ``` -Illusion uses the corresponding article topology-A formulas and either the three training scenes for the duration test or `--group illusion_generalization`. Generalization PySR deployment does not require a PPO normalization file; target harmonics remain frozen per scene. +Outputs are immutable beneath `data/runs////` and include config, manifest, hashes, frozen norm, target, controlled telemetry, and result; Kármán also retains uncontrolled data and Illusion target harmonics. The canonical accepted roots are the two `article-joint-data-*-20260718` families. -Export any Stage 1 or Stage 3 trajectory with: +## Stage 2 — discover then refit + +Environment: `sr_env`. Start broad with `raw_complete` and `symmetry`; for Illusion compare `actual_only`, `target_only`, `actual_plus_target`, and `actual_plus_error`. Run per-case searches with multiple seeds, then joint searches only within one objective. Keep contiguous train/validation/blind diagnostics and case/trajectory-equal weighting. ```bash -PYTHONPATH=src conda run -n pycuda_3_10 python -m SR_analysis.tools.telemetry_to_csv \ - --input --target --output-dir \ - --scene --source ppo --sample-interval --conv-len +PYTHONPATH=src conda run -n sr_env python src/SR_analysis/stage_2_fit.py --scenes karman_re50,karman_re100,karman_re200,karman_re400 --mode joint --run-id --data-root src/SR_analysis/data/runs/article-joint-data-karman-20260718 --feature-set symmetry --feature-profile actual_only --deployment-architecture mapped_shared --fit-augmentation G --fit-purpose discovery --seed 0 --niterations 40 --smoke ``` -The exporter writes wide and long CSV files, target tables, manifests and legacy-DTW window convergence diagnostics. For Stage 3 telemetry use `--source sr`; embedded target sensors are used automatically. +After topology recurs and survives diagnostics, freeze it and run `--fit-purpose fixed-topology-refit` with explicit front/rear topology expressions and discovery-parent paths. Only coefficients may change. Do not rewrite article parent paths or manifests. PySR score, Pareto complexity, blind R², and static safety are discovery evidence only. -Build the complete derived plotting package from immutable article artifacts with: +## Stage 3 — closed-loop acceptance + +Environment: `pycuda_3_10`; run one CFD process at a time. Screen at 40 steps, then validate accepted candidates for 200 steps with a new immutable run ID. ```bash -PYTHONPATH=src conda run -n sr_env python -m SR_analysis.tools.prepare_plotting_data \ - --output-dir src/SR_analysis/results/runs/article2-plotting-package- +CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 python src/SR_analysis/stage_3_validate.py --group karman_re50,karman_re100,karman_re200,karman_re400 --mode pysr --formula-front --formula-rear --device 0 --steps 200 --run-id ``` -This creates causal PPO-state predictions/residuals, feature and additive-term contributions, unified ablation/scaling summaries and steady-sweep time series. Render diagnostic PNG/PDF figures in an environment containing Matplotlib with `python -m SR_analysis.tools.plot_sr_diagnostics`. For 400-step PPO CFD, keep `--model-device cpu`; GPU 2 is reserved for the active PyCUDA context. +Reject any case that is non-finite, terminates early, violates action/order/schema contracts, or lacks required provenance. Retain rejected telemetry. Closed-loop stability and exact legacy DTW outrank offline fit. -## 2. Design decisions +## Extensions and necessity tests -### Why fit PPO actions? +Use the frozen accepted coefficients for 400-step duration runs, pointwise unseen Kármán Re-code and Illusion size-label conditions, the disturbance-free `steady` constant-rotation sweep, and deterministic additive-term deletion/coefficient scaling (`0, 0.5, 0.75, 1, 1.25, 1.5`). These are sampled deployments, not a continuous parameter law or statistical robustness study. A term is important only if deletion causes repeatable closed-loop degradation; scale zero must agree with deletion and parent formulas remain immutable. -The PPO policy supplies successful state-action trajectories. Fitting its dimensionless physical actions provides candidate feedback structures without rerunning symbolic search inside CFD. The fitted expression is a policy surrogate, not a Navier–Stokes equation. - -### Why not select the highest R² formula? - -A candidate changes the closed-loop state distribution after deployment. A formula can imitate PPO actions well on recorded states and still drift or become unstable in CFD. R² and Pareto complexity are therefore used to discover recurring variables and topologies; CFD stability and legacy DTW decide closed-loop value. - -### Why per-case before joint? - -Per-case searches reveal whether variables and topologies recur across operating conditions. Joint search begins only after broad variables have been considered, preventing a compact hand-selected library from predetermining the mechanism. - -### Why freeze topology before the final coefficient fit? - -Unrestricted symbolic search on all rows would use the blind data for structure selection. The workflow first selects topology from discovery runs, then refits only its numerical constants using all accepted trajectories with case-equal and trajectory-equal weighting. The refit records its parent discovery artifact. - -### Why exact G deployment? - -The geometry and objective are reflection-symmetric, while the legacy PPO was not trained with an equivariance constraint. The final architecture deliberately imposes physical symmetry: - -\[ -\alpha_F(x)=\frac{h_F(x)-h_F(Gx)}{2},\quad -\alpha_U(x)=h_R(x),\quad -\alpha_L(x)=-h_R(Gx). -\] - -This is physical symmetrization, not a claim that PPO itself is exactly equivariant. Three independent heads are retained only for diagnostic structure discovery. - -### Why no automatic lag search? - -For Illusion, target and actual forces share a causal deployment timeline. Cross-correlation can produce a statistically useful shift without identifying a physical delay. Temporal/derivative features are introduced only after controlled static-variable comparisons show insufficiency. DTW lag is reported as part of the legacy metric, not interpreted as control delay. - -### Why separate Kármán and Illusion joint fits? - -They are different objectives. Kármán seeks restoration of an incident wake; Illusion seeks a non-zero target wake. Joint means shared structure within one objective, not one formula across unrelated policies. - -## 3. Contracts and gates - -### Physical labels - -Kármán names use `re_code`, whose reference length is `2D`; report \(Re_D=\texttt{re\_code}/2\) whenever the physical Reynolds number is intended. Illusion names are legacy target-size labels. Despite the historical field name `target_diameter`, the value is passed to `LegacyCelerisLab.add_cylinder` as its `radius` argument. Rear symmetric and antisymmetric force coordinates are half-sums and half-differences, so changing that convention would rescale fitted coefficients. - -A run may proceed to fitting only when all applicable gates pass. - -### Physical order gate - -Canonical orders: - -- body/action: `front, upper, lower` -- forces: `front_fx, front_fy, upper_fx, upper_fy, lower_fx, lower_fy` -- sensors: upper, centre, lower, each with streamwise/transverse components - -Run after CFD/kernel changes: +## Publication exports ```bash -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python -m SR_analysis.checks.order_contract \ - --scene karman_re100 --device 0 \ - --output src/SR_analysis/results/runs//karman_re100.json +PYTHONPATH=src conda run -n sr_env python -m SR_analysis.tools.prepare_plotting_data --output-dir src/SR_analysis/results/runs/article2-plotting-package- +PYTHONPATH=src conda run -n sr_env python -m SR_analysis.tools.plot_sr_diagnostics +PYTHONPATH=src conda run -n sr_env python -m SR_analysis.tools.plot_sr_presentation ``` -Repeat for `illusion_1L`. The impulse response is diagnostic; object IDs, centres and slot mapping define the contract. +`telemetry_to_csv.py` exports Stage 1/3 trajectories and exact DTW-window diagnostics. `export_flow_comparison.py` defines the same-sample phase-matched field-comparison contract; generating flow fields requires separate serial GPU CFD and is not part of CPU verification. -### Temporal gate +## Acceptance hierarchy and claim limits -The article alignment is `causal_post_state_to_next_action`. Post-state `i` predicts normalized PPO action `i+1`. Warm-up rows are removed. Each trajectory is processed independently before stacking. +1. Contract and provenance integrity. +2. Finite closed-loop completion for every required case. +3. Exact legacy DTW at standard duration. +4. Duration and explicitly sampled unseen-condition behavior. +5. Deletion/scaling evidence for term necessity. +6. Physical interpretation, stated as limited by the preceding evidence. -### PPO wiring gate +Supported: reproducible PPO-to-symbolic reduction; dominant Kármán rear counter-rotation with secondary rear-lift feedback; a finite symmetric Illusion numerical family; and pointwise Article2 extension at named samples. Unsupported: global/unique symbolic optimality, universal Re or size generalization, explicit Illusion target-tracking mechanism, necessity of every Illusion term, causal flow structures, or physical delay inferred from DTW lag. + +## Exact CPU verification ```bash -PYTHONPATH=src conda run -n pycuda_3_10 \ - python -m SR_analysis.checks.policy_replay \ - --scene \ - --trajectory ///controlled.npz \ - --model-device cpu \ - --output .json +PYTHONPATH=src conda run -n sr_env python -m pytest src/SR_analysis/tests -q +python3 -m compileall -q src/SR_analysis/configs.py src/SR_analysis/stage_1_infer.py src/SR_analysis/stage_2_fit.py src/SR_analysis/stage_3_validate.py src/SR_analysis/utils src/SR_analysis/checks src/SR_analysis/tools +git diff --check -- src/SR_analysis ``` - -The seven article trajectories passed with zero action replay error. - -### Artifact gate - -- Existing non-empty run directories are not overwritten. -- Formula strings, formula files, telemetry and validations carry hashes. -- Integrity audit never grants scientific promotion; `promotion_eligible` defaults to false. -- Failed and incomplete validations remain rejected evidence. - -## 4. Stage 1: collect article data - -Environment: `pycuda_3_10`. CFD is serial on physical GPU 2. Isolate physical GPU 2 with `CUDA_VISIBLE_DEVICES=2`, then select logical device 0. - -Kármán: - -```bash -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python src/SR_analysis/stage_1_infer.py \ - --group karman_trained \ - --run-id \ - --device 0 --model-device cpu --steps 200 --norm-source existing -``` - -Illusion: - -```bash -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python src/SR_analysis/stage_1_infer.py \ - --group illusion_trained \ - --run-id \ - --device 0 --model-device cpu --steps 200 --norm-source existing -``` - -Outputs: - -```text -data/runs//// - config.json - controlled.npz - manifest.json - norm.json - result.json - target.npz - target_harmonics.json # Illusion - uncontrolled.npz # Kármán Stage 1 baseline asset -``` - -The article run uses 200 recorded rows per scene and 197 aligned Stage 2 rows after warm-up/causal alignment. - -## 5. Stage 2A: per-case broad discovery - -Environment: `sr_env`. - -Use complete variable representations first: - -- `raw_complete` -- `symmetry` - -For Illusion, compare: - -- `actual_only` -- `target_only` -- `actual_plus_target` -- `actual_plus_error` - -Example diagnostic three-head discovery: - -```bash -PYTHONPATH=src conda run -n sr_env \ - python src/SR_analysis/stage_2_fit.py \ - --scene karman_re100 --mode per-scene \ - --run-id \ - --data-root \ - --feature-set symmetry --feature-profile actual_only \ - --deployment-architecture three_head_independent \ - --fit-augmentation none \ - --fit-purpose discovery \ - --seed 0 --niterations 20 --smoke -``` - -Repeat for at least three seeds. `--smoke` in the article discovery denotes the bounded PySR population/complexity configuration; the resulting candidates are still diagnostic until CFD validation. - -Up to 25 retained Pareto candidates per fitted head record: - -- expression and used variables -- complexity/loss/PySR score -- contiguous train/validation/blind R², MAE, RMSE and max error -- static finite-value probing over observed feature ranges (not a global action-range guarantee) -- seed, feature set, data and trajectory provenance - -The blind block is not used for fitting. - -## 6. Stage 2B: within-objective joint discovery - -Kármán example: - -```bash -PYTHONPATH=src conda run -n sr_env \ - python src/SR_analysis/stage_2_fit.py \ - --scenes karman_re50,karman_re100,karman_re200,karman_re400 \ - --mode joint --run-id \ - --data-root \ - --feature-set symmetry --feature-profile actual_only \ - --deployment-architecture mapped_shared \ - --fit-augmentation G --fit-purpose discovery \ - --seed 0 --niterations 40 --smoke -``` - -Illusion uses the three trained diameters and separate profile comparisons. Joint fitting is accepted only when scene objective, feature order, action order and action conversion contracts match. - -If multiple data roots are accepted, provide repeated `--data-root` arguments or comma-separated `--data-roots`. Every trajectory is constructed and split independently. Joint PySR receives explicit case-equal, trajectory-equal sample weights. - -## 7. Stage 2C: fixed-topology refit - -Freeze a recurring topology before using all eligible rows. Example: - -```bash -PYTHONPATH=src conda run -n sr_env \ - python src/SR_analysis/stage_2_fit.py \ - --scenes karman_re50,karman_re100,karman_re200,karman_re400 \ - --mode joint --run-id \ - --data-root \ - --feature-set symmetry --feature-profile actual_only \ - --deployment-architecture mapped_shared --fit-augmentation G \ - --fit-purpose fixed-topology-refit \ - '--front-topology-expression=-0.377*Cd_rear_a' \ - '--rear-topology-expression=1.0*Cl_rear_s-3.398' \ - --front-discovery-parent-path \ - --rear-discovery-parent-path -``` - -Only numerical constants are optimized. Outputs report aggregate, per-case and per-trajectory errors and retain discovery-parent hashes. - -## 8. Stage 3: closed-loop screening - -Environment: `pycuda_3_10`, physical GPU 2, one CFD process at a time. - -Short screening: - -```bash -CUDA_VISIBLE_DEVICES=2 PYTHONPATH=src conda run -n pycuda_3_10 \ - python src/SR_analysis/stage_3_validate.py \ - --group karman_re50,karman_re100,karman_re200,karman_re400 \ - --mode pysr \ - --formula-front \ - --formula-rear \ - --device 0 --steps 40 --run-id -``` - -Standard validation changes `--steps` to 200 and uses a new run ID. - -The only active metric is `legacy_dtw_v1_abs_n_unclipped`, reported under `legacy_reference_cycle_vs_last_recorded_cycle`. It estimates lag from transverse sensor channel 1 between target samples `conv_len:2*conv_len` and the final controlled `conv_len` samples, circularly shifts the complete target sequence, computes absolute normalized unclipped DTW similarity independently for all six sensor channels, and reports their arithmetic mean. The lag is an alignment parameter, not a physical delay. Every validation stores per-channel values, lag, action ranges, termination, telemetry hash, formula hashes, scene config and GPU identity. - -A candidate is rejected if any training case becomes non-finite or terminates early. Averages do not hide case failures. - -## 9. Term necessity and coefficient robustness - -`utils/formula_schema.py` deterministically decomposes top-level additive terms and creates immutable formula variants. - -For each shortlisted law: - -1. delete each term; -2. delete physically linked groups where necessary; -3. scale each term with the preregistered grid `0, 0.5, 0.75, 1, 1.25, 1.5`; -4. run recorded-state shadow checks for finite values and action ranges; -5. send only informative variants to short CFD. - -A term is called important only when deletion causes repeatable closed-loop degradation. Scale zero must agree with deletion. The parent formula is never mutated. - -## 10. Article evidence and interpretation - -The current authoritative evidence chain is indexed by `results/README.md` and ends at: - -```text -results/runs/article-joint-sr-final-20260718/ - readable_summary.txt - evidence_manifest.json -``` - -Current conclusions: - -- Kármán: rear constant is dominant, rear lift feedback is secondary, tested front feedback is weak; high-Re performance remains a limitation. -- Illusion: a symmetric numerical family exists, but terms are replaceable and static target/error variables do not establish explicit target tracking; 1.5L is the weakest/different regime. - -The manuscript draft must preserve these distinctions and must not import older historical numbers as current evidence. - -## 11. Historical and inactive material - -- `results/formulas/`, `results/validations/`, `scene_registry.json`, `old/` and old docs are `historical_frozen` context. -- `round1-legacy-v2-20260716-*` is diagnostic only because it predates the final force-order contract. -- `experiments/v5/` is a separate excluded experiment. -- `archive/stage4/` and `archive/stage_docs/` are inactive publication tooling/history. -- `diagnostics/` outputs do not become mechanism claims without closed-loop validation. - -## 12. Tests - -Run from the repository root: - -```bash -PYTHONPATH=src conda run -n sr_env python -m pytest \ - src/SR_analysis/tests tests/test_stage_3_validate.py -q -``` - -Expected result at the 2026-07-21 plotting-package revision: `88 passed`. diff --git a/src/SR_analysis/README.md b/src/SR_analysis/README.md index daf5386..8cd198b 100644 --- a/src/SR_analysis/README.md +++ b/src/SR_analysis/README.md @@ -1,254 +1,54 @@ -# SR analysis: agent entry point +# SR analysis -This directory contains the active symbolic-regression analysis for extracting compact control laws from the legacy PPO policies of the fluidic pinball. +## Authority and scope -**Start here, then read `PIPELINE.md`.** The active scientific workflow has exactly three entry points: +This directory is the frozen symbolic-regression evidence package for the LegacyCelerisLab fluidic pinball. The active scientific scope is Kármán-cloak and Illusion PPO data collection, symbolic discovery/refit, closed-loop CFD validation, sampled duration/generalization extensions, term deletion/scaling, and canonical publication export. The disturbance-free `steady` scene remains only as the calibration used to interpret the Kármán rear constant. -1. `stage_1_infer.py` — collect run-scoped PPO trajectories. -2. `stage_2_fit.py` — discover and refit symbolic structures. -3. `stage_3_validate.py` — evaluate formulas in closed-loop CFD with the legacy DTW metric. +The authoritative evidence index is `results/README.md`; execution details are in `PIPELINE.md`. Material under `archive/` is historical, excluded, or non-authoritative. -The current article evidence is indexed in `results/README.md`. The manuscript-ready SR section is `../../docs/JFM_WYQ/SR_Draft.md`. +## Three-stage workflow -## Scientific question +1. `stage_1_infer.py`: collect immutable, run-scoped Legacy PPO trajectories for trained Kármán and Illusion scenes. +2. `stage_2_fit.py`: perform broad per-case discovery, within-objective joint discovery, and fixed-topology all-data coefficient refit. +3. `stage_3_validate.py`: deploy PPO, symbolic, uncontrolled, or constant policies in serial Legacy CFD and evaluate the exact legacy DTW contract. -SR is not used to maximize imitation of PPO actions. It is used to determine whether successful PPO control contains a compact, symmetric and physically interpretable feedback structure that remains effective when deployed in CFD. +The acceptance chain is data and wiring checks → offline discovery/Pareto diagnostics → frozen topology and coefficient refit → finite closed-loop CFD → 200-step acceptance → 400-step duration and sampled unseen-condition checks → term deletion/scaling. Offline R² helps discover structure; it does not accept a controller. Averages never override a non-finite or prematurely terminated case. -The selection chain is therefore: +## Scientific contracts -```text -PPO trajectories - -> broad per-case variable/topology discovery using R² and Pareto fronts - -> within-objective joint topology discovery - -> fixed-topology coefficient refit using all accepted rows - -> short and standard closed-loop CFD screening using legacy DTW - -> term-deletion and coefficient-scaling tests - -> physical interpretation and explicit limitations -``` +- **Solver/model/norm:** Stage 1 and Stage 3 use LegacyCelerisLab and the frozen legacy PPO models. Runtime PPO observations use the scene's frozen `data/karman/**/norm.json` or `data/illusion/**/norm.json`; PPO inference defaults to CPU while PyCUDA owns the CFD GPU. +- **Native order:** bodies/actions are `front, upper, lower`; forces are front, upper, lower with `(x,y)` components; sensors are upper, centre, lower with `(u_x,u_y)` components. `checks/order_contract.py` is the runtime gate. +- **Causal alignment:** Stage 2 uses `causal_post_state_to_next_action`: recorded post-state `i` predicts action `i+1`. Warm-up and lag construction are trajectory-local and splits do not cross trajectories. +- **Action units:** formulas output `alpha = omega/U0`. PPO normalized actions are decoded with the scene scale and bias before fitting; Stage 3 converts formula outputs back to `omega` for CFD. +- **Mapped-shared deployment:** the canonical architecture is `alpha_F=(h_F(x)-h_F(Gx))/2`, `alpha_U=h_R(x)`, `alpha_L=-h_R(Gx)`. This imposes exact reflection symmetry; it is not a claim that PPO training was equivariant. Three independent heads are diagnostic only. +- **Metric:** `legacy_dtw_v1_abs_n_unclipped`, reported as `legacy_reference_cycle_vs_last_recorded_cycle`, is the exact acceptance metric. Its fitted circular lag is part of the historical comparison algorithm, not a physical delay. +- **Names:** Kármán scene `re_code` uses reference length `2D`, so `Re_D=re_code/2`. Illusion labels such as `1L` are historical: the stored `target_diameter` value is passed to `add_cylinder` as a radius and must not be silently relabelled as a physical diameter. -R² is a discovery diagnostic. It is not the acceptance criterion. Closed-loop stability and DTW decide whether a candidate is useful; deletion and scaling tests decide whether its terms are necessary. +## Current claim and evidence chain -## Current article scope +Accepted training data are `data/runs/article-joint-data-karman-20260718` (Re-code 50/100/200/400) and `data/runs/article-joint-data-illusion-20260718` (0.75L/1L/1.5L). Formula discovery, refits, accepted and rejected CFD, 400-step duration, sampled unseen points, deletion/scaling, steady calibration, and plotting are retained under `results/runs/article-*` and `results/runs/article2-*` because their manifests and parent paths are provenance dependencies. -Two objectives are fitted separately: +The Kármán evidence supports a controller dominated by persistent rear counter-rotation, with secondary rear-lift feedback and weak tested front feedback. The steady sweep calibrates the rear constant's magnitude; it is not a third fitting objective. The Illusion result is a finite symmetric numerical family, but its terms are partly replaceable and it does not establish explicit target tracking. Neither result proves global symbolic optimality, causal flow mechanism, universal high-Re behavior, or distribution-wide generalization; Article2 supports only the explicitly sampled conditions. -- **Kármán cloaking:** `karman_re50`, `karman_re100`, `karman_re200`, `karman_re400`. -- **Illusion:** `illusion_0.75L`, `illusion_1L`, `illusion_1.5L`. +## Active package map -Kármán and Illusion are never pooled into one fit. The fitted evidence is limited to these seven training scenes. The coefficient-frozen 2026-07-20 extension tests additional Reynolds-number and target-size points, but those points did not participate in fitting or model selection. Vortex, V5 and historical figures remain outside the current article evidence. - -Seven new 200-step PPO trajectories were collected in: - -- `data/runs/article-joint-data-karman-20260718/` -- `data/runs/article-joint-data-illusion-20260718/` - -All seven passed exact recorded-state policy replay. The accepted data inventory is: - -- `results/runs/article-joint-data-audit-20260718/data_inventory.json` - -Historical and round-one assets are retained, but are not silently pooled with the article data. The old `round1-legacy-v2-20260716-*` formulas are diagnostic only because they predate the final force-order contract. - -## Non-negotiable contracts - -### Native order - -The canonical body, force and action order is: - -```text -front, upper, lower -``` - -Sensors are ordered upper, centre, lower. Verify runtime binding with `checks/order_contract.py` before collecting data after any CFD change. - -### Alignment - -The article workflow uses: - -```text -causal_post_state_to_next_action -``` - -Recorded post-state `i` predicts action `i+1`. Each trajectory is built independently so lag features and contiguous splits never cross trajectory boundaries. - -### Action definition - -Formula outputs are dimensionless cylinder surface velocities: - -\[ -\alpha_i = \omega_i/U_0. -\] - -Normalized PPO actions are decoded with the scene action scale and bias before fitting. - -### Exact reflection symmetry - -The article candidate uses mapped-shared deployment: - -\[ -\alpha_F(x)=\frac{h_F(x)-h_F(Gx)}{2},\qquad -\alpha_U(x)=h_R(x),\qquad -\alpha_L(x)=-h_R(Gx). -\] - -The front projection is exactly odd. The lower action is generated from the shared upper law. Three-head-independent fitting exists only as a PPO-structure diagnostic and is not the final physical architecture. - -Fit augmentation and deployment architecture are separate choices: - -- `--fit-augmentation none|G` -- `--deployment-architecture mapped_shared|three_head_independent` - -Hard G symmetry is a deliberate physical symmetrization; it is not presented as a property that the legacy PPO was trained to satisfy. - -### Metric - -The closed-loop metric is: - -```text -legacy_dtw_v1_abs_n_unclipped -``` - -Its exact window is named: - -```text -legacy_reference_cycle_vs_last_recorded_cycle -``` - -There are not separate “full” and “tail” DTW algorithms. Lag is part of the legacy comparison procedure and is not interpreted as a physical observation/control delay. - -## Physical labels and units - -The Kármán scene names contain the historical code Reynolds label `re_code`, defined with reference length `2D`; the cylinder-diameter Reynolds number is therefore \(Re_D=\texttt{re\_code}/2\). The Illusion names `0.75L`, `1L` and `1.5L` are legacy target-size labels: the stored `target_diameter` value is passed to `LegacyCelerisLab.add_cylinder` as a radius. Paper text must not silently reinterpret these labels as physical diameters. - -SR uses dimensionless velocities and force coefficients, not the clipped PPO observation. Rear symmetry coordinates are half-sums and half-differences, for example - -\[ -C_{d,\mathrm{rear},s}=\frac{C_{d,U}+C_{d,L}}{2},\qquad -C_{d,\mathrm{rear},a}=\frac{C_{d,U}-C_{d,L}}{2}, -\] - -with the same convention for rear lift. - -## Feature strategy - -Broad discovery starts from complete, dimensionless variable representations: - -- `raw_complete`: six velocity components and six cylinder-force components. -- `symmetry`: symmetric/antisymmetric velocity and force coordinates. -- `physics_reduced`: compact diagnostics only; it is not the starting point for article discovery. - -Illusion comparisons use non-overlapping profiles: - -- `actual_only` -- `target_only` -- `actual_plus_target` -- `actual_plus_error` - -Target/error derivatives or other temporal features are added only after static variables are shown insufficient. Cross-correlation is never used to select a lag. - -## Current results - -### Kármán joint candidate - -\[ -\alpha_F=\operatorname{odd}\!\left[-0.381391\,C_{d,\mathrm{rear},a}\right], -\] - -\[ -\alpha_U=1.307782\,C_{l,\mathrm{rear},s}-3.431209, -\qquad -\alpha_L=-\alpha_U(Gx). -\] - -Standard 200-step legacy DTW: - -- Re50: `0.9543` -- Re100: `0.9427` -- Re200: `0.8560` -- Re400: `0.7827` - -Deletion tests support the ordering: - -```text -rear constant > rear lift feedback > front drag-asymmetry feedback -``` - -This is consistent with the physical hypothesis that persistent rear counter-rotation provides the principal downstream velocity-deficit compensation. The SR evidence ranks controller terms but does not establish the spatial momentum correction or causality; those claims require OID/CCD. The law is not uniformly strong at Re400 and must not be called universal. - -### Illusion joint numerical candidate - -\[ -\alpha_F=\operatorname{odd}\!\left[-1.826604\,C_{d,\mathrm{rear},a}+2.064493\,C_{l,F}\right], -\] - -\[ -\alpha_U=1.254440\,C_{d,\mathrm{rear},a}-1.528074\,C_{l,F}, -\qquad -\alpha_L=-\alpha_U(Gx). -\] - -Standard 200-step legacy DTW: - -- 0.75L: `0.8749` -- 1.0L: `0.9217` -- 1.5L: `0.8306` - -Scaling tests show that the `Cl_F` terms dominate action magnitude; the `Cd_rear,a` terms are weaker and partly replaceable. Every one-term deletion remained stable, so the current expression is not a unique mechanism law. Target/error variables were available but were not selected stably by low-complexity static joint discovery. This is a numerical joint reference, not proof of explicit target tracking. - -## What can and cannot be claimed - -Supported: - -- A complete, reproducible discovery-to-CFD-to-ablation workflow. -- Strong Kármán evidence for dominant rear counter-rotation and secondary rear lift feedback. -- A symmetric Illusion joint family that remains finite across all three trained target-size labels. -- R² and formula appearance alone are insufficient predictors of closed-loop value. - -Not supported: - -- Global symbolic optimality or uniqueness. -- A universal Kármán law at Re400. -- An explicit target-tracking mechanism for Illusion. -- Necessity of every Illusion term. -- Physical delay inferred from DTW lag or cross-correlation. -- Distribution-wide or universal generalization. The Article2 extension supports only finite pointwise deployment at its explicitly sampled unseen conditions. - -## Directory map - -```text -SR_analysis/ -├── README.md # this agent entry point -├── PIPELINE.md # exact method, commands and design decisions -├── configs.py # scene and action contracts -├── stage_1_infer.py # PPO data collection -├── stage_2_fit.py # discovery and fixed-topology refit -├── stage_3_validate.py # closed-loop CFD and legacy DTW -├── checks/ # pre-fit physical/wiring gates -├── diagnostics/ # diagnostic-only analyses -├── utils/ # feature, G, formula, data and provenance contracts -├── tests/ # SR CPU contract tests -├── results/README.md # evidence index and result status -├── tools/ # integrity audit; audit is not scientific promotion -├── experiments/v5/ # excluded experimental pipeline -└── archive/ # inactive Stage 4 and historical guides -``` - -`old/`, `archive/`, `experiments/v5/`, historical formula directories and old reports are context only. They are not authoritative sources for article numbers. - -## Environments and resource discipline - -- Stage 1, policy replay and Stage 3: `pycuda_3_10`; PPO inference defaults to CPU so physical GPU 2 remains dedicated to the PyCUDA CFD context. -- Stage 2/PySR and coefficient refit: `sr_env`. -- CFD uses physical GPU 2 and is strictly serial. -- When `CUDA_VISIBLE_DEVICES=2`, the process uses logical device `0`; provenance records both visibility and GPU UUID rather than mislabelling the physical ordinal. -- Every run ID is immutable; failed telemetry is retained. +- Root: `configs.py`, the three stages, this README, and `PIPELINE.md`. +- `checks/`: order and policy-replay gates. +- `utils/`: active data, feature, symmetry, metric, formula, CFD, and provenance contracts. +- `tools/`: canonical plotting/export tools (`prepare_plotting_data.py`, `telemetry_to_csv.py`, both SR plotting modules, and `export_flow_comparison.py`). +- `tests/`: CPU contract tests. +- `data/`: frozen Kármán/Illusion norms, steady calibration data, and the two accepted article data runs. +- `results/`: the evidence index and provenance-dependent `article-*`/`article2-*` families. +- `archive/`: excluded experiments, diagnostics, old run families, superseded flat surfaces, and historical code/docs. Archive paths may be non-executable. ## Verification -At the 2026-07-21 plotting-package revision, the SR contract suite contains 88 passing tests. Run from the repository root: +From the repository root: ```bash -PYTHONPATH=src conda run -n sr_env python -m pytest \ - src/SR_analysis/tests tests/test_stage_3_validate.py -q +PYTHONPATH=src conda run -n sr_env python -m pytest src/SR_analysis/tests -q +python3 -m compileall -q src/SR_analysis/configs.py src/SR_analysis/stage_1_infer.py src/SR_analysis/stage_2_fit.py src/SR_analysis/stage_3_validate.py src/SR_analysis/utils src/SR_analysis/checks src/SR_analysis/tools +git diff --check -- src/SR_analysis ``` -See `PIPELINE.md` for reproducible commands and `results/README.md` for the exact evidence chain. +No GPU CFD is part of this verification. diff --git a/src/SR_analysis/archive/README.md b/src/SR_analysis/archive/README.md new file mode 100644 index 0000000..c97a7d8 --- /dev/null +++ b/src/SR_analysis/archive/README.md @@ -0,0 +1,12 @@ +# SR archive + +Content below this directory is historical, excluded from the active mainline, or non-authoritative. It is preserved to retain scientific history, rejected paths, diagnostics, and prior contracts; it must not be used as current article evidence without an explicit reconciliation. + +Current evidence remains in: + +- `../data/runs/article-joint-data-*` for accepted training trajectories; +- `../results/runs/article-*` and `../results/runs/article2-*` for discovery provenance, accepted/rejected CFD evidence, extensions, ablations, and publication outputs. + +Archive categories include old code and stage guides, excluded V5 and Vortex work, diagnostic tools/results, superseded flat result surfaces, historical metadata/notes, and non-mainline data/run families. Archived files may retain historical absolute paths or imports and are not guaranteed to execute from their archived location. + +To restore an archived workflow, use git history to recover the original tree and its contemporaneous environment and contracts. Do not move selected files back piecemeal or rewrite archived scientific artifacts merely to make them executable. diff --git a/src/SR_analysis/data/degradation_analysis/action_timeseries.png b/src/SR_analysis/archive/data/degradation_analysis/action_timeseries.png similarity index 100% rename from src/SR_analysis/data/degradation_analysis/action_timeseries.png rename to src/SR_analysis/archive/data/degradation_analysis/action_timeseries.png diff --git a/src/SR_analysis/data/degradation_analysis/autocorrelation.png b/src/SR_analysis/archive/data/degradation_analysis/autocorrelation.png similarity index 100% rename from src/SR_analysis/data/degradation_analysis/autocorrelation.png rename to src/SR_analysis/archive/data/degradation_analysis/autocorrelation.png diff --git a/src/SR_analysis/data/degradation_analysis/fft_spectra.png b/src/SR_analysis/archive/data/degradation_analysis/fft_spectra.png similarity index 100% rename from src/SR_analysis/data/degradation_analysis/fft_spectra.png rename to src/SR_analysis/archive/data/degradation_analysis/fft_spectra.png diff --git a/src/SR_analysis/data/diagnostics/phase_portrait_illusion_0.75L.png b/src/SR_analysis/archive/data/diagnostics/phase_portrait_illusion_0.75L.png similarity index 100% rename from src/SR_analysis/data/diagnostics/phase_portrait_illusion_0.75L.png rename to src/SR_analysis/archive/data/diagnostics/phase_portrait_illusion_0.75L.png diff --git a/src/SR_analysis/data/diagnostics/phase_portrait_illusion_1.5L.png b/src/SR_analysis/archive/data/diagnostics/phase_portrait_illusion_1.5L.png similarity index 100% rename from src/SR_analysis/data/diagnostics/phase_portrait_illusion_1.5L.png rename to src/SR_analysis/archive/data/diagnostics/phase_portrait_illusion_1.5L.png diff --git a/src/SR_analysis/data/diagnostics/phase_portrait_illusion_1L.png b/src/SR_analysis/archive/data/diagnostics/phase_portrait_illusion_1L.png similarity index 100% rename from src/SR_analysis/data/diagnostics/phase_portrait_illusion_1L.png rename to src/SR_analysis/archive/data/diagnostics/phase_portrait_illusion_1L.png diff --git a/src/SR_analysis/data/diagnostics/timeseries_full_illusion_0.75L.png b/src/SR_analysis/archive/data/diagnostics/timeseries_full_illusion_0.75L.png similarity index 100% rename from src/SR_analysis/data/diagnostics/timeseries_full_illusion_0.75L.png rename to src/SR_analysis/archive/data/diagnostics/timeseries_full_illusion_0.75L.png diff --git a/src/SR_analysis/data/diagnostics/timeseries_full_illusion_1.5L.png b/src/SR_analysis/archive/data/diagnostics/timeseries_full_illusion_1.5L.png similarity index 100% rename from src/SR_analysis/data/diagnostics/timeseries_full_illusion_1.5L.png rename to src/SR_analysis/archive/data/diagnostics/timeseries_full_illusion_1.5L.png diff --git a/src/SR_analysis/data/diagnostics/timeseries_full_illusion_1L.png b/src/SR_analysis/archive/data/diagnostics/timeseries_full_illusion_1L.png similarity index 100% rename from src/SR_analysis/data/diagnostics/timeseries_full_illusion_1L.png rename to src/SR_analysis/archive/data/diagnostics/timeseries_full_illusion_1L.png diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re100/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re100/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re100/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re100/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re100/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re100/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re100/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re100/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re100/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re100/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re100/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re100/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-20260716/karman/karman_re50/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-20260716/karman/karman_re50/result.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/result.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/target_harmonics.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/target_harmonics.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_0.75L/target_harmonics.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/result.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/target_harmonics.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/target_harmonics.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/illusion/illusion_1L/target_harmonics.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re100/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re100/result.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re200/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re200/result.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re400/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re400/result.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/config.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/config.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/config.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/config.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/manifest.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/manifest.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/manifest.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/norm.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/norm.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/norm.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/norm.json diff --git a/src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/result.json b/src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/result.json similarity index 100% rename from src/SR_analysis/data/runs/round1-legacy-v2-20260716/karman/karman_re50/result.json rename to src/SR_analysis/archive/data/runs/round1-legacy-v2-20260716/karman/karman_re50/result.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/config.json b/src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/config.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/config.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/config.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/manifest.json b/src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/manifest.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/manifest.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/norm.json b/src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/norm.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/norm.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/norm.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/result.json b/src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/result.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/result.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/result.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/target_harmonics.json b/src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/target_harmonics.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-illusion-1L-20260717/illusion/illusion_1L/target_harmonics.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/config.json b/src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/config.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/config.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/config.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/manifest.json b/src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/manifest.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/manifest.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/norm.json b/src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/norm.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/norm.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/norm.json diff --git a/src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/result.json b/src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/result.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/result.json rename to src/SR_analysis/archive/data/runs/trusted-baseline-karman-re100-20260717/karman/karman_re100/result.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/config.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/config.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/config.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/config.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/manifest.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/manifest.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/manifest.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/norm.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/norm.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/norm.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/norm.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/result.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/result.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/result.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/result.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/target_harmonics.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/target_harmonics.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-illusion-20260717/illusion/illusion_1L/target_harmonics.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/config.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/config.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/config.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/config.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/manifest.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/manifest.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/manifest.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/manifest.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/norm.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/norm.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/norm.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/norm.json diff --git a/src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/result.json b/src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/result.json similarity index 100% rename from src/SR_analysis/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/result.json rename to src/SR_analysis/archive/data/runs/trusted-parity-stage1-karman-20260717/karman/karman_re100/result.json diff --git a/src/SR_analysis/data/v5/ill_075L/config.json b/src/SR_analysis/archive/data/v5/ill_075L/config.json similarity index 100% rename from src/SR_analysis/data/v5/ill_075L/config.json rename to src/SR_analysis/archive/data/v5/ill_075L/config.json diff --git a/src/SR_analysis/data/v5/ill_075L/norm.json b/src/SR_analysis/archive/data/v5/ill_075L/norm.json similarity index 100% rename from src/SR_analysis/data/v5/ill_075L/norm.json rename to src/SR_analysis/archive/data/v5/ill_075L/norm.json diff --git a/src/SR_analysis/data/v5/ill_075L/target_harmonics.json b/src/SR_analysis/archive/data/v5/ill_075L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/v5/ill_075L/target_harmonics.json rename to src/SR_analysis/archive/data/v5/ill_075L/target_harmonics.json diff --git a/src/SR_analysis/data/v5/ill_15L/config.json b/src/SR_analysis/archive/data/v5/ill_15L/config.json similarity index 100% rename from src/SR_analysis/data/v5/ill_15L/config.json rename to src/SR_analysis/archive/data/v5/ill_15L/config.json diff --git a/src/SR_analysis/data/v5/ill_15L/norm.json b/src/SR_analysis/archive/data/v5/ill_15L/norm.json similarity index 100% rename from src/SR_analysis/data/v5/ill_15L/norm.json rename to src/SR_analysis/archive/data/v5/ill_15L/norm.json diff --git a/src/SR_analysis/data/v5/ill_15L/target_harmonics.json b/src/SR_analysis/archive/data/v5/ill_15L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/v5/ill_15L/target_harmonics.json rename to src/SR_analysis/archive/data/v5/ill_15L/target_harmonics.json diff --git a/src/SR_analysis/data/v5/ill_1L/config.json b/src/SR_analysis/archive/data/v5/ill_1L/config.json similarity index 100% rename from src/SR_analysis/data/v5/ill_1L/config.json rename to src/SR_analysis/archive/data/v5/ill_1L/config.json diff --git a/src/SR_analysis/data/v5/ill_1L/norm.json b/src/SR_analysis/archive/data/v5/ill_1L/norm.json similarity index 100% rename from src/SR_analysis/data/v5/ill_1L/norm.json rename to src/SR_analysis/archive/data/v5/ill_1L/norm.json diff --git a/src/SR_analysis/data/v5/ill_1L/target_harmonics.json b/src/SR_analysis/archive/data/v5/ill_1L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/v5/ill_1L/target_harmonics.json rename to src/SR_analysis/archive/data/v5/ill_1L/target_harmonics.json diff --git a/src/SR_analysis/data/v5/ill_2L/config.json b/src/SR_analysis/archive/data/v5/ill_2L/config.json similarity index 100% rename from src/SR_analysis/data/v5/ill_2L/config.json rename to src/SR_analysis/archive/data/v5/ill_2L/config.json diff --git a/src/SR_analysis/data/v5/ill_2L/norm.json b/src/SR_analysis/archive/data/v5/ill_2L/norm.json similarity index 100% rename from src/SR_analysis/data/v5/ill_2L/norm.json rename to src/SR_analysis/archive/data/v5/ill_2L/norm.json diff --git a/src/SR_analysis/data/v5/ill_2L/target_harmonics.json b/src/SR_analysis/archive/data/v5/ill_2L/target_harmonics.json similarity index 100% rename from src/SR_analysis/data/v5/ill_2L/target_harmonics.json rename to src/SR_analysis/archive/data/v5/ill_2L/target_harmonics.json diff --git a/src/SR_analysis/data/v5/kar_d075/config.json b/src/SR_analysis/archive/data/v5/kar_d075/config.json similarity index 100% rename from src/SR_analysis/data/v5/kar_d075/config.json rename to src/SR_analysis/archive/data/v5/kar_d075/config.json diff --git a/src/SR_analysis/data/v5/kar_d075/norm.json b/src/SR_analysis/archive/data/v5/kar_d075/norm.json similarity index 100% rename from src/SR_analysis/data/v5/kar_d075/norm.json rename to src/SR_analysis/archive/data/v5/kar_d075/norm.json diff --git a/src/SR_analysis/data/v5/kar_d15/config.json b/src/SR_analysis/archive/data/v5/kar_d15/config.json similarity index 100% rename from src/SR_analysis/data/v5/kar_d15/config.json rename to src/SR_analysis/archive/data/v5/kar_d15/config.json diff --git a/src/SR_analysis/data/v5/kar_d15/norm.json b/src/SR_analysis/archive/data/v5/kar_d15/norm.json similarity index 100% rename from src/SR_analysis/data/v5/kar_d15/norm.json rename to src/SR_analysis/archive/data/v5/kar_d15/norm.json diff --git a/src/SR_analysis/data/v5/kar_d2/config.json b/src/SR_analysis/archive/data/v5/kar_d2/config.json similarity index 100% rename from src/SR_analysis/data/v5/kar_d2/config.json rename to src/SR_analysis/archive/data/v5/kar_d2/config.json diff --git a/src/SR_analysis/data/v5/kar_d2/norm.json b/src/SR_analysis/archive/data/v5/kar_d2/norm.json similarity index 100% rename from src/SR_analysis/data/v5/kar_d2/norm.json rename to src/SR_analysis/archive/data/v5/kar_d2/norm.json diff --git a/src/SR_analysis/data/v5/kar_re100/config.json b/src/SR_analysis/archive/data/v5/kar_re100/config.json similarity index 100% rename from src/SR_analysis/data/v5/kar_re100/config.json rename to src/SR_analysis/archive/data/v5/kar_re100/config.json diff --git a/src/SR_analysis/data/v5/kar_re100/norm.json b/src/SR_analysis/archive/data/v5/kar_re100/norm.json similarity index 100% rename from src/SR_analysis/data/v5/kar_re100/norm.json rename to src/SR_analysis/archive/data/v5/kar_re100/norm.json diff --git a/src/SR_analysis/data/vortex/vortex_lamb/config.json b/src/SR_analysis/archive/data/vortex/vortex_lamb/config.json similarity index 100% rename from src/SR_analysis/data/vortex/vortex_lamb/config.json rename to src/SR_analysis/archive/data/vortex/vortex_lamb/config.json diff --git a/src/SR_analysis/data/vortex/vortex_lamb/norm.json b/src/SR_analysis/archive/data/vortex/vortex_lamb/norm.json similarity index 100% rename from src/SR_analysis/data/vortex/vortex_lamb/norm.json rename to src/SR_analysis/archive/data/vortex/vortex_lamb/norm.json diff --git a/src/SR_analysis/data/vortex/vortex_lamb/result.json b/src/SR_analysis/archive/data/vortex/vortex_lamb/result.json similarity index 100% rename from src/SR_analysis/data/vortex/vortex_lamb/result.json rename to src/SR_analysis/archive/data/vortex/vortex_lamb/result.json diff --git a/src/SR_analysis/data/vortex/vortex_taylor/config.json b/src/SR_analysis/archive/data/vortex/vortex_taylor/config.json similarity index 100% rename from src/SR_analysis/data/vortex/vortex_taylor/config.json rename to src/SR_analysis/archive/data/vortex/vortex_taylor/config.json diff --git a/src/SR_analysis/data/vortex/vortex_taylor/norm.json b/src/SR_analysis/archive/data/vortex/vortex_taylor/norm.json similarity index 100% rename from src/SR_analysis/data/vortex/vortex_taylor/norm.json rename to src/SR_analysis/archive/data/vortex/vortex_taylor/norm.json diff --git a/src/SR_analysis/data/vortex/vortex_taylor/result.json b/src/SR_analysis/archive/data/vortex/vortex_taylor/result.json similarity index 100% rename from src/SR_analysis/data/vortex/vortex_taylor/result.json rename to src/SR_analysis/archive/data/vortex/vortex_taylor/result.json diff --git a/src/SR_analysis/diagnostics/__init__.py b/src/SR_analysis/archive/diagnostics/__init__.py similarity index 100% rename from src/SR_analysis/diagnostics/__init__.py rename to src/SR_analysis/archive/diagnostics/__init__.py diff --git a/src/SR_analysis/diagnostics/audit_symmetry.py b/src/SR_analysis/archive/diagnostics/audit_symmetry.py similarity index 100% rename from src/SR_analysis/diagnostics/audit_symmetry.py rename to src/SR_analysis/archive/diagnostics/audit_symmetry.py diff --git a/src/SR_analysis/diagnostics/compare_trajectories.py b/src/SR_analysis/archive/diagnostics/compare_trajectories.py similarity index 100% rename from src/SR_analysis/diagnostics/compare_trajectories.py rename to src/SR_analysis/archive/diagnostics/compare_trajectories.py diff --git a/src/SR_analysis/diagnostics/diagnose_illusion_phase.py b/src/SR_analysis/archive/diagnostics/diagnose_illusion_phase.py similarity index 100% rename from src/SR_analysis/diagnostics/diagnose_illusion_phase.py rename to src/SR_analysis/archive/diagnostics/diagnose_illusion_phase.py diff --git a/src/SR_analysis/experiments/__init__.py b/src/SR_analysis/archive/experiments/__init__.py similarity index 100% rename from src/SR_analysis/experiments/__init__.py rename to src/SR_analysis/archive/experiments/__init__.py diff --git a/src/SR_analysis/experiments/v5/__init__.py b/src/SR_analysis/archive/experiments/v5/__init__.py similarity index 100% rename from src/SR_analysis/experiments/v5/__init__.py rename to src/SR_analysis/archive/experiments/v5/__init__.py diff --git a/src/SR_analysis/experiments/v5/bridge_v5.py b/src/SR_analysis/archive/experiments/v5/bridge_v5.py similarity index 100% rename from src/SR_analysis/experiments/v5/bridge_v5.py rename to src/SR_analysis/archive/experiments/v5/bridge_v5.py diff --git a/src/SR_analysis/experiments/v5/stage_2_fit_v5.py b/src/SR_analysis/archive/experiments/v5/stage_2_fit_v5.py similarity index 100% rename from src/SR_analysis/experiments/v5/stage_2_fit_v5.py rename to src/SR_analysis/archive/experiments/v5/stage_2_fit_v5.py diff --git a/src/SR_analysis/literature_note.md b/src/SR_analysis/archive/historical/literature_note.md similarity index 100% rename from src/SR_analysis/literature_note.md rename to src/SR_analysis/archive/historical/literature_note.md diff --git a/src/SR_analysis/scene_registry.json b/src/SR_analysis/archive/historical/scene_registry.json similarity index 100% rename from src/SR_analysis/scene_registry.json rename to src/SR_analysis/archive/historical/scene_registry.json diff --git a/src/SR_analysis/archive/historical_docs/SR_analysis_report.md b/src/SR_analysis/archive/historical_docs/SR_analysis_report.md new file mode 100644 index 0000000..5630a24 --- /dev/null +++ b/src/SR_analysis/archive/historical_docs/SR_analysis_report.md @@ -0,0 +1,196 @@ +# SR Analysis: Symbolic Regression Report + +## 1. Problem Definition + +Deep reinforcement learning (DRL) can discover effective flow control strategies, but the resulting policies remain black boxes: they map high-dimensional sensor observations to actuator commands through opaque neural networks. This limits interpretability, transferability, and trust. + +This work addresses the problem of **post-hoc white-box extraction** from trained DRL policies. Given a PPO policy that successfully achieves hydrodynamic cloaking or illusion on the fluidic pinball, we use symbolic regression (PySR) to discover compact, interpretable control laws of the form: + +``` +alpha = f(obs_features) +``` + +where `alpha = omega / U0` is the non-dimensional cylinder rotation, and `obs_features` are physically meaningful dimensionless quantities (forces, velocities, their derivatives). + +The chain we analyze is: + +``` +obs -> act -> flow structure -> signature +``` + +Symbolic regression directly handles only `obs -> act`, but its value lies in revealing the physical feedback mechanisms the DRL agent has learned. + +## 2. Methodology + +### 2.1 Feature System + +We construct three levels of dimensionless physical features from raw CFD sensor data: + +| Level | Features | Dim | Description | +|-------|----------|:---:|-------------| +| Static | u_m, u_a, u_c, v_a, Cd_tot, Cd_rear, Cl_tot, Cl_diff | 8 | Current-step physics only | +| Phase-state | u_a, du_a/dt, Cl_tot, dCl_tot/dt, Cd_tot, Cd_rear | 6 | Oscillation phase + rate + drag feedback | +| Illusion-phase | Phase-state + Cd_err, Cl_err, dCd_err/dt, dCl_err/dt | 10 | Phase + error-state tracking | + +### 2.2 Structural Constraints (v23) + +To enforce physical consistency, we impose two constraints: + +1. **Front no-bias**: `alpha_F = 0` when all features = 0. In a clean uniform flow, no corrective action should be needed. + +2. **Rear shared-head with G-mirror**: The top and bottom cylinders are symmetric under the mirror operation G: `[aF, aT, aB] -> [-aF, -aB, -aT]`. The same function `h()` predicts `alpha_T`, and `alpha_B = -h(G(x))`. + +### 2.3 PySR Symbolic Regression + +PySR is a multi-population evolutionary algorithm that discovers symbolic expressions by optimizing a loss function. Key settings: + +- **Output**: non-dimensional alpha (not physical omega), so formulas are scale-free +- **Operators**: +, -, *, /, sin, cos, exp +- **Constraints**: max complexity 20-40, Pareto front optimization +- **Validation**: one-step R-squared on held-out data, followed by CFD closed-loop as the final arbiter + +### 2.4 CFD Closed-Loop Validation + +The final judge of any formula is CFD closed-loop performance: the formula replaces the PPO policy to control the pinball cylinders, and the resulting sensor signals are compared to the target via DTW similarity. This catches issues invisible to one-step metrics (e.g., drift accumulation, distribution shift). + +## 3. Karman Cloak Results + +### 3.1 Cross-Re Joint Formula + +Training on data from four Reynolds numbers (Re=50, 100, 200, 400) jointly yields: + +**Front**: +``` +alpha_F = daF_dt - 14.952 * mu * Cl_tot +``` + +**Top**: +``` +alpha_T = 3.414 (constant) +``` + +**Physical interpretation**: The front cylinder action is driven by two terms: +1. `daF_dt`: Action momentum (rate of change of front action), capturing that the controller maintains consistent rotational direction. +2. `-14.952 * mu * Cl_tot`: Viscous-scaled lift feedback. As viscosity decreases (higher Re), the lift feedback weakens proportionally, naturally adapting to different flow regimes. + +The rear cylinders rotate at constant speed, suggesting they provide a steady boat-tailing effect rather than active feedback. + +### 3.2 CFD Validation + +| Re | PPO Baseline | Joint Formula | % of PPO | +|:--:|:-----------:|:------------:|:--------:| +| 50 | 0.961 | 0.847 | 88.1% | +| 100 | 0.954 | 0.888 | 93.1% | +| 200 | 0.884 | 0.845 | 95.6% | +| 400 | 0.795 | 0.806 | 101.4% | + +At Re=400, the symbolic formula actually outperforms the PPO policy at the default sampling interval. Testing revealed that Re=400 benefits from a shorter control interval (SI=400 instead of 800), improving formula performance to 0.819. + +### 3.3 Per-Re Individual Formulas + +Individual PySR fits at each Reynolds number achieve higher similarity (0.888-0.916) but produce structurally different formulas across Re, reflecting the flow's bifurcation cascade through the Re=50-400 range. The joint formula trades some per-Re performance for a unified expression valid across all conditions. + +## 4. Illusion Results + +### 4.1 Joint Formula (0.75L + 1.0L) + +Training PySR on the combined data from two target cylinder diameters (0.75L and 1.0L) yields: + +**Front** (no bias): +``` +alpha_F = Cd_tot - Cd_err - 5.428 + 0.0098 * (du_a_dt + u_a) +``` + +**Top** (with bias): +``` +alpha_T = (Cd_err - (Cd_rear - Cl_err)) * 0.535 + 2.782 +``` + +**Physical interpretation** of the front formula: +1. `Cd_tot - Cd_err = target_Cd`: The controller tracks the desired target drag coefficient. +2. `-5.428`: Constant offset accounting for unit/calibration differences. +3. `0.0098 * (du_a_dt + u_a)`: Small phase-lead correction from cross-stream velocity asymmetry, fine-tuning the shedding phase. + +The top cylinder uses error-state feedback: the difference between drag error and rear lift distribution. + +### 4.2 Cross-Diameter Generalization + +The joint formula, trained only on 0.75L and 1.0L, is tested on unseen target diameters: + +| Diameter | Joint Formula | PPO Baseline | Status | +|:--------:|:------------:|:-----------:|--------| +| 0.5L | 0.854 | — | Generalization (unseen) | +| 0.6L | 0.939 | — | Generalization (unseen) | +| 0.75L | 0.978 | 0.980 | Trained | +| 0.8L | 0.908 | — | Generalization (unseen) | +| 1.0L | 0.970 | 0.975 | Trained | +| 1.2L | 0.849 | — | Generalization (unseen) | +| 1.5L | N/A | 0.945 | Non-SR regime | +| 2.0L | 0.676 | — | Degraded (unseen) | + +The formula maintains near-PPO performance (similarity > 0.9) for diameters within +/-20% of the training range (0.6L-1.2L). Performance degrades sharply at 2.0L, where the required wake is fundamentally different from what the formula was designed to produce. + +### 4.3 The 1.5L Special Case + +The 1.5L illusion presents a distinct control regime: + +- The PPO policy achieves high similarity (0.945) but uses **high-frequency periodic modulation** at f=0.24 in control space, which is 5.6x the target vortex shedding frequency. +- Action autocorrelation at lag-2 = -0.9, indicating the cylinders switch direction every two control steps. +- All linear correlations between features and actions are below 0.33, meaning no low-dimensional linear structure exists. +- PySR returns trivial solutions (`alpha_F_lag1 * 0.01`), confirming the current feature set cannot capture this mechanism. + +This is documented as a **fundamentally non-fittable regime** under the current methodology, not a failure of the approach. + +## 5. Structural Comparison: Karman vs. Illusion + +The discovered formulas reveal fundamentally different control mechanisms: + +| Aspect | Karman Cloak | Illusion | +|--------|------------|----------| +| **Objective** | Preserve incoming vortex street | Sculpt a new vortex street | +| **Dominant term** | Force feedback (Cl_tot) | Error tracking (Cd_err) | +| **Front mechanism** | Action momentum + viscous-scaled lift | Target drag tracking + phase correction | +| **Rear mechanism** | Constant rotation | Error-state feedback | +| **Re dependence** | Explicit via mu parameter | None (Re=100 only) | + +This structural difference is expected: cloaking requires the controller to make the pinball "transparent" to passing vortices (force-neutral), while illusion requires the controller to actively generate a specific wake (force-matching). + +## 6. Cross-Scene Generalization: Vortex Cloak + +The Karman joint formula, trained exclusively on periodic vortex street data, is applied without modification to transient vortex cloaking tasks: + +| Vortex | PPO (vortex-trained) | Karman Formula | +|:------:|:-------------------:|:--------------:| +| Lamb dipole | 0.942 | **0.949** | +| Taylor monopole | 0.916 | 0.905 | + +The formula matches or exceeds the PPO baseline for the Lamb dipole, demonstrating that the discovered feedback structure captures a universal cloaking mechanism rather than a scene-specific strategy. + +## 7. Discussion + +### 7.1 The Force-Signature Separation + +The structural difference between Karman and Illusion formulas mirrors the OID analysis finding that force-relevant and signature-relevant correction structures are systematically different. In Karman cloak, suppressing force variation IS the way to preserve the signature. In illusion, the agent must actively generate a force pattern that differs from its natural one. + +### 7.2 Regime Boundaries + +The cross-diameter generalization curve defines a clear regime boundary: the joint illusion formula works for target cylinders within approximately +/-20% of the training diameters. Beyond this, either the formula structure itself is insufficient (2.0L) or the PPO policy has entered a fundamentally different control regime (1.5L with high-frequency modulation). + +### 7.3 Limitations + +1. **Karman rear formula is constant** (alpha_T = 3.414): The joint formula did not extract meaningful feedback for the rear cylinders, despite PPO showing structured rear actions. This suggests the rear contribution is either encoded in higher-order interactions or is secondary to the front cylinder's dominant role. + +2. **daB_dt artifact**: The PySR front formula includes a `daB_dt` term, but this reflects training distribution correlations (front and rear actions are correlated in PPO trajectories), not a causal relationship. At deployment, rear is constant, making this term zero. + +3. **Illusion limited to Re=100**: The current illusion formulas are trained only at Re=100 (Re_D=50). Cross-Re generalization for illusion, analogous to the Karman joint formula with its mu-scaling term, is left for future work. + +## 8. Conclusion + +Symbolic regression successfully extracts compact, physically interpretable control laws from trained DRL policies for the fluidic pinball. The discovered formulas: + +- Achieve CFD closed-loop performance within 5-15% of the PPO baseline for in-distribution scenes +- Generalize to unseen Reynolds numbers (Karman) and target diameters (Illusion) within defined regime boundaries +- Reveal fundamentally different feedback mechanisms for cloaking (force-feedback) vs illusion (error-tracking) +- Demonstrate cross-scene transfer: Karman formula generalizes to transient vortex cloaking tasks + +The approach bridges the gap between black-box DRL performance and white-box interpretability, providing a path toward verifiable, transferable flow control strategies. diff --git a/src/SR_analysis/archive/historical_docs/illusion_joint_formula_analysis.md b/src/SR_analysis/archive/historical_docs/illusion_joint_formula_analysis.md new file mode 100644 index 0000000..7631a8f --- /dev/null +++ b/src/SR_analysis/archive/historical_docs/illusion_joint_formula_analysis.md @@ -0,0 +1,122 @@ +# Illusion Joint Formula Analysis + +## 1. Best Formula: Method B Joint PySR + +### 1.1 Front Cylinder (alpha_F) + +``` +alpha_F = Cd_tot - (Cd_err + 5.4276643) - (-0.009783858)*(du_a_dt + u_a) +``` + +Simplified: +``` +alpha_F = Cd_tot - Cd_err - 5.428 + 0.0098*(du_a_dt + u_a) + = target_Cd - 5.428 + 0.0098*(du_a_dt + u_a) +``` + +### 1.2 Top Cylinder (alpha_T) + +``` +alpha_T = (Cd_err - (Cd_rear - Cl_err))*0.535 + 2.782 +``` + +### 1.3 Physical Interpretation + +**Front action** consists of three terms: + +1. **target_Cd = Cd_tot - Cd_err**: Direct tracking of the target cylinder's drag coefficient. This is the dominant term — the controller outputs a cylinder rotation proportional to the desired drag. When the pinball's drag matches the target, Cd_err -> 0, and the controller simply tracks Cd_tot. + +2. **-5.428**: Constant offset. Accounts for the difference in drag coefficient units/calibration between the pinball (3 cylinders) and the target (1 cylinder). The pinball generates inherently different drag magnitudes. + +3. **0.0098*(du_a_dt + u_a)**: Small phase-lead correction from the cross-stream velocity asymmetry (u_a = u_top - u_bottom). This term fine-tunes the rotation timing to match the vortex shedding phase of the target cylinder. The derivative du_a_dt provides phase lead, improving timing accuracy. + +**Top action** is error-state feedback: +- **Cd_err - (Cd_rear - Cl_err)**: Combines drag error with rear cylinder lift distribution. The Cd_rear term (total drag of top+bottom cylinders) captures how the rear pair is contributing to the overall drag mismatch. +- **+2.782**: Bias offset for the rear cylinders, which maintain a constant baseline rotation. +- **Bottom cylinder**: alpha_B = -Top composed with G-mirror (alpha_B = -top(G(x))). + +## 2. Cross-Diameter Generalization Results + +Joint formula CFD closed-loop performance across all tested target diameters: + +| Diameter | Similarity | Formula Type | Status | +|:--------:|:----------:|:-----------:|--------| +| 0.5L | 0.854 | Joint | Generalization (unseen) | +| 0.6L | 0.939 | Joint | Generalization (unseen) | +| 0.75L | 0.978 | Joint | Trained (part of joint set) | +| 0.8L | 0.908 | Joint | Generalization (unseen) | +| 1.0L | 0.970 | Joint | Trained (part of joint set) | +| 1.2L | 0.849 | Joint | Generalization (unseen) | +| 1.5L | N/A | — | Non-SR regime (see Sec 4) | +| 2.0L | 0.676 | Joint | Generalization (unseen, degraded) | + +## 3. Performance Trend Analysis + +The joint formula maintains near-PPO performance (similarity > 0.9) within the approximate range **0.6L to 1.2L**, which represents roughly +/-20% of the training diameter range. + +### 3.1 Within-Region Performance (0.6L-1.2L) + +- Performance is highest near the training diameters (0.75L: 0.978, 1.0L: 0.970) +- Slight asymmetry: better performance for smaller-than-training (0.6L: 0.939) than larger-than-training (1.2L: 0.849) +- The formula captures the fundamental drag-error tracking mechanism, which is effective when the target wake is similar in character to the training wakes + +### 3.2 Out-of-Region Degradation (0.5L, 2.0L) + +- **0.5L (0.854)**: Moderate degradation. The target cylinder at half the pinball diameter produces very weak vortices that the pinball struggles to replicate with the current action scale. +- **2.0L (0.676)**: Severe degradation. The target cylinder at double diameter produces a wake that is physically beyond the pinball's ability to replicate. The pinball can generate the correct frequency structure but not the correct vortex strength and wake width. + +## 4. The 1.5L Special Case + +The 1.5L PPO policy achieves high similarity (0.945) but uses a fundamentally different control strategy: + +### 4.1 Action Characteristics +- **High frequency**: dominant control frequency f=0.24 (control steps), which is 5.6x the target vortex shedding frequency +- **Anti-correlated**: action autocorrelation at lag-2 = -0.9 (switches direction every two steps) +- **Full amplitude**: uses the complete [-1, 1] action range +- **Low linearity**: all feature-action correlations < 0.33 + +### 4.2 Why Symbolic Regression Fails +- The current feature set (ILLUSION_PHASE, 10-dim) operates at the vortex shedding timescale (one measurement per shedding period) +- The 1.5L controller operates at 5.6x this frequency — the features cannot resolve the control dynamics +- PySR returns trivial solutions (alpha_F_lag1 * 0.01) because the fast action modulation appears as noise to the features + +### 4.3 Nature of the Mechanism +The high-frequency modulation is not "bang-bang" control (actions saturate for only ~1% of steps). Rather, it is a **high-frequency periodic modulation** that likely exploits the pinball's rotational inertia to generate larger effective wake structures through rapid oscillation. + +## 5. Individual Per-Diameter Formulas + +For comparison, fitting PySR to each diameter individually yields: + +**0.75L**: +``` +alpha_F = -0.169 * (Cl_tot + dCl_tot_dt) - 1.240 +``` +Uses lift coefficient dynamics. CFD closed-loop: 0.979. + +**1.0L**: +``` +alpha_F = (du_a_dt + u_a + 26.5) * 0.0123 +``` +Uses phase-state (cross-stream velocity). CFD closed-loop: 0.957. + +The structural difference between these individual formulas (lift-dominant vs phase-dominant) confirms that target diameter size changes the control mechanism. The joint formula bridges these by combining drag-tracking (dominant for both) with phase correction (stronger at 1.0L). + +## 6. Joint Formula with Target Diameter Marker + +When the target diameter is provided as an explicit feature, PySR discovers: + +``` +alpha_F = target_diameter * ((du_a_dt + u_a) * 0.0103 + 6.324) - 5.996 +``` + +This formula explicitly uses the diameter to scale the phase correction term, demonstrating that the control law naturally incorporates the target size. The marker-based formula achieves R2=0.942 on the combined dataset. + +## 7. Implications for Control Law Design + +1. **Drag-error tracking is the universal mechanism**: All successful formulas include Cd_tot - Cd_err (or an equivalent drag-based term). This is the core feedback structure for the illusion task. + +2. **Phase correction becomes important at intermediate diameters**: The du_a_dt + u_a term appears in both the 1.0L individual formula and the joint formula, suggesting phase alignment is critical when the target wake frequency is close to the pinball's natural frequency. + +3. **Regime boundaries are predictable**: The formula degrades predictably with diameter deviation, defining clear applicability limits. + +4. **Large-diameter illusion requires different physics**: The 1.5L case shows that when the required wake strength exceeds what drag-error tracking alone can provide, qualitatively different control strategies emerge. diff --git a/src/SR_analysis/utils/sindy_fitter.py b/src/SR_analysis/archive/legacy_utils/sindy_fitter.py similarity index 100% rename from src/SR_analysis/utils/sindy_fitter.py rename to src/SR_analysis/archive/legacy_utils/sindy_fitter.py diff --git a/src/SR_analysis/old/archive/raw/illusion_0.5L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_0.5L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_0.5L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_0.5L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_0.6L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_0.6L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_0.6L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_0.6L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_0.75L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_0.75L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_0.75L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_0.75L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_0.75L_v23.json b/src/SR_analysis/archive/old/archive/raw/illusion_0.75L_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_0.75L_v23.json rename to src/SR_analysis/archive/old/archive/raw/illusion_0.75L_v23.json diff --git a/src/SR_analysis/old/archive/raw/illusion_0.8L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_0.8L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_0.8L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_0.8L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_1.2L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_1.2L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_1.2L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_1.2L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_1.5L_v23.json b/src/SR_analysis/archive/old/archive/raw/illusion_1.5L_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_1.5L_v23.json rename to src/SR_analysis/archive/old/archive/raw/illusion_1.5L_v23.json diff --git a/src/SR_analysis/old/archive/raw/illusion_1L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_1L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_1L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_1L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_1L_target_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_1L_target_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_1L_target_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_1L_target_pysr.json diff --git a/src/SR_analysis/old/archive/raw/illusion_1L_v23.json b/src/SR_analysis/archive/old/archive/raw/illusion_1L_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_1L_v23.json rename to src/SR_analysis/archive/old/archive/raw/illusion_1L_v23.json diff --git a/src/SR_analysis/old/archive/raw/illusion_2L_pysr.json b/src/SR_analysis/archive/old/archive/raw/illusion_2L_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/illusion_2L_pysr.json rename to src/SR_analysis/archive/old/archive/raw/illusion_2L_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_joint_deep_front.json b/src/SR_analysis/archive/old/archive/raw/karman_joint_deep_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_joint_deep_front.json rename to src/SR_analysis/archive/old/archive/raw/karman_joint_deep_front.json diff --git a/src/SR_analysis/old/archive/raw/karman_joint_deep_top.json b/src/SR_analysis/archive/old/archive/raw/karman_joint_deep_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_joint_deep_top.json rename to src/SR_analysis/archive/old/archive/raw/karman_joint_deep_top.json diff --git a/src/SR_analysis/old/archive/raw/karman_re100_abs.json b/src/SR_analysis/archive/old/archive/raw/karman_re100_abs.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re100_abs.json rename to src/SR_analysis/archive/old/archive/raw/karman_re100_abs.json diff --git a/src/SR_analysis/old/archive/raw/karman_re100_deriv.json b/src/SR_analysis/archive/old/archive/raw/karman_re100_deriv.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re100_deriv.json rename to src/SR_analysis/archive/old/archive/raw/karman_re100_deriv.json diff --git a/src/SR_analysis/old/archive/raw/karman_re100_mu_pysr.json b/src/SR_analysis/archive/old/archive/raw/karman_re100_mu_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re100_mu_pysr.json rename to src/SR_analysis/archive/old/archive/raw/karman_re100_mu_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_re100_phase_pysr.json b/src/SR_analysis/archive/old/archive/raw/karman_re100_phase_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re100_phase_pysr.json rename to src/SR_analysis/archive/old/archive/raw/karman_re100_phase_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_re100_pysr.json b/src/SR_analysis/archive/old/archive/raw/karman_re100_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re100_pysr.json rename to src/SR_analysis/archive/old/archive/raw/karman_re100_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_re100_v23_th0.003.json b/src/SR_analysis/archive/old/archive/raw/karman_re100_v23_th0.003.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re100_v23_th0.003.json rename to src/SR_analysis/archive/old/archive/raw/karman_re100_v23_th0.003.json diff --git a/src/SR_analysis/old/archive/raw/karman_re150_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re150_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re150_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re150_v23.json diff --git a/src/SR_analysis/old/archive/raw/karman_re200_pysr.json b/src/SR_analysis/archive/old/archive/raw/karman_re200_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re200_pysr.json rename to src/SR_analysis/archive/old/archive/raw/karman_re200_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_re200_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re200_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re200_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re200_v23.json diff --git a/src/SR_analysis/old/archive/raw/karman_re25_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re25_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re25_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re25_v23.json diff --git a/src/SR_analysis/old/archive/raw/karman_re300_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re300_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re300_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re300_v23.json diff --git a/src/SR_analysis/old/archive/raw/karman_re400_pysr.json b/src/SR_analysis/archive/old/archive/raw/karman_re400_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re400_pysr.json rename to src/SR_analysis/archive/old/archive/raw/karman_re400_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_re400_pysr_SI200.json b/src/SR_analysis/archive/old/archive/raw/karman_re400_pysr_SI200.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re400_pysr_SI200.json rename to src/SR_analysis/archive/old/archive/raw/karman_re400_pysr_SI200.json diff --git a/src/SR_analysis/old/archive/raw/karman_re400_pysr_SI400.json b/src/SR_analysis/archive/old/archive/raw/karman_re400_pysr_SI400.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re400_pysr_SI400.json rename to src/SR_analysis/archive/old/archive/raw/karman_re400_pysr_SI400.json diff --git a/src/SR_analysis/old/archive/raw/karman_re400_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re400_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re400_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re400_v23.json diff --git a/src/SR_analysis/old/archive/raw/karman_re50_pysr.json b/src/SR_analysis/archive/old/archive/raw/karman_re50_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re50_pysr.json rename to src/SR_analysis/archive/old/archive/raw/karman_re50_pysr.json diff --git a/src/SR_analysis/old/archive/raw/karman_re50_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re50_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re50_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re50_v23.json diff --git a/src/SR_analysis/old/archive/raw/karman_re70_deriv.json b/src/SR_analysis/archive/old/archive/raw/karman_re70_deriv.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re70_deriv.json rename to src/SR_analysis/archive/old/archive/raw/karman_re70_deriv.json diff --git a/src/SR_analysis/old/archive/raw/karman_re70_v23.json b/src/SR_analysis/archive/old/archive/raw/karman_re70_v23.json similarity index 100% rename from src/SR_analysis/old/archive/raw/karman_re70_v23.json rename to src/SR_analysis/archive/old/archive/raw/karman_re70_v23.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_front_target.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_front_target.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_front_target.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_front_target.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_top_target.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_top_target.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_0.75L_top_target.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_0.75L_top_target.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_1.5L_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_1.5L_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_1.5L_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_1.5L_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_1.5L_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_1.5L_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_1.5L_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_1.5L_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_1L_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_1L_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_1L_front_target.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_front_target.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_1L_front_target.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_front_target.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_1L_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_1L_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_1L_top_target.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_top_target.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_1L_top_target.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_1L_top_target.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_joint_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_joint_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_joint_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_joint_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_joint_marker_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_joint_marker_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_joint_marker_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_joint_marker_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_illusion_joint_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_illusion_joint_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_illusion_joint_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_illusion_joint_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re100_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re100_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re100_front_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_front_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re100_front_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_front_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re100_mu_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_mu_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re100_mu_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_mu_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re100_mu_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_mu_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re100_mu_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_mu_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re100_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re100_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re100_top_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_top_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re100_top_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re100_top_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re200_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re200_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re200_front_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_front_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re200_front_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_front_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re200_front_mu.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_front_mu.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re200_front_mu.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_front_mu.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re200_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re200_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re200_top_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_top_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re200_top_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_top_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re200_top_mu.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_top_mu.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re200_top_mu.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re200_top_mu.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re400_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re400_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re400_front_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_front_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re400_front_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_front_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re400_front_mu.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_front_mu.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re400_front_mu.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_front_mu.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re400_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re400_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re400_top_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_top_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re400_top_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_top_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re400_top_mu.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_top_mu.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re400_top_mu.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re400_top_mu.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re50_front.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_front.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re50_front.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_front.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re50_front_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_front_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re50_front_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_front_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re50_front_mu.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_front_mu.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re50_front_mu.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_front_mu.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re50_top.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_top.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re50_top.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_top.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re50_top_deep.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_top_deep.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re50_top_deep.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_top_deep.json diff --git a/src/SR_analysis/old/archive/raw/pysr_karman_re50_top_mu.json b/src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_top_mu.json similarity index 100% rename from src/SR_analysis/old/archive/raw/pysr_karman_re50_top_mu.json rename to src/SR_analysis/archive/old/archive/raw/pysr_karman_re50_top_mu.json diff --git a/src/SR_analysis/old/archive/raw/vortex_lamb_pysr.json b/src/SR_analysis/archive/old/archive/raw/vortex_lamb_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/vortex_lamb_pysr.json rename to src/SR_analysis/archive/old/archive/raw/vortex_lamb_pysr.json diff --git a/src/SR_analysis/old/archive/raw/vortex_taylor_pysr.json b/src/SR_analysis/archive/old/archive/raw/vortex_taylor_pysr.json similarity index 100% rename from src/SR_analysis/old/archive/raw/vortex_taylor_pysr.json rename to src/SR_analysis/archive/old/archive/raw/vortex_taylor_pysr.json diff --git a/src/SR_analysis/old/batch_illusion_generalization.sh b/src/SR_analysis/archive/old/batch_illusion_generalization.sh similarity index 100% rename from src/SR_analysis/old/batch_illusion_generalization.sh rename to src/SR_analysis/archive/old/batch_illusion_generalization.sh diff --git a/src/SR_analysis/old/compare/illusion_shared_core.json b/src/SR_analysis/archive/old/compare/illusion_shared_core.json similarity index 100% rename from src/SR_analysis/old/compare/illusion_shared_core.json rename to src/SR_analysis/archive/old/compare/illusion_shared_core.json diff --git a/src/SR_analysis/old/compare/karman_shared_core.json b/src/SR_analysis/archive/old/compare/karman_shared_core.json similarity index 100% rename from src/SR_analysis/old/compare/karman_shared_core.json rename to src/SR_analysis/archive/old/compare/karman_shared_core.json diff --git a/src/SR_analysis/old/eval_rollout.py b/src/SR_analysis/archive/old/eval_rollout.py similarity index 100% rename from src/SR_analysis/old/eval_rollout.py rename to src/SR_analysis/archive/old/eval_rollout.py diff --git a/src/SR_analysis/old/launch_pysr_validation.py b/src/SR_analysis/archive/old/launch_pysr_validation.py similarity index 100% rename from src/SR_analysis/old/launch_pysr_validation.py rename to src/SR_analysis/archive/old/launch_pysr_validation.py diff --git a/src/SR_analysis/old/legacy/config_cuda.json b/src/SR_analysis/archive/old/legacy/config_cuda.json similarity index 100% rename from src/SR_analysis/old/legacy/config_cuda.json rename to src/SR_analysis/archive/old/legacy/config_cuda.json diff --git a/src/SR_analysis/old/legacy/config_flowfield.json b/src/SR_analysis/archive/old/legacy/config_flowfield.json similarity index 100% rename from src/SR_analysis/old/legacy/config_flowfield.json rename to src/SR_analysis/archive/old/legacy/config_flowfield.json diff --git a/src/SR_analysis/old/old_data/pareto_karman_re100.json b/src/SR_analysis/archive/old/old_data/pareto_karman_re100.json similarity index 100% rename from src/SR_analysis/old/old_data/pareto_karman_re100.json rename to src/SR_analysis/archive/old/old_data/pareto_karman_re100.json diff --git a/src/SR_analysis/old/old_data/pareto_vortex_lamb.json b/src/SR_analysis/archive/old/old_data/pareto_vortex_lamb.json similarity index 100% rename from src/SR_analysis/old/old_data/pareto_vortex_lamb.json rename to src/SR_analysis/archive/old/old_data/pareto_vortex_lamb.json diff --git a/src/SR_analysis/old/old_data/pareto_vortex_taylor.json b/src/SR_analysis/archive/old/old_data/pareto_vortex_taylor.json similarity index 100% rename from src/SR_analysis/old/old_data/pareto_vortex_taylor.json rename to src/SR_analysis/archive/old/old_data/pareto_vortex_taylor.json diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0000_pct00.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0000_pct00.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0000_pct00.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0000_pct00.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0060_pct12.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0060_pct12.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0060_pct12.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0060_pct12.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0120_pct25.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0120_pct25.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0120_pct25.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0120_pct25.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0180_pct37.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0180_pct37.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0180_pct37.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0180_pct37.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0240_pct50.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0240_pct50.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0240_pct50.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0240_pct50.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0300_pct62.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0300_pct62.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0300_pct62.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0300_pct62.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0360_pct75.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0360_pct75.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0360_pct75.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0360_pct75.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0420_pct87.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0420_pct87.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0420_pct87.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0420_pct87.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0479_pct99.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0479_pct99.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0479_pct99.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_0.75L_PPO_step0479_pct99.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0000_pct00.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0000_pct00.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0000_pct00.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0000_pct00.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0037_pct12.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0037_pct12.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0037_pct12.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0037_pct12.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0074_pct24.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0074_pct24.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0074_pct24.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0074_pct24.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0111_pct37.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0111_pct37.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0111_pct37.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0111_pct37.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0148_pct49.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0148_pct49.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0148_pct49.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0148_pct49.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0185_pct61.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0185_pct61.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0185_pct61.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0185_pct61.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0222_pct74.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0222_pct74.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0222_pct74.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0222_pct74.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0259_pct86.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0259_pct86.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0259_pct86.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0259_pct86.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0296_pct98.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0296_pct98.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0296_pct98.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0296_pct98.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0299_pct99.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0299_pct99.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0299_pct99.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1.5L_PPO_step0299_pct99.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0000_pct00.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0000_pct00.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0000_pct00.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0000_pct00.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0040_pct12.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0040_pct12.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0040_pct12.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0040_pct12.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0080_pct25.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0080_pct25.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0080_pct25.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0080_pct25.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0120_pct37.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0120_pct37.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0120_pct37.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0120_pct37.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0160_pct50.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0160_pct50.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0160_pct50.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0160_pct50.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0200_pct62.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0200_pct62.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0200_pct62.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0200_pct62.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0240_pct75.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0240_pct75.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0240_pct75.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0240_pct75.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0280_pct87.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0280_pct87.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0280_pct87.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0280_pct87.png diff --git a/src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0319_pct99.png b/src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0319_pct99.png similarity index 100% rename from src/SR_analysis/old/old_data/ppo_step_images/illusion_1L_PPO_step0319_pct99.png rename to src/SR_analysis/archive/old/old_data/ppo_step_images/illusion_1L_PPO_step0319_pct99.png diff --git a/src/SR_analysis/old/old_data/pysr_all_results.json b/src/SR_analysis/archive/old/old_data/pysr_all_results.json similarity index 100% rename from src/SR_analysis/old/old_data/pysr_all_results.json rename to src/SR_analysis/archive/old/old_data/pysr_all_results.json diff --git a/src/SR_analysis/old/old_data/sindy_karman_v1.json b/src/SR_analysis/archive/old/old_data/sindy_karman_v1.json similarity index 100% rename from src/SR_analysis/old/old_data/sindy_karman_v1.json rename to src/SR_analysis/archive/old/old_data/sindy_karman_v1.json diff --git a/src/SR_analysis/old/old_data/sindy_karman_with_mu.json b/src/SR_analysis/archive/old/old_data/sindy_karman_with_mu.json similarity index 100% rename from src/SR_analysis/old/old_data/sindy_karman_with_mu.json rename to src/SR_analysis/archive/old/old_data/sindy_karman_with_mu.json diff --git a/src/SR_analysis/old/old_data/sindy_karman_with_sin.json b/src/SR_analysis/archive/old/old_data/sindy_karman_with_sin.json similarity index 100% rename from src/SR_analysis/old/old_data/sindy_karman_with_sin.json rename to src/SR_analysis/archive/old/old_data/sindy_karman_with_sin.json diff --git a/src/SR_analysis/old/old_data/sindy_vortex_v1.json b/src/SR_analysis/archive/old/old_data/sindy_vortex_v1.json similarity index 100% rename from src/SR_analysis/old/old_data/sindy_vortex_v1.json rename to src/SR_analysis/archive/old/old_data/sindy_vortex_v1.json diff --git a/src/SR_analysis/old/predict_pysr.py b/src/SR_analysis/archive/old/predict_pysr.py similarity index 100% rename from src/SR_analysis/old/predict_pysr.py rename to src/SR_analysis/archive/old/predict_pysr.py diff --git a/src/SR_analysis/old/run_closed_loop.py b/src/SR_analysis/archive/old/run_closed_loop.py similarity index 100% rename from src/SR_analysis/old/run_closed_loop.py rename to src/SR_analysis/archive/old/run_closed_loop.py diff --git a/src/SR_analysis/old/run_closed_loop_illusion.py b/src/SR_analysis/archive/old/run_closed_loop_illusion.py similarity index 100% rename from src/SR_analysis/old/run_closed_loop_illusion.py rename to src/SR_analysis/archive/old/run_closed_loop_illusion.py diff --git a/src/SR_analysis/old/run_closed_loop_re400_si.py b/src/SR_analysis/archive/old/run_closed_loop_re400_si.py similarity index 100% rename from src/SR_analysis/old/run_closed_loop_re400_si.py rename to src/SR_analysis/archive/old/run_closed_loop_re400_si.py diff --git a/src/SR_analysis/old/run_closed_loop_vortex.py b/src/SR_analysis/archive/old/run_closed_loop_vortex.py similarity index 100% rename from src/SR_analysis/old/run_closed_loop_vortex.py rename to src/SR_analysis/archive/old/run_closed_loop_vortex.py diff --git a/src/SR_analysis/old/scripts/analyze_illusion_degradation.py b/src/SR_analysis/archive/old/scripts/analyze_illusion_degradation.py similarity index 100% rename from src/SR_analysis/old/scripts/analyze_illusion_degradation.py rename to src/SR_analysis/archive/old/scripts/analyze_illusion_degradation.py diff --git a/src/SR_analysis/old/scripts/diagnose_illusion.py b/src/SR_analysis/archive/old/scripts/diagnose_illusion.py similarity index 100% rename from src/SR_analysis/old/scripts/diagnose_illusion.py rename to src/SR_analysis/archive/old/scripts/diagnose_illusion.py diff --git a/src/SR_analysis/old/scripts/gen_illusion_target.py b/src/SR_analysis/archive/old/scripts/gen_illusion_target.py similarity index 100% rename from src/SR_analysis/old/scripts/gen_illusion_target.py rename to src/SR_analysis/archive/old/scripts/gen_illusion_target.py diff --git a/src/SR_analysis/old/scripts/infer_illusion.py b/src/SR_analysis/archive/old/scripts/infer_illusion.py similarity index 100% rename from src/SR_analysis/old/scripts/infer_illusion.py rename to src/SR_analysis/archive/old/scripts/infer_illusion.py diff --git a/src/SR_analysis/old/scripts/infer_karman.py b/src/SR_analysis/archive/old/scripts/infer_karman.py similarity index 100% rename from src/SR_analysis/old/scripts/infer_karman.py rename to src/SR_analysis/archive/old/scripts/infer_karman.py diff --git a/src/SR_analysis/old/scripts/infer_vortex.py b/src/SR_analysis/archive/old/scripts/infer_vortex.py similarity index 100% rename from src/SR_analysis/old/scripts/infer_vortex.py rename to src/SR_analysis/archive/old/scripts/infer_vortex.py diff --git a/src/SR_analysis/old/scripts/test_cylinder_order.py b/src/SR_analysis/archive/old/scripts/test_cylinder_order.py similarity index 100% rename from src/SR_analysis/old/scripts/test_cylinder_order.py rename to src/SR_analysis/archive/old/scripts/test_cylinder_order.py diff --git a/src/SR_analysis/old/scripts/visualize_ppo_illusion.py b/src/SR_analysis/archive/old/scripts/visualize_ppo_illusion.py similarity index 100% rename from src/SR_analysis/old/scripts/visualize_ppo_illusion.py rename to src/SR_analysis/archive/old/scripts/visualize_ppo_illusion.py diff --git a/src/SR_analysis/old/sindy/run_pysr.py b/src/SR_analysis/archive/old/sindy/run_pysr.py similarity index 100% rename from src/SR_analysis/old/sindy/run_pysr.py rename to src/SR_analysis/archive/old/sindy/run_pysr.py diff --git a/src/SR_analysis/old/sindy/run_pysr_deep.py b/src/SR_analysis/archive/old/sindy/run_pysr_deep.py similarity index 100% rename from src/SR_analysis/old/sindy/run_pysr_deep.py rename to src/SR_analysis/archive/old/sindy/run_pysr_deep.py diff --git a/src/SR_analysis/old/sindy/run_pysr_deep_illusion.py b/src/SR_analysis/archive/old/sindy/run_pysr_deep_illusion.py similarity index 100% rename from src/SR_analysis/old/sindy/run_pysr_deep_illusion.py rename to src/SR_analysis/archive/old/sindy/run_pysr_deep_illusion.py diff --git a/src/SR_analysis/old/sindy_sr_knowledge.md b/src/SR_analysis/archive/old/sindy_sr_knowledge.md similarity index 100% rename from src/SR_analysis/old/sindy_sr_knowledge.md rename to src/SR_analysis/archive/old/sindy_sr_knowledge.md diff --git a/src/SR_analysis/old/sindy_sr_notes.md b/src/SR_analysis/archive/old/sindy_sr_notes.md similarity index 100% rename from src/SR_analysis/old/sindy_sr_notes.md rename to src/SR_analysis/archive/old/sindy_sr_notes.md diff --git a/src/SR_analysis/old/validate_results_archive/pysr_deep_indiv_top.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_deep_indiv_top.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_deep_indiv_top.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_deep_indiv_top.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_deep_individual_deep.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_deep_individual_deep.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_deep_individual_deep.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_deep_individual_deep.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_deep_joint_deep.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_deep_joint_deep.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_deep_joint_deep.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_deep_joint_deep.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_deep_joint_top.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_deep_joint_top.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_deep_joint_top.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_deep_joint_top.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_illusion_deep_individual_deep.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_deep_individual_deep.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_illusion_deep_individual_deep.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_deep_individual_deep.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_illusion_front.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_front.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_illusion_front.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_front.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_illusion_joint_deep.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_joint_deep.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_illusion_joint_deep.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_joint_deep.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_illusion_joint_marker_deep.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_joint_marker_deep.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_illusion_joint_marker_deep.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_joint_marker_deep.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_illusion_top.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_top.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_illusion_top.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_illusion_top.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_front.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_front.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_front.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_front.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_front.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_front.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_front.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_front.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_mu.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_mu.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_mu.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_mu.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_phasemu.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_phasemu.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_phasemu.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_phasemu.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_phys_dadt.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_phys_dadt.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_phys_dadt.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_phys_dadt.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_top.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_top.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_top.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_top.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_v2_full.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_v2_full.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_v2_full.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_v2_full.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_joint_whitelist.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_whitelist.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_joint_whitelist.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_joint_whitelist.json diff --git a/src/SR_analysis/old/validate_results_archive/pysr_karman_top.json b/src/SR_analysis/archive/old/validate_results_archive/pysr_karman_top.json similarity index 100% rename from src/SR_analysis/old/validate_results_archive/pysr_karman_top.json rename to src/SR_analysis/archive/old/validate_results_archive/pysr_karman_top.json diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_PPO_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_PPO_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_PPO_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_PPO_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_target.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_target.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_target.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_target.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_target_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_target_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_target_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_target_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_uncontrolled_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_0.75L_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_0.75L_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_PPO_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_PPO_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_PPO_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_PPO_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_target.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_target.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_target.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_target.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_target_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_target_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_target_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_target_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_uncontrolled_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1.5L_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1.5L_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_PPO_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_PPO_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_PPO_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_PPO_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_target.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_target.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_target.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_target.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_target_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_target_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_target_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_target_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_uncontrolled.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_uncontrolled.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_uncontrolled.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_uncontrolled.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_uncontrolled_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_uncontrolled_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_uncontrolled_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_uncontrolled_vorticity.png diff --git a/src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_vorticity.png b/src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_vorticity.png similarity index 100% rename from src/SR_analysis/old/validate_vorticity_pngs/illusion_1L_vorticity.png rename to src/SR_analysis/archive/old/validate_vorticity_pngs/illusion_1L_vorticity.png diff --git a/src/SR_analysis/results/figures/FIGURE_INDEX.md b/src/SR_analysis/archive/results/figures/FIGURE_INDEX.md similarity index 100% rename from src/SR_analysis/results/figures/FIGURE_INDEX.md rename to src/SR_analysis/archive/results/figures/FIGURE_INDEX.md diff --git a/src/SR_analysis/results/figures/fig_action_comparison.pdf b/src/SR_analysis/archive/results/figures/fig_action_comparison.pdf similarity index 100% rename from src/SR_analysis/results/figures/fig_action_comparison.pdf rename to src/SR_analysis/archive/results/figures/fig_action_comparison.pdf diff --git a/src/SR_analysis/results/figures/fig_action_comparison.png b/src/SR_analysis/archive/results/figures/fig_action_comparison.png similarity index 100% rename from src/SR_analysis/results/figures/fig_action_comparison.png rename to src/SR_analysis/archive/results/figures/fig_action_comparison.png diff --git a/src/SR_analysis/results/figures/fig_formula_comparison.pdf b/src/SR_analysis/archive/results/figures/fig_formula_comparison.pdf similarity index 100% rename from src/SR_analysis/results/figures/fig_formula_comparison.pdf rename to src/SR_analysis/archive/results/figures/fig_formula_comparison.pdf diff --git a/src/SR_analysis/results/figures/fig_formula_comparison.png b/src/SR_analysis/archive/results/figures/fig_formula_comparison.png similarity index 100% rename from src/SR_analysis/results/figures/fig_formula_comparison.png rename to src/SR_analysis/archive/results/figures/fig_formula_comparison.png diff --git a/src/SR_analysis/results/figures/fig_illusion_degradation.pdf b/src/SR_analysis/archive/results/figures/fig_illusion_degradation.pdf similarity index 100% rename from src/SR_analysis/results/figures/fig_illusion_degradation.pdf rename to src/SR_analysis/archive/results/figures/fig_illusion_degradation.pdf diff --git a/src/SR_analysis/results/figures/fig_illusion_degradation.png b/src/SR_analysis/archive/results/figures/fig_illusion_degradation.png similarity index 100% rename from src/SR_analysis/results/figures/fig_illusion_degradation.png rename to src/SR_analysis/archive/results/figures/fig_illusion_degradation.png diff --git a/src/SR_analysis/results/figures/fig_karman_cross_re.pdf b/src/SR_analysis/archive/results/figures/fig_karman_cross_re.pdf similarity index 100% rename from src/SR_analysis/results/figures/fig_karman_cross_re.pdf rename to src/SR_analysis/archive/results/figures/fig_karman_cross_re.pdf diff --git a/src/SR_analysis/results/figures/fig_karman_cross_re.png b/src/SR_analysis/archive/results/figures/fig_karman_cross_re.png similarity index 100% rename from src/SR_analysis/results/figures/fig_karman_cross_re.png rename to src/SR_analysis/archive/results/figures/fig_karman_cross_re.png diff --git a/src/SR_analysis/results/figures/fig_master_table.pdf b/src/SR_analysis/archive/results/figures/fig_master_table.pdf similarity index 100% rename from src/SR_analysis/results/figures/fig_master_table.pdf rename to src/SR_analysis/archive/results/figures/fig_master_table.pdf diff --git a/src/SR_analysis/results/figures/fig_master_table.png b/src/SR_analysis/archive/results/figures/fig_master_table.png similarity index 100% rename from src/SR_analysis/results/figures/fig_master_table.png rename to src/SR_analysis/archive/results/figures/fig_master_table.png diff --git a/src/SR_analysis/results/figures/fig_vortex_generalization.pdf b/src/SR_analysis/archive/results/figures/fig_vortex_generalization.pdf similarity index 100% rename from src/SR_analysis/results/figures/fig_vortex_generalization.pdf rename to src/SR_analysis/archive/results/figures/fig_vortex_generalization.pdf diff --git a/src/SR_analysis/results/figures/fig_vortex_generalization.png b/src/SR_analysis/archive/results/figures/fig_vortex_generalization.png similarity index 100% rename from src/SR_analysis/results/figures/fig_vortex_generalization.png rename to src/SR_analysis/archive/results/figures/fig_vortex_generalization.png diff --git a/src/SR_analysis/results/formulas/illusion_0.75L_front.json b/src/SR_analysis/archive/results/formulas/illusion_0.75L_front.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_0.75L_front.json rename to src/SR_analysis/archive/results/formulas/illusion_0.75L_front.json diff --git a/src/SR_analysis/results/formulas/illusion_0.75L_front_target.json b/src/SR_analysis/archive/results/formulas/illusion_0.75L_front_target.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_0.75L_front_target.json rename to src/SR_analysis/archive/results/formulas/illusion_0.75L_front_target.json diff --git a/src/SR_analysis/results/formulas/illusion_0.75L_top.json b/src/SR_analysis/archive/results/formulas/illusion_0.75L_top.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_0.75L_top.json rename to src/SR_analysis/archive/results/formulas/illusion_0.75L_top.json diff --git a/src/SR_analysis/results/formulas/illusion_0.75L_top_target.json b/src/SR_analysis/archive/results/formulas/illusion_0.75L_top_target.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_0.75L_top_target.json rename to src/SR_analysis/archive/results/formulas/illusion_0.75L_top_target.json diff --git a/src/SR_analysis/results/formulas/illusion_1.5L_front.json b/src/SR_analysis/archive/results/formulas/illusion_1.5L_front.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_1.5L_front.json rename to src/SR_analysis/archive/results/formulas/illusion_1.5L_front.json diff --git a/src/SR_analysis/results/formulas/illusion_1.5L_top.json b/src/SR_analysis/archive/results/formulas/illusion_1.5L_top.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_1.5L_top.json rename to src/SR_analysis/archive/results/formulas/illusion_1.5L_top.json diff --git a/src/SR_analysis/results/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/formulas/illusion_1L_front_target.json b/src/SR_analysis/archive/results/formulas/illusion_1L_front_target.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_1L_front_target.json rename to src/SR_analysis/archive/results/formulas/illusion_1L_front_target.json diff --git a/src/SR_analysis/results/formulas/illusion_1L_top.json b/src/SR_analysis/archive/results/formulas/illusion_1L_top.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_1L_top.json rename to src/SR_analysis/archive/results/formulas/illusion_1L_top.json diff --git a/src/SR_analysis/results/formulas/illusion_1L_top_target.json b/src/SR_analysis/archive/results/formulas/illusion_1L_top_target.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_1L_top_target.json rename to src/SR_analysis/archive/results/formulas/illusion_1L_top_target.json diff --git a/src/SR_analysis/results/formulas/illusion_joint_front.json b/src/SR_analysis/archive/results/formulas/illusion_joint_front.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_joint_front.json rename to src/SR_analysis/archive/results/formulas/illusion_joint_front.json diff --git a/src/SR_analysis/results/formulas/illusion_joint_marker_front.json b/src/SR_analysis/archive/results/formulas/illusion_joint_marker_front.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_joint_marker_front.json rename to src/SR_analysis/archive/results/formulas/illusion_joint_marker_front.json diff --git a/src/SR_analysis/results/formulas/illusion_joint_top.json b/src/SR_analysis/archive/results/formulas/illusion_joint_top.json similarity index 100% rename from src/SR_analysis/results/formulas/illusion_joint_top.json rename to src/SR_analysis/archive/results/formulas/illusion_joint_top.json diff --git a/src/SR_analysis/results/formulas/karman_joint_front.json b/src/SR_analysis/archive/results/formulas/karman_joint_front.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_joint_front.json rename to src/SR_analysis/archive/results/formulas/karman_joint_front.json diff --git a/src/SR_analysis/results/formulas/karman_joint_top.json b/src/SR_analysis/archive/results/formulas/karman_joint_top.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_joint_top.json rename to src/SR_analysis/archive/results/formulas/karman_joint_top.json diff --git a/src/SR_analysis/results/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/formulas/karman_re100_top.json b/src/SR_analysis/archive/results/formulas/karman_re100_top.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re100_top.json rename to src/SR_analysis/archive/results/formulas/karman_re100_top.json diff --git a/src/SR_analysis/results/formulas/karman_re200_front.json b/src/SR_analysis/archive/results/formulas/karman_re200_front.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re200_front.json rename to src/SR_analysis/archive/results/formulas/karman_re200_front.json diff --git a/src/SR_analysis/results/formulas/karman_re200_top.json b/src/SR_analysis/archive/results/formulas/karman_re200_top.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re200_top.json rename to src/SR_analysis/archive/results/formulas/karman_re200_top.json diff --git a/src/SR_analysis/results/formulas/karman_re400_front.json b/src/SR_analysis/archive/results/formulas/karman_re400_front.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re400_front.json rename to src/SR_analysis/archive/results/formulas/karman_re400_front.json diff --git a/src/SR_analysis/results/formulas/karman_re400_top.json b/src/SR_analysis/archive/results/formulas/karman_re400_top.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re400_top.json rename to src/SR_analysis/archive/results/formulas/karman_re400_top.json diff --git a/src/SR_analysis/results/formulas/karman_re50_front.json b/src/SR_analysis/archive/results/formulas/karman_re50_front.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re50_front.json rename to src/SR_analysis/archive/results/formulas/karman_re50_front.json diff --git a/src/SR_analysis/results/formulas/karman_re50_top.json b/src/SR_analysis/archive/results/formulas/karman_re50_top.json similarity index 100% rename from src/SR_analysis/results/formulas/karman_re50_top.json rename to src/SR_analysis/archive/results/formulas/karman_re50_top.json diff --git a/src/SR_analysis/results/formulas_v5/ill_075L_ill_1L_ill_15L_ill_2L_front.json b/src/SR_analysis/archive/results/formulas_v5/ill_075L_ill_1L_ill_15L_ill_2L_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/ill_075L_ill_1L_ill_15L_ill_2L_front.json rename to src/SR_analysis/archive/results/formulas_v5/ill_075L_ill_1L_ill_15L_ill_2L_front.json diff --git a/src/SR_analysis/results/formulas_v5/ill_1L_front.json b/src/SR_analysis/archive/results/formulas_v5/ill_1L_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/ill_1L_front.json rename to src/SR_analysis/archive/results/formulas_v5/ill_1L_front.json diff --git a/src/SR_analysis/results/formulas_v5/ill_1L_top.json b/src/SR_analysis/archive/results/formulas_v5/ill_1L_top.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/ill_1L_top.json rename to src/SR_analysis/archive/results/formulas_v5/ill_1L_top.json diff --git a/src/SR_analysis/results/formulas_v5/kar_d075_front.json b/src/SR_analysis/archive/results/formulas_v5/kar_d075_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_d075_front.json rename to src/SR_analysis/archive/results/formulas_v5/kar_d075_front.json diff --git a/src/SR_analysis/results/formulas_v5/kar_d075_top.json b/src/SR_analysis/archive/results/formulas_v5/kar_d075_top.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_d075_top.json rename to src/SR_analysis/archive/results/formulas_v5/kar_d075_top.json diff --git a/src/SR_analysis/results/formulas_v5/kar_d15_front.json b/src/SR_analysis/archive/results/formulas_v5/kar_d15_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_d15_front.json rename to src/SR_analysis/archive/results/formulas_v5/kar_d15_front.json diff --git a/src/SR_analysis/results/formulas_v5/kar_d15_top.json b/src/SR_analysis/archive/results/formulas_v5/kar_d15_top.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_d15_top.json rename to src/SR_analysis/archive/results/formulas_v5/kar_d15_top.json diff --git a/src/SR_analysis/results/formulas_v5/kar_d2_front.json b/src/SR_analysis/archive/results/formulas_v5/kar_d2_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_d2_front.json rename to src/SR_analysis/archive/results/formulas_v5/kar_d2_front.json diff --git a/src/SR_analysis/results/formulas_v5/kar_d2_top.json b/src/SR_analysis/archive/results/formulas_v5/kar_d2_top.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_d2_top.json rename to src/SR_analysis/archive/results/formulas_v5/kar_d2_top.json diff --git a/src/SR_analysis/results/formulas_v5/kar_re100_front.json b/src/SR_analysis/archive/results/formulas_v5/kar_re100_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_re100_front.json rename to src/SR_analysis/archive/results/formulas_v5/kar_re100_front.json diff --git a/src/SR_analysis/results/formulas_v5/kar_re100_kar_d075_kar_d15_kar_d2_front.json b/src/SR_analysis/archive/results/formulas_v5/kar_re100_kar_d075_kar_d15_kar_d2_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/kar_re100_kar_d075_kar_d15_kar_d2_front.json rename to src/SR_analysis/archive/results/formulas_v5/kar_re100_kar_d075_kar_d15_kar_d2_front.json diff --git a/src/SR_analysis/results/formulas_v5/karman_v5_nodadt_front.json b/src/SR_analysis/archive/results/formulas_v5/karman_v5_nodadt_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/karman_v5_nodadt_front.json rename to src/SR_analysis/archive/results/formulas_v5/karman_v5_nodadt_front.json diff --git a/src/SR_analysis/results/formulas_v5/mixed_karman_5cases_front.json b/src/SR_analysis/archive/results/formulas_v5/mixed_karman_5cases_front.json similarity index 100% rename from src/SR_analysis/results/formulas_v5/mixed_karman_5cases_front.json rename to src/SR_analysis/archive/results/formulas_v5/mixed_karman_5cases_front.json diff --git a/src/SR_analysis/results/runs/pre_fix_manifest.json b/src/SR_analysis/archive/results/runs/pre_fix_manifest.json similarity index 100% rename from src/SR_analysis/results/runs/pre_fix_manifest.json rename to src/SR_analysis/archive/results/runs/pre_fix_manifest.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-raw-all-independent-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-reduced-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/audit_report.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/audit_report.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/audit_report.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-safe-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-illusion-1L-sym-all-mapped-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-raw-all-independent-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-reduced-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-safe-mapped-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/rebuild-karman-re100-sym-all-mapped-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/audit_report.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/audit_report.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/audit_report.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/candidate_registry.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/candidate_registry.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/candidate_registry.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/validations/illusion_1L__pysr__f-b097927baeb7__si-600.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/validations/illusion_1L__pysr__f-b097927baeb7__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-1L/validations/illusion_1L__pysr__f-b097927baeb7__si-600.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-1L/validations/illusion_1L__pysr__f-b097927baeb7__si-600.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/audit_report.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/audit_report.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/audit_report.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/candidate_registry.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/candidate_registry.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/candidate_registry.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_front.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_front.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_front.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_front.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/formulas/joint_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_0p75L__pysr__f-508b04750c4f__si-400.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_0p75L__pysr__f-508b04750c4f__si-400.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_0p75L__pysr__f-508b04750c4f__si-400.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_0p75L__pysr__f-508b04750c4f__si-400.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_1L__pysr__f-508b04750c4f__si-600.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_1L__pysr__f-508b04750c4f__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_1L__pysr__f-508b04750c4f__si-600.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-audited/validations/illusion_1L__pysr__f-508b04750c4f__si-600.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_0p75L__pysr__f-44891e22e744__si-400.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_0p75L__pysr__f-44891e22e744__si-400.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_0p75L__pysr__f-44891e22e744__si-400.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_0p75L__pysr__f-44891e22e744__si-400.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_1L__pysr__f-44891e22e744__si-600.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_1L__pysr__f-44891e22e744__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_1L__pysr__f-44891e22e744__si-600.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-failure-record/validations/illusion_1L__pysr__f-44891e22e744__si-600.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_front.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_front.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_front.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_front.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint-safe/formulas/joint_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_front.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_front.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_front.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_front.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-illusion-joint/formulas/joint_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/audit_report.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/audit_report.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/audit_report.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/candidate_registry.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/candidate_registry.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/candidate_registry.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_front.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_front.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_front.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_front.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/formulas/joint_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re100__pysr__f-d2b16c777e41__si-800.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re100__pysr__f-d2b16c777e41__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re100__pysr__f-d2b16c777e41__si-800.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re100__pysr__f-d2b16c777e41__si-800.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re200__pysr__f-d2b16c777e41__si-800.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re200__pysr__f-d2b16c777e41__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re200__pysr__f-d2b16c777e41__si-800.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re200__pysr__f-d2b16c777e41__si-800.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re400__pysr__f-d2b16c777e41__si-800.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re400__pysr__f-d2b16c777e41__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re400__pysr__f-d2b16c777e41__si-800.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re400__pysr__f-d2b16c777e41__si-800.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re50__pysr__f-d2b16c777e41__si-800.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re50__pysr__f-d2b16c777e41__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re50__pysr__f-d2b16c777e41__si-800.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-joint/validations/karman_re50__pysr__f-d2b16c777e41__si-800.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/audit_report.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/audit_report.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/audit_report.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/candidate_registry.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/candidate_registry.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/candidate_registry.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/validations/karman_re100__pysr__f-16231fd8a6aa__si-800.json b/src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/validations/karman_re100__pysr__f-16231fd8a6aa__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/round1-legacy-v2-20260716-karman-re100/validations/karman_re100__pysr__f-16231fd8a6aa__si-800.json rename to src/SR_analysis/archive/results/runs/round1-legacy-v2-20260716-karman-re100/validations/karman_re100__pysr__f-16231fd8a6aa__si-800.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-equivalence-20260717/illusion_1L.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-equivalence-20260717/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-equivalence-20260717/illusion_1L.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-equivalence-20260717/illusion_1L.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-equivalence-20260717/karman_re100.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-equivalence-20260717/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-equivalence-20260717/karman_re100.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-equivalence-20260717/karman_re100.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-illusion-diagnostic-20260717/static_ablation.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-illusion-diagnostic-20260717/static_ablation.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-illusion-diagnostic-20260717/static_ablation.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-illusion-diagnostic-20260717/static_ablation.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-order-20260717/order/illusion_1L.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-order-20260717/order/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-order-20260717/order/illusion_1L.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-order-20260717/order/illusion_1L.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-order-20260717/order/karman_re100.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-order-20260717/order/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-order-20260717/order/karman_re100.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-order-20260717/order/karman_re100.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-symmetry-20260717/illusion_1L.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-symmetry-20260717/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-symmetry-20260717/illusion_1L.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-symmetry-20260717/illusion_1L.json diff --git a/src/SR_analysis/results/runs/scientific-rebuild-symmetry-20260717/karman_re100.json b/src/SR_analysis/archive/results/runs/scientific-rebuild-symmetry-20260717/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/scientific-rebuild-symmetry-20260717/karman_re100.json rename to src/SR_analysis/archive/results/runs/scientific-rebuild-symmetry-20260717/karman_re100.json diff --git a/src/SR_analysis/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/smoke-illusion-1L-20260716/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/smoke-illusion-1L-safe-20260716/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/smoke-karman-re100-20260716/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-L2-karman-front_feedback-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json b/src/SR_analysis/archive/results/runs/trusted-L2-karman-front_feedback-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L2-karman-front_feedback-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-L2-karman-front_feedback-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-L2-karman-front_feedback-v2-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json b/src/SR_analysis/archive/results/runs/trusted-L2-karman-front_feedback-v2-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L2-karman-front_feedback-v2-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-L2-karman-front_feedback-v2-20260717/validations/karman_re100__pysr__f-6769ae4d536c__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-L2-karman-rear_constant-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json b/src/SR_analysis/archive/results/runs/trusted-L2-karman-rear_constant-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L2-karman-rear_constant-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-L2-karman-rear_constant-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-L3-illusion_1L-ppo-v2-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json b/src/SR_analysis/archive/results/runs/trusted-L3-illusion_1L-ppo-v2-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L3-illusion_1L-ppo-v2-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json rename to src/SR_analysis/archive/results/runs/trusted-L3-illusion_1L-ppo-v2-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json diff --git a/src/SR_analysis/results/runs/trusted-L3-karman-rear_constant-v2-20260717/audit_report.json b/src/SR_analysis/archive/results/runs/trusted-L3-karman-rear_constant-v2-20260717/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L3-karman-rear_constant-v2-20260717/audit_report.json rename to src/SR_analysis/archive/results/runs/trusted-L3-karman-rear_constant-v2-20260717/audit_report.json diff --git a/src/SR_analysis/results/runs/trusted-L3-karman-rear_constant-v2-20260717/candidate_registry.json b/src/SR_analysis/archive/results/runs/trusted-L3-karman-rear_constant-v2-20260717/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L3-karman-rear_constant-v2-20260717/candidate_registry.json rename to src/SR_analysis/archive/results/runs/trusted-L3-karman-rear_constant-v2-20260717/candidate_registry.json diff --git a/src/SR_analysis/results/runs/trusted-L3-karman-rear_constant-v2-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json b/src/SR_analysis/archive/results/runs/trusted-L3-karman-rear_constant-v2-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L3-karman-rear_constant-v2-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-L3-karman-rear_constant-v2-20260717/validations/karman_re100__pysr__f-ddb9ca1f4e25__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-L3-karman_re100-ppo-v2-20260717/validations/karman_re100__ppo__f-ppo__si-800.json b/src/SR_analysis/archive/results/runs/trusted-L3-karman_re100-ppo-v2-20260717/validations/karman_re100__ppo__f-ppo__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-L3-karman_re100-ppo-v2-20260717/validations/karman_re100__ppo__f-ppo__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-L3-karman_re100-ppo-v2-20260717/validations/karman_re100__ppo__f-ppo__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-actual_target-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-error_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-feedforward_feedback-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-ablation-illusion_1L-target_only-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-baseline-comparison-20260717/illusion_1L.json b/src/SR_analysis/archive/results/runs/trusted-baseline-comparison-20260717/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-baseline-comparison-20260717/illusion_1L.json rename to src/SR_analysis/archive/results/runs/trusted-baseline-comparison-20260717/illusion_1L.json diff --git a/src/SR_analysis/results/runs/trusted-baseline-comparison-20260717/karman_re100.json b/src/SR_analysis/archive/results/runs/trusted-baseline-comparison-20260717/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-baseline-comparison-20260717/karman_re100.json rename to src/SR_analysis/archive/results/runs/trusted-baseline-comparison-20260717/karman_re100.json diff --git a/src/SR_analysis/results/runs/trusted-baseline-illusion-uncontrolled-20260717/validations/illusion_1L__uncontrolled__f-none__si-600.json b/src/SR_analysis/archive/results/runs/trusted-baseline-illusion-uncontrolled-20260717/validations/illusion_1L__uncontrolled__f-none__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-baseline-illusion-uncontrolled-20260717/validations/illusion_1L__uncontrolled__f-none__si-600.json rename to src/SR_analysis/archive/results/runs/trusted-baseline-illusion-uncontrolled-20260717/validations/illusion_1L__uncontrolled__f-none__si-600.json diff --git a/src/SR_analysis/results/runs/trusted-baseline-karman-uncontrolled-20260717/validations/karman_re100__uncontrolled__f-none__si-800.json b/src/SR_analysis/archive/results/runs/trusted-baseline-karman-uncontrolled-20260717/validations/karman_re100__uncontrolled__f-none__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-baseline-karman-uncontrolled-20260717/validations/karman_re100__uncontrolled__f-none__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-baseline-karman-uncontrolled-20260717/validations/karman_re100__uncontrolled__f-none__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-evidence-round1-20260717/evidence_manifest.json b/src/SR_analysis/archive/results/runs/trusted-evidence-round1-20260717/evidence_manifest.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-evidence-round1-20260717/evidence_manifest.json rename to src/SR_analysis/archive/results/runs/trusted-evidence-round1-20260717/evidence_manifest.json diff --git a/src/SR_analysis/results/runs/trusted-evidence-round1-20260717/review_record.json b/src/SR_analysis/archive/results/runs/trusted-evidence-round1-20260717/review_record.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-evidence-round1-20260717/review_record.json rename to src/SR_analysis/archive/results/runs/trusted-evidence-round1-20260717/review_record.json diff --git a/src/SR_analysis/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-raw_complete-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-features-illusion_1L-symmetry-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-features-karman_re100-raw_complete-seed0-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-features-karman_re100-symmetry-seed0-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-mapped_shared-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed0-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed1-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-shared_no_augmentation-seed2-20260717/formulas/illusion_1L_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed0-20260717/formulas/illusion_1L_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed1-20260717/formulas/illusion_1L_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-illusion_1L-three_head_independent-seed2-20260717/formulas/illusion_1L_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed0-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed1-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-mapped_shared-seed2-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed0-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed1-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-shared_no_augmentation-seed2-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed0-20260717/formulas/karman_re100_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed1-20260717/formulas/karman_re100_upper.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_lower.json diff --git a/src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json b/src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json rename to src/SR_analysis/archive/results/runs/trusted-fit-v2-karman_re100-three_head_independent-seed2-20260717/formulas/karman_re100_upper.json diff --git a/src/SR_analysis/results/runs/trusted-illusion-ablation-20260717/static_ablation.json b/src/SR_analysis/archive/results/runs/trusted-illusion-ablation-20260717/static_ablation.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-illusion-ablation-20260717/static_ablation.json rename to src/SR_analysis/archive/results/runs/trusted-illusion-ablation-20260717/static_ablation.json diff --git a/src/SR_analysis/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-karman-baseline-front_feedback-v2-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/audit_report.json b/src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/audit_report.json rename to src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/audit_report.json diff --git a/src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/candidate_registry.json b/src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/candidate_registry.json rename to src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/candidate_registry.json diff --git a/src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_front.json b/src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_front.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_front.json rename to src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_front.json diff --git a/src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_rear_shared_upper.json b/src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_rear_shared_upper.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_rear_shared_upper.json rename to src/SR_analysis/archive/results/runs/trusted-karman-baseline-rear_constant-20260717/formulas/karman_re100_rear_shared_upper.json diff --git a/src/SR_analysis/results/runs/trusted-parity-report-20260717/illusion_1L.json b/src/SR_analysis/archive/results/runs/trusted-parity-report-20260717/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-parity-report-20260717/illusion_1L.json rename to src/SR_analysis/archive/results/runs/trusted-parity-report-20260717/illusion_1L.json diff --git a/src/SR_analysis/results/runs/trusted-parity-report-20260717/karman_re100.json b/src/SR_analysis/archive/results/runs/trusted-parity-report-20260717/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-parity-report-20260717/karman_re100.json rename to src/SR_analysis/archive/results/runs/trusted-parity-report-20260717/karman_re100.json diff --git a/src/SR_analysis/results/runs/trusted-parity-stage3-illusion-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json b/src/SR_analysis/archive/results/runs/trusted-parity-stage3-illusion-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-parity-stage3-illusion-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json rename to src/SR_analysis/archive/results/runs/trusted-parity-stage3-illusion-20260717/validations/illusion_1L__ppo__f-ppo__si-600.json diff --git a/src/SR_analysis/results/runs/trusted-parity-stage3-karman-20260717/validations/karman_re100__ppo__f-ppo__si-800.json b/src/SR_analysis/archive/results/runs/trusted-parity-stage3-karman-20260717/validations/karman_re100__ppo__f-ppo__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-parity-stage3-karman-20260717/validations/karman_re100__ppo__f-ppo__si-800.json rename to src/SR_analysis/archive/results/runs/trusted-parity-stage3-karman-20260717/validations/karman_re100__ppo__f-ppo__si-800.json diff --git a/src/SR_analysis/results/runs/trusted-policy-replay-20260717/illusion_1L.json b/src/SR_analysis/archive/results/runs/trusted-policy-replay-20260717/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-policy-replay-20260717/illusion_1L.json rename to src/SR_analysis/archive/results/runs/trusted-policy-replay-20260717/illusion_1L.json diff --git a/src/SR_analysis/results/runs/trusted-policy-replay-20260717/karman_re100.json b/src/SR_analysis/archive/results/runs/trusted-policy-replay-20260717/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-policy-replay-20260717/karman_re100.json rename to src/SR_analysis/archive/results/runs/trusted-policy-replay-20260717/karman_re100.json diff --git a/src/SR_analysis/results/runs/trusted-rebuild-order-20260717/order/illusion_1L.json b/src/SR_analysis/archive/results/runs/trusted-rebuild-order-20260717/order/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-rebuild-order-20260717/order/illusion_1L.json rename to src/SR_analysis/archive/results/runs/trusted-rebuild-order-20260717/order/illusion_1L.json diff --git a/src/SR_analysis/results/runs/trusted-rebuild-order-20260717/order/karman_re100.json b/src/SR_analysis/archive/results/runs/trusted-rebuild-order-20260717/order/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-rebuild-order-20260717/order/karman_re100.json rename to src/SR_analysis/archive/results/runs/trusted-rebuild-order-20260717/order/karman_re100.json diff --git a/src/SR_analysis/results/runs/trusted-symmetry-audit-20260717/illusion_1L.json b/src/SR_analysis/archive/results/runs/trusted-symmetry-audit-20260717/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-symmetry-audit-20260717/illusion_1L.json rename to src/SR_analysis/archive/results/runs/trusted-symmetry-audit-20260717/illusion_1L.json diff --git a/src/SR_analysis/results/runs/trusted-symmetry-audit-20260717/karman_re100.json b/src/SR_analysis/archive/results/runs/trusted-symmetry-audit-20260717/karman_re100.json similarity index 100% rename from src/SR_analysis/results/runs/trusted-symmetry-audit-20260717/karman_re100.json rename to src/SR_analysis/archive/results/runs/trusted-symmetry-audit-20260717/karman_re100.json diff --git a/src/SR_analysis/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/audit_report.json b/src/SR_analysis/archive/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/audit_report.json rename to src/SR_analysis/archive/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/audit_report.json diff --git a/src/SR_analysis/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json b/src/SR_analysis/archive/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json rename to src/SR_analysis/archive/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/candidate_registry.json diff --git a/src/SR_analysis/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/validations/illusion_1L__pysr__f-46782190a6b7__si-600.json b/src/SR_analysis/archive/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/validations/illusion_1L__pysr__f-46782190a6b7__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/validations/illusion_1L__pysr__f-46782190a6b7__si-600.json rename to src/SR_analysis/archive/results/runs/validate-rebuild-illusion-1L-safe-mapped-20260717/validations/illusion_1L__pysr__f-46782190a6b7__si-600.json diff --git a/src/SR_analysis/results/runs/validate-rebuild-karman-re100-safe-mapped-20260717/validations/karman_re100__pysr__f-a5d2d9b2cca0__si-800.json b/src/SR_analysis/archive/results/runs/validate-rebuild-karman-re100-safe-mapped-20260717/validations/karman_re100__pysr__f-a5d2d9b2cca0__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/validate-rebuild-karman-re100-safe-mapped-20260717/validations/karman_re100__pysr__f-a5d2d9b2cca0__si-800.json rename to src/SR_analysis/archive/results/runs/validate-rebuild-karman-re100-safe-mapped-20260717/validations/karman_re100__pysr__f-a5d2d9b2cca0__si-800.json diff --git a/src/SR_analysis/results/runs/wiring-illusion-1L-safe-20260716/validations/illusion_1L__pysr__f-eeed591da8b0__si-600.json b/src/SR_analysis/archive/results/runs/wiring-illusion-1L-safe-20260716/validations/illusion_1L__pysr__f-eeed591da8b0__si-600.json similarity index 100% rename from src/SR_analysis/results/runs/wiring-illusion-1L-safe-20260716/validations/illusion_1L__pysr__f-eeed591da8b0__si-600.json rename to src/SR_analysis/archive/results/runs/wiring-illusion-1L-safe-20260716/validations/illusion_1L__pysr__f-eeed591da8b0__si-600.json diff --git a/src/SR_analysis/results/runs/wiring-karman-re100-20260716/audit_report.json b/src/SR_analysis/archive/results/runs/wiring-karman-re100-20260716/audit_report.json similarity index 100% rename from src/SR_analysis/results/runs/wiring-karman-re100-20260716/audit_report.json rename to src/SR_analysis/archive/results/runs/wiring-karman-re100-20260716/audit_report.json diff --git a/src/SR_analysis/results/runs/wiring-karman-re100-20260716/candidate_registry.json b/src/SR_analysis/archive/results/runs/wiring-karman-re100-20260716/candidate_registry.json similarity index 100% rename from src/SR_analysis/results/runs/wiring-karman-re100-20260716/candidate_registry.json rename to src/SR_analysis/archive/results/runs/wiring-karman-re100-20260716/candidate_registry.json diff --git a/src/SR_analysis/results/runs/wiring-karman-re100-20260716/validations/karman_re100__pysr__f-536a929fa545__si-800.json b/src/SR_analysis/archive/results/runs/wiring-karman-re100-20260716/validations/karman_re100__pysr__f-536a929fa545__si-800.json similarity index 100% rename from src/SR_analysis/results/runs/wiring-karman-re100-20260716/validations/karman_re100__pysr__f-536a929fa545__si-800.json rename to src/SR_analysis/archive/results/runs/wiring-karman-re100-20260716/validations/karman_re100__pysr__f-536a929fa545__si-800.json diff --git a/src/SR_analysis/results/validations/illusion_0.5L.json b/src/SR_analysis/archive/results/validations/illusion_0.5L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_0.5L.json rename to src/SR_analysis/archive/results/validations/illusion_0.5L.json diff --git a/src/SR_analysis/results/validations/illusion_0.6L.json b/src/SR_analysis/archive/results/validations/illusion_0.6L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_0.6L.json rename to src/SR_analysis/archive/results/validations/illusion_0.6L.json diff --git a/src/SR_analysis/results/validations/illusion_0.75L.json b/src/SR_analysis/archive/results/validations/illusion_0.75L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_0.75L.json rename to src/SR_analysis/archive/results/validations/illusion_0.75L.json diff --git a/src/SR_analysis/results/validations/illusion_0.75L_ppo.json b/src/SR_analysis/archive/results/validations/illusion_0.75L_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_0.75L_ppo.json rename to src/SR_analysis/archive/results/validations/illusion_0.75L_ppo.json diff --git a/src/SR_analysis/results/validations/illusion_0.8L.json b/src/SR_analysis/archive/results/validations/illusion_0.8L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_0.8L.json rename to src/SR_analysis/archive/results/validations/illusion_0.8L.json diff --git a/src/SR_analysis/results/validations/illusion_1.2L.json b/src/SR_analysis/archive/results/validations/illusion_1.2L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_1.2L.json rename to src/SR_analysis/archive/results/validations/illusion_1.2L.json diff --git a/src/SR_analysis/results/validations/illusion_1.5L_ppo.json b/src/SR_analysis/archive/results/validations/illusion_1.5L_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_1.5L_ppo.json rename to src/SR_analysis/archive/results/validations/illusion_1.5L_ppo.json diff --git a/src/SR_analysis/results/validations/illusion_1L.json b/src/SR_analysis/archive/results/validations/illusion_1L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_1L.json rename to src/SR_analysis/archive/results/validations/illusion_1L.json diff --git a/src/SR_analysis/results/validations/illusion_1L_ppo.json b/src/SR_analysis/archive/results/validations/illusion_1L_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_1L_ppo.json rename to src/SR_analysis/archive/results/validations/illusion_1L_ppo.json diff --git a/src/SR_analysis/results/validations/illusion_1L_target.json b/src/SR_analysis/archive/results/validations/illusion_1L_target.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_1L_target.json rename to src/SR_analysis/archive/results/validations/illusion_1L_target.json diff --git a/src/SR_analysis/results/validations/illusion_2L.json b/src/SR_analysis/archive/results/validations/illusion_2L.json similarity index 100% rename from src/SR_analysis/results/validations/illusion_2L.json rename to src/SR_analysis/archive/results/validations/illusion_2L.json diff --git a/src/SR_analysis/results/validations/karman_re100.json b/src/SR_analysis/archive/results/validations/karman_re100.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re100.json rename to src/SR_analysis/archive/results/validations/karman_re100.json diff --git a/src/SR_analysis/results/validations/karman_re100_ppo.json b/src/SR_analysis/archive/results/validations/karman_re100_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re100_ppo.json rename to src/SR_analysis/archive/results/validations/karman_re100_ppo.json diff --git a/src/SR_analysis/results/validations/karman_re200.json b/src/SR_analysis/archive/results/validations/karman_re200.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re200.json rename to src/SR_analysis/archive/results/validations/karman_re200.json diff --git a/src/SR_analysis/results/validations/karman_re200_ppo.json b/src/SR_analysis/archive/results/validations/karman_re200_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re200_ppo.json rename to src/SR_analysis/archive/results/validations/karman_re200_ppo.json diff --git a/src/SR_analysis/results/validations/karman_re400.json b/src/SR_analysis/archive/results/validations/karman_re400.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re400.json rename to src/SR_analysis/archive/results/validations/karman_re400.json diff --git a/src/SR_analysis/results/validations/karman_re400_SI400.json b/src/SR_analysis/archive/results/validations/karman_re400_SI400.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re400_SI400.json rename to src/SR_analysis/archive/results/validations/karman_re400_SI400.json diff --git a/src/SR_analysis/results/validations/karman_re400_ppo.json b/src/SR_analysis/archive/results/validations/karman_re400_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re400_ppo.json rename to src/SR_analysis/archive/results/validations/karman_re400_ppo.json diff --git a/src/SR_analysis/results/validations/karman_re50.json b/src/SR_analysis/archive/results/validations/karman_re50.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re50.json rename to src/SR_analysis/archive/results/validations/karman_re50.json diff --git a/src/SR_analysis/results/validations/karman_re50_ppo.json b/src/SR_analysis/archive/results/validations/karman_re50_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/karman_re50_ppo.json rename to src/SR_analysis/archive/results/validations/karman_re50_ppo.json diff --git a/src/SR_analysis/results/validations/vortex_lamb.json b/src/SR_analysis/archive/results/validations/vortex_lamb.json similarity index 100% rename from src/SR_analysis/results/validations/vortex_lamb.json rename to src/SR_analysis/archive/results/validations/vortex_lamb.json diff --git a/src/SR_analysis/results/validations/vortex_lamb_ppo.json b/src/SR_analysis/archive/results/validations/vortex_lamb_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/vortex_lamb_ppo.json rename to src/SR_analysis/archive/results/validations/vortex_lamb_ppo.json diff --git a/src/SR_analysis/results/validations/vortex_taylor.json b/src/SR_analysis/archive/results/validations/vortex_taylor.json similarity index 100% rename from src/SR_analysis/results/validations/vortex_taylor.json rename to src/SR_analysis/archive/results/validations/vortex_taylor.json diff --git a/src/SR_analysis/results/validations/vortex_taylor_ppo.json b/src/SR_analysis/archive/results/validations/vortex_taylor_ppo.json similarity index 100% rename from src/SR_analysis/results/validations/vortex_taylor_ppo.json rename to src/SR_analysis/archive/results/validations/vortex_taylor_ppo.json diff --git a/src/SR_analysis/tests/test_audit_round1.py b/src/SR_analysis/archive/tests/test_audit_round1.py similarity index 100% rename from src/SR_analysis/tests/test_audit_round1.py rename to src/SR_analysis/archive/tests/test_audit_round1.py diff --git a/src/SR_analysis/tools/audit_round1.py b/src/SR_analysis/archive/tools/audit_round1.py similarity index 100% rename from src/SR_analysis/tools/audit_round1.py rename to src/SR_analysis/archive/tools/audit_round1.py diff --git a/src/SR_analysis/configs.py b/src/SR_analysis/configs.py index 1a0eb28..b983905 100644 --- a/src/SR_analysis/configs.py +++ b/src/SR_analysis/configs.py @@ -216,38 +216,6 @@ SCENES[_illusion_key(1.5)] = { "u0": U0, # always 0.01 } -# -- Vortex Cloak (Lamb dipole + Taylor monopole) -------------------------- -_SCENES_VORTEX = [ - ("lamb", "vortex_lamb", 0.5), - ("taylor", "vortex_taylor", 0.03), -] -for vtype, mn, strength in _SCENES_VORTEX: - key = f"vortex_{vtype}" - SCENES[key] = { - "scene_id": "vortex", - "vortex_type": vtype, - "vortex_strength": strength, - "re_code": 100, - "mu": 2.0 / 100, - "nu": nu_from_re(100), - "has_disturbance": False, - "sample_interval": 800, - "max_steps": 150, - "action_scale": 4.0, - "action_bias": (0.0, -4.0, 4.0), - "source": "PPO_inference", - "model_name": mn, - "n_objects_env": 6, - "obs_slice": (0, 12), - "sensor_x": 40.0, - "pinball_front_x": 30.0, - "pinball_rear_x": 31.3, - "target_type": "transient", - "s_dim": 12, - "u0": U0, - } - - # -- Illusion generalization (unseen diameters, no PPO model) ---------------- for diam, mn, si in [ (0.5, None, 400), diff --git a/src/SR_analysis/results/README.md b/src/SR_analysis/results/README.md index d360de4..9baa94c 100644 --- a/src/SR_analysis/results/README.md +++ b/src/SR_analysis/results/README.md @@ -1,291 +1,59 @@ -# SR article evidence index +# Frozen SR evidence index -This is the authoritative index for current SR results. Read `../README.md` for the scientific summary and `../PIPELINE.md` for the method and commands. +This file indexes the current publication evidence. `../README.md` defines scope and contracts; `../PIPELINE.md` gives the exact workflow. Only `runs/article-*` and `runs/article2-*` remain active because formula discovery parents, manifests, accepted/rejected CFD records, extensions, ablations, and plots depend on them. Non-mainline outputs are preserved under `../archive/results/`. -## Status vocabulary +## Final formulas -- **article evidence:** generated under the final channel, alignment, symmetry and metric contracts. -- **numerical candidate:** closed-loop tested, but not necessarily unique or fully physically explained. -- **diagnostic:** useful for understanding or failure analysis; not an article conclusion by itself. -- **historical frozen:** preserved context that is not current evidence. -- **rejected:** failed stability, integrity or scientific screening; retained rather than overwritten. +The one-stop package is `runs/article-joint-sr-final-20260718/` (`readable_summary.txt` and `evidence_manifest.json`). The accepted mapped-shared candidates are: -Integrity audit is not scientific promotion. `scene_registry.json` is not updated automatically. +- Kármán: `alpha_F = odd(-0.381391 Cd_rear,a)`; `alpha_U = 1.307782 Cl_rear,s - 3.431209`; `alpha_L = -alpha_U(Gx)`. +- Illusion: `alpha_F = odd(-1.826604 Cd_rear,a + 2.064493 Cl_F)`; `alpha_U = 1.254440 Cd_rear,a - 1.528074 Cl_F`; `alpha_L = -alpha_U(Gx)`. -## One-stop final package +Discovery and fixed-topology provenance are retained in the `article-discovery-*`, `article-joint-*`, `article-refit-*`, and summary families. Their parent paths and manifests are immutable provenance dependencies. + +## Training CFD + +Accepted data are `../data/runs/article-joint-data-karman-20260718/` (Re-code 50/100/200/400) and `../data/runs/article-joint-data-illusion-20260718/` (0.75L/1L/1.5L). Each scene has 200 recorded PPO steps and 197 causally aligned fit rows; all seven passed exact policy replay. + +Standard 200-step closed-loop evidence is in `article-L3-karman-20260718` and `article-L3-illusionA-20260718`. Exact legacy-DTW similarities are Kármán `0.9543, 0.9427, 0.8560, 0.7827` and Illusion `0.8749, 0.9217, 0.8306` in the scene order above. `article-L2-*` retains short screening, including rejected Illusion topology-B failure telemetry. + +## 400-step duration + +Article2 duration families and `article2-generalization-summary-20260720` retain finite 400-step symbolic results: Kármán `0.952178, 0.944339, 0.863850, 0.833365`; Illusion `0.854379, 0.915609, 0.833587`. The plotting package also contains matched 400-step PPO baselines. These runs test duration, not asymptotic stability. + +## Pointwise unseen conditions + +With coefficients frozen, one 200-step realization was evaluated at each named condition. Kármán Re-code 25/70/150/300 gives `0.988078, 0.954339, 0.907496, 0.835758`. Illusion 0.5L/0.6L/0.8L/1.2L/2L gives `0.784055, 0.821103, 0.884573, 0.925530, 0.756880`. These are pointwise samples, not continuous parameter laws, distribution-wide generalization, or robustness statistics. + +## Term deletion, scaling, and steady calibration + +`article-ablation-formulas-v2-*` plus `article-ablation-L2-*` retain immutable formula variants and short CFD. Kármán evidence ranks the rear constant first, rear lift feedback second, and tested front feedback as weak. Every one-term Illusion deletion remained stable, so the four-term form is not unique. + +`article-scaling-L1-v2-20260718` evaluates the preregistered coefficient grid and supports the same Kármán ranking; Illusion `Cl_F` terms dominate action magnitude while `Cd_rear,a` is weaker/partly replaceable. Article2 steady families calibrate the Kármán rear constant against disturbance-free constant rotation; steady is interpretive calibration, not formula training or a separate active objective. + +## Plotting package + +`runs/article2-plotting-package-20260721/` is the canonical derived publication package. It contains causal offline predictions/residuals, additive-term contributions on PPO and symbolic trajectories, ablation/scaling tables, steady and 400-step time-series exports, phase-alignment metadata, publication PNG/PDF outputs, a flow-comparison export contract, and a SHA-256 manifest. Derived plotting does not refit formulas or promote rejected evidence. + +## Source chain ```text -runs/article-joint-sr-final-20260718/ -├── readable_summary.txt -└── evidence_manifest.json +accepted article data + -> per-case and within-objective discovery + -> fixed-topology all-data refit + -> short finite-CFD gate + -> standard 200-step legacy DTW + -> 400-step and sampled unseen-condition extension + -> term deletion/scaling and steady calibration + -> canonical plotting/export package ``` -`readable_summary.txt` is the fastest result review. `evidence_manifest.json` links the machine-readable chain and records explicit non-claims. +The retained `article-*` and `article2-*` families are intentionally broader than a minimal list of final numbers because manifests, hashes, formula parents, failed telemetry, and plotting inputs form the auditable chain. -## Article2 coefficient-frozen extension: steady calibration, duration and sampled unseen conditions +## Claims -The 2026-07-20 extension is indexed by: +Supported: a reproducible three-stage reduction workflow; dominant persistent Kármán rear counter-rotation with secondary rear-lift feedback; a finite symmetric Illusion numerical family; closed-loop evidence at trained scenes; and coefficient-frozen behavior at explicitly sampled Article2 conditions. -```text -runs/article2-sr-elements-20260720/ -runs/article2-steady-analysis-20260720/ -runs/article2-percase-refit-summary-20260720/ -runs/article2-timeseries-csv-20260720/ -runs/article2-long-timeseries-csv-20260720/ -runs/article2-generalization-summary-20260720/ -``` +Unsupported: a globally optimal or unique formula; universal Kármán performance; distribution-wide Re/size generalization; explicit target tracking or necessity of every Illusion term; causal spatial mechanism; direct momentum-balance equality; or physical delay inferred from DTW alignment. -Key results, all using `legacy_dtw_v1_abs_n_unclipped`: - -- A disturbance-free constant-speed sweep peaks at sampled rear speed magnitude `5 U0` (0.987212). The Kármán joint law gives 0.966494 and converges to rear actions `(-3.4306, +3.4318)`, quantitatively matching its constant magnitude 3.4312. -- The 400-step Kármán similarities are 0.952178, 0.944339, 0.863850 and 0.833365 at Re50, Re100, Re200 and Re400. Illusion gives 0.854379, 0.915609 and 0.833587 at 0.75L, 1L and 1.5L. All telemetry remains finite. -- With coefficients frozen, pointwise Kármán deployment gives 0.988078, 0.954339, 0.907496 and 0.835758 at unseen Re25, Re70, Re150 and Re300. Illusion gives 0.784055, 0.821103, 0.884573, 0.925530 and 0.756880 at 0.5L, 0.6L, 0.8L, 1.2L and 2L. These are one 200-step sampled realization per condition, not a continuous parameter-law or statistical robustness result. -- Per-case frozen-topology refits do not support a clean low/high-Re split. Illusion 1.5L has a distinct coefficient emphasis, but several single-case rear fits are poorly identified and remain diagnostics. -- `sr_key_elements.md` and `.csv` provide the explicit SR-to-OID/CCD handover. These additions do not claim a direct momentum-balance equality, universality beyond tested conditions, or causal flow structures. - -## Plotting-ready package (2026-07-21) - -The final plotting audit and derived CSV package is: - -```text -runs/article2-plotting-package-20260721/ -``` - -It adds, without refitting formulas: - -- seven 400-step PPO baselines under `long_ppo//`, paired with the existing 400-step SR exports; -- `offline_predictions.csv`: causal PPO-state features, PPO next actions, SR predictions and residuals; -- `term_contributions_ppo_states.csv`: additive symbolic terms evaluated on PPO-visited states; -- `term_contributions_sr_closed_loop_400.csv`: additive terms on 400-step SR trajectories, with exact next-action reconstruction; -- `ablation_summary.csv` and `scaling_summary.csv`; -- seven constant-rotation steady time-series exports; -- four publication PNG/PDF figures under `figures/` (performance/duration, pointwise generalization, steady calibration, and a phase-aligned Re100 example); -- publication tables under `tables/` for offline next-action RMSE and 40-step term deletion, replacing the former figure versions; -- package-level `README.md` and `phase_alignment.json` documenting scope and the exact example-window alignment; -- a SHA-256 manifest for the complete derived package. -- a GPU-generated `07_flow_field_comparison_karman_re100` exporter/output contract: target, PPO, and canonical SR vorticity are selected by one-run-per-condition exact same-sample center-sensor phase matching and share one physical crop/color scale. The retained field comparison is one matched snapshot per controller, not an ensemble or robustness result; no field artifact exists until the exporter is run. - -The 400-step PPO similarities are `0.954856`, `0.946973`, `0.900280`, `0.845378` for Kármán Re50/100/200/400 and `0.976328`, `0.975728`, `0.926701` for Illusion 0.75L/1L/1.5L. All completed with finite telemetry. PPO inference runs on CPU while physical GPU 2 remains dedicated to PyCUDA CFD, avoiding PyTorch/PyCUDA context conflicts. - -## Evidence chain - -### 1. Accepted article data - -```text -../data/runs/article-joint-data-karman-20260718/ -../data/runs/article-joint-data-illusion-20260718/ -runs/article-joint-data-audit-20260718/ -``` - -Scope: - -- Kármán: Re50, Re100, Re200, Re400. -- Illusion: 0.75L, 1L, 1.5L. -- 200 recorded steps per scene; 197 causally aligned rows after warm-up. -- Seven exact PPO policy-replay passes. - -Key files: - -- `runs/article-joint-data-audit-20260718/data_inventory.json` -- `runs/article-joint-data-audit-20260718/policy_replay/*.json` - -### 2. Per-case broad discovery - -```text -runs/article-discovery-*/ -runs/article-discovery-v2-*/ -runs/article-discovery-v3-*/ -runs/article-per-case-discovery-summary-20260718/summary.json -``` - -Purpose: identify recurrent variables and expression topology using `raw_complete` and `symmetry` representations, three seeds and contiguous train/validation/blind diagnostics. These are offline discovery artifacts, not accepted controllers. - -Main recurrence: - -- Kármán has no clean low/high-Re binary split: Re50 favours simple front-force/affine laws, Re400 repeatedly selects `Cl_rear_s-Cl_tot`, and Re100/Re200 remain heterogeneous lift-based intermediates. -- Illusion has distinct endpoint families: 0.75L is rear-drag dominated, 1L is mixed/transitional, and 1.5L overwhelmingly selects front/rear lift contrast. -- Across the audited heads, the leading Illusion counts are `Cd_rear_a=15`, `Cd_rear_s=10` at 0.75L; `Cd_F=13`, `Cl_rear_s=12` at 1L; and `Cl_F=54`, `Cl_rear_s=46` at 1.5L. -- Target/error variables were available but did not recur stably in low-complexity static joint structures. - -### 3. Joint topology discovery - -Kármán: - -```text -runs/article-joint-karman-raw_complete-s*-20260718/ -runs/article-joint-karman-symmetry-s*-20260718/ -``` - -Stable symmetry topology: - -```text -front ~ Cd_rear_a -rear ~ Cl_rear_s + constant -``` - -Illusion: - -```text -runs/article-joint-illusion-actual_only-s*-20260718/ -runs/article-joint-illusion-actual_plus_target-s*-20260718/ -runs/article-joint-illusion-actual_plus_error-s*-20260718/ -``` - -Stable rear topology: - -```text -rear ~ Cd_rear_a - Cl_F -``` - -Competing front topologies: - -```text --Cd_rear_a + Cl_F -Cd_rear_s*Cl_F - Cl_tot -``` - -The second Illusion topology later failed short CFD in 1L and 1.5L and is rejected. - -### 4. Fixed-topology all-data refit - -```text -runs/article-refit-karman-topology-a-20260718/ -runs/article-refit-illusion-topology-a-20260718/ -runs/article-refit-illusion-topology-b-20260718/ -``` - -These artifacts freeze the discovery topology and optimize only numerical constants using all accepted rows with case-equal and trajectory-equal weighting. They report aggregate, per-case and per-trajectory offline metrics. - -### 5. Short CFD screening - -```text -runs/article-L2-karman-20260718/ -runs/article-L2-illusionA-20260718/ -runs/article-L2-illusionB-20260718/ -``` - -- Kármán A: stable in all four Re. -- Illusion A: stable at all three training target-size labels. -- Illusion B: 0.75L completed; 1L and 1.5L became non-finite. Its failed telemetry is retained and the candidate is rejected. - -### 6. Standard 200-step CFD - -```text -runs/article-L3-karman-20260718/ -runs/article-L3-illusionA-20260718/ -``` - -All values use `legacy_dtw_v1_abs_n_unclipped`, window `legacy_reference_cycle_vs_last_recorded_cycle`. - -Kármán candidate: - -- Re50: `0.9543` -- Re100: `0.9427` -- Re200: `0.8560` -- Re400: `0.7827` - -Illusion numerical candidate: - -- 0.75L: `0.8749` -- 1L: `0.9217` -- 1.5L: `0.8306` - -### 7. Term deletion - -Formula variants: - -```text -runs/article-ablation-formulas-v2-20260718/formulas/ -``` - -Short closed-loop results: - -```text -runs/article-ablation-L2-k_front0-20260718/ -runs/article-ablation-L2-k_rear0-20260718/ -runs/article-ablation-L2-k_rear1-20260718/ -runs/article-ablation-L2-i_front0-20260718/ -runs/article-ablation-L2-i_front1-20260718/ -runs/article-ablation-L2-i_rear0-20260718/ -runs/article-ablation-L2-i_rear1-20260718/ -``` - -Interpretation: - -- Kármán rear constant is dominant. -- Kármán rear lift feedback has secondary value. -- The tested Kármán front feedback is weak. -- Every one-term Illusion deletion remained stable with relatively small DTW changes; no four-term uniqueness claim is justified. - -### 8. Coefficient scaling shadow - -```text -runs/article-scaling-L1-v2-20260718/summary.json -``` - -Thirty-seven preregistered variants were evaluated on recorded states with scale values `0, 0.5, 0.75, 1, 1.25, 1.5`. All remained finite. - -- Kármán rear constant has the largest action-amplitude influence. -- Illusion `Cl_F` terms dominate front and rear action magnitude. -- Illusion `Cd_rear_a` terms are weaker and partly replaceable. - -## Current formulas - -### Kármán candidate - -\[ -\alpha_F=\operatorname{odd}\!\left[-0.381391\,C_{d,\mathrm{rear},a}\right], -\] - -\[ -\alpha_U=1.307782\,C_{l,\mathrm{rear},s}-3.431209, -\qquad -\alpha_L=-\alpha_U(Gx). -\] - -Status: article candidate with strong mechanism evidence at Re50/100 and reduced performance at Re400. Not universal. - -### Illusion numerical candidate - -\[ -\alpha_F=\operatorname{odd}\!\left[-1.826604\,C_{d,\mathrm{rear},a}+2.064493\,C_{l,F}\right], -\] - -\[ -\alpha_U=1.254440\,C_{d,\mathrm{rear},a}-1.528074\,C_{l,F}, -\qquad -\alpha_L=-\alpha_U(Gx). -\] - -Status: symmetric numerical candidate. It does not establish explicit target tracking or term uniqueness. - -## Article claims supported by this evidence - -1. PPO policies can be reduced through a reproducible pipeline that separates offline discovery, joint structure, coefficient estimation, closed-loop acceptance and term necessity. -2. Within the tested symbolic controller, persistent Kármán rear counter-rotation is the dominant term and rear lift feedback provides a secondary correction; interpreting the associated field as deficit compensation remains a hypothesis for OID/CCD. -3. Different formulas with similar offline fit can have different closed-loop outcomes; R² alone is not a controller-selection metric. -4. Illusion admits a shared symmetric numerical family, but the available static library does not establish a unique target-dependent mechanism across 0.75L–1.5L. -5. The 1.5L Illusion trajectory is a distinct/difficult regime and should be discussed as a boundary rather than hidden by average performance. - -## Claims not supported - -- One globally optimal symbolic formula. -- Universal Kármán performance through Re400. -- Explicit target tracking by the current Illusion formula. -- Necessity of every Illusion term. -- Unseen-condition or Vortex generalization from the 2026-07-18 primary run; the Article2 extension supplies only pointwise evidence at explicitly sampled Re and target-size values. -- Physical delay inferred from DTW lag. - -## Historical frozen material - -The following remain for context and recovery but are not authoritative article evidence: - -- `formulas/` -- `validations/` -- `scene_registry.json` -- old reports under `docs/` -- `round1-legacy-v2-20260716-*` -- smoke/wiring runs from earlier rebuilds -- `formulas_v5/` and `experiments/v5/` - -Do not copy their numbers into the manuscript without explicitly labelling them historical and reconciling their contracts with the article run. +Historical flat formulas/validations/figures, V5, Vortex, diagnostics, and non-article run families are archived and non-authoritative. Archive paths may retain historical references and are not guaranteed executable. diff --git a/src/SR_analysis/stage_1_infer.py b/src/SR_analysis/stage_1_infer.py index aa8b9eb..bc37354 100644 --- a/src/SR_analysis/stage_1_infer.py +++ b/src/SR_analysis/stage_1_infer.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Stage 1 legacy PPO inference for Karman, Illusion, and existing Vortex entry points. +"""Stage 1 legacy PPO inference for Karman and Illusion data collection. Outputs are isolated under ``data/runs////``. The module deliberately keeps LegacyCelerisLab imports inside runtime functions so @@ -63,7 +63,6 @@ SCENE_GROUPS = { "karman_trained": lambda: [s for s in get_scene_list("karman") if get_scene(s).get("model_name")], "illusion_trained": lambda: ["illusion_0.75L", "illusion_1L", "illusion_1.5L"], "illusion_generalization": lambda: ["illusion_0.5L", "illusion_0.6L", "illusion_0.8L", "illusion_1.2L", "illusion_2L"], - "vortex_all": lambda: get_scene_list("vortex"), } @@ -424,61 +423,6 @@ def infer_illusion( return result -def infer_vortex(scene_name: str, device_id: int, out_dir: Path, n_steps: int, norm_source: str) -> dict[str, Any]: - """Preserve the historical Vortex flow without adding a new data contract.""" - FlowField, _, _, similarity, load_cfg, load_model, _ = _runtime_imports() - cfg = get_scene(scene_name); l0 = 20.0; u0 = float(cfg["u0"]); si = int(cfg["sample_interval"]) - n_steps = min(n_steps, int(cfg.get("max_steps", 150))) - cuda_cfg, field_cfg = load_cfg(LEGACY_CFG_DIR); field_cfg = field_cfg._replace(viscosity=float(cfg["nu"])) - ff = FlowField(field_cfg, cuda_cfg, device_id=device_id); cy = (ff.FIELD_SHAPE[1] - 1) / 2 - sensor_y = [cy + 2*l0, cy, cy - 2*l0] - for y in sensor_y: ff.add_sensor((float(cfg["sensor_x"])*l0, y, 0.0), 5.0) - warmup = int(4 * ff.FIELD_SHAPE[0] / u0); ff.run(warmup, np.zeros(3, dtype=DATA_TYPE)); ff.get_ddf(); ff.save_ddf() - radius = float(cfg.get("vortex_radius", 2*l0)) - ff.add_vortex((float(cfg.get("vortex_center_x", 10*l0)), cy, 0.0), radius, - strength=cfg["vortex_strength"], vortex_type=cfg["vortex_type"]) - target = [] - for _ in range(FIFO_LEN): ff.run(si, np.zeros(3, dtype=DATA_TYPE)); target.append(ff.obs.copy()[:6]) - save_target_npz(out_dir / "target.npz", scene_name, cfg, np.asarray(target), illusion=False) - - del ff; ff = FlowField(field_cfg, cuda_cfg, device_id=device_id); cy = (ff.FIELD_SHAPE[1] - 1) / 2 - for y in [cy + 2*l0, cy, cy - 2*l0]: ff.add_sensor((float(cfg["sensor_x"])*l0, y, 0.0), 5.0) - ff.add_cylinder((float(cfg["pinball_front_x"])*l0, cy, 0.0), 10.0) - span = float(cfg.get("pinball_y_span", 0.75*l0)) - ff.add_cylinder((float(cfg["pinball_rear_x"])*l0, cy+span, 0.0), 10.0) - ff.add_cylinder((float(cfg["pinball_rear_x"])*l0, cy-span, 0.0), 10.0) - n_obj = ff.obs.size // 2; ff.run(warmup, np.zeros(n_obj, dtype=DATA_TYPE)); ff.get_ddf(); ff.save_ddf() - ff.add_vortex((float(cfg.get("vortex_pinball_center_x", 15*l0)), cy, 0.0), radius, - strength=cfg["vortex_strength"], vortex_type=cfg["vortex_type"]) - if norm_source == "existing": norm, norm_path = load_existing_norm(scene_name, cfg) - else: - samples = [] - for _ in range(FIFO_LEN): ff.run(si, np.zeros(n_obj, dtype=DATA_TYPE)); samples.append(ff.obs.copy()[:12]) - norm, norm_path = _compute_norm(np.asarray(samples)), None - _write_json(out_dir / "norm.json", norm) - ff.apply_ddf(); bias = np.zeros(n_obj, dtype=DATA_TYPE); bias[-3:] = np.asarray([0, -4*u0, 4*u0], dtype=DATA_TYPE) - for _ in range(FIFO_LEN): ff.run(si, bias) - model_path = model_path_for_scene(scene_name) - result: dict[str, Any] = {"scene": scene_name, "controlled": False, "metric_id": METRIC_ID, - "norm_source": norm_source, "norm_source_path": str(norm_path) if norm_path else None} - if model_path: - model = load_model(model_path, device=f"cuda:{device_id}", s_dim=12) - sensors, forces, actions, commanded = [], [], [], [] - obs = normalize_raw_observation(ff.obs.copy()[:12], norm) - for _ in range(n_steps): - action, _ = model.predict(obs, deterministic=True); action = np.asarray(action, dtype=np.float32).flatten() - alpha = (action * float(cfg["action_scale"]) + np.asarray(cfg["action_bias"], dtype=np.float32)) * u0 - omega = np.zeros(n_obj, dtype=DATA_TYPE); omega[-3:] = alpha - ff.context.push(); ff.run(si, omega); ff.context.pop(); raw = ff.obs.copy()[:12] - sensors.append(raw[:6]); forces.append(raw[6:12]); actions.append(action); commanded.append(alpha) - obs = normalize_raw_observation(raw, norm) - save_controlled_npz(out_dir / "controlled.npz", scene_name, cfg, sensors=np.asarray(sensors), forces=np.asarray(forces), - actions_norm=np.asarray(actions), actions_commanded=np.asarray(commanded)) - result.update(controlled=True, similarity=float(similarity(np.asarray(target), np.asarray(sensors), cfg.get("conv_len", 30)))) - del ff - return result - - def _scene_names(args: argparse.Namespace, parser: argparse.ArgumentParser) -> list[str]: if args.scene: return [args.scene] @@ -552,7 +496,6 @@ def main(argv: Sequence[str] | None = None) -> int: scene, args.device, out_dir, args.steps, args.target_only, args.norm_source, args.model_device, ) - elif cfg["scene_id"] == "vortex": result = infer_vortex(scene, args.device, out_dir, args.steps, args.norm_source) else: raise ValueError(f"Unsupported legacy scene_id: {cfg['scene_id']}") result.update({k: manifest[k] for k in ("run_id", "model_path", "model_sha256", "metric_id", "command", "git_sha", "config")}) result["schema_version"] = "sr-stage1-result-v2" diff --git a/src/SR_analysis/stage_3_validate.py b/src/SR_analysis/stage_3_validate.py index 214b5b4..d30af9f 100644 --- a/src/SR_analysis/stage_3_validate.py +++ b/src/SR_analysis/stage_3_validate.py @@ -58,7 +58,6 @@ GROUPS = { ], "illusion_trained": lambda: ["illusion_0.75L", "illusion_1L", "illusion_1.5L"], "illusion_generalization": lambda: ["illusion_0.5L", "illusion_0.6L", "illusion_0.8L", "illusion_1.2L", "illusion_2L"], - "vortex_all": lambda: get_scene_list("vortex"), "all": lambda: get_scene_list(), } @@ -276,8 +275,6 @@ def prepare_plan( ) -> ValidationPlan: cfg = get_scene(scene) scene_id = cfg["scene_id"] - if scene_id == "vortex": - raise NotImplementedError("Vortex is not supported in round1; it is not a Karman substitute") if scene_id not in {"karman", "illusion", "steady"}: raise NotImplementedError(f"scene_id={scene_id!r} is not supported") if tuple(cfg.get("action_layout", ())) != ACTION_ORDER: diff --git a/src/SR_analysis/tests/test_formula_provenance.py b/src/SR_analysis/tests/test_formula_provenance.py index 3e75863..65e1839 100644 --- a/src/SR_analysis/tests/test_formula_provenance.py +++ b/src/SR_analysis/tests/test_formula_provenance.py @@ -18,30 +18,6 @@ from SR_analysis.utils.formula_schema import ( from SR_analysis.utils.provenance import atomic_write_json_below, hash_json, safe_path -FORMULA_DIR = Path(__file__).parents[1] / "results" / "formulas_v5" -CANONICAL_FORMULAS = ( - "ill_1L_front.json", - "ill_1L_top.json", - "kar_d075_front.json", - "kar_d075_top.json", -) - - -@pytest.mark.parametrize("filename", CANONICAL_FORMULAS) -def test_load_and_evaluate_canonical_legacy_formulas(filename): - formula = load_formula(FORMULA_DIR / filename) - values = {name: np.array([0.25, -0.5]) for name in formula["feature_names"]} - - result = evaluate_formula(formula, values) - - assert formula["legacy"] is True - assert formula["feature_names"] == formula["feature_keys"] - assert formula["fitted_expression"] == formula["best_sympy"] - assert formula["fit_score"] == formula["best_score"] - assert result.shape == (2,) - assert np.all(np.isfinite(result)) - - def test_expression_alias_is_supported(): formula = {"feature_names": ["x"], "expression": "2*x + 1", "best_score": 0.9} np.testing.assert_allclose(evaluate_formula(formula, {"x": [1.0, 3.0]}), [3.0, 7.0]) diff --git a/src/SR_analysis/utils/cfd_interface.py b/src/SR_analysis/utils/cfd_interface.py index 0751414..835f408 100644 --- a/src/SR_analysis/utils/cfd_interface.py +++ b/src/SR_analysis/utils/cfd_interface.py @@ -6,7 +6,7 @@ All functions use the LegacyCelerisLab (old) CFD API via: Must be run inside: conda run -n pycuda_3_10 NOTE: This module should be imported directly, not through SR_analysis.utils -because it requires pycuda. Other utils (sindy_fitter, feature_builder, g_operator) +because it requires pycuda. Other active utils (feature_builder, g_operator) do NOT require pycuda and can be imported from the __init__. """ from __future__ import annotations diff --git a/src/SR_analysis/utils/feature_builder.py b/src/SR_analysis/utils/feature_builder.py index f7f1dc8..111fbfb 100644 --- a/src/SR_analysis/utils/feature_builder.py +++ b/src/SR_analysis/utils/feature_builder.py @@ -1,7 +1,7 @@ """Unified feature builder for all cloak scenes. Produces dimensionless features with consistent G-equivariant structure. -All scenes (Karman, steady, vortex, illusion) use this same builder. +Active Karman, Illusion, and steady-calibration scenes use this same builder. Copy of analysis_cloak/common/feature_builder.py -- kept as canonical source. """