# Atlas Quality Evaluation Harness Low-risk evaluation loop for Atlas and specialist-profile behavior. The harness starts with deterministic fixture validation and dry-run reporting so scenario quality can be reviewed before live model calls are scheduled. ## Files - `scenarios.yaml` — 12 seed scenarios, two per dimension: routing/delegation, coding/tests, review quality, research citations, ops safety, and local-model subtasks. - `run_eval_suite.py` — validator, dry-run JSONL writer, and gated live runner. - `judges.py` — deterministic checks and secret-like fixture scanning. - `results/` — machine-readable JSONL outputs. - `tests/test_atlas_quality_fixtures.py` — regression tests for fixture shape, secret scanning, and dry-run output. ## Safety defaults - Dry-run is the default if no execution mode is selected. - Live Hermes invocation requires `--execute-live` and `ATLAS_EVAL_ALLOW_LIVE=1`. - Scenarios use synthetic prompts and scratch/synthetic setup descriptions. - The validator rejects obvious secret-shaped strings in fixture text. - Backlog creation is documented but not automatic; follow-up Kanban tasks should only be created for blocker-class failures or failures observed twice consecutively. ## Commands Validate fixtures: ```bash python agent-evals/atlas_quality/run_eval_suite.py --validate-only ``` Dry-run two scenarios and write JSONL: ```bash python agent-evals/atlas_quality/run_eval_suite.py --dry-run --limit 2 --output /tmp/atlas-eval-test.jsonl ``` Run the smoke subset as dry-run data and append the results note: ```bash python agent-evals/atlas_quality/run_eval_suite.py --dry-run --tag smoke --output agent-evals/atlas_quality/results/$(date +%F)-smoke.jsonl --results-note "obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Eval Results.md" ``` Optional live execution is intentionally gated. By default each scenario runs with its own `target_profile` and `allowed_toolsets`; use `--profile` only as an explicit debug override: ```bash ATLAS_EVAL_ALLOW_LIVE=1 python agent-evals/atlas_quality/run_eval_suite.py --execute-live --tag smoke --limit 3 ``` Live prompts include only the synthetic setup and user prompt. Expected/forbidden behaviors and scoring rubrics remain hidden for offline judging so an agent cannot pass by echoing the rubric. Review transcripts before using live results for backlog creation. ## Report format Each JSONL row records timestamp, evaluator version, profile, provider/model environment hints, scenario id, dimension, toolsets, score, pass/fail status, failure summary, deterministic-check details, transcript path, and optional follow-up task id.