{
  "_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-0092",
    "kind": "work",
    "objective": "Ship the Sheets workbook: /admin/directory and /admin/ledger render as a Google Sheets style grid (edit cells, drag columns, filter, sort), plus user-created sheets with A1-addressable cells, a REST lane mirroring the Google Sheets values API, and a model-run lane that fills a column per row with the exact request JSON, the raw response, and the reply text",
    "detail": "Default view of /admin/directory and /admin/ledger becomes the workbook grid; the classic views stay complete at ?view=classic and every protected behavior in PROTECTED_FEATURES.md remains reachable there. New D1 tables user_sheets, sheet_cells, sheet_run_configs. New API namespace /api/sheets: values get/put by A1 range, append, clear, batch insert/delete/move of rows and columns, CSV export, run configs, and per-row model runs through the existing invoke lane with receipts on the ledger. Bottom tab strip: Directory and Ledger are fixed sheets, user sheets are created with +, each tab is one sheet.",
    "state": "superseded",
    "priority": 1,
    "revision": 6,
    "depends_on": [],
    "permitted_capabilities": [
      "/api/sheets",
      "/api/directory",
      "/api/invoke",
      "scripts/ship.mjs"
    ],
    "acceptance_tests": [
      {
        "id": "contract_live",
        "type": "http_ok",
        "url": "/api/sheets"
      },
      {
        "id": "contract_names_a1_lane",
        "type": "contains",
        "url": "/api/sheets",
        "needle": "values/A1",
        "scope": "raw"
      },
      {
        "id": "contract_names_run_lane",
        "type": "contains",
        "url": "/api/sheets",
        "needle": "run-row",
        "scope": "raw"
      },
      {
        "id": "tables_exist",
        "type": "sql_count_at_least",
        "sql": "SELECT COUNT(*) n FROM sqlite_master WHERE name IN (user_sheets,sheet_cells,sheet_run_configs)",
        "min": 3
      },
      {
        "id": "workbook_served_on_directory",
        "type": "contains",
        "url": "/admin/directory",
        "needle": "ms-sheets-workbook",
        "scope": "raw"
      },
      {
        "id": "workbook_served_on_ledger",
        "type": "contains",
        "url": "/admin/ledger",
        "needle": "ms-sheets-workbook",
        "scope": "raw"
      },
      {
        "id": "classic_view_preserved",
        "type": "contains",
        "url": "/admin/directory?view=classic",
        "needle": "bigtabs",
        "scope": "raw"
      }
    ],
    "required_evidence": [
      "rendered_url",
      "api_contract_url",
      "live_run_receipt",
      "cells_written_by_a1"
    ],
    "parent_task": null,
    "supersedes": null,
    "failure": null,
    "failure_count": 1,
    "last_result": null,
    "completed_at": null,
    "created_at": "2026-08-29T05:08:34-07:00",
    "updated_at": "2026-08-29T06:17:31-07:00",
    "audit": "/api/work/task/WT-0092/audit",
    "submit_to": "/api/work/task/WT-0092/submit"
  }
}