{
  "_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": "WF-0001",
    "kind": "failure",
    "objective": "Repair: acceptance test that can never pass — a contains/not_contains test matched the whole HTTP response, so a needle that appears in the shared stylesheet failed every article page regardless of the articl",
    "detail": "A failure object attached to WT-0041. Close it by enforcing the missing invariant at the shared layer, repairing every affected object, adding the regression test and the deploy blocker, then submitting runtime evidence.",
    "state": "completed",
    "priority": 1,
    "revision": 9,
    "depends_on": [],
    "permitted_capabilities": [
      "PUT /api/articles/sciatica",
      "POST /api/protocol/sources",
      "ARTICLE_PUT",
      "D1_QUERY"
    ],
    "acceptance_tests": [],
    "required_evidence": [
      "repair",
      "regression_test",
      "deploy_blocker",
      "repaired_objects",
      "runtime_evidence"
    ],
    "parent_task": "WT-0041",
    "supersedes": null,
    "failure": {
      "failure_class": "acceptance test that can never pass — a contains/not_contains test matched the whole HTTP response, so a needle that appears in the shared stylesheet failed every article page regardless of the article",
      "layer": "runOneTest() in functions/_lib/work_object.js: the contains and not_contains cases ran String.includes over the raw response body, which on an article page is mostly site chrome — seven style blocks, navigation, footer",
      "missing_invariant": "A test that asserts something about an ARTICLE must be evaluated against the article, not against the page furniture that ships identically with every article. A test whose outcome does not depend on the object under test is not a test.",
      "repair": "contains and not_contains now strip script and style blocks and narrow to the article content container before matching, with scope:\"raw\" available for a test that genuinely means to inspect markup",
      "regression_test": "WT-0041 itself: the same six tests are rerun against /a/sciatica and own_subject must now pass, having failed on a correct page",
      "deploy_blocker": "scripts/ship.mjs gate 10 already fails the deploy if the work object stops answering; the acceptance runner is exercised by the resubmission recorded in this task audit",
      "repaired_objects": [
        "functions/_lib/work_object.js runOneTest"
      ],
      "runtime_evidence": "https://miscsubjects.com/api/work/task/WT-0041/audit — the refuse action records own_subject ok:false while exists, depth (2153 words), sources (12), published and renders all passed"
    },
    "failure_count": 1,
    "last_result": {
      "accepted": true,
      "tests_declared": 6,
      "tests_passed": 6,
      "tests_inherited_from": "WT-0041",
      "results": [
        {
          "id": "exists",
          "ok": true,
          "detail": "article sciatica exists"
        },
        {
          "id": "depth",
          "ok": true,
          "detail": "2155 words (need 1200)"
        },
        {
          "id": "sources",
          "ok": true,
          "detail": "12 sources (need 6)"
        },
        {
          "id": "published",
          "ok": true,
          "detail": "status=published"
        },
        {
          "id": "renders",
          "ok": true,
          "detail": "HTTP 200 https://miscsubjects.com/a/sciatica"
        },
        {
          "id": "own_subject",
          "ok": true,
          "detail": "not_contains \"rp-fallback-mark\" in https://miscsubjects.com/a/sciatica (scope=content) → false"
        }
      ],
      "missing_evidence": []
    },
    "completed_at": "2026-08-04T23:36:57-07:00",
    "created_at": "2026-08-04T18:00:32-07:00",
    "updated_at": "2026-08-04T23:36:57-07:00",
    "audit": "/api/work/task/WF-0001/audit",
    "submit_to": "/api/work/task/WF-0001/submit"
  }
}