{
  "_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-0105",
    "kind": "work",
    "objective": "Make the build publishable: a generated, gate-checked public projection of the operating repository lands in a second GitHub repository, private until the owner flips visibility, with self-explaining documentation",
    "detail": "The operating repository (miscsubjects-pages) can never be published as it stands: its tracked tree and fourteen thousand commits carry the ledger mirror (personal data and pre-scrub credential material), guard baselines, a committed signing key, legacy consoles with hardcoded provider keys, and the owner's identity in about 280 code, prompt and doc files. The repair is a projection, not a rewrite: scripts/publish-mirror.mjs lists tracked files, keeps an allow-list, substitutes identity (owner emails, phones, home directory, handles, the site's own owner-identity table, identifiers), runs gates against the OUTPUT (forbidden strings, paths, real vault values, size, gitleaks with a reasoned allow-list), writes PROJECTION.json, and pushes one commit per export to the owner/miscsubjects. .github/workflows/publish-mirror.yml re-exports after every real commit over a write-only deploy key. Documentation: README.md (front door), SECURITY.md (where credentials live, configuration names, gates), docs/PUBLISHING.md (the plan, the mechanism, the go-public checklist), docs/REPO_MAP.md (every top-level path and whether it travels). The manifest is announced at https://miscsubjects.com/img/projection/latest.json so this task can be graded without access to either repository.",
    "state": "superseded",
    "priority": 2,
    "revision": 6,
    "depends_on": [],
    "permitted_capabilities": [
      "git",
      "gh",
      "node scripts/publish-mirror.mjs",
      "PUT /api/r2/img/projection/*",
      "POST /api/coding-law/start",
      "POST /api/coding-law/commit"
    ],
    "acceptance_tests": [
      {
        "id": "manifest_served",
        "type": "http_ok",
        "url": "/img/projection/latest.json"
      },
      {
        "id": "manifest_all_gates_ok",
        "type": "contains",
        "url": "/img/projection/latest.json",
        "needle": "\"all_gates_ok\": true",
        "scope": "raw"
      },
      {
        "id": "manifest_has_content_hash",
        "type": "contains",
        "url": "/img/projection/latest.json",
        "needle": "\"content_hash\": \"",
        "scope": "raw"
      },
      {
        "id": "manifest_names_source_commit",
        "type": "contains",
        "url": "/img/projection/latest.json",
        "needle": "\"commit\": \"",
        "scope": "raw"
      },
      {
        "id": "manifest_records_mirror_commit",
        "type": "contains",
        "url": "/img/projection/latest.json",
        "needle": "\"mirror\": {\n  \"commit\": \"",
        "scope": "raw"
      },
      {
        "id": "ledger_mirror_not_projected",
        "type": "not_contains",
        "url": "/img/projection/latest.json",
        "needle": "\"path\": \"ledger-mirror/",
        "scope": "raw"
      },
      {
        "id": "evidence_mirror_commit",
        "type": "evidence_present",
        "field": "mirror_commit"
      }
    ],
    "required_evidence": [
      "mirror_repository",
      "mirror_commit",
      "source_commit",
      "content_hash",
      "gates_passed",
      "docs_written",
      "manifest_url"
    ],
    "parent_task": null,
    "supersedes": null,
    "failure": null,
    "failure_count": 1,
    "last_result": null,
    "completed_at": null,
    "created_at": "2026-09-02T18:11:24-07:00",
    "updated_at": "2026-09-02T18:34:47-07:00",
    "audit": "/api/work/task/WT-0105/audit",
    "submit_to": "/api/work/task/WT-0105/submit"
  }
}