Write the report for whoever has to read it - #39
Merged
Conversation
The report addressed the document and not the reader. Its caveats — the part this project insists must be read, and the only part that limits the score — were English whatever the reader's language, so a Spanish-speaking committee got the number and not the doubt. The two languages are independent and stay that way: quoted findings follow the analysed text, because translating the sentence around a quoted English word produces neither language. Caveats and headings follow the interface. Report prose therefore lives in its own resource keyed by interface language, not in the rule packs, which are selected by the analysed language and would have guaranteed the wrong one for exactly the teacher this is for. Also fixes a bug that was latent only because two languages happen to have strata: a language absent from the corpus inherited the aggregate false-positive rate and the aggregate threshold, and the page announced it had been "analysed as English". A figure this project prints must name the population it was measured on, and a page that goes to a disciplinary meeting must not state a fact that is false. Nothing in C# had to change for that to fire — the rule packs are JSON anyone can send by PR. An incomplete translation marks each block it could not carry. A language with no resource at all carries one notice instead of sixty markers, and is written in English rather than withheld: refusing to render loses the evidence entirely, which is the outcome this feature exists to prevent. Closes #36. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Closes #36.
The report addressed the document, not the reader. Its caveats — the part this project insists must be read, and the only part that limits the score — came out in English whatever the reader's language. A Spanish-speaking committee got the number and not the doubt.
The two languages stay independent. Quoted findings follow the analysed text; translating the sentence around a quoted English word produces neither language. Caveats and headings follow the interface. So report prose lives in its own resource keyed by interface language (
report.{lang}.json) rather than in the rule packs — packs are selected by the analysed language and would have guaranteed the wrong one for exactly the teacher this is for.It also fixes a bug, latent only because both current languages happen to have their own stratum. A language absent from the calibration corpus inherited the aggregate false-positive rate and the aggregate threshold, and the page announced it had been "analysed as English". Any figure this project prints must name the population it was measured on, and a page that goes to a disciplinary meeting must not state a fact that is false. No C# change was needed to trigger it: rule packs are JSON anyone can open a PR with.
Partial translations are the normal case. Each block that could not be carried is marked in the reader's language, with the total near the top. A language with no resource at all gets one notice rather than sixty markers — and is written in English rather than withheld. Refusing to render loses the evidence entirely, which is the outcome this feature exists to prevent: a teacher with two hundred essays and a button that does nothing is worse off than one holding a report they must read in English.
Translations pin a SHA-256 of the English source they translated. Change the English and the stale translation falls back visibly instead of quietly asserting something nobody re-read.
333 tests green. Verified by hand rather than assumed: both resources survive trimming in the published WebAssembly build, and the MCP server builds without warnings.
Contributed by Codex under the committee rule, reviewed and amended here.
🤖 Generated with Claude Code