{
  "_ai_door": {
    "see": "https://miscsubjects.com/start",
    "note": "Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."
  },
  "task": {
    "task_id": "WT-0058",
    "kind": "work",
    "objective": "Backfill claims into the 161 substantial published articles that have none, so every article on the site is the same object",
    "detail": "Owner, 2026-08-05: \"some articles have claims, some articles dont... I dont want some to have divs, others not to have divs, some to have proof of work, some not, they all should have a standardized format.\" Claims are the addressable surface — they become the voxel DIVs, the proof-of-work object a certifier signs, the surface a token is scoped to, and the regions an outsider can challenge. CLAIM_LAW now refuses a new claim-less article at the write path (functions/_lib/claim_law.js), and scripts/check-article-claims.mjs holds the backlog at a ceiling of 161 that may only fall. This task IS that backlog. Work it in batches: list the offenders with COUNT/SELECT over articles where published=1 and length(body)>2400 and meta does not contain the claims-array marker, then for each article derive claims from what the page actually asserts — never invented, each at the evidence tier the page actually holds, each citing a source id the article already carries — and PUT them back. Lower CLAIM_CEILING in the gate as the count falls so each gain is locked in. Never lower the ceiling without repairing articles.",
    "state": "open",
    "priority": 3,
    "revision": 1,
    "depends_on": [],
    "permitted_capabilities": [
      "PUT /api/articles/<slug>",
      "D1_QUERY",
      "scripts/check-article-claims.mjs"
    ],
    "acceptance_tests": [
      {
        "id": "ceiling_fell",
        "type": "sql_count_at_least",
        "min": 40,
        "sql": "SELECT (161 - (SELECT COUNT(*) FROM articles WHERE published=1 AND length(COALESCE(body,''))>2400 AND COALESCE(meta,'') NOT LIKE '%\"claims\":[{%')) AS n"
      },
      {
        "id": "law_live",
        "type": "http_ok",
        "url": "/api/articles/tesofensine"
      }
    ],
    "required_evidence": [
      "articles_repaired",
      "ceiling_lowered_to",
      "method"
    ],
    "parent_task": null,
    "supersedes": null,
    "failure": null,
    "failure_count": 0,
    "last_result": null,
    "completed_at": null,
    "created_at": "2026-08-05T01:54:37-07:00",
    "updated_at": "2026-08-05T01:54:37-07:00",
    "audit": "/api/work/task/WT-0058/audit",
    "submit_to": "/api/work/task/WT-0058/submit"
  }
}