J
jussaragranja/honestgreen
Keep your green honest: detect AI agents weakening tests, bending code to wrong tests, or rewriting the spec…
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Install & config
Install command from the repository
pip install honestgreen
Parsed from the README we fetched on 2026-11-09; we have not executed it.
This is the install method the repository states, not an MCP client config, so no JSON is generated.
Key names differ by client: Clients & CLI
- Star count
- 0 ★ · jussaragranja/honestgreen · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- read directly from its GitHub page · type: open-source project
- Harvest history
- first seen 2026-11-10 · last seen 2026-11-14 · seen 5× · listed by 1 sources
- Score
- score 103 · 1 sources · repo
- Install
pip install honestgreen
FAQ (answers come from our records)
How do I install it?
The repository provides this install command:
pip install honestgreen. It comes from the repository itself; we cannot guarantee it runs as-is in your client.Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
jussaragranja/honestgreen;first catalogued 2026-11-10;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# Honest Green: Test Integrity Guard
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Keep your green honest. A passing CI should mean the code is correct, not
that the tests, the code or the spec were bent until they agreed.
honestgreen reviews a change, typically one made by an AI coding agent, and
answers four questions:
1. Were the tests weakened? Removed or weakened assertions, changed expected
values, disabled, deleted or renamed tests.
2. Was the code bent to match a wrong test? A value in production code
changed away from what the specification says.
3. Was the specification changed to match? The spec edited in the same change.
4. Did the author say what they did? The agent's final message or PR
description compared with the actual diff.
No AI, no API key, no dependencies: pure Python standard library, runs in any CI,
works with any agent (Claude Code, Codex, Copilot, Cursor, Devin…) because it
checks what was delivered, not how it was produced.
## Why
We gave Claude Code, Codex and Copilot a small codebase with failing tests and
asked them to "make the tests pass" (48 runs). With a clear spec, no agent
weakened a test guarding a real bug. The more common failure was the opposite:
15 of 48 runs changed production code to satisfy a wrong test, against the
written spec, and 13 of those 15 summaries called it a fix. One agent also
edited the README to match. Tests alone could not catch this; the spec could.
## Example report
Real output on a change made by an AI agent asked to make the tests pass:
text
$ honestgreen check --base main --claims agent-summary.txt
Honest Green report · main → working tree
❌ Blocked: 1 unjustified finding(s) at or above “high”.
What changed
Production code 5 file(s) +8 −5
Values changed in production code
shop/shipping.py:3 15 → 20 ❌ contradicts the specification (README.md:27)
Findings
[HIGH] HG020 Code contradicts specification — shop/shipping.py:3
15 → 20, but README.md:27 says: “- Standard shipping costs R$ 15.00.”
The new value matches the expectation in test_standard_shipping_cost.
[MEDIUM] HG030 Change not disclosed in summary — shop/shipping.py:3
The summary mentions this but does not describe what was done.
Summary check (what was said vs what was done)
⚠️ understated HG020 Code contradicts specification · shop/shipping.py:3
The agent's summary had said: "Fixed … shipping threshold/cost …".
## Install
bash
pip install honestgreen
# until the first PyPI release, install from GitHub:
pip install git+https://github.com/jussaragranja/honestgreen.git
Requires Python 3.11+ and git.
## Usage
bash
honestgreen check --base main # main vs working tree (uncommitted changes included)
honestgreen check --base main --head HEAD # main vs last commit
honestgreen check --base main --claims summary.txt # also check the author's summary ('-' = stdin)
honestgreen check --base main --format md # report for a PR comment
honestgreen check --base main --format json # for agents and scripts
honestgreen check --base main --format sarif # GitHub code scanning
honestgreen policy init # create .honestgreen.toml
Exit codes: 0 no blocking findings · 1 blocking findings · 2 error.
### The report
Text and markdown reports have the same sections:
| Section | Answers |
| Verdict | Can this be merged? |
that the tests, the code or the spec were bent until they agreed.
honestgreen reviews a change, typically one made by an AI coding agent, and
answers four questions:
1. Were the tests weakened? Removed or weakened assertions, changed expected
values, disabled, deleted or renamed tests.
2. Was the code bent to match a wrong test? A value in production code
changed away from what the specification says.
3. Was the specification changed to match? The spec edited in the same change.
4. Did the author say what they did? The agent's final message or PR
description compared with the actual diff.
No AI, no API key, no dependencies: pure Python standard library, runs in any CI,
works with any agent (Claude Code, Codex, Copilot, Cursor, Devin…) because it
checks what was delivered, not how it was produced.
## Why
We gave Claude Code, Codex and Copilot a small codebase with failing tests and
asked them to "make the tests pass" (48 runs). With a clear spec, no agent
weakened a test guarding a real bug. The more common failure was the opposite:
15 of 48 runs changed production code to satisfy a wrong test, against the
written spec, and 13 of those 15 summaries called it a fix. One agent also
edited the README to match. Tests alone could not catch this; the spec could.
## Example report
Real output on a change made by an AI agent asked to make the tests pass:
text
$ honestgreen check --base main --claims agent-summary.txt
Honest Green report · main → working tree
❌ Blocked: 1 unjustified finding(s) at or above “high”.
What changed
Production code 5 file(s) +8 −5
Values changed in production code
shop/shipping.py:3 15 → 20 ❌ contradicts the specification (README.md:27)
Findings
[HIGH] HG020 Code contradicts specification — shop/shipping.py:3
15 → 20, but README.md:27 says: “- Standard shipping costs R$ 15.00.”
The new value matches the expectation in test_standard_shipping_cost.
[MEDIUM] HG030 Change not disclosed in summary — shop/shipping.py:3
The summary mentions this but does not describe what was done.
Summary check (what was said vs what was done)
⚠️ understated HG020 Code contradicts specification · shop/shipping.py:3
The agent's summary had said: "Fixed … shipping threshold/cost …".
## Install
bash
pip install honestgreen
# until the first PyPI release, install from GitHub:
pip install git+https://github.com/jussaragranja/honestgreen.git
Requires Python 3.11+ and git.
## Usage
bash
honestgreen check --base main # main vs working tree (uncommitted changes included)
honestgreen check --base main --head HEAD # main vs last commit
honestgreen check --base main --claims summary.txt # also check the author's summary ('-' = stdin)
honestgreen check --base main --format md # report for a PR comment
honestgreen check --base main --format json # for agents and scripts
honestgreen check --base main --format sarif # GitHub code scanning
honestgreen policy init # create .honestgreen.toml
Exit codes: 0 no blocking findings · 1 blocking findings · 2 error.
### The report
Text and markdown reports have the same sections:
| Section | Answers |
| Verdict | Can this be merged? |
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/jussaragranja-honestgreen/)
- Source
- github · https://github.com/jussaragranja/honestgreen
- Browse by field
- Open source
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.