{
  "_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-0202",
    "kind": "work",
    "objective": "OIP TAP & GO observes the invocation grammar: permission by declared effect, /web/run speaks words, /web/plan + /web/commit, drop text rewritten",
    "detail": "Owner order 2026-09-11: 'my oip tap & go are broken on the back end & they need to be re-written to observe this grammar'.\nFound: the invoke lanes decided permission by the scope's name (read = invokes nothing), so a read drop's own first instruction (/web/run/NOW) was refused with scope_mismatch; /web/run only accepted an exact UPPER_SNAKE key with a positional body, so grammar lines (quake feed 3 --min-magnitude 4) were unknown_key; no plan-first path existed for a cold model.\nBuilt: functions/_lib/token_rows.js tokenAllowsRow — a token runs a row when the row's effects set is within the token's ceiling; read tokens run only read-effect rows that are public by construction (unauthenticated GET to another host, or the build's public objects), never sensitive or private-store reads. dispatch.js GET invoke + POST lanes use it. functions/web/[[path]].js: run/WORDS, plan/WORDS, commit/pr_… go through /api/resolve; exact KEY?body= keeps the legacy lane. resolve.js expands short codes. unified_handoff.js drop text teaches both spellings, plan/commit, and the effects law; golden re-pinned (scripts/check-tap-go-drop-golden.mjs, .protected/golden/*).",
    "state": "completed",
    "priority": 1,
    "revision": 5,
    "depends_on": [],
    "permitted_capabilities": [],
    "acceptance_tests": [
      {
        "type": "evidence_present",
        "id": "commit",
        "field": "commit"
      },
      {
        "type": "evidence_present",
        "id": "live",
        "field": "verification"
      }
    ],
    "required_evidence": [
      "commit",
      "verification"
    ],
    "parent_task": null,
    "supersedes": null,
    "failure": null,
    "failure_count": 0,
    "last_result": {
      "accepted": true,
      "tests_declared": 2,
      "tests_passed": 2,
      "tests_inherited_from": null,
      "results": [
        {
          "id": "commit",
          "ok": true,
          "detail": "checked against required_evidence",
          "evidence_field": "commit"
        },
        {
          "id": "live",
          "ok": true,
          "detail": "checked against required_evidence",
          "evidence_field": "verification"
        }
      ],
      "missing_evidence": []
    },
    "completed_at": "2026-09-11T16:41:46-07:00",
    "created_at": "2026-09-11T16:32:08-07:00",
    "updated_at": "2026-09-11T16:41:46-07:00",
    "audit": "/api/work/task/WT-0202/audit",
    "submit_to": "/api/work/task/WT-0202/submit"
  }
}