Skip to content

Flag absence and capability claims as unverified-shaped in diu-stop - #1401

Merged
EdbertChan merged 1 commit into
mainfrom
land/pr-1383-on-main
Oct 13, 2026
Merged

EdbertChan merged 1 commit into
mainfrom
land/pr-1383-on-main

Conversation

@EdbertChan

@EdbertChan EdbertChan commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Replaces #1383: same change, rebased onto main. The original sits in a GitHub-managed PR chain that refused the merge and refused a base change, so this one is opened straight against main under the admin-bypass sweep.

Summary

A checker reads each reply before Claude sends it. It asks for proof whenever a claim sounds like a fact about the world.

The problem: claims like "there is no such call" or "that can't be done" slipped through with no proof, though they are claims too.

The fix: those phrases now count. A reply with one needs real output or an honest tag, like any other claim.

Replies without such phrases stay silent.

Review Claim

Claims that something does not exist or cannot be done now need proof or a tag before the reply is sent.

Review Lane

behavior

Review Unit

engine-runtime

Safety Invariant

Each change only affects when a checker warns about or blocks a reply. Checkers never edit files or run commands, and each change adds tests that fail before and pass after.

Slice Rationale

This slice stands alone: it only widens which phrases trigger the notice. The wording and retry changes sit in the previous slice, and the citation cleanup in the next one.

Non-goals

  • Does not change the text of the notice.
  • Does not change the retry or release rules.
  • Does not cover phrases beyond the five absence and capability forms in the diff.

Measured

Command: source scripts/test/hermetic_env.sh; python3 engine/hooks/diu-stop/tests/test_hooks.py with this commit's fixtures and the parent's checker code (base) versus this commit's checker code (head).

  • base: diu-stop: Ran 98 tests, FAILED (failures=5)
  • head: diu-stop: Ran 98 tests, OK

Test Plan

Test Plan
  • source scripts/test/hermetic_env.sh; python3 engine/hooks/diu-stop/tests/test_hooks.py -> Ran 98 tests, OK
  • python3 scripts/ci/check_hook_test_coverage.py engine/hooks/diu-stop -> check_hook_test_coverage: OK (1 hook(s) checked)
  • A fixture that fires (absence claims) and a fixture that stays silent (plain replies) are added.

Revert Plan

Revert Plan
  • Safe to revert? Yes
  • Revert command: git revert <merge commit of this PR>
  • Post-revert steps: None
  • Data migration? No

🤖 Generated with Claude Code


Note

Low Risk
Only widens Stop-hook phrase detection and adds fixtures; no changes to notice text, retry rules, or file/command side effects.

Overview
The diu-stop unverified-claim checker now treats absence and impossibility wording like other fact-shaped claims, so replies must show evidence or a {{CAT-UNVERIFIED}} tag in the same paragraph.

A new ABSENCE_CLAIM_RE pattern flags phrases such as has/have/had no, there is/are/was/were no, no single, no such call/api/endpoint/function/way, and can't/cannot be done. _paragraph_claim runs this regex alongside the existing causal and hedge patterns. Fixture tests cover five firing cases and three silent cases (fenced output, well-formed tag, plain reply without those phrases).

Reviewed by Cursor Bugbot for commit c00094b. Bugbot is set up for automated code reviews on this repo. Configure here.

🤖 Generated with Claude Code

'has no', 'there is no', 'no single', 'no such call' and 'can't be done'
now trigger the unverified-claim check, so a no-such-call claim needs
output or a tag like any other claim.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Change-Id: I6f50c350c18dfe9c42a78f4d5d17b48b151af2b9
@cursor

cursor Bot commented Oct 13, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: 007b7c44-e7f5-4ee5-8086-c39bb465d626)

@EdbertChan
EdbertChan merged commit 0672471 into main Oct 13, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant