Migrated from spboyer/waza#408
Summary
Expand .waza.yaml from 2 fields (engine, model) to a unified project configuration file covering execution defaults, cache, server, dev loop, token limits, grader defaults, and project paths.
Goal: Run waza init in any existing project, get a .waza.yaml, start running commands immediately with sensible defaults. No more typing --parallel --workers 8 --cache on every invocation.
Precedence
CLI flags > .waza.yaml > hard-coded Go const defaults
eval.yaml is untouched — each skill keeps its own.
Proposed Schema
7 sections, all optional:
- paths — skills/, evals/, results/ (const defaults when omitted)
- defaults — engine, model, judge_model, timeout, parallel, workers, verbose, session_log
- cache — enabled, dir
- server — port, results_dir
- dev — model, target, max_iterations
- tokens — warning_threshold, fallback_limit, limits (replaces .token-limits.json)
- graders — program_timeout
Sub-Issues
Phase 1: Config struct + YAML parser
Phase 2: Wire commands to read config
Phase 3: Token limits migration
Phase 4: Paths + waza init
Phase 5: Schema + tests + docs
Backward Compatibility
- Old 2-field .waza.yaml continues to work
- .token-limits.json honored during transition
- No behavior changes without user action
Summary
Expand
.waza.yamlfrom 2 fields (engine, model) to a unified project configuration file covering execution defaults, cache, server, dev loop, token limits, grader defaults, and project paths.Goal: Run
waza initin any existing project, get a.waza.yaml, start running commands immediately with sensible defaults. No more typing--parallel --workers 8 --cacheon every invocation.Precedence
CLI flags > .waza.yaml > hard-coded Go const defaultseval.yaml is untouched — each skill keeps its own.
Proposed Schema
7 sections, all optional:
Sub-Issues
Phase 1: Config struct + YAML parser
Phase 2: Wire commands to read config
Phase 3: Token limits migration
Phase 4: Paths + waza init
Phase 5: Schema + tests + docs
Backward Compatibility