Why
eval-harness status currently dumps JSON. Humans staring at the terminal want a table:
case_id verdict cost age attribution
────────────────────────────────────────────────────────────────────────────────────────
atom-shape-basic PASS $0.001 3m —
atom-tags-decision-architec... FAIL (real) $0.005 3m SKILL_CHANGED
atom-redaction-pii PASS $0.001 3m —
What to build
Modify scripts/eval/status.sh to render a colored TTY table when stdout is a terminal, and fall back to the existing JSON when piped (if [[ -t 1 ]]; then ... else jq ...).
Use tput setaf for colors so we don't pull in any new dep.
Add --json flag to force JSON output explicitly.
Acceptance criteria
Good first issue because
- Cosmetic, isolated to
status.sh
- Existing JSON output gives you the data shape
- Test pattern (
isatty detection in CI) is well-covered by existing tests
- ~80 lines of bash
Comment to claim.
Why
eval-harness statuscurrently dumps JSON. Humans staring at the terminal want a table:What to build
Modify
scripts/eval/status.shto render a colored TTY table when stdout is a terminal, and fall back to the existing JSON when piped (if [[ -t 1 ]]; then ... else jq ...).Use
tput setaffor colors so we don't pull in any new dep.Add
--jsonflag to force JSON output explicitly.Acceptance criteria
eval-harness status(no args, TTY) prints the tableeval-harness status --jsonoreval-harness status | catprints JSON unchangedtests/status_tty_table.shcovers both pathscase_idif > 30 chars (with...)Good first issue because
status.shisattydetection in CI) is well-covered by existing testsComment to claim.