Skip to main content
Rules accumulate, and each new one changes the prompt every session runs under. A regression run replays the whole eval set — protected wins first — against the current rule set and classifies every case against its captured baseline. It is the standing answer to “did the rule we just learned break something that used to work?”

Running from code

Each case replays through your replay function with the full current rules in context, the new session is scored, and per-metric deltas against baseline_scores decide the classification: Semantics worth knowing:
  • Wins replay first — they are the guard; with regression_sample (or sample=) limiting the run, wins get the budget before failures.
  • Replays are sequential and time-bounded (replay_timeout_s): regression re-runs your agent, so the harness won’t multiply LLM cost or violate framework thread-safety by parallelizing it.
  • Every run journals a regression event with the per-case results — the cross-run record that a rule change was checked.
  • No replay function wired? One clear warning, every case skipped, report.clean stays true (skips are honesty, not failures) — never an exception.

The operator CLI

The same run ships as a console script over the env-configured workspace (HARNESS_ROOT, HARNESS_CLI_BINARY, …):
Exit code 0 when the run is clean, 1 on regressions or setup failure — drop it into a cron job or CI schedule and treat a non-zero exit as “a rule change needs attention.”
A good operating rhythm: enable capture_eval_cases in production, curate a handful of win cases for your critical flows, and run pandaprobe-harness-eval nightly. The journal’s regression events become an audit trail of every rule set the corpus was checked against.