Build1 distinct publisher3 min readUpdated
A grep probe written to find blind detectors was itself blind, and returned a clean, plausible number. Silence is both the success state and the total-failure state.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Writing on dev.to, Volodymyr Kubiria asked his coding agent to count how many of his tooling scripts carried a self-test; it grepped and answered 12 of 13 [1]. The answer was wrong, because one script labelled its control in uppercase while the probe's regex was lowercase with no `-i` flag, and the true count was 13 of 13 [2].
That is a 1-in-13 miscount, roughly 7.7 percent of the corpus, produced by a tool whose entire job was to find blind detectors [1][3]. According to Kubiria, nothing in the output hinted that anything had been missed; the number was clean, specific and plausible, and he caught it only because the total felt one short and he opened the file by hand [4].
The structural problem is cheap supply. Pre-commit hooks, custom lint rules and audit scripts cost one sentence to request, so you request them constantly [5]; Kubiria reports 29 in a single project, running on every commit and almost always printing nothing, which is what you want them to print [6]. And a detector that found nothing and a detector that cannot see produce byte-identical output [7]. The trust curve runs backwards: the longer a check stays quiet the more you rely on it, and a broken detector is silent more reliably than a working one [8].
Test suites have a partial defence. Mutation testing perturbs production code, re-runs the suite and reports any mutant that survived, and it exists because you can reach 100 percent line coverage with tests that assert nothing [9]. But it points at suites, in CI, over application code, and nobody mutation-tests the 200-line script an agent wrote on Tuesday to check something about the docs [10]. The guardrail layer around LLM coding, the pre-call and post-call interceptors, is built to stop the model doing something dangerous, not to prove that a bespoke checker can still see [11]. So the fastest-growing category of quality machinery in the repo is the one with no soundness check at all [12].
Kubiria's fix borrows from lab practice. A negative control is the assay run with everything except the sample: no signal is expected, and a signal means the run is contaminated and its results void; a positive control is a known-present sample that must produce a signal, and if it does not, the instrument is dead and every clean reading it gave you today means nothing [13]. Translated: give every detector a `--self-test` flag with a positive case it must catch and a vacuum case, invented but realistic, it must stay silent on [14]. Run the controls first, and if any control fails the tool prints that it is unsound instead of printing a verdict [15].
His published example, from a tool auditing whether every project rule has an enforcement mechanism, checks that it can still read its inputs at all, that a known rule slug resolves fully, that an absent slug resolves to nothing, and that an invented filename is not accepted as a witness [16]. The output is not a claim about the codebase; it is a claim that this run's verdict is worth reading [17].
Two things to watch. Kubiria notes that controls themselves go blind, though the supplied text is cut off before he explains how he handles it [18]. And in your own repo, the number worth tracking is not how many detectors you have but how many have ever fired: a check that has never once produced output is an untested code path with a green badge on it.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The article states that controls themselves go blind, but the supplied text is truncated mid-sentence at that point and does not give the remedy.
The author asked his coding agent to count how many of his tooling scripts carry a self-test; the agent grepped and answered 12 of 13.
The answer was wrong: one script labels its control in uppercase (Ukrainian for 'negative control') while the probe's regex was lowercase with no -i flag. The real answer was 13 of 13.
A probe written to find blind detectors was itself blind.
The probe returned a clean, specific, entirely plausible number and nothing in its output hinted that it had missed anything; the author caught it only because the total felt one short and he opened the file by hand.
Detectors such as pre-commit hooks, custom lint rules and audit scripts cost one sentence to request from a coding agent, so they get requested constantly.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One practitioner account plus reproduced code
The mechanism claim is self-demonstrating and unusually concrete for a blog post: a specific failure (lowercase regex missing an uppercase Ukrainian control label, 12 of 13 instead of 13 of 13), a reproduced selfTest function with named positive and vacuum assertions, and a second worked failure where a positive control was itself blind. But all of it is one author's single project, self-reported, with no independent replication, no dataset, and one unquantified generalisation about growth of unchecked quality machinery.
Author's own repository only
The only adoption visible in the supplied material is the author's: 29 detectors in one project, 13 of 13 tooling scripts carrying controls, a public repository of these tools, and a grading harness with a mutation mode. No other team, product, framework or maintainer is shown adopting the --self-test control pattern, and no downloads, stars, issues or third-party usage are supplied.
Mostly disciplined, one unbacked generalisation
The article is largely restrained: it shows its own failure, refuses to claim a clean codebase, and prescribes fail-closed reporting. Overstatement is confined to scope - a single project's experience is generalised to 'your repo' and to the fastest-growing category of quality machinery, and existing mutation-testing and guardrail tooling is dismissed as out of scope without any comparison being run. That leaves claims modestly ahead of the demonstrated evidence and near-zero external adoption.
Self-published practice, own repo promoted
The author writes about tooling he built and states he published it as a public repository, so there is a reputational and distribution interest in the pattern looking sound, and no editorial or peer review sits between claim and publication. Offsetting this, the supplied source discloses no vendor, sponsor, commercial product or paid offering, and the post volunteers two failures of the author's own work.
Argument solid, breadth unverified
Confidence is moderate: the core logical claim - identical output from a clean detector and a blind one - needs little external verification and is directly demonstrated, and the code excerpt makes the prescription checkable. Confidence is held down by a single publisher, a single author's project, no independent adoption, and one truncation at the end of the supplied body that leaves the grading harness's mutation mode only partly described.
build
The NestJS default path puts the query inside the business rule, and nothing fails when it moves1 distinct publisher
build
The capture returned HTTP 200. The file was a Cloudflare block page.1 distinct publisher
build
A RAG stack lived seven hours before a hosted embedding endpoint returned 4041 distinct publisher
build
An AI test suite hit 94% coverage and missed the one branch that mattered1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 16, 2026