#!/usr/bin/env bash # Strict mechanical finalizer for all committed evidence. Future immutable # gates are re-audited only after their gate files exist; this never opens an # incomplete panel or generates a task endpoint. set -eu cd "$(dirname "$0")/.." experiments/finalize_claims.sh /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/cifar_image_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/conv_local_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/bci_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/bci_td_protocol_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/bci_v2_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/bci_v2_recovery_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/bci_v2_calibrated_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/oral_a_dynamic_scaling_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/resnet_crossover_r2_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/transformer_crossover_t2_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/crossover_81_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/crossover_artifact_validation_smoke.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 -m py_compile \ experiments/bci_td_run.py experiments/analyze_bci_td_development.py \ experiments/bci_td_confirmation.py \ experiments/analyze_bci_td_confirmation.py \ experiments/bci_v2_run.py experiments/analyze_bci_v2_development.py \ experiments/bci_v2_recovery_run.py \ experiments/analyze_bci_v2_recovery_development.py \ experiments/bci_v2_calibrated_run.py \ experiments/analyze_bci_v2_calibrated_development.py \ experiments/bci_v2_calibrated_confirmation.py \ experiments/analyze_bci_v2_calibrated_confirmation.py \ experiments/oral_a_dynamic_scaling.py \ experiments/analyze_oral_a_dynamic_scaling.py \ experiments/oral_a_dynamic_scaling_v2.py \ experiments/analyze_oral_a_dynamic_scaling_v2.py \ experiments/resnet_crossover_r2.py \ experiments/analyze_resnet_crossover_r2.py \ experiments/transformer_crossover_t2.py \ experiments/analyze_transformer_crossover_t2.py \ experiments/analyze_crossover_81.py \ experiments/validate_crossover_artifact.py \ experiments/plot_resnet_confirmation.py \ experiments/plot_oral_a_scaling.py \ experiments/plot_bci_v2_confirmation.py \ experiments/audit_manuscript.py /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_kp_dynamic_projection.py >/dev/null /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_kp_dynamic_projection_short.py >/dev/null /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_kp_dynamic_projection_full.py >/dev/null if [ -f results/kp_dynamic_projection_confirmation_gate.json ]; then /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_kp_dynamic_projection_confirmation.py >/dev/null /home/yurenh2/miniconda3/bin/python \ experiments/plot_resnet_confirmation.py >/dev/null jq -e ' .strict == true and .gate_status == "passed" and .required_seeds == [10, 11, 12, 13, 14] and .statistics.dynamic_test_accuracy_mean >= 0.89 and .statistics.clean_minus_dynamic_one_sided_95pct_upper_points <= 2.5 and .statistics.dynamic_early_alignment_mean >= 0.90 and .statistics.dynamic_mac_ratio_to_bp <= 1.34 and .statistics.dynamic_logical_task_loss_queries == [0] and .statistics.dynamic_neutral_observations_per_ordinary_example == [1] and .statistics.dynamic_peak_allocated_gib_mean <= 2.5 and .statistics.dynamic_wall_ratio_to_clean_kp_mean > 1 ' results/figs/figure4_resnet_confirmation_manifest.json >/dev/null fi if [ -f results/bci_td_dev_gate.json ]; then /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_bci_td_development.py >/dev/null fi if [ -f results/bci_td_confirmation_gate.json ]; then /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_bci_td_confirmation.py >/dev/null fi if [ -f results/bci_v2_dev_gate.json ]; then PYTHONPATH=. /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_bci_v2_development.py >/dev/null fi if [ -f results/bci_v2_recovery_dev_gate.json ]; then PYTHONPATH=. /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_bci_v2_recovery_development.py >/dev/null fi if [ -f results/bci_v2_calibrated_dev_gate.json ]; then PYTHONPATH=. /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_bci_v2_calibrated_development.py >/dev/null fi if [ -f results/bci_v2_calibrated_confirmation_gate.json ]; then PYTHONPATH=. /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_bci_v2_calibrated_confirmation.py >/dev/null /home/yurenh2/miniconda3/bin/python \ experiments/plot_bci_v2_confirmation.py >/dev/null jq -e ' .strict == true and .gate_status == "passed" and .task_seeds == [30, 31, 32, 33, 34, 35] and .model_seeds == [0, 1, 2, 3, 4] and .record_count == 30 and .statistics.intact_final_mean >= 0.99 and .statistics.residual_soma_corr_mean <= 0.10 and .statistics.surrounding_accuracy_lower >= 0.50 and .statistics.terminal_accuracy_lower >= 0.75 and .statistics.outcome_lesion_drop_lower >= 0.15 and .statistics.critic_expectedness_lower >= 0.02 and .statistics.positive_sign_count == 30 ' results/figs/figure5_bci_v2_manifest.json >/dev/null fi if [ -f results/oral_a_dynamic_scaling_gate.json ]; then /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/analyze_oral_a_dynamic_scaling.py >/dev/null fi if [ -f results/oral_a_dynamic_scaling_v2_gate.json ]; then /home/yurenh2/miniconda3/bin/python \ experiments/plot_oral_a_scaling.py >/dev/null jq -e ' .strict == true and .gate_status == "passed" and .complete_grid == true and .required_methods == ["bp", "dfa", "clean_kp", "dynamic"] and .required_depths == [20, 32, 56] and .required_seeds == [10, 11, 12, 13, 14] and .record_count == 60 and .statistics.dynamic_d20_to_d56_gain_points_mean >= 0.5 and (.statistics.dynamic_d20_to_d56_gain_points | map(select(. > 0)) | length) == 5 and (.statistics.dynamic_early_alignment_mean | [.[]] | min) >= 0.999 and (.statistics.dynamic_mac_ratio_to_bp_mean | [.[]] | max) <= 1.34 and .statistics.dynamic_logical_task_loss_queries == [0] and .statistics.dynamic_neutral_observations_per_ordinary_example == [1] ' results/figs/figure6_standard_depth_scaling_manifest.json >/dev/null fi /home/yurenh2/miniconda3/bin/python \ experiments/plot_tracking_failure.py >/dev/null /home/yurenh2/miniconda3/bin/python \ experiments/plot_dynamic_stability.py >/dev/null /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/audit_native_baselines.py \ --results results/native \ --output results/native_baseline_audit.md /home/yurenh2/miniconda3/envs/ep_pascal/bin/python3 \ experiments/audit_manuscript.py >/dev/null jq -e ' .strict == true and .status == "passed" and (.audited_numeric_claims | length) == 61 and (.gates | map(select(.status == "passed")) | length) == 3 and (.gates | map(select(.status == "failed")) | length) == 1 and (.gates[] | select(.status == "failed") | .false_checks | length) == 7 ' paper/manuscript_audit.json >/dev/null git diff --check echo "accept-bar mechanical audits passed"