Skip to content

Add the policy layer: evidence floors per path, gate-blocking misses - #18

Merged
joshft merged 1 commit into
masterfrom
policy-layer
Aug 17, 2026
Merged

Add the policy layer: evidence floors per path, gate-blocking misses#18
joshft merged 1 commit into
masterfrom
policy-layer

Conversation

@joshft

@joshft joshft commented Aug 17, 2026

Copy link
Copy Markdown
Owner

The end state's second commitment delivered: correctful.json declares per-path evidence floors (min tier + required mechanism + required scope). Per-file evaluation with structural ties only (claim source file or reference site); misses block the gate; test files exempt and counted; policy digest is the second chain field; malformed policy fails loudly. Evidence.CountsFor moves the LLM edge gate to the schema — one definition for weighing and policy. Live-measured on a real annotated repo (correctly blocked 18/18 untied files). Schema 0.0.11.

🤖 Generated with Claude Code

https://claude.ai/code/session_015GeUG1gboWiZSnFyzQghyp

correctful.json at the repo root declares rules — paths plus a floor
(min_tier, optionally a required mechanism and scope). Evaluation is per
changed file, and the tie between a file and its evidence is STRUCTURAL,
never assumed: a verified claim speaks for a file only when sourced from
it or when a reference site in shipped code names it. A matched file
nothing ties evidence to misses with exactly that reason; misses block
the gate like refutations. Test files are exempt and the exemption is
counted. The policy digest (SHA-256 over the exact bytes) is the second
chain field, rendered beside the change. A malformed policy fails loudly
before any probe runs — a broken floor must never fail open.

Evidence.CountsFor moves the LLM edge gate into the schema so weighing
and policy evaluation share one definition and can never disagree.

Measured live on a real annotated repo's branch: a T1 floor matched 26
files, exempted 8 test files, and correctly blocked on all 18 evaluated
files — the branch's verified claims are test-name-sourced with no
reconciled code annotations, so no evidence structurally ties to the
changed code. Schema 0.0.11.

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

23 claims — ✅ 23 verified · ❌ 0 refuted · ⚠️ 0 unverified

Change: origin/master...HEAD (fb1840e..3a9319f · input:e944c9f28bbd) — 9 files

⚠️ Unverified remainder (0) — what nothing checked

Empty — every harvested claim reached a probe.

✅ Verified (23)
Tier Claim Statement
T1-assertion TestLoadValidatesAndDigests Load Validates And Digests
T1-assertion TestPatternMatching Pattern Matching
T1-assertion TestEvaluateFloors Evaluate Floors
T1-assertion TestEvaluateScopeFloorAndLLMGate Evaluate Scope Floor And LLMGate
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 TestScopeExclusionsAndInputDigestAreDisclosed Scope Exclusions And Input Digest Are Disclosed
T1-assertion TestSuppressedMentionsAreDisclosed Suppressed Mentions Are Disclosed
T1-assertion TestRemainderSectionAlwaysRenders Remainder Section Always Renders
T1-assertion TestCoverageDisclosesUnreadFiles Coverage Discloses Unread Files
T1-assertion TestUnreadCausesRenderSeparately Unread Causes Render Separately
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
T1-assertion TestDetailSanitizationIsCategorical Detail Sanitization Is Categorical
T1-assertion TestLLMPassCountsOnlyWithConfirmedEdge LLMPass Counts Only With Confirmed Edge
T1-assertion TestLLMVerifiedRowKeepsProvenance LLMVerified Row Keeps Provenance
T1-assertion TestReceiptCarriesToolVersion Receipt Carries Tool Version
T1-assertion TestPolicySectionRenders Policy Section Renders

Harvest coverage: 9 files — 3 claimed · 6 scanned · 0 unread
2 spec-id mention(s) not minted as claims — the repo defines no spec-id corpus, so a reference has no possible referent

schema 0.0.11 · correctful v0.0.0-20260817220144-3a9319fac090 3a9319f · exit gate: refuted claims block; the remainder informs, never fails

@joshft
joshft merged commit 5861413 into master Aug 17, 2026
1 check passed
@joshft
joshft deleted the policy-layer branch August 18, 2026 00:05
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