Skip to content

Gate spec-id references on the premise that the repo defines a corpus - #3

Merged
joshft merged 1 commit into
masterfrom
mention-premise-gate
Aug 17, 2026
Merged

Gate spec-id references on the premise that the repo defines a corpus#3
joshft merged 1 commit into
masterfrom
mention-premise-gate

Conversation

@joshft

@joshft joshft commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Fixes the external review's headline finding: the self-sweep remainder was 0/7 useful — every row an example id in this tool's own doc comments.

The reviewer's proposed fix (stricter annotation grammar / explicit invariant marker) was measured and refuted before implementing: across two real corpora (2,880 and 642 spec-id sightings in shipped code), the dominant real-assertion convention is a mid-comment parenthetical id — the exact textual shape of an explanatory example. A grammar strict enough to kill the examples kills ~80% of the real harvest.

The separator is the referent, not the shape. When the repo defines no spec-id corpus anywhere, a probe-less reference has no possible referent — it is a mention, not a claim. AnchorClaims now suppresses those, and the count is disclosed in the receipt's coverage (schema 0.0.5, suppressed_mentions), because silently dropping remainder rows would be the exact dishonesty the remainder exists to prevent.

Measured on all three legs before this PR:

  • Self-sweep: remainder 7 → 0, all 75 verified claims untouched, disclosure line present.
  • Both corpus-bearing dogfood repos: receipts byte-identical old-vs-new (modulo probe timings) — the gate is inert where a corpus exists, so true orphans still surface.

What the receipt cannot check here: the measurement numbers above come from repos outside this one; the receipt covers the code and its tests, not the external measurement.

🤖 Generated with Claude Code

https://claude.ai/code/session_015GeUG1gboWiZSnFyzQghyp

The self-sweep's remainder was 0/7 useful: every row was an id cited as
an illustrative example inside this tool's own doc comments. The obvious
fix — a stricter annotation grammar — is refuted by measurement: across
two real corpora (2,880 and 642 sightings) the dominant real-assertion
convention is a mid-comment parenthetical id, textually identical to an
explanatory example. What separates a claim from a mention is the
referent, not the shape.

So the gate sits at the premise level: when BuildDefIndex finds no
definition anywhere, the repo is not practicing the spec-id convention,
and a probe-less reference is a mention with no possible referent —
suppressed, counted, and disclosed in the receipt's coverage (dropping
remainder rows silently would be the exact dishonesty the remainder
exists to prevent). In a repo WITH a corpus nothing changes: orphans
still surface (both dogfood corpora yielded true orphans that were real
findings), and both produced byte-identical receipts under the gate.

Schema 0.0.5: Coverage gains suppressed_mentions.

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

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

Change: origin/master...HEAD (404a1be..7a29ffc) — 8 files

⚠️ Unverified remainder (0) — what nothing checked

Empty — every harvested claim reached a probe.

✅ Verified (17)
Tier Claim Statement
T1-assertion TestBuildDefIndexShapes Build Def Index Shapes
T1-assertion TestAnchorClaims Anchor Claims
T1-assertion TestAnchorClaimsNoCorpus Anchor Claims No Corpus
T1-assertion TestAnchorSubVariantFallsBackToParent Anchor Sub Variant Falls Back To Parent
T1-assertion TestAnchorChangeScopedDisambiguation Anchor Change Scoped Disambiguation
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 TestSuppressedMentionsAreDisclosed Suppressed Mentions Are Disclosed
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: 8 files — 4 claimed · 4 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.5 · exit gate: refuted claims block; the remainder informs, never fails

@joshft
joshft merged commit 77a37fe into master Aug 17, 2026
1 check passed
@joshft
joshft deleted the mention-premise-gate branch August 17, 2026 17:00
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