[KongchangAI]
· 3 min read· 1,560 words

AI Safety Check Blind Spot: Why All 28 Wrong Answers Passed

AI Safety Check Blind Spot: Why All 28 Wrong Answers Passed

AI safety checks only verify numbers and vocabulary in the source text, accepting all 28 answers with correct deadlines but wrong attribution.

The author tested their own AI safety check system with 14 groups of Romanian legal Q&A, each containing one correct answer and two answers with the correct deadline but wrong party or action. Results showed that a checker based on "whether numbers and vocabulary appear in the source text" accepted all 28 wrong answers, because it cannot recognize relational errors like "who does what." Adding check logic produced no change across any of the 42 verdicts. Meanwhile, the small model gemma2:2b as a checker rejected 10 of 14 correct answers, its surface-level strictness masking insufficient actual checking ability. The author emphasizes that evaluating checkers must report both "wrong answers accepted" and "correct answers rejected" dimensions, as a single pass rate hides key flaws. The test set and all responses are open-sourced.

Quick takeaway: We ran 42 answers about Romanian legal deadlines through our own AI safety check system. Of these, 28 answers had the correct deadline number but attributed it to the wrong party or the wrong action. Our check system accepted all 28 wrong answers. A small open-source model (gemma2:2b) used as a checker accepted 8 of the 28, but it also rejected 10 of the 14 correct answers. Adding our check logic to the model produced no change across any of the 42 verdicts. The test set, grader, and all responses are publicly available.

rss source: Right Deadline, Wrong Party: Our AI Checks Accepted 28 of 28 Wrong Answers

Where the Problem Began

Ten days ago, we published "We Tested Our Own AI Safety Checks. They Caught Nothing". After removing the answer from the text, the model borrowed a different deadline from the same article: 15 days instead of 30, and that 15 days belonged to the institution's reply deadline, not the individual's complaint deadline. Our check passed that answer because both the number and the wording genuinely appeared in the source document.

In the comments on dev.to, Ahmet Özel suggested how to test this failure mode head-on: keep the passage fixed, and pair a correct answer with an answer that keeps the deadline but attributes it to another party. Report two numbers, each based on its own denominator — because a checker that rejects everything scores perfectly on wrong answers. He later added a second control group: the correct party, but tied to the wrong action. We built both groups.

RAG (Retrieval-Augmented Generation) and the "Citation Traceability" Trap

The check logic mentioned in the original article belongs to a typical RAG (Retrieval-Augmented Generation) architecture: the model first retrieves a relevant passage, then generates an answer based on that passage. A common safety check in such systems is "citation traceability verification" — confirming whether the numbers and phrases in the answer actually appear in the cited source text. The problem is that this kind of check can only verify token-level correspondence, not semantic relationships. If an answer incorrectly binds the genuinely present number of 15 days to the action of "the aggrieved party submitting a complaint," token matching still passes completely, but the semantics have already shifted. In other words, the checker is answering "do these words appear in the original text," while what users actually need is "does the proposition formed by these words match the original text." This blind spot of "high lexical overlap but wrong relationships" is a common flaw in many current string-matching-based AI output verification mechanisms, and it is also the core motivation behind the test set design in this article.

Test Set Design

Fourteen groups were selected from three Romanian legal texts: Law No. 544/2001 on access to public information, Law No. 190/2018 implementing the GDPR, and Order No. 600/2018 from the General Secretariat of the Government on internal management control. Each group contains an official passage (verified word-for-word against the source document at each build), a question, and three candidate answers:

  • valid: a paraphrase that preserves "who, does what, deadline";
  • wrong party: the same deadline and action, but attributed to another party mentioned in the same law;
  • wrong action: the same party and deadline, but tied to another action.

Since the passage is fixed, retrieval plays no role. The only thing that changes within a group is "who does what."

Take Article 21 of Law No. 544/2001 as an example: a complaint against a refusal may be filed with the head of the institution within 30 days; if the complaint is found justified, the reply shall be sent to the aggrieved party within 15 days. The question asks: who has these 15 days, and for what? The three answers (translated):

  • valid: If the complaint is found justified, the institution must send the originally requested information and the sanctions against the party at fault to the aggrieved party within 15 days of filing;
  • wrong party: The aggrieved party must file a complaint with the head of the institution within 15 days;
  • wrong action: The head of the institution has 15 days from filing to dismiss the complaint.

All three answers are constructed from the wording and numbers of the passage itself.

Experimental Results

Run on October 15, 2026, with gemma2:2b running on the CPU of our own server. The model sees the passage, the question, and one candidate answer, and must reply ACCEPT or REJECT. "Our checks" are the two gates in the demo that examine the answer itself: C, every number must appear in the source document; D, every sentence must share enough vocabulary with the source document.

Wrong answers acceptedOf which wrong partyOf which wrong actionCorrect answers rejected
Our checks only28/2814/1414/146/14
Model only8/286/142/1410/14
Model plus our checks8/286/142/1410/14

Every response was a clean ACCEPT or REJECT, with no parsing failures.

Why "Two Denominators" Are Needed — The Symmetry of Precision and Recall

The two columns "wrong answers accepted" and "correct answers rejected" in the table essentially correspond to precision and recall in classifier evaluation. A checker that only ever says REJECT performs perfectly on "rejecting wrong answers," but it will reject all correct answers — looking only at the wrong-answer interception rate gives a perfect score, while looking at the correct-answer pass rate drops to zero. The "two denominators" emphasized in the original article are precisely the concretization of this trade-off: the denominator for wrong answers is 28 (14 groups × 2 error types), and the denominator for correct answers is 14. Only by reporting both numbers simultaneously can one avoid being misled by a single metric. This is also a basic discipline in machine learning evaluation — for any binary classification system, reporting the ratio for only one side is incomplete, especially when the positive and negative samples are highly imbalanced or the task itself is asymmetric, hidden failure modes become completely invisible.

What the Data Shows

Our checks cannot see relationships. The wrong-party answers reuse the wording and numbers of their passage, so the answer to "does this appear in the source document?" is always "yes." They accepted all 28 wrong answers.

Adding check logic changed nothing. The 42 verdicts were identical with and without the check logic. The 6 correct answers our checks rejected were rejected because they were more heavily paraphrased and shared less vocabulary with the legal text, and the model had already rejected those same 6.

The model is strict, but not good. Accepting 2 of 14 wrong-action answers looks like a capable checker — until you look at the last column: it rejected 10 of 14 correct answers. In the 15-day group above, it rejected all three answers, including the correct one. Most of its "catches" were actually rejections. This is exactly the trade-off the two denominators are meant to expose, and a single pass rate would hide it.

One that slipped through. Another group asked: who can file a complaint against a refusal by the designated employee responsible for responding to requests? The wrong answer said the designated employee could file it — the rejecter became the complainant. The model accepted it.

"Who Does What" Falls Under Semantic Role Labeling

The recurring "who does what" question in this article corresponds in natural language processing to Semantic Role Labeling (SRL) — identifying the semantic relationships between a predicate and its arguments in a sentence, such as agent, patient, time, location, and so on. "Within 15 days" in Romanian legal texts is a temporal argument, but which predicate and which agent it attaches to is the key to determining whether an answer is right or wrong. A checker based on lexical overlap cannot capture this structure, because it treats sentences as bags of words and loses the binding relationships between arguments. To check "who does what," what is needed is a model or rules capable of parsing predicate-argument structure, not string matching. This also explains why adding the existing check logic produced no change in the verdicts — the dimension it checks and the dimension where the error occurs are simply not on the same level.

Limitations

14 groups, one 2-billion-parameter model, one run. Three valid paraphrases were corrected before the run because they changed the legal meaning; the corrections are in the same commit as the test set. We have not yet run larger models on this test set, so we make no claims about them.

What We Learned

  • A check that asks "does this appear in the source document?" will pass an answer that transfers a real deadline to the wrong object. "Who does what" is a different question and requires a purpose-built check.
  • Measure checkers from both sides. Counting only the wrong answers it accepts rewards a checker that says "no" to everything.
  • Readers make tests better. This test set exists because a commenter took our failure seriously and proposed a control group.

Test set, grader, and all responses: github.com/MariusGithub13/ro-cited-answers, in the eval/ folder.

In your own documents, which relationship would your checks miss: who, what, or when?

#AI safety check#RAG#semantic role labeling#precision recall#Romanian legal text#gemma2#citation traceability#LLM evaluation
Share:

Related articles