{
  "method": "Node.js source inspection, esbuild JavaScript parsing, and jsdom DOM simulation. No real browser, rendering, layout, WebGL, sound or CDN execution.",
  "source": [
    {
      "id": "glass-crane",
      "attempt": 1,
      "completeHtmlDelivered": true,
      "sha256Matches": true,
      "doctype": true,
      "language": "en",
      "title": "Crane Suspended — Origami in a Glass Sphere",
      "viewport": true,
      "duplicateIds": [],
      "inlineScripts": 0,
      "scriptParseErrors": [],
      "externalUrls": [],
      "missingSvgReferences": []
    },
    {
      "id": "procedural-globe",
      "attempt": 1,
      "completeHtmlDelivered": true,
      "sha256Matches": true,
      "doctype": true,
      "language": "en",
      "title": "Procedural Globe — Three.js",
      "viewport": true,
      "duplicateIds": [],
      "inlineScripts": 1,
      "scriptParseErrors": [],
      "externalUrls": [
        "https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.js"
      ],
      "missingSvgReferences": []
    },
    {
      "id": "floating-islands",
      "attempt": 1,
      "completeHtmlDelivered": false,
      "sha256Matches": true,
      "doctype": true,
      "language": "en",
      "title": "Skybound Wizard — Floating Isles",
      "viewport": true,
      "duplicateIds": [],
      "inlineScripts": 1,
      "scriptParseErrors": [
        "Transform failed with 2 errors:\n<stdin>:30:0: ERROR: The JSX syntax extension is not currently enabled\n<stdin>:30:1: ERROR: Expected identifier but found \"/\""
      ],
      "externalUrls": [
        "https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.js"
      ],
      "missingSvgReferences": []
    },
    {
      "id": "floating-islands",
      "attempt": 2,
      "completeHtmlDelivered": false,
      "sha256Matches": true,
      "doctype": true,
      "language": "en",
      "title": "Skylands Wizard — Crystal Hunt",
      "viewport": true,
      "duplicateIds": [],
      "inlineScripts": 0,
      "scriptParseErrors": [],
      "externalUrls": [],
      "missingSvgReferences": []
    },
    {
      "id": "task-board",
      "attempt": 1,
      "completeHtmlDelivered": true,
      "sha256Matches": true,
      "doctype": true,
      "language": "en",
      "title": "Task Board",
      "viewport": true,
      "duplicateIds": [],
      "inlineScripts": 1,
      "scriptParseErrors": [],
      "externalUrls": [],
      "missingSvgReferences": []
    }
  ],
  "taskBoard": [
    {
      "name": "Initial seed cards, columns and counts",
      "passed": true
    },
    {
      "name": "Whitespace-only titles are rejected",
      "passed": true
    },
    {
      "name": "Add task defaults to To do and updates its count",
      "passed": true
    },
    {
      "name": "Untrusted task titles remain literal text",
      "passed": true
    },
    {
      "name": "Move twice reaches Done and cannot advance further",
      "passed": true
    },
    {
      "name": "Case-insensitive search and clearing the filter",
      "passed": true
    },
    {
      "name": "No-match search displays empty states",
      "passed": true
    },
    {
      "name": "Delete removes one card and updates its count",
      "passed": true
    },
    {
      "name": "Reset cancellation preserves current tasks",
      "passed": true
    },
    {
      "name": "Confirmed reset restores seeds and clears search",
      "passed": true
    },
    {
      "name": "Nonempty saved changes survive a simulated reload",
      "passed": true
    },
    {
      "name": "Blocked localStorage still permits in-memory editing",
      "passed": true
    },
    {
      "name": "Corrupted JSON falls back to seeds without a runtime error",
      "passed": true
    },
    {
      "name": "Invalid saved structure falls back to seeds",
      "passed": true
    },
    {
      "name": "Storage write failure retains the current edit and shows notice",
      "passed": true
    },
    {
      "name": "Deleting every task persists an empty board across reload",
      "passed": false,
      "detail": "An intentionally empty saved board must not restore three demo cards\n\n3 !== 0\n"
    }
  ],
  "globeFallback": {
    "passed": true,
    "method": "Actual boot code, transpiled to IIFE, with getContext returning null in jsdom. No WebGL rendering or network request."
  },
  "taskBoardSummary": {
    "passed": 15,
    "failed": 1,
    "total": 16
  }
}
