{
  "name": "Warconomy build cost",
  "asOf": "2026-06-05",
  "note": "Static page counts attributed by route family, computed from the route and static-param registries. HTML detail pages are capped to the latest 10 materialized versions, so freezing a new version adds ~8 machine pages (HTML detail stays flat). Reporting only; static and deterministic.",
  "htmlDetailLimit": 10,
  "totals": {
    "staticPages": 2286,
    "htmlPages": 558,
    "machinePages": 1728,
    "htmlRoutes": 160,
    "machineRoutes": 186,
    "dynamicPatterns": 14,
    "materializedVersions": 157,
    "frozenPayloads": 151
  },
  "perVersionRoutes": 12,
  "versionedShareOfTotal": 57,
  "estimatedPerTrainGrowth": 8,
  "largestFamilies": [
    {
      "id": "versioned-machine",
      "label": "Versioned machine endpoints (per materialized version)",
      "total": 1256
    },
    {
      "id": "records",
      "label": "Record history pages",
      "total": 278
    },
    {
      "id": "static-machine",
      "label": "Static machine endpoints + schemas + distributions",
      "total": 226
    }
  ],
  "families": [
    {
      "id": "versioned-machine",
      "label": "Versioned machine endpoints (per materialized version)",
      "items": 157,
      "htmlPerItem": 0,
      "machinePerItem": 8,
      "htmlPages": 0,
      "machinePages": 1256,
      "total": 1256,
      "growth": "per version"
    },
    {
      "id": "records",
      "label": "Record history pages",
      "items": 139,
      "htmlPerItem": 1,
      "machinePerItem": 1,
      "htmlPages": 139,
      "machinePages": 139,
      "total": 278,
      "growth": "per record"
    },
    {
      "id": "static-machine",
      "label": "Static machine endpoints + schemas + distributions",
      "items": 226,
      "htmlPerItem": 0,
      "machinePerItem": 1,
      "htmlPages": 0,
      "machinePages": 226,
      "total": 226,
      "growth": "per feature train"
    },
    {
      "id": "indicators-detail",
      "label": "Indicator detail pages",
      "items": 59,
      "htmlPerItem": 2,
      "machinePerItem": 1,
      "htmlPages": 118,
      "machinePages": 59,
      "total": 177,
      "growth": "per observation"
    },
    {
      "id": "static-html",
      "label": "Static HTML pages (catalog)",
      "items": 160,
      "htmlPerItem": 1,
      "machinePerItem": 0,
      "htmlPages": 160,
      "machinePages": 0,
      "total": 160,
      "growth": "per feature train"
    },
    {
      "id": "sources-detail",
      "label": "Source detail pages",
      "items": 34,
      "htmlPerItem": 2,
      "machinePerItem": 1,
      "htmlPages": 68,
      "machinePages": 34,
      "total": 102,
      "growth": "per source"
    },
    {
      "id": "versioned-html",
      "label": "Versioned HTML detail pages (latest N only)",
      "items": 10,
      "htmlPerItem": 4,
      "machinePerItem": 0,
      "htmlPages": 40,
      "machinePages": 0,
      "total": 40,
      "growth": "capped"
    },
    {
      "id": "entity-detail",
      "label": "Entity detail pages (chokepoint/commodity/conflict/sanction/dashboard/series)",
      "items": 30,
      "htmlPerItem": 1,
      "machinePerItem": 0,
      "htmlPages": 30,
      "machinePages": 0,
      "total": 30,
      "growth": "per entity"
    },
    {
      "id": "methodology-guides",
      "label": "Methodology contributor guides",
      "items": 3,
      "htmlPerItem": 1,
      "machinePerItem": 1,
      "htmlPages": 3,
      "machinePages": 3,
      "total": 6,
      "growth": "fixed-ish"
    },
    {
      "id": "examples",
      "label": "Dataset example payloads",
      "items": 6,
      "htmlPerItem": 0,
      "machinePerItem": 1,
      "htmlPages": 0,
      "machinePages": 6,
      "total": 6,
      "growth": "fixed"
    },
    {
      "id": "categories",
      "label": "Category JSON endpoints",
      "items": 5,
      "htmlPerItem": 0,
      "machinePerItem": 1,
      "htmlPages": 0,
      "machinePages": 5,
      "total": 5,
      "growth": "per category"
    }
  ],
  "budget": {
    "name": "Warconomy static route budget",
    "asOf": "2026-06-05",
    "note": "Soft (warn) and hard (fail) budgets for static page counts, checked against the build-cost audit. WARN nudges consolidation; FAIL only triggers on an extreme regression (e.g. the versioned-HTML cap of 10 being removed, or a new per-version multiplier beyond the current 12). Reporting only; static and deterministic.",
    "status": "ok",
    "breaches": {
      "warn": [],
      "fail": []
    },
    "overall": {
      "id": "total",
      "label": "Total static pages",
      "actual": 2286,
      "soft": 3000,
      "hard": 6000,
      "status": "ok",
      "headroom": 3714
    },
    "growth": {
      "perVersion": {
        "id": "per-version-expansion",
        "label": "Pages per materialized version",
        "actual": 12,
        "soft": 12,
        "hard": 20,
        "status": "ok",
        "headroom": 8
      },
      "perRelease": {
        "id": "per-release-growth",
        "label": "Pages added per new frozen version",
        "actual": 8,
        "soft": 8,
        "hard": 16,
        "status": "ok",
        "headroom": 8
      }
    },
    "families": [
      {
        "id": "versioned-machine",
        "label": "Versioned machine endpoints (per materialized version)",
        "actual": 1256,
        "soft": 2400,
        "hard": 4000,
        "status": "ok",
        "headroom": 2744
      },
      {
        "id": "records",
        "label": "Record history pages",
        "actual": 278,
        "soft": 600,
        "hard": 1200,
        "status": "ok",
        "headroom": 922
      },
      {
        "id": "static-machine",
        "label": "Static machine endpoints + schemas + distributions",
        "actual": 226,
        "soft": 400,
        "hard": 900,
        "status": "ok",
        "headroom": 674
      },
      {
        "id": "indicators-detail",
        "label": "Indicator detail pages",
        "actual": 177,
        "soft": 400,
        "hard": 900,
        "status": "ok",
        "headroom": 723
      },
      {
        "id": "static-html",
        "label": "Static HTML pages (catalog)",
        "actual": 160,
        "soft": 300,
        "hard": 700,
        "status": "ok",
        "headroom": 540
      },
      {
        "id": "sources-detail",
        "label": "Source detail pages",
        "actual": 102,
        "soft": 300,
        "hard": 700,
        "status": "ok",
        "headroom": 598
      },
      {
        "id": "versioned-html",
        "label": "Versioned HTML detail pages (latest N only)",
        "actual": 40,
        "soft": 44,
        "hard": 80,
        "status": "ok",
        "headroom": 40
      },
      {
        "id": "entity-detail",
        "label": "Entity detail pages (chokepoint/commodity/conflict/sanction/dashboard/series)",
        "actual": 30,
        "soft": 150,
        "hard": 400,
        "status": "ok",
        "headroom": 370
      },
      {
        "id": "methodology-guides",
        "label": "Methodology contributor guides",
        "actual": 6,
        "soft": 40,
        "hard": 80,
        "status": "ok",
        "headroom": 74
      },
      {
        "id": "examples",
        "label": "Dataset example payloads",
        "actual": 6,
        "soft": 40,
        "hard": 80,
        "status": "ok",
        "headroom": 74
      },
      {
        "id": "categories",
        "label": "Category JSON endpoints",
        "actual": 5,
        "soft": 40,
        "hard": 80,
        "status": "ok",
        "headroom": 75
      }
    ],
    "htmlDetailLimit": 10
  }
}