{
 "what": "Every version of this repository that landed on dev, newest first: what changed, in a line. tools/version.json names the current one; the deploy tags it. The reader-code releases (what the consuming sites pin) are the entries with a release of their own.",
 "versions": [
  {
   "version": "v0.2.14",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "test_review's R2 injects the broken persona on the personas page and reloads, so the article page's next save cannot overwrite it before the check (CI runs 21 and 22 saw the page render)."
  },
  {
   "version": "v0.2.13",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "Every page's JSON-LD names its author, its publisher, its card and what it is about, as the newsroom's articles do; the README says what the site has."
  },
  {
   "version": "v0.2.12",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "The bar has the newsroom's shape: eight groups with their pages under them, a dropdown on hover and on focus with no script, the group and the page marked; one list behind Menu on a phone."
  },
  {
   "version": "v0.2.11",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "Search: the site searches itself with the API's own search and ask components, loaded from this host's release, over an index the build writes (search/docs.json, text.json) in the contract's format; a Search button in the bar; headings in HTML pages get ids."
  },
  {
   "version": "v0.2.10",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "feed.xml: versions and releases as RSS, linked from every page's head and from llms.txt; the gate checks it is well formed and current."
  },
  {
   "version": "v0.2.9",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "The footer takes the newsroom's shape: who makes this and under whose responsibility, the network line, the participant disclosure, the version line with the reader-code release; the gate checks each."
  },
  {
   "version": "v0.2.8",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "A link-preview card for every page (og:image 1200x630 and the Twitter card), drawn by site/og.py in Newsprint's colours and committed; the gate fails a page without one."
  },
  {
   "version": "v0.2.7",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "The backfill's grep named two matchers at once and would have matched nothing; one matcher."
  },
  {
   "version": "v0.2.6",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "The deploy tags every version in the history that has none (each commit's subject carries its version), so several versions landing in one push each get their tag."
  },
  {
   "version": "v0.2.5",
   "date": "2026-10-15",
   "release": "v0.2.5",
   "line": "Reader-code release: wire/wire.css wraps a story's long words (a URL as plain text in the lead story's corrections overflowed a phone; test_wire caught it). The first change to a served file since the move, recorded in the manifest with its reason."
  },
  {
   "version": "v0.2.4",
   "date": "2026-10-14",
   "release": "v0.2.0",
   "line": "The website's gate (site/check.py): every reference resolves, canonical and chrome on every page, the sitemap and llms files agree with the tree, a key-leak tripwire. The map and the proof data are published on the host. This versions page."
  },
  {
   "version": "v0.2.3",
   "date": "2026-10-14",
   "release": "v0.2.0",
   "line": "test_review pins R2 as the personas page being unusable in either form (blank, or the element failed), as CI run 13 saw."
  },
  {
   "version": "v0.2.2",
   "date": "2026-10-14",
   "release": "v0.2.0",
   "line": "The website wears the newsroom's five themes: its token file and bootstrap, unchanged; the picker in the bar; one row from 1280 up; print and reduced motion; tests/test_site.mjs as the gate."
  },
  {
   "version": "v0.2.1",
   "date": "2026-10-14",
   "release": "v0.2.0",
   "line": "Every change that lands on dev is a version: tools/version.json holds the repository's version beside the reader-code release; the deploy tags the version and refuses a missed bump."
  },
  {
   "version": "v0.2.0",
   "date": "2026-10-14",
   "release": "v0.2.0",
   "line": "The second cut of the reader code, from the newsroom at v0.12.50 (74 files; SG Meter v1.4.1, the inbox, the graphs, the QR library); the release the newsroom pins at its v0.13.0. The tests re-adapted, test_graphs and test_inbox added."
  },
  {
   "version": "v0.1.0",
   "date": "2026-10-13",
   "release": "v0.1.0",
   "line": "The first cut of the reader code, from the newsroom at v0.12.10 (63 files), the pipeline, the proof of the move, and the website for publishers, developers, evaluators and agents."
  }
 ]
}
