NoWreck v0.15.0 is on PyPI β pip install nowreck π
AstralXVoid
/
NoWreck
A CLI tool that verifies AI coding assistant claims against actual structural changes β catching hallucinated functions, fake calls, and missed modifications before they ship.
NoWreck
Deterministic AI Verifier β v0.15.0
$ nowreck fix "Add email validation to auth.py"
Summary
ββββββββββββββββββββ
β 3 claims total
β 2 confirmed
β 1 contradicted
CONFIRMED
βββββββββ
β ADD_FUNCTION validate_email β auth.py (conf: 100%)
Evidence: Function 'validate_email' was added in auth.py
CONTRADICTED
ββββββββββββ
β CALLS_FUNCTION validate_email β auth.py (conf: 100%)
Evidence: Function 'validate_email' was added in auth.py
What it catches
- Hallucinated functions or classes β a claim that something was added when it isn't there
- Fake internal API calls β a claimβ¦
Deterministic AI Verifier β now one command away.
NoWreck is a deterministic structural verifier for AI-generated code-change claims. When an AI describes a change to your code, NoWreck checks those claims against structural evidence from its own scanners β a function was actually added, a call actually exists, the diff actually matches the description. It never asks another AI for an opinion. No black box, no vibes: claims are confirmed or contradicted against real repository state, with confidence percentages and evidence on every result.
Today, NoWreck gets its biggest milestone yet β it's now on PyPI, so anyone can install it in seconds.
pipx install nowreck # or: pip install nowreck
nowreck --version # β nowreck 0.15.0
What's new in v0.15.0
pip install nowreck β
Up until now, every user had to clone the repository and build in place:
git clone https://github.com/AstralXVoid/NoWreck.git
cd NoWreck
pipx install .
That's gone. NoWreck is live on PyPI with the full README rendered on its project page β screenshots and all. Installing, upgrading, and dependency management now work the standard Python way, on Python 3.11+.
Properly packaged, the way a PyPI page should be β
The release fills in everything a real distribution needs:
-
Full metadata β README, SPDX license expression (
FSL-1.1-MIT), Homepage + Source links, classifiers and keywords for discoverability -
Clean artifacts β
twine checkpasses on both the sdist and the wheel; the wheel ships exactly thenowreckpackage and its license β no tests, samples, or stray files -
A guard against version drift β packaging tests now verify the version is consistent across every place it lives, so
pyproject.toml, the package, and the banner can never silently disagree
Release-quality fixes that came out of verification
Publishing forced us to actually run the pipeline the way a fresh machine would β and that honest rehearsal caught real problems, all fixed at the root:
- The CI test gate had no pytest declared at all β a fresh runner would have failed with
No module named pytest. Thetestextra now declares it properly. - A set of terminal-integration tests that drive a real
tmuxsession were flaky under load β their tight polling deadlines could randomly fail on a busy runner and block a release. They now use load-tolerant timeouts, stress-tested to zero flakes.
The result: 809 tests, all passing, verified under both pytest 7.x and the current pytest 9.x.
Quick start
pip install nowreck
# Compare two real snapshots β deterministic, no API key needed
nowreck fix --pre ./repo-before --post ./repo-after
# Same, but verify explicit claims against those snapshots (@file syntax)
nowreck fix --pre ./repo-before --post ./repo-after --claims @claims.json
# Detect changes between this commit and the previous one (git repo)
nowreck fix --compare HEAD~1
# Prompt Mode β an AI proposes the change and NoWreck verifies its claims
# (requires one-time API key setup: nowreck config set api_key <key>)
nowreck fix "Add email validation to auth.py"
Sample output (Prompt Mode):
$ nowreck fix "Add email validation to auth.py"
Summary
ββββββββββββββββββββ
β 3 claims total
β 2 confirmed
β 1 contradicted
CONFIRMED
βββββββββ
β ADD_FUNCTION validate_email β auth.py (conf: 100%)
Evidence: Function 'validate_email' was added in auth.py
CONTRADICTED
ββββββββββββ
β CALLS_FUNCTION validate_email β auth.py (conf: 100%)
Evidence: Function 'validate_email' was added in auth.py
What it catches
- Hallucinated functions or classes β a claim that something was added when it isn't there
- Fake internal API calls β a claim that a function was called when it wasn't
- Explanation-vs-diff mismatches β a description of a change that doesn't match the actual diff
- Unexplained changes β structural changes no supplied claim mentioned
NoWreck doesn't ask "is this code good?" It asks one narrow question: "do the supplied claims match the structural changes actually detected?" Nothing more, nothing less β no AI judge, no opinions, just evidence.
What hasn't changed
This release is about distribution, not features. Every mode (Prompt / Pre-Post / Claims / Compare), all 13 claim types, the scanners, verifier, parsers, reporters, and exit codes are exactly as before β and the license stays FSL-1.1-MIT (auto-converts to MIT in July 2028).
What's next
The project keeps shipping one narrow, well-tested increment per version. v0.14.0 brought --claims @file.json for reading claims from files; v0.15.0 makes the tool installable anywhere. Watch the repo for what comes next.
Links
- PyPI: pypi.org/project/nowreck
- Source: github.com/AstralXVoid/NoWreck
- Docs: use.md
NoWreck v0.15.0 β 809 tests passing, published via trusted publishing, verified with a clean pip install nowreck.

Top comments (0)