Enforce the tier floor on verification; fix the stale refutation comment - #2
Merged
Conversation
Evidence.Verified now requires Tier > T0: a pass at T0 confers nothing, because T0 IS the unverified tier — counting such a pass would mint StatusVerified with an effective tier that means "nothing checked this". Latent until now (no runner declares MaxTier T0), but the dispatcher's tier clamp made it reachable the moment one did. The StatusRefuted comment claimed refutation could be outvoted by a pass at a higher tier; weigh() has never worked that way — refutation dominates unconditionally, which is load-bearing. The comment now says what the code does. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015GeUG1gboWiZSnFyzQghyp
correctful receipt13 claims — ✅ 11 verified · ❌ 0 refuted · Change:
|
| Claim | Statement | Source |
|---|---|---|
INV-004 |
INV-004 (referenced; no bound probe from harvest) | schema/schema.go:113 |
INV-009 |
INV-009 (referenced; no bound probe from harvest) | schema/schema.go:154 |
✅ Verified (11)
| Tier | Claim | Statement |
|---|---|---|
| T1-assertion | INV-001 |
Remainder Contains Every Unverified Claim |
| T1-assertion | INV-002 |
Refuted Claim Never Enters Remainder |
| T1-assertion | TestVerifiedClaimCarriesProbeTier |
Verified Claim Carries Probe Tier |
| T1-assertion | INV-007 |
Refutation Dominates Verification |
| T1-assertion | TestT0PassConfersNoVerification |
T0 Pass Confers No Verification |
| T1-assertion | TestRemainderSectionAlwaysRenders |
Remainder Section Always Renders |
| T1-assertion | TestCoverageDisclosesUnreadFiles |
Coverage Discloses Unread Files |
| T1-assertion | TestAnchoringSummaryAndMarkers |
Anchoring Summary And Markers |
| T1-assertion | TestLLMProposedMarker |
LLMProposed Marker |
| T1-assertion | TestRefutedDetailComesFromFailingProbe |
Refuted Detail Comes From Failing Probe |
| T1-assertion | TestReceiptSanitizesPathsAndPinsSHAs |
Receipt Sanitizes Paths And Pins SHAs |
Harvest coverage: 3 files — 2 claimed · 1 scanned · 0 unread
schema 0.0.4 · exit gate: refuted claims block; the remainder informs, never fails
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two consistency defects from external review, both verified in code before fixing:
Evidence.Verified()accepted a passing probe at T0, which would mintStatusVerifiedwithEffectiveTier: T0— a verified row whose tier means "nothing checked this". The tier floor is now part ofVerified()itself (the one production consumer isweigh), and a new test pins the contract: a T0 pass leaves the claim in the remainder.StatusRefuteddoc comment described tier-conditional dominance ("none passed at a higher tier");weighhas always implemented unconditional refutation dominance, which is the load-bearing rule. Comment corrected.What the receipt cannot check here: the doc-comment corrections are prose; the tier-floor change is covered by the new
TestT0PassConfersNoVerification.🤖 Generated with Claude Code
https://claude.ai/code/session_015GeUG1gboWiZSnFyzQghyp