Continuous Correctness Audit
Life after the audit.
Most audits are events: intense, useful, over. This one is built to stay.The audit is how Proof gets installed; Proof is what stays. This page is month two and month twelve — what the findings turn into.
01 · The register
Unknown defects are risk. Known defects are work.
The first thing the audit leaves behind is a known-issue register: each issue named, its severity assessed with the basis recorded, an owner and a review date on file, a reproducer attached. A maintained instrument the gate itself checks for staleness, not a spreadsheet someone started and abandoned.
A register like that survives contact with a sprint-planning meeting: fixes sequenced by severity and reachability, budgets defensible, “what is still open” answerable without calling anyone. Each entry is delegable as well as plannable: every known issue carries a copy-ready prompt with the issue, its context and its reproducer, so any engineer or coding agent can pick up the fix with the reproducer as the finish line.
The public project shows the shape: the jsonparser register, read off master — four records, every one fixed, every one carrying the command that reproduces it. When a customer or a board member asks what you know about the component’s risks, there is a written answer with evidence behind it. The risk did not shrink; it stopped being invisible, and invisible is the expensive part.
Browse the live register ↗ seeded showcase branch; read the labels first
02 · The fix loop
Every finding arrives pre-wired for fixing.
A finding ships as a runnable reproducer, and the reproducer pins the defect one of two ways: it fails until the fix lands, or it asserts the broken behavior while that behavior is live and flips when the fix lands. The record says which. Either way it only goes quiet when the defect is actually gone, and the gate re-checks the requirement, the traceability and the coverage around the change.
In the corpus, the test that pins a defect carries its name (// Reproduces: KI-…) the same way verification tests carry theirs (// Verifies: SYS-REQ-…) — one public file shows both on one screen.
That grading loop does not care who wrote the fix. Assign a finding to an engineer on Monday, or point a code-writing model at it overnight; either way, the claim “fixed” is machine-checked. Teams that generate a lot of their code feel this one first: the register becomes a work queue their tooling can safely burn down. And when you would rather hand the queue to us, fix sprints are scoped separately and delivered as pull requests your engineers accept — the gate grades our fixes exactly as it grades anyone’s.
03 · Field reports
A customer report meets the register before it meets a debugger.
When something arrives from the field, the first question changes. It is no longer “can we reproduce this”; it is “is this already known.” A match closes triage in minutes, with severity and a reproducer already on file, and the customer gets an answer that reads like you were expecting the question.
A miss is its own signal: something reached production that the audit did not catch. That has a protocol.
04 · The miss protocol
Escapes retire their class.
No audit catches everything, and this practice publishes its own misses — two so far, both on the public ledger, each with its postmortem. What makes the difference is what an escape triggers.
The defect is recorded and root-caused to the exact gap that let it through: a requirement that was never written, a test partition that was never exercised, a coverage condition no test ever made matter. Closure then requires the corrective artifacts: the missing requirement written and approved, a reproducer that pins the failure, a sweep for sibling defects in the same class.
And the class claim stays honest. One passing reproducer proves this instance is dead; claiming the whole class is closed takes more evidence than one test. The protocol has already run in public, on jsonparser: the full case is published, misses included.
05 · What compounds
What compounds by month twelve.
Point-in-time quality work is stateless: a scan today does not make next month’s scan smarter, and a pentest does not remember. This audit keeps state.
Every fixed defect stays fixed, because its reproducer stands guard in your CI. Every escape makes the specification more complete. Every release adds requirements to the corpus. Nothing you have paid to learn about the component is ever un-learned.
There is a simpler name for all of this: memory. Engineering memory that lives with the code. Written-down intent; defects with their root causes; what was proven, and what was not. All of it versioned in the same repo and checked on every release. It survives departures, reorgs, and rewrites, and it is valuable enough that we treat it like source code: yours, in your repo, nowhere else.
Your coding agents draw on it the same way your engineers do: they query the graph of components, requirements, obligations and evidence directly, over MCP, and start from approved intent instead of rediscovering the system from raw code. The shape of the record is the commitment — plain files any tool can read. What the agent receives →
Fig. 01 · The record steps up at every fix, escape and release. Month twelve checks strictly more than month one, and it knows more.
Month twelve checks more than month one, and it knows more. That is the audit that does not expire.
06 · The retainer, plainly
What the monthly invoice buys, and what happens if you stop.
A retainer month consists of: every release re-audited on the cadence you choose, up to daily; new and changed code held to the approved requirements; fixed findings re-verified and pinned; the register maintained, severities re-checked; and each quarter, one more component brought under the bar — install-grade, sized into the retainer when it is scoped, not a surprise line item.
The gate does the mechanical half of that automatically. The human half — new requirements for new behavior, judged severities, the miss protocol, a person who validates every finding before you see it — is what the invoice buys.
And if you stop: you keep everything that runs. The corpus is plain YAML and executable tests in your git, and the gate keeps checking yesterday’s promises without us. What ends is the ongoing expertise: nobody keeps writing tomorrow’s. By month two your component has changed, and the register quietly stops being true. That is the whole trade, stated plainly.
What a standing-audit month covers →The five commitments, in the contract →
07 · Next
Where this starts.
The pages below are the rest of the argument: the engagement that installs all of this, and the public record you can check before you talk to anyone.
The engagement
Fixed fee, one component, roughly four weeks from the first call to a gate in your CI. Week one is where the component’s memory starts.
The public record
The register, one requirement chain walked file by file, and the two published misses with their postmortem.
The jsonparser case
The whole story on one page: what the review found, what escaped anyway, and what stayed in the tree.
A person validates every finding before it reaches you. Trust · About