Alluvia Protect · Python + pytest

Verify that your regression test actually catches the bug you fixed.

Your agent writes the test. Alluvia checks that the same test fails on the old code and passes on the fix. You keep an ordinary pytest test and the evidence.

Free and open source. Uses your existing Claude Code account and Python test environment.

Captured from Alluvia 0.10.0

From a boundary bug to a verified check.

A silent walkthrough of real command output, with edited pacing. The correction is a supplied example instruction. This shows the verifier; your coding agent writes the test in the plugin workflow.

A worked example

A limit means the same thing next time.

01 / The correction

“Smaller than 8 MiB. Exactly 8 MiB must be rejected.”

02 / The check
def test_upload_limit_is_exclusive():
    limit = 8 * 1024 * 1024
    assert accepts_upload(limit - 1)
    assert not accepts_upload(limit)
03 / Same test, two revisions
Before the fixAssertion fails
After the fixTest passes

The check catches this boundary mistake. The example is reproducible in a small local repository.

Yours to keep

A test in your repository.
A reason behind it.

The test

An ordinary pytest file, ready to review and commit. It runs without Alluvia.

The source

The correction that motivated it, attributed to your instruction or an existing history record.

The evidence

The code revisions, identical test hash, recorded failure and passing result in a readable bundle.

One supported workflow, start to finish

Protect your next correction.

You need Git, Python 3.12 or later for Alluvia, and a Python project with a committed fix and an existing pytest environment. Install the CLI and plugin, then open Claude Code in that project.

uv tool install alluvia
claude plugin marketplace add dylanp12/alluvia
claude plugin install alluvia@alluvia

Already installed? Run uv tool upgrade alluvia and claude plugin update alluvia@alluvia, then restart Claude Code.

In Claude Code, describe the correction:

/alluvia:protect Uploads must be smaller than 8 MiB. Exactly 8 MiB must be rejected.

Your agent finds the revisions, writes one test and runs the verification. No Alluvia sign-in, history import or extra model key is required.