DEV Community

Cover image for "⛔ Stop Merging Agents Without a Required Check"
Journal A.I.
Journal A.I.

Posted on

"⛔ Stop Merging Agents Without a Required Check"

Optional checks are how bad agents reach main.

Teams add agent-evals to Actions, celebrate, then leave the check non-required. The red X becomes a suggestion. The merge button stays green if someone is in a hurry.

Required means required

In GitHub: branch protection → require status checks → select the eval job name exactly. If the name drifts after a workflow rename, protection silently stops enforcing. Pin the check name in the same PR that renames the workflow.

Also fail closed on infra errors. A missing API key in CI secrets is not “skip evals.” It is a red build.

- name: agent evals
  env:
    OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  run: |
    if [ -z "$OPENAI_API_KEY" ]; then
      echo "OPENAI_API_KEY missing"
      exit 1
    fi
    python -m evals.ci_gate --suite merge
Enter fullscreen mode Exit fullscreen mode

Split suites so merges stay fast

One fat suite that needs twenty minutes will get bypassed. Split:

Suite When Goal
merge every PR 5–15 cases, under 3 minutes
nightly cron broader set, live models, richer traces
release tag full regression before a version bump

The merge suite must be boring and mostly offline. Nightly can spend money. Release can be slow.

Flake is a product bug

If the same case fails one in five runs, do not mute it. Fix the case:

  • pin model + temperature 0 when the vendor allows it
  • assert on tool names and structured fields, not full free text
  • isolate network with recorded HTTP fixtures

A flaky required check trains the team to ignore CI. That is worse than no check.

Trace every failure

Store the run artifact: prompt, tool calls, tokens, final output. Without traces, “evals failed” becomes a Slack shrug.

python -m evals.ci_gate --suite merge --out artifacts/eval-run.json
Enter fullscreen mode Exit fullscreen mode

Upload artifacts/ on failure. The next engineer should replay the case without guessing.

Honest trade-off

Required checks slow the first weeks. People will ask to “just merge this one.” Say no once, then the habit sticks. The cost is friction. The alternative is production loops that look like “the model was weird today.”

Checklist

  • [ ] Eval job name matches branch protection
  • [ ] Secrets missing → fail, not skip
  • [ ] Merge suite under a few minutes
  • [ ] Flaky cases owned, not silenced
  • [ ] Traces uploaded on failure

Is your agent check required on main, or is it still a polite warning?

Top comments (0)