{
  "schema": "poliety.health.v1",
  "claim": "none: this document lists probes and rules, not current state; fetch each probe and apply its rule yourself",
  "services": [
    {
      "id": "poliety-news",
      "name": "Poliety News (poliety.com)",
      "url": "https://poliety.com/api/latest.json",
      "rule": "beacon",
      "detail": "The edition JSON carries a freshness beacon with its own stale-after time; a beacon that has expired means the daily edition did not publish."
    },
    {
      "id": "poliety-api",
      "name": "Poliety API (api.poliety.com)",
      "url": "https://api.poliety.com/health",
      "rule": "json_ok",
      "detail": "The paid API's unauthenticated liveness probe."
    },
    {
      "id": "poliety-concierge",
      "name": "Poliety Concierge service",
      "url": "https://concierge.poliety.com/health",
      "rule": "json_ok",
      "detail": "The Concierge service's unauthenticated liveness probe; the body also names the service."
    },
    {
      "id": "poliety-concierge-tenant-zero",
      "name": "Poliety Concierge, tenant zero",
      "url": "https://concierge.poliety.com/v1/poliety/profile",
      "rule": "http_200",
      "detail": "Poliety's own Concierge profile: the public agent surface is answering, with the current knowledge version in the body. A 404 here means tenant zero is unpublished or unentitled, which is a failure of the product surface, not only of the process."
    }
  ],
  "rules": {
    "beacon": "GET the URL without following redirects (a 3xx is not a 200); parse JSON; read .beacon. Unhealthy when now > beacon.staleAfter, or beacon.status is not \"ok\" (the beacon's own rule: never read status alone), or beacon.edition (a UTC date; editions publish at 10:30 UTC) is more than 30 hours past its publish time, which means the daily edition did not publish even if the site was rebuilt since (an edition published early on its own date is current; one dated in the future is not).",
    "json_ok": "GET the URL without following redirects (a 3xx is not a 200); the response is HTTP 200 and its JSON body has ok === true.",
    "http_200": "GET the URL without following redirects (a 3xx is not a 200); the response is HTTP 200."
  },
  "probe": {
    "description": "Poliety runs the same evaluation on a schedule from GitHub Actions (scripts/probe-health.mjs against this document); a failing run notifies the operator. Nothing here reports that run's result: run it yourself.",
    "command": "node scripts/probe-health.mjs https://poliety.com/health.json"
  },
  "human": "https://poliety.com/health/"
}