{
  "what_this_is": "The register of journal entries that publish a sentence this studio has since withdrawn. An INPUT, hand-written, never generated: a correction is a decision, the same rule tools/audit/bisect-facts.mjs follows when it refuses to write to facts.json. tools/build-site.mjs renders each row as a notice at the top of that entry's served page and as a schema.org CorrectionComment in its BlogPosting markup. The markdown file under JOURNAL/ is NEVER edited by this mechanism - the original text stays exactly as published, which is the same rule the run corpus already follows for a withdrawn finding (schema/run.schema.json: 'The finding stays published on its run page, with its original text intact and a retraction notice attached').",
  "why_it_exists": "DISTRIBUTION D9 left this open on 2026-09-08 (JOURNAL/101): 'Whether numbered journal entries need one is a decision for a later session.' Answered 2026-09-23 (JOURNAL/200). The reason is this lane's own mechanism, channel 2: journal entries carry BlogPosting markup so that answer engines quote them (JOURNAL/190), and a page made more quotable while it carries a withdrawn claim is a distribution problem, not housekeeping.",
  "quote_rule": "Every `quote` must appear VERBATIM in that entry's own markdown, compared with runs of whitespace collapsed to one space - a sentence in a markdown source is wrapped at 100 characters and its line breaks are not part of it. The build fails if a quote does not resolve. An annotation that quotes a sentence the page does not carry is an annotation about nothing, and as of 2026-09-26 this build check is the only thing in the tree that resolves a quote.",
  "scope_rule": "A row belongs here only when the sentence is published in the JOURNAL ENTRY'S OWN TEXT. A claim this studio withdrew that lived only in a live file - BACKLOG.md, DISTRIBUTION.md, facts.json - is corrected by editing that file, which is what those files are for. JOURNAL/104 is the worked example: its wrong diagnosis of the langchain download hole (retracted by JOURNAL/105) was written into DISTRIBUTION.md and the entry's own paragraph is accurate, so 104 is not a row here.",
  "corrections": [
    {
      "entry": "050",
      "corrected_by": "051",
      "on": "2026-09-05",
      "quote": "prisma's 7.0.0 edge is the *lower* bound of Opus 5's three-day attribution window.",
      "what": "There is no three-day attribution window. It was withdrawn on 2026-09-01 (JOURNAL/024) after the langchain replicate broke it, and the prose was gone from the published method page by 2026-09-02 (JOURNAL/028). This paragraph reasons about a headline that had not been published for four days.",
      "inline_erratum": "**Erratum, 2026-09-05 (JOURNAL/051).** There is no three-day window."
    },
    {
      "entry": "073",
      "corrected_by": "074",
      "on": "2026-09-07",
      "quote": "Base rate after four bisected libraries: 14 of 49 dated facts wrong",
      "what": "Three libraries had been bisected at that point, not four, and zod's LF10 was counted twice - once as a misdating and once as one of the two wrong-mechanism corrections. A correction to this journal's own arithmetic."
    },
    {
      "entry": "074",
      "corrected_by": "080",
      "on": "2026-09-08",
      "quote": "What `introduced_in` records on a row like this is the **sibling addition**",
      "what": "Half wrong, and the half that is wrong only shows downstream: `introduced_in` is not a private annotation, it is rendered - `build-corrections.mjs` prints it as `**<label> in <lib> <version>**` at the head of every entry. A field that renders is a claim. The rule is amended in HARNESS.md rather than quietly replaced."
    },
    {
      "entry": "083",
      "corrected_by": "161",
      "on": "2026-09-12",
      "quote": "Eleven of the twelve Class A tasks were answered by every arm, without a correction round, at the first attempt.",
      "what": "Ten, not eleven. The figure was written as 'every task except the one that carried the correction rounds', which is right only when no other task spends one - and A2 spent one, in PLACEBO draw 1. No other figure moves.",
      "inline_erratum": "**CORRECTED 2026-09-12 (JOURNAL/161): ten, not eleven.**"
    },
    {
      "entry": "095",
      "corrected_by": "194",
      "on": "2026-09-22",
      "quote": "the `claude` CLI is not on this machine",
      "what": "True of the PATH and false of the machine: `npx --yes @anthropic-ai/claude-code` fetches the validator with no account and no credential. The same sentence became ask `d3-4`, where it sat with Sam for fourteen days. And the command this entry names - `claude plugin validate .` - resolves the marketplace manifest in a checkout carrying both manifests, so it never validates the plugin manifest this entry wanted checked."
    },
    {
      "entry": "099",
      "corrected_by": "101",
      "on": "2026-09-08",
      "quote": "`kysely`, `sequelize` and `zustand`, which shipped no stable minor or major in the window and none since",
      "what": "`kysely` has one datable stable release, in May 2026 - the month that fell between the window's end and the cutoff, so neither count saw it - with a 15,115-character release note on it. Its verdict is `per-release-prose-exists` and its `blocked_by` is empty.",
      "still_true": "`kysely` shipped zero minors or majors inside the window and remains the lowest-cadence subject measured. Cadence and probeability are different axes."
    },
    {
      "entry": "099",
      "corrected_by": "103",
      "on": "2026-09-08",
      "quote": "the only confirmed prose-less project in the set",
      "what": "arktype publishes a changelog with 42 sections and 1,970 characters on the window's release, at `main/ark/type/CHANGELOG.md` - the path it declares in its own manifest, while the second source was being looked for at three guessed paths. `no-per-release-prose` is now claimed of nobody in the set of thirty-nine.",
      "still_true": "arktype attaches an empty body to every release on its feed, and the median of those bodies is 0 characters. That measurement is real and is still in the file; what was wrong is the combined verdict."
    },
    {
      "entry": "101",
      "corrected_by": "200",
      "on": "2026-09-23",
      "quote": "Journal entries here are append-only — one hundred entries, one commit each",
      "what": "False when it was written, and it is the premise on which this question was left open. JOURNAL/050 had been edited three days earlier by the commit that is JOURNAL/051, which appended an erratum to it; JOURNAL/083 was edited the same way four days later by JOURNAL/161. Two entries carry two commits, in two incompatible formats, and the practice the sentence declines to break had already been invented twice by hand."
    },
    {
      "entry": "118",
      "corrected_by": "124",
      "on": "2026-09-10",
      "quote": "corpus **199 → 200**",
      "what": "Wrong by one, from a hand count: the generated figure in README.md read 201 before LF10 and 202 after, which is the file sum exactly. The generated figure has always been right, and the only thing wrong was the hand count in this entry. Quote the rendered figure; never count the files."
    },
    {
      "entry": "203",
      "corrected_by": "205",
      "on": "2026-09-23",
      "quote": "LF11 is false at the current release.",
      "what": "LF11 is true, and was true when this was written. The row that measured it asked its question with the candidate `tab-4` — the fact’s own stale_code example — and tailwindcss ships a NATIVE `tab-*` utility from 4.3.0, so at 4.3.0 and 4.3.3 the compiler answered `hover:tab-4` out of its own utility set with no `@layer` block involved. An absence test had become a presence test on a different object. Re-measured with `zzq-4`, a name no release ships: `@layer utilities` gets no variant support at any v4 rung, 4.0.0 through 4.3.3, and `@utility` gets it at all five. The published S1 stands unaltered; what was defective was the instrument, and the repair this sentence queued was refused."
    },
    {
      "entry": "251",
      "corrected_by": "253",
      "on": "2026-09-25",
      "quote": "`bisect-facts --selftest` (pre-commit chain) **24 passed, 0 failed, 543 live rows, 37 symbolic**",
      "what": "36 symbolic, not 37. Re-run at 2ea823f, the commit this entry landed with, the tool printed `24 passed, 0 failed (543 live rows, 36 symbolic)`. Every other number in the line is right. The cause is the entry's own next-but-one sentence: it counts next.js at nine symbolic rows where the probe file carries eight, and 8 + 28 is 36. Found 2026-09-25 by the better-auth session, which converted four rows and got 40 rather than the 41 the published figure predicts. The corpus-wide `literal-equals-field` figures in the same section are unaffected and were checked: 124 = 28 prisma + 39 react-router + 53 zod + 4 better-auth."
    },
    {
      "entry": "251",
      "corrected_by": "253",
      "on": "2026-09-25",
      "quote": "next.js's nine symbolic rows have had the same property, unremarked, since 2026-09-24",
      "what": "Eight, not nine, and this is the source of the 37 in the Readings section above. Counted off the tool rather than by hand: `claimAudit` resolves next.js at 8 declared symbolic rows (LF22, LF22a, LF28, LF21, LF21a, LF21c, LF16a, LF1c) out of 69. The observation the sentence makes -- that the bisect report prints the resolved claim and never the symbolic spelling, so those rows are invisible in it -- is true of all eight and is unaffected."
    },
    {
      "entry": "307",
      "corrected_by": "309",
      "on": "2026-09-27",
      "quote": "That sentence is in the headline, so the meta description and the llms.txt line carry it.",
      "what": "The meta description did; the llms.txt line did not. tools/build-site.mjs wrote each /does/ line from `answer.text.split(\". \")[0]` -- the first sentence of the answer, never the headline -- so the line for /does/claude-opus-5-5-know-valibot published \"...and the subject states it stops there\" with the equivocal sentence cut off, from this entry's commit until JOURNAL/309 switched it to the headline. The /which/ lines were already built from the headline, which is why JOURNAL/305's parallel sentence about those pages is true. The page itself, its meta description and its JSON-LD carried the sentence throughout."
    },
    {
      "entry": "307",
      "corrected_by": "309",
      "on": "2026-09-27",
      "quote": "So 1 of 5 Opus 5.5 ladders is flagged.",
      "what": "2 of 6. Six Opus 5.5 ladders were published at this entry's commit (c826924): zod/v8, better-auth/v8, langchain/v7, valibot/v7, react-router/v5 and next.js/v5. zod/v8 carried the same shape as valibot/v7 in its own non_findings[2] -- NAME on 4.2.0 with \"possibly `z.fromJSONSchema`\", which is LF6 at 4.2.0 -- and was counted clean because its writer never used the word. Declared as knowledge_stops_equivocal by JOURNAL/309. No separation depended on it."
    }
  ],
  "erratum_prose_allowlist": {
    "160": "Names the string `CORRECTED 2026-09-12` while describing the annotation carried by two RUN records (prisma/v7-b and v8-a). The entry itself is not corrected and carries no erratum of its own.",
    "200": "The entry that built this register. It quotes both tokens while describing the check that looks for them - the same shape JOURNAL/188 hit when its own journal entry named the date sentinel and the build refused it. A token that appears in a page because the page is ABOUT the token is not an erratum."
  },
  "erratum_prose_rule": "The two inline errata above were hand-appended to entries already committed, without a decision recorded anywhere, and they reached 2 of the 9 rows in this register. So the words that spell one are accounted for one-directionally, the way tools/audit/claims-surface.mjs accounts for the claims policy's phrases: a journal source containing `Erratum` or `CORRECTED 20` must either declare an `inline_erratum` here or be named in `erratum_prose_allowlist` with a reason, and anything else fails the build. An absence and an omission are otherwise the same bytes."
}
