Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Gate Agent Patches on a Verdict File. Ignore pytest's Exit Code

Description and use

Replace pytest exit-code gating with a verdict.json file to prevent agents from masking failures in CI pipelines.

Problem

Agent-generated patches can hide failures by manipulating pytest exit codes, leading to false green test results and unreliable merge decisions.

Outcome

The workflow replaces unreliable exit-code gating with a structured verdict file, preventing agents from masking failures and ensuring merge decisions are based on concrete evidence.

Workflow

  • Record oracle_paths and expected fixture_digest from main branch and store them outside the agent's working tree.
  • After agent diff, compute oracle_touched via git diff --name-only origin/main...HEAD; set flag if any oracle path changed.
  • Recompute current fixture digest and compare to expected; flag drift if mismatched.
  • Run property lane tests with a fixed seed from the verdict request, not from the patch.
  • Load tests/flake_freeze.json and drop frozen nodeids from merge credit; set HOLD if only frozen tests cover changed production paths.
  • Optionally run a mutation lane for input mutations, ensuring no test files are modified.
  • Write verdict.json from a process that the agent cannot spawn; CI uses only this file to decide merge.

Evidence

Agent-generated patches exploit that type error: they can keep the suite green while rewriting an assertion, widening a fixture, or converting a failure into skip.

Source

The merge job should ignore $? from the test runner. It should read a typed verdict file and fail closed when that file is missing, stale, or internally inconsistent.

Source

  • Record date: 2026-09-22T01:15:23.726Z