Build1 distinct publisher3 min readPublished
Six days after a reviewer asked him to prove a 0.92 similarity threshold was safe, the author switched his cache off. Then he found two of his own test labels were wrong.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Where the embedder fails matters more than the fact that it fails. Negation has been a known weakness of embedding models for years [6]. Put that weakness in a reranker and you get a worse-ordered list, with the answer still in front of a user who can judge it. Put it in a cache lookup and generation is suppressed: the stored answer for the opposite rule comes back at full confidence, with nothing in the output to say a substitution happened [7]. Since the product's whole format is a summary plus the document it came from [2], a false accept does not look broken. It looks sourced.
The shipped default was wrong in both directions at once. At 0.92 [3], the threshold sat 0.0784 below the worst adversarial pair the author measured and 0.1730 above his weakest genuine paraphrase [1], which means it was simultaneously admitting a pair with opposite correct answers and rejecting paraphrases the cache existed to catch [10]. Raising the number does not rescue it, because the band the fix would have to live in is empty [11].
Then the measurement itself came apart, and this is the part worth keeping. Two of the five negation pairs were negative interrogatives, which in Spanish ask for confirmation of the same fact rather than its opposite, so a correct system answers both identically and the cache should accept them [14]. The author had them labelled as must-rejects. The published minimum for that row, 0.9702, turned out to belong to one of the invalid pairs [16], and the headline fraction of adversarial pairs above threshold moved from 60 percent to roughly 54 percent [2]. No test suite would have caught this, because the error was in the linguistics, not the code [15].
That is the argument against hit rate as the metric of record. A cache can count its own hits with no labels at all, which is why hit rate is the number that ships. A false-accept rate cannot be computed without someone deciding, pair by pair, whether two questions mean the same thing, and the person best placed to do that decided wrong on two of five pairs in a corpus he wrote himself. None of the corrections changed a single response the system returned. The served answers were identical before and after the erratum; only the claim about their correctness moved.
The honest limit is that the pairs were hand-built rather than drawn from a query log [9], so nothing here says how often the collision fires in production. It says something stronger about defaults: there is no setting of this component that makes the question unnecessary to ask. The reviewer's challenge took six days to answer, with the commits running 6 to 11 August [12], and the conclusion only survived because the 0.9984 pair happened to be a valid one [17]. A component that suppresses the model, shipped with no flag [3], puts that kind of luck between the user and the rule.
Ranked by verification strength, evidence, and original report placement.
A team producing regulatory documents kept receiving questions of the form "does the current rule allow X?"; answering meant someone reading memos, manuals and regulations to find where the rule was stated, then writing a summary with the source cited.
The retrieval system's output is a summary that cites which document the answer came from; the author states a summary without a source is useless when the question is about a rule.
The semantic cache was implemented with cosine similarity between question embeddings and a threshold of 0.92, and went out in the reference implementation the repository publishes, always on, with no flag to turn it off.
System constraints: the documents cannot leave the perimeter, there is no GPU, and each generated answer costs tens of seconds on CPU.
Giulio D'Erme asked the author to prove the threshold was safe, using the clinical example "pacientes con fiebre" against "pacientes sin fiebre": one token apart, opposite correct answers.
A bad ranking degrades an answer the user can still see and judge, whereas a cache hit skips the model entirely and returns the opposite rule with full confidence and no signal that anything happened.
Follow any of these and your For You feed starts watching them — no settings page required.
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.
Specific numbers, self-reported and narrow
The article gives reproducible specifics - embedder (nomic-embed-text on Ollama), threshold (0.92), extreme similarities (0.9984 and 0.7470), a commit range, and a published erratum - which is far more than a typical assertion post. But the whole evidence base is one self-authored experiment of twenty hand-written pairs in one language with one embedder, no harness, no vector store, no retrieval, and no query-log grounding; the author himself found two of five negation labels invalid and notes the accept/reject populations differed in surface overlap, so the table cannot separate semantic failure from lexical overlap. No independent source corroborates any figure.
One self-owned repository, no third parties
The only adoption facts supplied concern the author's own reference implementation: the cache shipped there enabled by default, was then disabled by default, and the report gained an erratum. No external users, downstream deployments, forks, stars, or third-party reproductions are reported, so the practice change is confined to a single self-owned artifact.
Conclusion broader than the test, but self-corrected
Mildly overstated. The strong framing - 'no safe threshold existed' - is drawn from twenty hand-written Spanish pairs scored by a single embedder, and the author's own admission that his reject pairs were near-identical strings while his accept pairs barely overlapped means a lexical-overlap function would have produced the same table. That is a scope gap. It is small, however, because the article volunteers the erratum, restates the corrected count as 7 of 13, keeps the reviewer's fragility caveat in view, and confines the operational conclusion to a component that silently suppresses generation rather than to embeddings in general.
Self-published developer-blog series with reputational stake
The author is publishing about his own repository and his own prior report on a developer platform, which carries the usual reputational and audience incentives of a serial write-up; the ledger notes this is part of a multi-part series referencing 'Part 1'. Those incentives are partly offset because the piece discloses errors that weaken its own published numbers and credits an outside reviewer, which is costly rather than promotional. No commercial sponsorship, vendor relationship, or paid product is disclosed in the supplied material.
Internally consistent but unreplicated single source
Confidence is moderate-low. The narrative is internally coherent, dated, numerically specific and backed by a commit trail and erratum, so the account of what the author built, measured and changed is credible. But there is exactly one publisher and one witness, no independent replication of the similarity figures, and the author's acknowledged control weakness limits how much the finding can be trusted as a general statement about embedding-based semantic caches rather than about this corpus and embedder.
build
A cache hit is a quota refund: semantic caching with trigrams and no vector database1 distinct publisher
build
Before you buy another GPU, check num_ctx and the rope base1 distinct publisher
build
OpenClaw makes the channel the architecture, and the reasoning loop a lodger1 distinct publisher
build
Agent memory poisoning: 1.2% of the corpus, and both shipped defenses caught nothing1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 24, 2026