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" }