Skip to content

Commit 491396d

Browse files
derek73claude
andcommitted
docs(rules): say what a boundary example is, and unmark a contrast
"Juan y Garcia" reads oddly as a boundary — y is inside P3's carve-out, not outside the rule. Surveying all 39 markers shows that is the convention rather than a slip: H1's boundary is "Sir John" (its given-name-title exception), H2's is "J. Smith" (bare initials, which its statement excludes), H3's is a title word mid-name. The marker means the rule's effect does not occur, and the informative case is almost always the rule's own exception. The preamble now says so. What was genuinely wrong is that P3 carried two markers meaning different things. "Mr. Jack Jill" is the contrast half of the H1 one-word pair — no connective is present at all — so it is not a limit of P3 and no longer claims to be. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 499c402 commit 491396d

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

‎docs/design/rules.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Every example line is EXECUTABLE. The grammar (its executable definition is `tes
1111
"INPUT" [annotation] → field="value" [· boundary]
1212
[deviates: #N (today: field="value")]
1313

14-
An `annotation` names a policy, locale (`[ru]`), or extras gate (`[ja+segmenter]`) in the registry beside the test. `· boundary` marks the non-firing example every rule must carry — or the rule declares `no-boundary: <reason>` instead, so skipping the boundary is a recorded decision. `deviates:` states the INTENDED output on the example line while the marker records TODAY's output and the tracking issue; the runner asserts today's output strictly, so a parser change that closes the gap fails the suite until the marker is removed in the same PR. `grep deviates:` on this file is the deviation backlog (deviations from statable rules — coverage gaps are a separate, larger category no grep can see, and contested vocabulary memberships a third, tracked as Open blocks keyed to the vocabulary set in decisions.md).
14+
An `annotation` names a policy, locale (`[ru]`), or extras gate (`[ja+segmenter]`) in the registry beside the test. `· boundary` marks the non-firing example every rule must carry: an input shaped like the rule's subject where its effect does NOT occur. That is usually the rule's OWN stated exception — H1's given-name title, P3's single-letter carve-out — not an input the rule never reaches, so the exception is executable rather than merely asserted. Or the rule declares `no-boundary: <reason>` instead, so skipping the boundary is a recorded decision. `deviates:` states the INTENDED output on the example line while the marker records TODAY's output and the tracking issue; the runner asserts today's output strictly, so a parser change that closes the gap fails the suite until the marker is removed in the same PR. `grep deviates:` on this file is the deviation backlog (deviations from statable rules — coverage gaps are a separate, larger category no grep can see, and contested vocabulary memberships a third, tracked as Open blocks keyed to the vocabulary set in decisions.md).
1515

1616
## Not in scope
1717

@@ -159,7 +159,7 @@ P3. Rationale: connective words ("y", "of the") bind name words into
159159
"Juan and Garcia" → given="Juan and Garcia"
160160
"Juan & Garcia" → given="Juan & Garcia"
161161
"Mr. Jack and Jill" → family="Jack and Jill"
162-
"Mr. Jack Jill" → given="Jack" · boundary
162+
"Mr. Jack Jill" → given="Jack"
163163
Both exceptions are about the written FORM, not the word: the
164164
three-word carve-out counts letters, so a symbol connective joins
165165
at any length, and it reaches every single-letter connective the

0 commit comments

Comments
 (0)