Use this page when python -B scripts/dev.py eval-csv output is missing, stale, surprising, or about to be used as release evidence. Read it with docs/demo_report.md, docs/command_output_troubleshooting_map.md, docs/eval_authoring_guide.md, and docs/local_artifact_glossary.md.
The core rule: eval_summaries.csv is generated eval evidence, not source truth. Keep it separate from source content unless a release process explicitly asks for a reviewed evidence artifact.
Run:
python -B scripts/dev.py eval-csvExpected success signal:
Wrote 3 row(s) to <repo-root>\eval_summaries.csv
Expected columns:
projecttotal_casespassed_casespass_rateunsafe_failures
Expected source of truth:
- eval fixtures: checked-in project
data/eval_cases.json - eval summaries: generated by each project
scripts/run_eval.py - CSV output: generated
eval_summaries.csv - public metrics narrative:
docs/demo_report.mdand README evidence sections
Symptom:
eval_summaries.csvis missing after a release review.- A contributor expects CSV output but only ran
python -B scripts/dev.py evals. - The command exits before writing rows.
Wrong fix:
- Create
eval_summaries.csvby hand. - Commit a copied CSV from another branch.
Safe fix:
python -B scripts/dev.py eval-csv
git status --short --branchIf the command fails, inspect the project eval runner named in the error before changing source data. Do not treat a missing CSV as a reason to weaken eval assertions. Do not commit generated CSV output as ordinary source content.
Symptom:
eval_summaries.csvshows older totals thandocs/demo_report.md.- A project
data/eval_runtime_state.jsonwas generated before the current fixtures changed. - The CSV says all cases pass, but a narrower eval command now fails.
Wrong fix:
- Edit
eval_runtime_state.json. - Edit CSV counts until they match the README.
- Commit generated state as if it were a fixture.
Safe fix:
python -B scripts/dev.py evals
python -B scripts/dev.py eval-csv
python -B scripts/dev.py claimsIf the regenerated CSV differs, review the fixture or logic change that caused it. Keep eval_summaries.csv untracked unless the release process explicitly asks for it.
Symptom:
- CSV totals change after renaming eval ids.
docs/demo_report.mdor release notes mention a case id that no longer exists.- A reviewer cannot map a CSV count back to a specific regression case.
Wrong fix:
- Rename eval ids only to make the CSV look cleaner.
- Leave old case ids in documentation because total counts still match.
Safe fix:
python -B scripts/dev.py scenario-data
python -B scripts/dev.py evals
python -B scripts/dev.py claimsUpdate docs only after confirming the renamed case still protects the same invariant. Prefer adding a new eval id when the behavior changed meaningfully.
Symptom:
unsafe_failuresis greater than0for any row.docs/demo_report.mdstill claims unsafe failure counts are zero.python -B scripts/dev.py claimsfails after eval CSV generation.
Wrong fix:
- Filter unsafe failures out of the CSV.
- Rename unsafe metric keys so
_unsafe_countignores them. - Lower the README claim without fixing the regression.
Safe fix:
python -B scripts/dev.py evals
python -B scripts/dev.py claims
python -B scripts/dev.py safetyTreat any unsafe failure count as a release blocker. Fix the permission, approval, or release-blocking behavior first, then regenerate the CSV.
Symptom:
eval_summaries.csvappears ingit status.- A pull request includes generated CSV rows,
eval_runtime_state.json, orruntime_state.json. - CSV rows include local paths, real identifiers, or copied external data.
Wrong fix:
- Remove
eval_summaries*.csvfrom.gitignore. - Commit generated runtime state to explain a local run.
- Paste private or external evidence into the CSV.
Safe fix:
git diff --stat
git diff --check
git status --short --branch
python -B scripts/dev.py safetyKeep generated files out of commits unless the release process explicitly asks for source-visible evidence and the diff has been reviewed.
python -B scripts/dev.py eval-csvwrote 3 rows.- Each row maps to a real project.
unsafe_failuresis0for every project.python -B scripts/dev.py claimsagrees with the README anddocs/demo_report.md.eval_summaries.csvis not committed as ordinary source content.- No
*/data/eval_runtime_state.jsonor*/data/runtime_state.jsonfiles are committed. - Any release-visible CSV artifact is regenerated from the intended commit and reviewed for private paths or real data.