{
  "name": "Warconomy release checklist",
  "asOf": "2026-06-05",
  "note": "The ordered steps every additive release follows. A process description, not real-time status. Releases are additive, byte-stable, and backward-compatible.",
  "count": 12,
  "items": [
    {
      "id": "additive-surface",
      "step": "Implement the surface additively",
      "detail": "Add the page or export without removing or renaming any existing field; no scraping, jobs, runtime APIs, auth, or DB writes.",
      "category": "build"
    },
    {
      "id": "register-route",
      "step": "Register the route",
      "detail": "Add the path to the route catalog and the appropriate sitemap so it is discoverable and reconciled.",
      "category": "build"
    },
    {
      "id": "source-and-label",
      "step": "Source and label every figure",
      "detail": "Each number carries a sourceId and confidence; live figures carry as-of and last-reviewed dates; sample rows are labeled illustrative.",
      "category": "build"
    },
    {
      "id": "new-field",
      "step": "Advertise one new export field",
      "detail": "Add exactly one new top-level field to the dataset export so the version diff reports a real field delta.",
      "category": "version"
    },
    {
      "id": "bump-version",
      "step": "Bump the export version",
      "detail": "Increment DATASET_EXPORT_VERSION by one minor; never reuse or rewrite a released version.",
      "category": "version"
    },
    {
      "id": "snapshot-ladder",
      "step": "Append to the snapshot ladder",
      "detail": "Record the release with its addedFields, counts, and graph totals (append-only; past releases are never edited).",
      "category": "version"
    },
    {
      "id": "freeze-payload",
      "step": "Freeze a byte-stable payload",
      "detail": "Commit the complete export under payloads/<version>.json, served verbatim at the versioned data.json route.",
      "category": "version"
    },
    {
      "id": "add-test",
      "step": "Add a focused test",
      "detail": "Write a test for the new surface and append it to npm run audit:data.",
      "category": "verify"
    },
    {
      "id": "validate",
      "step": "Run the full validation",
      "detail": "Run lint, tests, build, and audit:data; all must pass before the release is committed.",
      "category": "verify"
    },
    {
      "id": "reconcile-catalog",
      "step": "Reconcile the catalog",
      "detail": "Confirm every advertised path resolves to a real route and the no-overclaim audit passes.",
      "category": "verify"
    },
    {
      "id": "no-overclaim",
      "step": "Confirm honest framing",
      "detail": "No fabricated data, no real-time or complete-coverage claims, no causal overclaims; associative language only.",
      "category": "verify"
    },
    {
      "id": "commit",
      "step": "Commit the release",
      "detail": "Commit separately with a concise message describing the additive change and the new field.",
      "category": "ship"
    }
  ]
}