Skip to content

Enforce the tier floor on verification; fix the stale refutation comment - #2

Merged
joshft merged 1 commit into
masterfrom
weigh-consistency
Aug 17, 2026
Merged

Enforce the tier floor on verification; fix the stale refutation comment#2
joshft merged 1 commit into
masterfrom
weigh-consistency

Conversation

@joshft

@joshft joshft commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Two consistency defects from external review, both verified in code before fixing:

  • Evidence.Verified() accepted a passing probe at T0, which would mint StatusVerified with EffectiveTier: T0 — a verified row whose tier means "nothing checked this". The tier floor is now part of Verified() itself (the one production consumer is weigh), and a new test pins the contract: a T0 pass leaves the claim in the remainder.
  • The StatusRefuted doc comment described tier-conditional dominance ("none passed at a higher tier"); weigh has 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

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
@github-actions

Copy link
Copy Markdown

correctful receipt

13 claims — ✅ 11 verified · ❌ 0 refuted · ⚠️ 2 unverified

Change: origin/master...HEAD (6d79b77..d332508) — 3 files

⚠️ Unverified remainder (2) — what nothing checked

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

@joshft
joshft merged commit 404a1be into master Aug 17, 2026
1 check passed
@joshft
joshft deleted the weigh-consistency branch August 17, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant