§ 1 · The offer

Continuous Correctness Audit

We audit whether your software does what you promised.

A Continuous Correctness Audit is a standing engagement against a written bar. We formalize the requirements for one component you choose with us, your engineers approve them, and we prove and test the code against every approved clause. The findings, the proofs and the audit gate stay in your repo, where your CI re-runs them on every release. The claim is bounded on purpose: within a declared scope, for declared behaviors, with evidence commensurate with the consequence of failure.

Every finding is signed by name, so we take a limited number of engagements each quarter. Scoping requests go through the form at the end of this page.

Hero job: this page is the contract surface, so the h1 states the promise being purchased in plain words. Definition paragraph carries the bounded-assurance sentence verbatim (honesty rule). Deliberately no CTA buttons: the reader arriving here already clicked one; the form at §9 is the single conversion point, and the capacity line plus the pointer to it replace a button.
§ 2 · Two shapes

Two ways to buy it.

Baseline Correctness Audit

One component, chosen with you. We scope it and quote a fixed fee before work starts. Roughly four weeks end to end, from requirements approval to a gate in your CI. Re-verification of your fixes is included: when you fix a finding, we confirm the reproducer passes and the proofs still hold.

The continuous retainer

After a baseline, the audit that doesn't expire: a retainer on the cadence you choose, per release, weekly, even daily. Sized to that cadence when scoped, then flat month to month. It buys: every release re-audited; new and changed code held to the approved requirements; fixed findings re-verified and pinned; the register maintained, severities re-checked; and one more component brought under the bar each quarter, included. Month twelve checks strictly more than month one.

In either shape, fix work is scoped separately from the audit, so the party grading a fix has no stake in having written it.

Structural job: name the two SKUs and their boundaries before the reader meets the process. No figures anywhere per founder ruling; the fixed-fee sentence and the four-week duration are the only shape signals, both from the fact inventory. The fix-work line is a one-sentence conflict-of-interest disclosure that doubles as an upsell boundary.
§ 3 · The four weeks

What the four weeks look like.

Week one · Requirements the owners approve

We index the component first: the code, as the source of truth for what it actually does. Then its history, and the systems where intent lives: the issue tracker, the support queue, the docs nobody updated. Code knows what it does; it doesn't know why. The why is what we recover. Requirements drafted only from the code would mirror its assumptions, so every requirement carries recovered intent, and the engineers who own the component approve each one before any code is judged, about two hours of their time, because the drafting is ours. In our first engagement the approval step alone surfaced seven undocumented design decisions the team itself disagreed about.

Week two · Formalize and prove

Approved requirements become formal properties. We check the spec itself first, for realizability, consistency and vacuity, so a bad clause cannot condemn good code. Then proofs and coverage runs begin.

Week three · Gap analysis and findings

Where the code and the approved requirements disagree, we write it up. Every finding ships under the reproducer guarantee in § 6, or it does not ship.

Week four · Evidence handoff and gate

The evidence corpus lands in your repo and the audit gate wires into your CI. We walk your team through every finding and every proof.

Structural job: convert "roughly four weeks" from a duration into a visible process, so the buyer can pre-sell it internally week by week. Week one carries the seven-design-decisions fact (inventory). Week three restates the trust primitive in full because this is the page a procurement reader prints.
§ 4 · What stays behind

What stays behind.

your-repo/
├── specs/
│   └── <component>.req.yaml    ← approved by your engineers
├── src/…                        ← // SW-REQ-XXX
├── tests/…                      ← // Verifies: SW-REQ-XXX
└── evidence/
    ├── findings/F-XXX_test.go   ← fails on main until fixed
    └── formal/<component>.log

A file tree in your repo, not a PDF in your inbox. What you own at the end is a verification harness most teams never get to build for themselves: per-finding reproducers, regression tests that pin fixed defects, condition-level MC/DC on the component's decision logic (a strictly harder bar than line coverage), and formal checks on its requirements, in plain YAML and executable tests in your git.

The corpus ships with a dashboard over it: every requirement and every known issue, with status and evidence, readable by the people who will never open the repo. On the known-issue screen, a copy-ready prompt hands a coding agent everything it needs to start the fix: the issue, its context, the reproducer. The dashboard is a window over the corpus; the record itself stays in your repo. A public example is live: the jsonparser dashboard, the same view your engagement gets, on our own open-source audit.

The public jsonparser dashboard: open known issues by severity, each with CVSS, status, and the requirements it affects
The live register for our public jsonparser audit: severity, status, and the requirements each issue affects.
Structural job: show the purchased object itself, abbreviated from index §2 so returning readers recognize the shape without a second full terminal block. All identifiers are visible placeholders (F-XXX, SW-REQ-XXX, <component>) per the honesty rules; nothing here may look like a real finding.
§ 5 · Living with it

What changes after week four.

After week four, the register does the work. Known issues become scheduled fixes the gate grades. When a customer reports a bug, you check the register before you open a debugger. And when a defect does slip through, we widen the bar so its whole class cannot slip through again. The full picture, month two to month twelve →

Collapsed from four cards to one paragraph (re-audit 2026-08-02, concision cut #1): the four payoffs exist at three depths and this page's job per guide §6 does not include them; /life-after-the-audit is the canonical home. The paragraph keeps all four payoff names as anchor text for the link.
§ 6 · Five commitments

Five commitments, in the contract.

  1. Reproducer guarantee. Runnable or it does not ship. Every finding arrives with a reproducer that fails on your current main and the name of the reviewer who validated it.
  2. Severity escalation. A finding we assess at our highest severity reaches your named contact within one business day of validation. It does not wait for the weekly report.
  3. Regression guarantee. Every fixed defect becomes a regression test in your CI. If the defect returns, your build fails before anyone has to remember it existed.
  4. Bounded claims, in writing. The scope, the behaviors and the depth of evidence are written into the contract. We sign what we checked and nothing beyond it.
  5. Zero lock-in. The gate runs without us. The corpus is plain YAML and executable tests in your git. If you cancel, everything that runs stays yours; what ends is our ongoing involvement.
Structural job: the reason to believe, stated as contractual obligations rather than values. ⚠ VERIFY before ship: "one business day" is the only number on this page that is not in the fact inventory; confirm the SLA figure with Leo before copy freeze, and confirm each of the five actually appears in the engagement contract template so the heading is literally true.
§ 7 · Exclusions

What we will not claim.

The longer table of what this audit cannot see is on the methodology page.

Structural job: the exclusions clause, placed before the fit filter so nobody reaches the form mis-sold. Carries the severity-provenance sentence, its one permitted occurrence on this page, and it holds the page's single allowed "X, not Y" contrast. Light band to read as a deliberate pause before the pitch resumes.
§ 8 · Fit

Before the form.

Worth your time if

  • You can already name the component. Most readers who get this far can.
  • A failure in it costs money or trust you can put a story to.
  • Your release process is settled enough to host a gate.
  • The engineers who own the component will give week one about two hours.

Today we audit Go, Rust, JavaScript, TypeScript, and Solidity at production depth. Python, Zig, Java, and C# are newer; we will tell you honestly where each stands. C and C++ arrive through the compiler's own coverage measurement, in the same gate. Another stack? Say so on the form and you get an honest timeline.

Structural job: last-mile qualification for a reader who is already half-sold, so the form below collects mostly qualified leads. Rewritten from index §6 rather than copied: the homepage version educates a cold visitor; this version assumes intent and just checks for the three disqualifiers that waste a scoping call. "An honest no" echoes the form copy on purpose.
§ 9 · Scoping

Request confidential scoping.

Findings are signed by name; who signs is its own page. Your email is the only required field; the rest is optional context that lets us come prepared. We reply personally, with a scoping call or an honest no. Fees are quoted after scoping and fixed before work starts. For private code, we countersign your NDA before reading a line.

Private by default. We countersign your NDA before reading a line of private code.

Frozen structure from index §9: the 7 field names (email/company/component/timeline/cadence/confidentiality/message), ids, and option lists are byte-identical; only data-source differs ("offer") so attribution separates this page from the homepage. ⚠ Same backend caveat as index: the deployed subscribe function persists only email+source until the richer function ships. NDA line appears twice by design, in intro copy and in the form note, because it is the last objection before submit.