Skip to content

Split the unread disclosure into its two causes - #12

Merged
joshft merged 1 commit into
masterfrom
unread-cause-split
Aug 17, 2026
Merged

Split the unread disclosure into its two causes#12
joshft merged 1 commit into
masterfrom
unread-cause-split

Conversation

@joshft

@joshft joshft commented Aug 17, 2026

Copy link
Copy Markdown
Owner

"Unread" merged a capability gap (no harvester for the format) with a policy skip (hidden paths hold installed tooling). The first pre-push dogfood install surfaced the problem live: a repository's tracked hidden documents rendered as "no harvester for .md" when a markdown harvester exists. The cause was policy, and the receipt now says so.

  • Schema 0.0.7: FileCoverage.skip_reason ("no-harvester" | "hidden-path") and Coverage.unread_policy.
  • Both renderers emit two separate histogram lines, one per cause.
  • Back-compatible render: a coverage record without the field renders as a capability gap.
  • Live check: the affected repository's receipt now shows one policy line and no false capability line.

🤖 Generated with Claude Code

https://claude.ai/code/session_015GeUG1gboWiZSnFyzQghyp

"Unread" merged two different stories: a capability gap (no harvester
understands the format) and a policy skip (hidden paths hold installed
tooling). The merge misleads — found live on the first pre-push dogfood
install, where a repo's tracked hidden documents rendered as "no
harvester for .md" when a markdown harvester exists.

Schema 0.0.7: FileCoverage gains skip_reason ("no-harvester" |
"hidden-path"), Coverage gains unread_policy. Both renderers emit two
distinct histogram lines. A coverage record without the new field still
renders as a capability gap, so older JSON stays readable.

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

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

Change: origin/master...HEAD (89ea82d..b790c99 · input:4c1163d9c57e) — 7 files

⚠️ Unverified remainder (0) — what nothing checked

Empty — every harvested claim reached a probe.

✅ Verified (29)
Tier Claim Statement
T1-assertion INV-005 Segment Detection Recognizes Mid Name IDs
T1-assertion TestExtraBoundIDsBindsMultiIDNames Extra Bound IDs Binds Multi IDNames
T1-assertion INV-006 Harvest Does Not Bind Doc Comment Only IDs
T1-assertion INV-009 Coverage Three Way Split [binding: coverage-proven]
T1-assertion INV-003 Spec IDNormalizes To Canonical Form
T1-assertion TestHumanizeSplitsCamelCase Humanize Splits Camel Case
T1-assertion TestClaimFromInvariantTestNameBindsProbe Claim From Invariant Test Name Binds Probe
T1-assertion INV-004 Spec Ref Harvests Code Not Prose [binding: name-only]
T1-assertion INV-008 Pair Detection Mints T2 Pair Probe [binding: name-only]
T1-assertion TestPairDetectionRequiresSamePackage Pair Detection Requires Same Package
T1-assertion TestPolarityClassificationIsConservative Polarity Classification Is Conservative
T1-assertion TestIsTestFunc Is Test Func
T1-assertion TestRefSitesCollectedAndMerged Ref Sites Collected And Merged
T1-assertion TestSpecRefSkipsTestFilesAndTestdata Spec Ref Skips Test Files And Testdata
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

Harvest coverage: 7 files — 4 claimed · 3 scanned · 0 unread
5 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.7 · exit gate: refuted claims block; the remainder informs, never fails

@joshft
joshft merged commit 124324c into master Aug 17, 2026
1 check passed
@joshft
joshft deleted the unread-cause-split branch August 17, 2026 20:38
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