DEV Community

AstralXVoid
AstralXVoid

Posted on

NoWreck v0.15.0 is on PyPI β€” `pip install nowreck` πŸŽ‰

NoWreck v0.15.0 is on PyPI β€” pip install nowreck πŸŽ‰

GitHub logo 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

tom
NoWreck is a deterministic structural verifier for AI-generated code-change claims.
When an AI describes a code change, NoWreck compares the claims against structural evidence derived by its own scanners β€” the verifier never asks another AI for an opinion. Where the evidence comes from depends on the mode: in Pre/Post and Claims modes, from actual before/after repository snapshots; in Prompt Mode, from the model's own proposed diff ChatGPT Image Sep 3, 2026, 09_45_07 PM
$ 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
Enter fullscreen mode Exit fullscreen mode

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 .
Enter fullscreen mode Exit fullscreen mode

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 check passes on both the sdist and the wheel; the wheel ships exactly the nowreck package 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. The test extra now declares it properly.
  • A set of terminal-integration tests that drive a real tmux session 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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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


NoWreck v0.15.0 β€” 809 tests passing, published via trusted publishing, verified with a clean pip install nowreck.

Top comments (0)