set shell := ["bash", "-cu"]

WORKTREES := "5_worktrees"
IDEAS := "1_ideas"
REPORTS := "9_reports"

# List all recipes
default:
    @just --list

# --- Sanity checks ---

# Fast smoke test: shape checks on CPU, short run
smoke:
    #!/usr/bin/env bash
    BEARTYPE=1 uv run python train.py --max_steps=2
    echo smoke passed

# --- Evaluation (FROZEN logic -- see eval.py) ---

# Run eval and append to results.tsv
eval *ARGS:
    uv run python eval.py {{ARGS}}

# Show results table
results:
    @column -t -s $'\t' results.tsv | head -30

# --- Training ---

# Train with default config
train *ARGS:
    uv run python train.py {{ARGS}}

# Queue an experiment to pueue with a hypothesis label
# Usage: just queue LABEL CMD...
queue LABEL *CMD:
    pueue add --label '{{LABEL}}' -- just {{CMD}}

# Show pueue queue status
status:
    pueue status

# --- Sweeps (pueue-based, one GPU, sequential) ---

# Sweeps: write a recipe that loops over params and calls `pueue add --label Q -- just eval ...`
# See justfile-sweeps skill for the full pattern.

# --- Worktrees ---

# Create a new experiment worktree
worktree SLUG:
    git worktree add {{WORKTREES}}/{{SLUG}} -b exp/{{SLUG}}

# List worktrees
worktrees:
    git worktree list

# --- Reports ---

# List lab reports (see 9_reports/ directory)
reports:
    ls -t {{REPORTS}} | head -20 || true

# --- Ideas ---

# Count ideas in queue (see 1_ideas/ directory)
ideas:
    ls -t {{IDEAS}} | grep -v _TEMPLATE | head -10 || true
