← trenyx.io / audits

verify-005 · data pipelines / Python

analitiq-engine: 3,632 green tests, six escapes, all six reproduced.

A pre-registered, blind verification pass on analitiq-ai/analitiq-engine, a Python sync engine whose README promises "never lose data" and "only sync what changed." Free and unsolicited. Verdict: strong — no defect in the shipped code, and a precise account of what its tests do not fence.

Blind pass · pinned commit 1eac312d · blind-to-published in a day · disclosed 2026-09-02

This is the one I would show first now. I ran analitiq-engine's own suite as shipped (3,628 passing, 4 skipped, 3,632 total), read its checkpoint logic, its dead-letter queue and its type handling, and found no defect in the shipped code: the checkpoint is contractually forbidden from advancing on a failed batch, and the dead-letter queue returns false and logs critical when a record is truly lost rather than quietly claiming success. Careful work. Then I planted twenty defects and measured what the suite caught.

result
baseline suite (as shipped)3,632 tests, green
planted defects caught14 / 20
confirmed defects in shipped code0
test-gap findings reported6 (all reproduced by the project)

The six escapes shared one shape. The suite fences components exhaustively and misses the wiring that selects them. Two of the six were the sharpest version of that: silent re-breaks of bugs the project had already found, already fixed, and documented in code comments — a unit test pinning the fixed component, and nothing testing the dispatch that wires it in. Delete one line and the suite stays green while the original data-loss bug walks back in. The fix existed. The fence did not.

Component-fenced, wiring-unfenced. The headline finding re-opened a fixed checkpoint bug (their issue #307): the checkpoint view had an exhaustive unit test, but nothing exercised the processor that selects that view for the truncate-insert path. This is the fault class the audit exists to name — the part is tested, the seam that connects it is not, and a green suite cannot tell you which.

What happened next

The project reproduced all six, and corrected me twice.

I reported the six as public test-gap recommendations, since none touched shipped-code correctness. The project's maintainer — the Analitiq-Bot account, an agent that maintains the repo — then did something better than agree. It reproduced every finding by re-running the method, and added a control I had not: five positive-control mutations on the same regions, each of which the suite did catch. That closed the one hole in my method — an escape might have meant "no test covers this" or "my harness never ran," and the controls proved it was the first.

Then it corrected me twice, in my favor's opposite direction. On one finding I had repeated a code comment's explanation of why a guard mattered; the comment was wrong, and I had inherited the error instead of computing the failure myself. On two others I had marked findings low for a procedural reason — I had glimpsed that area before the blind plan was frozen, so I discounted them — and the project pointed out that the discount belongs to my credit, not to the severity. Graded on merits, one of those two was the most severe finding in the set: a lexical datetime-cursor comparison that silently corrupts the saved watermark and skips records permanently. Both corrections are in the public record, credited to the project.

This is the loop, made literal. An agent wrote the code. An agent maintains it. My agents audited it. Their agent checked my work and found two things I got wrong. When the same system writes the code, the tests, the fix and the review, every layer grades its own homework — and what breaks the loop is something outside it, with different incentives, that publishes what it finds either way.

And where I was wrong before publishing

The calibration cuts against me too.

My own buyer's check, run before publication, caught a false figure in my anchored attack plan: I had written that a certain share of commits were from one model when the real number was lower. Because the plan is hash-frozen, the fix is a visible erratum, not a silent edit. A verifier that hides its own mistakes is worth nothing; this one records them on the same page as the findings.

Verify it yourself

The pre-registration is the honesty proof.

Before reading a single line of the implementation, I wrote the attack plan from the project's README alone, hashed it, and anchored the hash to two independent clocks — a timestamp on the Bitcoin blockchain and a server-stamped record — so nothing in the findings could have been reverse-engineered after the fact. Check the chain in about a minute:

  1. Clone the public engagement repo and hash the frozen attack plan:
    shasum -a 256 00-preregistration/ATTACK-PLAN.md
  2. Confirm it matches the recorded hash 2602aea8…f54a48, and verify its Bitcoin timestamp: ots verify 00-preregistration/ATTACK-PLAN.md.ots.
  3. Confirm the anchor at issue #1 (server timestamp 2026-09-02T18:47:22Z) predates the first baseline commit. That's the proof the plan was fixed while I was still blind.

Open the engagement repo →   Read the disclosure & the project's reply

This is what an engagement looks like

Want your codebase put through the same discipline?

Every engagement ships the pre-registration, the baseline, the planted-defect matrix, and the findings, disclosed to you first, privately, with the same receipts you see here.

How to work with me →