id: revisit_constellation_rgt_apc_gap_constructive
benchmark: revisit_constellation
solver: rgt_apc_gap_constructive
solver_path: solvers/revisit_constellation/rgt_apc_gap_constructive
evidence_type: reproduced_solver
runnable: true
setup_script: setup.sh
solve_script: solve.sh
solution_filename: solution.json
aggregate_metrics:
  - name: num_satellites
    source: verifier.metrics.num_satellites
  - name: capped_max_revisit_gap_hours
    source: verifier.metrics.capped_max_revisit_gap_hours
  - name: worst_target_capped_max_revisit_gap_hours
    source: verifier.metrics.worst_target_capped_max_revisit_gap_hours
  - name: max_revisit_gap_hours
    source: verifier.metrics.max_revisit_gap_hours
  - name: threshold_violation_count
    source: verifier.metrics.threshold_violation_count
  - name: solver_timing_total_s
    source: solver_status.timing_seconds.total
evaluation_policy:
  profile: fair_public_reproduction
  purpose: "Faithful RGT/APC constructive reproduction adapted to revisit_constellation public cases."
  compute_envelope:
    expected_smoke_wall_time_seconds: 120
    expected_public_case_wall_time_seconds: 900
    visibility_worker_count: auto_bounded_to_8
    measured_smoke_case_0001_solve_seconds: 109.9
    measured_smoke_case_0001_verifier_seconds: 22.7
    deterministic: true
  notes:
    - "This experiment config owns the reproduction compute envelope."
    - "RGT/APC candidate pool is broader than the final satellite cap."
    - "Benchmark validity is established through the verifier command below."
config:
  compute_envelope:
    profile_class: fair_public
    intended_use: public_case_reproduction
    deterministic: true
    expected_case_wall_time_seconds: 900
    worker_count_policy: fixed_8_visibility_workers
    measured_reference: null
  orbit_library:
    max_candidates: 144
    search_mode: minmax_architecture
    max_rgt_days: 4
    min_revolutions_per_day: 10
    max_revolutions_per_day: 18
    raan_slot_count: 4
    phase_slot_count: 36
    max_shells: 6
    max_closure_error_m: 5000.0
    j2_closure_tolerance_m: 5000.0
    j2_refinement_iterations: 6
    fallback_altitude_count: 5
  visibility:
    sample_step_sec: 180.0
    max_windows: null
    keep_samples_per_window: 6
    worker_count: 8
  selection:
    max_selected_satellites: null
    require_positive_improvement: false
  scheduling:
    max_actions: null
    max_actions_per_target: null
    observation_margin_sec: 0.0
    transition_gap_sec: null
    require_positive_gap_improvement: true
    enforce_simple_energy_budget: true
    enable_repair: true
    repair_max_iterations: 3
    enable_local_search: true
    local_search_max_iterations: 4
    local_search_options_per_target: 4
    local_search_removals_per_option: 8
cases:
  - id: test/case_0001
    case_dir: benchmarks/revisit_constellation/dataset/cases/test/case_0001
  - id: test/case_0002
    case_dir: benchmarks/revisit_constellation/dataset/cases/test/case_0002
  - id: test/case_0003
    case_dir: benchmarks/revisit_constellation/dataset/cases/test/case_0003
  - id: test/case_0004
    case_dir: benchmarks/revisit_constellation/dataset/cases/test/case_0004
  - id: test/case_0005
    case_dir: benchmarks/revisit_constellation/dataset/cases/test/case_0005
verifier:
  command:
    - uv
    - run
    - python
    - -m
    - benchmarks.revisit_constellation.verifier.run
    - "{case_dir}"
    - "{solution_path}"
