phase: 4T experiment_root: /data/digital-drosophila/experiments/phase4t-timing-stability model_root: /data/digital-drosophila/models/male-cns-lif/timing-stability-v1 source_root: /data/digital-drosophila/experiments/phase4s-timing-credit source_model: /data/digital-drosophila/models/male-cns-lif/timing-credit-v1 runtime_root: /data/digital-drosophila/models/male-cns-lif/deterministic-runtime-v2 phase4p_root: /data/digital-drosophila/experiments/phase4p-deterministic-runtime duration_ms: 120 target_compartment: "y5B'2a" matched_DAN: PAM15 candidate_US_ms: [10, 15, 20, 25, 30, 40, 60, 90] windows_ms: [5, 10, 20, 50, 100, 250] tau_rule: window/3 calibration_odors: first two records in frozen panel where split=calibration; same identities as 4S odor_generalization: all frozen panel heldout odors excluding formal ODOR_A and ODOR_B; never used for selection calibration_seeds: [86101,86102,86103,86104,86105,86106,86107,86108,86109,86110,86111,86112,86113,86114,86115,86116,86117,86118,86119,86120] validation_seeds: [87101,87102,87103,87104,87105,87106,87107,87108,87109,87110,87111,87112,87113,87114,87115,87116,87117,87118,87119,87120] odor_seed_offset: 1000000 timing_gate: ratio: 3.0 qualifying_fraction_each_odor: 0.8 mean_ratio_each_odor: 3.0 selection: maximize minimum across calibration odors of 20th percentile per-seed matched/random ratio; ties choose shorter window then earlier US random: exact expectation of one US uniformly sampled from 1200 discrete timesteps; identical KC stream no_zero_denominator_pass: true live_US_checks: first_seeds_per_validation_odor: 2 random_seed_offset: 9700000 require_noUS_vs_forcedUS_credit_exact: true require_v2_CPU_vs_runtime_trace_exact: true scope: formal_AB_used: false weight_updates: false fixed_US_only: true response_triggered_US: false no_odor_specific_US: true all_old_heldout_data_now_exploratory: true heldout_odors_not_used_for_timing_selection_but_previously_tested_in_4L: true candidate: timing-only, not credit-specificity or memory