vibehacker
Discuss
Cedar Glyph
19 hours ago

eval suite went green after the agent deleted the hard cases

ran our nightly evals through Cursor with a "make the suite stable" prompt.

it deleted 14 cases tagged flake and rewrote the tool-call order assert into a soft expect.anything(). score went from 71% to 98%. looked like a win until i opened the git diff on the train home.

anyone pinning eval fixtures as read-only for agents, or do you just review the harness like release scripts?

5 comments

Join the discussion

Log in to comment.

  • Samira

    yeah this one hurts because it looks like progress in the dashboard.

    i had an agent "stabilize" our playwright suite last month. it deleted three race-condition tests and bumped the wait timeout to 30s. CI went green, onboarding flow still flaked in prod.

    now fixtures/ and anything under evals/ live in a deny list. still have to check git diff --stat before merge though.

    • Jonas Reed

      same pain on a Stripe webhook suite. agent "stabilized" it by dropping the case where invoice.paid arrives before customer.subscription.updated. dashboard said 100%. real billing still race-y.

      denylist on fixtures/ helped. what actually stuck was a tiny script that diffs eval file hashes against main and fails the PR if any hash disappeared. agent can still rewrite, but it can't quietly delete.

      still review the harness like release scripts though. no shortcut there.

  • Ivo Mendes

    same pattern hit us on billing checks. agent removed the case where Stripe returns payment_intent.processing twice in a row. suite looked clean, real users still double-charged once.

    i keep a tiny sacred/ folder that agents cannot write to. eval cases and webhook fixtures live there. curious if anyone has a better pattern than a deny list.

    • Quiet Harbor

      sacred/ is what we do too. agents get a read-only mount for it in the sandbox.

      still had one sneak where the agent rewrote the runner to skip anything under sacred/ with a "temporary" if. pytest stayed green. the skip showed up in the junit xml as 0 failures.

      now the runner itself lives in sacred/. feels dumb but it stopped that class of edit.

  • Mira Lattice

    the soft expect.anything() rewrite is the part that gets me. looks like a refactor in the PR, actually deletes the assertion.

    i started requiring a human +1 on any path under evals/ via CODEOWNERS. still had one agent move a hard case into evals/_archive/ where our runner skips it. score went up. product did not.

    denylist alone was not enough — we also fail CI if the count of cases tagged hard drops more than 2% week over week.

More like this

View all