Repository navigation
Releases: i-ops-hq/assurance
Releases · i-ops-hq/assurance
Release list
assurance-reach 0.1.0
pip install assurance-reach==0.1.0 · PyPI
assurance reach <path>: what a change to a file or folder reaches, by a code graph. It reads a
graph such as Graphify's, never builds one, and follows dependency edges backwards from every symbol
in the path: each symbol that depends on the change, with the relation and the line of the call or
import that carries the hop. The relations followed are the ones Graphify's own blast radius
follows, and a package manifest'sdepends_on; any other is named, never guessed into a dependency.
Symbols reached only through edges the producer inferred or marked ambiguous are listed apart from
those reached by extracted edges alone. Every report says first how far the graph is behind the
code, by each file's content when the producer left a manifest, and ends with what it could not
determine: hops past the depth, relations it does not follow, symbols in no file, records it could
not read.--jsonprints it asassurance.reach/1. Pinned to the graph Graphify 0.9.77 writes,
whether run on a whole project or on a folder below where it ran.- A graph chooses nothing that is read. It is often committed, so it is read as input from whoever
wrote the repository: only regular files inside the folder it covers are opened, a recorded root
outside that folder is set aside and said, and text from it is printed escaped.
assurance-mcp 0.5.6
pip install assurance-mcp==0.5.6 · PyPI
- Requires
assurance-cli0.6.5. No change to the server or its tools.
assurance-cli 0.6.5
pip install assurance-cli==0.6.5 · PyPI
assurance reachreachesassurance-reach: what a change to a file or folder reaches, by a code
graph such as Graphify's, and how far behind the code that graph is. Listed in--help, on the start
screen, and in--version.
assurance-budget 0.2.19
pip install assurance-budget==0.2.19 · PyPI
- The Stop hook says when Claude claims the tests pass right after they failed, edit seen or not.
Every finding was measured from the last code edit the hook recognises, so a session with none, or
whose edits it cannot see, as through a heredoc, could run a failing test three times and end with
"All tests pass now." while the hook said nothing, thoughassurance auditcalled it a loop and
--fail-on-loopfailed on it. When Claude's last message says the tests pass and the last test run
of the project, or else its last check, failed before it, the hook now says so (review
suggested), once.
assurance-budget 0.2.18
pip install assurance-budget==0.2.18 · PyPI
- The Stop hook says a finding once. A finding whose evidence had not changed was said again
whenever Claude said again that the tests pass, turn after turn. It is now said once while the
edit, the command and the time it rests on are the same; a change to any of them is a new sentence,
and is said. A count of commands it could not classify that grows from turn to turn is not a new
finding. The advice to declare one of those commands under[audit]is given only for a command a
declaration could name, not for a script fed to Python on standard input or with-c, nor for a
command inside$( ). --jsonno longer names a Claude Code edit as made without reading. Claude Code refuses an edit
to a file the session has not read or written, so every fileedited_without_readnamed for it was
one the session read or wrote in a way this reader did not record: on one real session, both of the
files it named, one read in full bycat, one created by a heredoc and read bysed, beside 658
shell commands it could not classify. The text report stopped saying so in 0.1.1; the JSON, which programs and other
models read without the caveat a person weighs, kept the bare list.edited_without_readis now
empty for Claude Code and unchanged elsewhere, and the finding moves to
edits_with_no_recorded_read: the files, whether the harness refuses an unread edit, the count of
unclassified commands, and a sentence saying what they mean. Where a harness does allow an unread
edit, the text report names it as "No read recorded before editing", beside the unclassified
commands that could hold the read.
assurance 0.1.25
pip install assurance==0.1.25 · PyPI
- Requires
assurance-budget0.2.19: the Stop hook says when Claude claims the tests pass right after
they failed, whether or not it saw an edit. The README's hook command and the plugin are pinned to
this version.
assurance 0.1.24
pip install assurance==0.1.24 · PyPI
assurance reach(assurance-reach0.1.0, new, andassurance-cli0.6.5): what a change to a
file or folder reaches, by a code graph such as Graphify's, with each hop's call site, what the graph
read kept apart from what it inferred, how far behind the code the graph is, and what could not be
determined. The README's hook command and the plugin are pinned to this version.
assurance 0.1.23
pip install assurance==0.1.23 · PyPI
- The Stop hook says a finding once (
assurance-budget0.2.18), and the plugin's hook stands down
when a hook in your own settings already runs the audit after every turn: Claude Code runs both,
and each said every finding, so each showed twice. - Requires
assurance-budget0.2.18:assurance audit --jsonno longer lists a Claude Code edit
underedited_without_read, since that harness refuses an edit to a file the session has not read
or written;
the reader's unseen reads go underedits_with_no_recorded_read, with what they rest on. The
README's hook command and the plugin are pinned to this version.
assurance-mcp 0.5.5
pip install assurance-mcp==0.5.5 · PyPI
- Listed on the MCP registry again. 0.5.4 reached PyPI, and its listing did not: its
server.jsonstill
said 0.5.3, and the publish job refuses a manifest that disagrees with the release. A test now fails
the pull request when they disagree. No change to the server or its tools.
assurance-cli 0.6.4
pip install assurance-cli==0.6.4 · PyPI
assurance servereachesassurance-budget's local endpoint, where any agent sends its traces or
run records and any workflow asks for a run's audit. Listed in--helpand on the start screen.