The advice takes its own advice, and the teacher package stops quoting a corpus of ninety - #96
Merged
Merged
Conversation
Closes #82. The packs delivered their advice with the mark one of the rules is about, the three empty-intensifier rules among them. Measured with the project's own instrument, rules.en.json advised at 2.1 em-dashes per 100 words -- which EmDashAnalyzer calls Medium severity on anybody else's prose. 49 strings reworded. A list of alternatives keeps a comma ("mix, blend, range, or just name the thing"); a description that follows a label takes a colon ("empty intensifier: cut it"). Two were left with a full stop instead, because "who wrote it: and a text inside the range" is not English -- the issue's own guard rail: if a rewrite reads worse, leave it. The part that was NOT cosmetic, and the issue said it was: SuggestionParser cuts a suggestion at the first aside marker, and the em-dash is one of them. Twenty built-in rules state no `replacements` and fall through to that parser, so "empty intensifier -- cut it" yielded one term and was refused for being alone. A comma would have yielded two, and the live rewriter substitutes two: the words "empty intensifier" would have gone into somebody's sentence in place of "just". A colon is filtered by the parser; a comma is not. So the guard for that is the one that matters, and it is not a ban on dashes: - every built-in rule without explicit replacements must salvage nothing - each pack is held to the same 1.0 per 100 words the rule applies to everyone, rather than to zero, which would be a stricter rule than the one we publish Both verified by mutation: the comma version fails by rule id, and the previous pack fails the density test at 2.1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
Closes #78. The issue listed ten surfaces still saying "before generative models existed" and its own comment reported them swept in #85. Verified against the code first, and that was true: all ten are clean. Two the issue never listed were not. Docs/Paraphrase/README.md was the small one -- the phrase, nothing else. Docs/Teaching/README.md is the teacher package, and it carried five stale claims in a single paragraph. The paragraph whose entire job is "this project can afford to say all that because it publishes how often it is wrong": ninety texts -> 296 before generative models -> before 2022 none flagged -> two are, at the recommended threshold below 4.1% -> below 2.4% neither language supports its own threshold -> English has since 0.6.0 Six weeks of a page telling teachers the error rate was zero, on the artefact written for the person who has to act on a score. #85 fixed exactly this rot on why.html and never looked here, because nothing pointed from one to the other. So TeacherPackageTests reads the same published-calibration.json the engine ships, the way WhyPageTests does. It also pins the two distinctions that are easy to get wrong and were: that "ninguno marcado" must never come back while anything is flagged, and that the figure quoted beside English is the bound *at its threshold*, not its best bound -- the error a reviewer caught in the report on 1 September. Verified by mutation: all three fail against the paragraph that was live, each naming its own defect. The guard normalises whitespace, because a phrase can straddle a hand-wrapped line and a guard that breaks on reflowing is one somebody weakens instead of satisfying. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two issues that looked like tidying. Neither was.
#82 — the advice took its own advice
The packs delivered their advice with the mark one of the rules is about, the three empty-intensifier rules among them. Measured with the project's own instrument:
rules.en.jsonadvised at 2.1 em-dashes per 100 words, whichEmDashAnalyzercalls Medium severity on anybody else's prose.49 strings reworded. A list of alternatives keeps a comma —
mix, blend, range, or just name the thing. A description after a label takes a colon —empty intensifier: cut it. Two were left with a full stop instead, because "who wrote it: and a text inside the range" is not English; the issue's own guard rail says if a rewrite reads worse, leave it.The part the issue called cosmetic and is not.
SuggestionParsercuts a suggestion at the first aside marker, and the em-dash is one of them. Twenty built-in rules state noreplacementsand fall through to that parser, soempty intensifier — cut ityielded one term and was refused for being alone.A comma would have yielded two, and the live rewriter substitutes two. The words "empty intensifier" would have gone into somebody's sentence in place of "just". A colon is filtered by the parser; a comma is not. The obvious rewrite was the dangerous one.
So the guards are, per the issue's instruction, not a ban on dashes:
replacementsmust salvage nothing#78 — verified before working, and the issue was already done
The issue listed ten surfaces and its own comment reported them swept in #85. That was true — all ten are clean. Two it never listed were not.
Docs/Paraphrase/README.mdwas the small one.Docs/Teaching/README.md— the teacher package — carried five stale claims in one paragraph, the paragraph whose whole job is "this project can afford to say all that because it publishes how often it is wrong":Six weeks telling teachers the error rate was zero, on the artefact written for the person who has to act on a score. #85 fixed exactly this rot on
why.htmland never looked here, because nothing pointed from one to the other.TeacherPackageTestsnow reads the samepublished-calibration.jsonthe engine ships, the wayWhyPageTestsdoes. It also pins the two distinctions that are easy to get wrong and were:ninguno marcadomust never return while anything is flagged, and the figure beside English is the bound at its threshold, not its best bound — the error a reviewer caught in the report on 1 September.Verification
Every guard mutation-checked, since one that has never failed is untested:
rules.en.jsonfails the density test at 2.1366 + 72 + 7, plus the Windows desktop job's 31. The teacher guard normalises whitespace: a phrase can straddle a hand-wrapped line, and a guard that breaks on reflowing is one somebody weakens instead of satisfying.
🤖 Generated with Claude Code
https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF