A campaign can end with a better number that does not hold up. Review a campaign before you trust its result.
With a coding agent
Open Claude Code, Codex or pi in the project repo and ask:
The agent follows the piloop-review skill. While it reviews, it opens the database read-only and changes nothing in
the running campaign. It answers four questions, in this order:
- Is the result real? The trajectory of the head, the noise between sibling candidates, and whether the gains
hold on data that no agent tuned against.
- Did any agent game the evaluation? Edits to frozen files, reads of labels or per-unit results, and tuning
against the evaluate command.
- What did it cost? Tokens and time for each role, and the work that produced nothing.
- Whose fault is each failure? The model, the harness, the environment, or the setup of the campaign.
It tags each claim as measured or inferred. It ends with a report, bug reports for problems in the tools, and inbox
items for the decisions that only you can take. It posts the inbox items as escalation comments on the project.
By hand
The trajectory of the head and every keep:
The commit of a candidate, and its diff from its parent:
Check that no keep changed a frozen file, such as the evaluate command or the data:
An evaluator is defined by the evaluate command, the names and directions of the metrics and the link paths, not
by the contents of evaluate.py or of the linked files. A worker that edits evaluate.py changes the score without
a new evaluator. Check the diffs of the kept candidates.
Read the session of an agent with Entire:
Tokens and time for each role and harness:
Who changed a verdict or a status, other than the daemon: