{
  "version": "v0.4.2",
  "date": "2026-09-20",
  "title": "the fact set is data, the fact diff runs over every published page, and every example ends by crossing nine universes",
  "summary": "The projections universe, one release after the map named it. Every projection renders the same fact set and the diff must be empty: a rule in force since August that blocked a promise on four consecutive days in September because the diff did not exist. It exists now, in the only form worth having. A fact set is written for every stored delta under data/facts/, the leaf assertions every rendering must agree on, computed and never authored. The release gate then parses the label, the leaflet, the prohibitions and the figure back out of each example's own published markdown twin, as text, and fails the build on a single leaf assertion that differs. The label and the leaflet are now two renderings of one fact set that are checked to carry the same facts rather than asserted to. And every example page ends with its lead row walked across nine universes, built from its own data.",
  "commit": null,
  "commit_resolves_by": "git rev-list -n 1 v0.4.2",
  "commit_note": "The tag is the record. CI derives v0.4.2 from admin/build/version.txt and creates it on the commit whose subject carries `site v0.4.2:`, so `git rev-list -n 1 v0.4.2` resolves it for anybody from then on. The hash is not written into this file because a release commit cannot contain its own hash, and reading it back from the tag at build time made the build produce different bytes on a checkout with tags than on one without.",
  "vault": null,
  "reconstructed": false,
  "changes": [
    "data/facts/index.json and one file per stored delta: what the shape grants at what barrier with what undo class and evidence, the mandate's stance on all 23 primitives, and the excess, unbounded excess, aligned set and shortfall that follow, pinning the same inputs as the delta. Where an example page renders the fact set, the index names the twin the gate parses.",
    "The gate's fifteenth check, the fact diff. It runs over the published page and not over the generator: the label's seven numbers, every leaflet row's capability, undo class, barrier, control status, evidence and stance, every prohibition's capability, barrier and enforcement, and the figure's three counts are read back out of the markdown twin and compared with the fact set, both ways. A diff that trusted the generator would be a diff over nothing, because the label and the leaflet come from one call.",
    "Every example page ends with its lead row crossed through nine universes as one sentence, built from the page's own profile, mandate and delta, beside the single vocabulary path it already carried, and names the fact set every number on the page is a leaf assertion in.",
    "The projections universe's status stays partial and says why: the fact set and the diff exist as files and as a gate check, and neither is a node in the graph yet.",
    "The multi format promise that the store could describe and not print is now printable for the five examples, because the guarantee behind it is a build that fails when it is false."
  ],
  "basis": [
    "The pack's model document, for the specification the diff is built from: the facts are the leaf assertions, identical in every rendering; the classes are how a reader groups them, different by altitude, and the diff is over the former.",
    "The dev brief of 11 September on the behaviour policy as a graph, for the rule that every projection renders the same fact set with an empty diff, and for the record that the diff had not been built.",
    "The v0.4.0 brief, for the projections universe this release fills, and the build order it set out."
  ]
}
