From 9027d8fffc63daddc4d6684009bf2e00e925933f Mon Sep 17 00:00:00 2001 From: Josh Terry Date: Mon, 17 Aug 2026 11:20:41 -0700 Subject: [PATCH] Record the MUST-binding measurement: no corpus offers a mechanical join MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The planned MUST-clause-to-test binding was measured before building, and the measurement refuted it: the one qualifying RFC's 58 keyword clauses contain zero spec identifiers and zero requirement labels, only 5 carry a code token, and that repository's tests are shell/C infrastructure suites correctful has no runner for. A fuzzy textual join would mint false bindings — the class the doc-comment binding was cut for — so clauses stay honestly in the remainder. The bindable form is named so the path stays open: explicit clause labels (R-007-style) with tests naming the label bind through the existing test-name reconciliation; support lands when a corpus adopts labels. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_015GeUG1gboWiZSnFyzQghyp --- README.md | 12 ++++++++++++ internal/harvest/rfcmust.go | 14 ++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fbc67b9..c48ab2d 100644 --- a/README.md +++ b/README.md @@ -347,6 +347,18 @@ than smoothed over: disclosed rather than hidden. Sentence extraction is heuristic (terminal punctuation + capitalization); the receipt quotes clauses verbatim, so a mis-split is visible in the receipt itself. +- **MUST clauses have no probe-carrying path — measured, not neglected.** + Binding a clause to a test needs a join signal a test can mechanically + name. Measured across every qualifying corpus: the one real RFC's 58 + keyword clauses contain zero spec identifiers and zero requirement labels, + only 5 carry a backticked code token, and that repository's tests are + shell/C infrastructure suites correctful has no runner for. A fuzzy + textual join would mint false bindings — the same class the doc-comment + binding was cut for — so clauses stay honestly in the remainder. The + bindable form is explicit: a document that labels its requirements + (`R-007`-style) with tests naming the label gets binding through the + existing test-name reconciliation; support lands when a corpus adopts + labels. ## Layout diff --git a/internal/harvest/rfcmust.go b/internal/harvest/rfcmust.go index 3b01c33..05b2047 100644 --- a/internal/harvest/rfcmust.go +++ b/internal/harvest/rfcmust.go @@ -40,10 +40,16 @@ var docExts = map[string]bool{".md": true, ".markdown": true, ".txt": true} // - The RFC 2119 / BCP 14 interpretation boilerplate is never a claim: it // declares the keywords, it doesn't use them. // -// Clauses carry no probes in v0 — binding a MUST clause to a test is the -// proof-carrying-binding increment, not a name trick. Every clause lands in -// the remainder, which is the point: the receipt now states the normative -// surface nothing checks instead of silently not knowing it exists. +// Clauses carry no probes — and that is a MEASURED state, not a deferral. +// Binding a clause to a test needs a join signal a test can mechanically +// name; measured across every qualifying corpus, the one real RFC's 58 +// keyword clauses contain zero spec-ids and zero requirement labels, and a +// fuzzy textual join would mint false bindings (the same class the +// doc-comment binding was cut for). The bindable form is explicit clause +// labels (R-007-style) named by tests — support lands when a corpus adopts +// them. Until then every clause lands in the remainder, which is the point: +// the receipt states the normative surface nothing checks instead of +// silently not knowing it exists. type RFCMustHarvester struct{} func (RFCMustHarvester) Name() string { return "rfc-must" }