[Hooks Cannot See] (2) Require the output to entail the claim, not merely agree - #519
Conversation
|
This pull request is part of a Mergify stack:
|
Bugbot couldn't run - usage limit reachedBugbot 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: serverGenReqId_bac5280c-bd98-4100-8056-7d56a041abd8) |
…ody checker on PR #519's live body after the rewrite. Goal: Prove the body passes as published. Motivation: A PATCH that returned 200 is not proof the live body passes. Safety invariant: Read-only; a failed fetch fails the task instead of passing. Verify: exit code 0 and output PR body validation passed. Effectiveness measurement: The same checker the required GitHub check runs passes on the live body, so the PR is no longer blocked on its text. Exit code: 0
…ody checker on PR #519's live body after the rewrite. Goal: Prove the body passes as published. Motivation: A PATCH that returned 200 is not proof the live body passes. Safety invariant: Read-only; a failed fetch fails the task instead of passing. Verify: exit code 0 and output PR body validation passed. Effectiveness measurement: The same checker the required GitHub check runs passes on the live body, so the PR is no longer blocked on its text. Exit code: 0
|
Queued — the merge queue status continues in this comment ↓. |
|
Mergify repair stopped: missing required check validate |
…rely agree The session behind slice (1) ran one command against one container image and proved that image had no corepack. That was written up as corepack having been removed from Node 25+, a version-boundary claim no command in the session ever checked. The output was true and the sentence was wider than the output. prove-it already covers a missing check and a hedge. It did not cover a check that ran, came back narrower than the claim, and got filed under the wider heading anyway -- which is the common case, because the cheap check is always the reachable instance. It binds hardest in a correction: restating the original overclaim while pasting a narrower proof relabels the mistake as a fix, which is what happened here before the rule existed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ZqCxSQVpmM9Rx37C7irgf Change-Id: Ibc32514be641d37277115faf6068e75ea02e0083
…the claim The skill test coverage gate requires a test change with any rule-shaped SKILL.md change. The new entailment rule gets a fires_ example, matching how the subagent-contradiction rule got fires_subagent_contradiction.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HQ9TkZeqARxv3e7W7xesYy Change-Id: Ia60c5c6a87b249bb186b83a5be5b0717603536bd
9146fb8 to
2371e0a
Compare
Bugbot couldn't run - usage limit reachedBugbot 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: serverGenReqId_32251928-9b58-4efa-a30f-80c5cb0e5a24) |
|
@Mergifyio queue |
Merge Queue Status
This pull request spent 8 minutes 57 seconds in the queue, including 8 minutes 12 seconds running CI. Required conditions to merge
|
Summary
This guidance helps people compare a statement with its evidence, so reviewers can tell what a result really proves.
A single container image was used to support a broader claim about newer runtime versions.
The check covered only that image, not the version boundary, so its output was true but the sentence overreached.
The new rule keeps claims within the tested case and marks broader claims as open.
Review Claim
Approve a rule that requires evidence to support the full statement, not merely agree with it.
Review Lane
behavior
Review Unit
corpus-lesson
Safety Invariant
Only the body of pull request #519 changes. No commits, pushes, branch changes, labels, comments, or edits to any other pull request are made. The body is published only after the checker passes, and the live body is checked again after publication.
Slice Rationale
Split from slice (1) because
docs/ecosystem.mdforbids engine runtime and corpus lessons in the same PR, andscripts/check_ecosystem_boundaries.pyrejected the combined branch by name.It sits after (1) because (1) is the mechanical half of the same reflect pass; a reviewer who reads the detectors first has the concrete failure in hand before the general rule.
Non-goals
Does not add a hook. Judging whether pasted output entails a sentence is a meaning question, not a regex one; the mechanical candidate is an
llm-judgeand is not in this slice.Does not touch
engine/. That is slice (1).Does not restate the existing missing-check or hedge rules, which already cover their cases.
Test Plan
Test Plan
Prose-only slice; the gates that apply are the skill and ecosystem checks.
Whole repo suite on the combined branch before the split:
python3 scripts/check_ecosystem_boundaries.pypython3 scripts/check_skill_file_refs.pypython3 scripts/check_skill_test_coverage.py --base origin/main— passes withtests/fires_narrow_output_wide_claim.md, the example for the new rulepython3 scripts/check_skills_three_harnesses.pybash scripts/run_all_tests.sh— 49 directories, 0 failuresRevert Plan
Revert Plan
git revert <sha>