{
 "schema": "csoai.wave1-counters/0.3",
 "wave": 1,
 "contract": {
  "derivation": "Every count below is derived from a committed artifact in THIS repo, in-process. Nothing is fetched to serve this response and no count is typed by hand.",
  "freshness": "There is no new Date() in this endpoint. as_of is read OUT OF the artifact and as_of_field names the key it came from. Two calls any interval apart return a byte-identical payload; if they ever differ, this endpoint has the defect it was rebuilt to remove.",
  "freshness_self_test": "curl -s http://localhost:8799/api/counters | jq -S '[.counters[]|{id,as_of_field,as_of}]' > /tmp/a; sleep 5; curl -s http://localhost:8799/api/counters | jq -S '[.counters[]|{id,as_of_field,as_of}]' > /tmp/b; diff /tmp/a /tmp/b && echo IDENTICAL",
  "freshness_self_test_warning": "Confirm as_of is PRESENT and non-null on at least one counter before trusting that diff. A check that reads a field which does not exist compares null to null and passes for every input, forever. This repo has shipped that defect twice.",
  "kinds": {
   "measured": "A run happened against a frozen bank or source and was graded.",
   "declared": "A slot published so a gap is visible. No run behind it.",
   "catalogued": "Listed in a register. Nothing was contacted and nothing was run.",
   "unmeasured": "It exists and we have not measured it — stated, not implied."
  },
  "never_sum": "Kinds are never added together. A declared slot is not a measurement and a register row is not a board slot.",
  "unpublished_rule": "UNPUBLISHED means no source exists, not that a fetch failed. Null is never replaced with zero, with a plausible-looking value, or with a figure from another estate.",
  "aggregate_authority": "/api/state is the one surface a lane quotes for a count. This endpoint is a Wave-1 public-utility subset of it and must agree with it by construction — both derive from the same committed artifacts. Doctrine: council-os/QUOTING-NUMBERS.md."
 },
 "counters": [
  {
   "id": "gspc_measured_axes",
   "name": "GSPC measured axes",
   "count": 22,
   "kind": "measured",
   "status": "PUBLISHED",
   "source": "functions/api/_gspc_axes_{a,b,fin}.ts (the arrays /api/gspc derives from) → filter(status === 'MEASURED').length",
   "as_of": "behavioural axes 2026-08-12 · jail 2026-08-18 · financial-fact axes 2026-08-25",
   "as_of_field": "measured_on.date",
   "note": "Board slots with a real graded run behind them. This is the number to quote if you quote only one. as_of is the signed board's measurement stamp, verbatim — it is a date of record, not an instant, and not when this response was served."
  },
  {
   "id": "gspc_axis_slots",
   "name": "GSPC axis slots (declared, not measured)",
   "count": 22,
   "kind": "declared",
   "status": "PUBLISHED",
   "source": "functions/api/_gspc_axes_{a,b,fin}.ts (the arrays /api/gspc derives from) → length",
   "as_of": "behavioural axes 2026-08-12 · jail 2026-08-18 · financial-fact axes 2026-08-25",
   "as_of_field": "measured_on.date",
   "note": "A count of SLOTS. A slot is published so a gap is visible; it is not evidence that anything was measured. Never quote this number alone — quote it beside gspc_measured_axes, or quote /api/gspc totals.public_count, which carries both."
  },
  {
   "id": "axis_register_rows",
   "name": "Axis register rows (canonical scored rows)",
   "count": 14,
   "kind": "catalogued",
   "status": "PUBLISHED",
   "source": "functions/api/_axis_register.ts → AXES[].length",
   "as_of": null,
   "as_of_field": null,
   "note": "Rows bundled in the register that /api/axis-register serves, counted from the array. This module carries NO timestamp of any kind, so as_of and as_of_field are both null. The board's measurement date is a neighbouring source's date, not this one's, and the deploy time is nobody's measurement time. Unknown stays null. NOTE: register rows are not board slots and the two are never added — see counting_rule on /api/axis-register."
  },
  {
   "id": "frozen_provision_counter",
   "name": "Frozen statutory-provision counter",
   "count": 417,
   "kind": "catalogued",
   "status": "PUBLISHED",
   "source": "public/interop/regulatory-inventory.json → frozen_provisions.value",
   "as_of": "2026-08-12T05:22:20.629949+00:00",
   "as_of_field": "frozen_provisions.frozen_at",
   "note": "The six instrument counts sum to 417. The public repository does not yet expose 417 independently addressable provision rows, so this is a verified counter with an unresolved-row limitation, not a claim that a complete inspectable corpus is published."
  },
  {
   "id": "regulator_authority_adapters",
   "name": "Regulator and authority source adapters",
   "count": 17,
   "kind": "catalogued",
   "status": "PUBLISHED",
   "source": "public/interop/regulatory-inventory.json → authority_adapters.length",
   "as_of": "2026-09-10",
   "as_of_field": "as_of",
   "note": "Typed source-and-routing records: regulators, authority networks, framework owners and a treaty body. They are not live regulator APIs and confer no authority on Council of AI."
  },
  {
   "id": "crosswalk_assets",
   "name": "Crosswalk estate assets",
   "count": 25,
   "kind": "catalogued",
   "status": "PUBLISHED",
   "source": "public/interop/regulatory-inventory.json → crosswalk_assets.length",
   "as_of": "2026-09-10",
   "as_of_field": "as_of",
   "note": "Heterogeneous path-backed assets: derived statements, mappings, a catalog, a producer, an example and interface views. This is not a count of equivalent signed legal crosswalks."
  },
  {
   "id": "published_crosswalk_regimes",
   "name": "Regimes in the published east-west crosswalk",
   "count": 4,
   "kind": "catalogued",
   "status": "PUBLISHED",
   "source": "public/interop/regulatory-inventory.json → counts.published_crosswalk_regimes; verified against public/crosswalk/east-west-v1.json",
   "as_of": "2026-09-10",
   "as_of_field": "as_of",
   "note": "The public mapping contains EU, UK, US-IL and CN. Do not substitute the 25-asset estate count."
  },
  {
   "id": "verify_page_executions",
   "name": "Verify-page executions (free, zero-auth)",
   "count": null,
   "kind": "unmeasured",
   "status": "UNPUBLISHED",
   "source": null,
   "as_of": null,
   "as_of_field": null,
   "note": "No counter exists behind this anywhere in this repo, so any number would be invented. Verification is free, zero-auth and unlogged by design; counting it would mean instrumenting it. UNPUBLISHED is the honest answer and it is the whole answer."
  },
  {
   "id": "watch_desk_reads",
   "name": "Watch-desk reads",
   "count": null,
   "kind": "unmeasured",
   "status": "UNPUBLISHED",
   "source": null,
   "as_of": null,
   "as_of_field": null,
   "note": "Not measured and not published. No telemetry and no per-user data is collected on this surface, so there is nothing to count. UNPUBLISHED, not zero — zero would be a claim."
  }
 ],
 "board_crosscheck": {
  "note": "The axis counters above are derived live from the axis arrays; the signed board is a snapshot of that same computation. Both are computed and compared here so drift is published rather than silently inherited by whichever surface a reader opened.",
  "live_source": "functions/api/_gspc_axes_{a,b,fin}.ts (the arrays /api/gspc derives from)",
  "signed_source": "public/signed/gspc-board.signed.json",
  "live_axis_slots": 22,
  "live_measured_axes": 22,
  "signed_axis_slots": 22,
  "signed_measured_axes": 22,
  "signed_snapshot_counts_agree": true,
  "signed_snapshot_agrees": false,
  "signed_snapshot_claim_state": "SUPERSEDED_KNOWN_CLAIM_DEFECT",
  "signed_snapshot_status_source": "public/signed/gspc-board.status.json",
  "on_disagreement": "Quote the live counters above and GET /api/gspc — both derive from the committed axis arrays. Do not file the preserved snapshot while signed_snapshot_agrees is false: its counts may drift or its status may record a known claim defect. Read /signed/gspc-board.status.json. Re-signing is an owner MPC ceremony, not a laptop sign and not the Pages 3KB card-sign path."
 },
 "note": "Aggregate-only. NO telemetry, NO per-user data, NO fabricated counts. Measurement, not a ranking, and never a certification."
}