A build can turn green because a bug was fixed. It can also turn green because the failing test was skipped, its assertion was weakened, or the CI command stopped propagating failure. fakegreen inspects that difference when reviewing work from an AI coding agent.
A green result needs its evidence
The project scans added and removed lines for patterns that undermine verification, including deleted test files, newly skipped tests, assertions made less specific, lowered coverage thresholds, and CI commands followed by failure suppression.
A deterministic tripwire
fakegreen does not ask a language model to decide whether an edit sounds reasonable. It uses a small lexer and targeted patterns on changed lines. The scanner needs no LLM and no API key, and its documented operation does not send the code to a network service.
Replacing an exact expected value with a check that a value merely exists removes information. Adding a skip marker can remove an execution path. Appending a shell failure override can let later steps continue after failure. fakegreen reports the changed evidence with a rule, severity, file, and explanation.
Findings are not a verdict on intent
A legitimate refactor may remove a test because a feature was removed. Such edits deserve context, not automatic accusations. A clean result does not prove correctness, and a finding does not prove deliberate deception. Run the real test suite, inspect the diff, and treat changes to hooks or CI as reviewable code too.
Source: fakegreen on GitHub · Site: fakegreen landing.