# ──────────────────────────────────────────────────
# SkillOpt Config Template — <Your Benchmark Name>
# ──────────────────────────────────────────────────
# Copy this file to configs/<your_benchmark>/default.yaml
# and customize the values below.

# Inherit global defaults.
# NOTE: `_base_` is a string path, not a list.
_base_: ../_base_/default.yaml

# ── Environment ──────────────────────────────────
env:
  name: your_benchmark            # Must match the key registered in scripts/train.py
  # Optional: a seed skill document. Create this file yourself before the
  # first run, or omit the key to start from an empty skill.
  # skill_init: skillopt/envs/your_benchmark/skills/initial.md
  data_path: data/your_benchmark  # Path to your data (for split_mode: ratio)
  split_dir: ""                   # Set this and use split_mode: split_dir for pre-split data
  split_mode: ratio               # "ratio" or "split_dir"
  split_ratio: "2:1:7"            # train:val:test (used when split_mode: ratio)
  workers: 4                      # Parallel rollout workers
  max_completion_tokens: 4096     # Cap per target-model call
  limit: 0                        # 0 = no limit; small int = debug sample

# ── Training ─────────────────────────────────────
train:
  num_epochs: 4
  batch_size: 40
  accumulation: 1
  seed: 42

# ── Gradient (Reflection) ───────────────────────
gradient:
  analyst_workers: 16             # Parallel reflection workers
  minibatch_size: 8
  merge_batch_size: 8

# ── Optimizer ────────────────────────────────────
optimizer:
  learning_rate: 4                # Max edits per step (edit budget)
  lr_scheduler: cosine            # cosine | linear | constant | autonomous
  use_slow_update: true           # Epoch-boundary momentum
  use_meta_skill: true            # Cross-epoch optimizer memory

# ── Evaluation ───────────────────────────────────
evaluation:
  use_gate: true                  # Validation gating
  eval_test: true                 # Run test eval after training

# ── Model ────────────────────────────────────────
# Override only what differs from the inherited defaults.
model:
  optimizer_backend: openai_chat  # openai_chat | claude_chat | qwen_chat | minimax_chat
  target_backend: openai_chat     # … plus codex_exec / claude_code_exec for target only
  reasoning_effort: medium
