{
  "lab": "Generic frame-request scheduler",
  "scope": "Synthetic scheduling logic only. No Spark, Three.js, browser, GPU, visual correctness, or performance validation.",
  "generatedAt": "2026-10-12T12:14:08.820Z",
  "runtime": {
    "node": "v24.19.0"
  },
  "command": "node run-tests.mjs",
  "status": "passed",
  "totals": {
    "tests": 10,
    "passed": 10,
    "failed": 0
  },
  "cases": [
    {
      "number": 1,
      "name": "burst requests coalesce into one scheduled draw",
      "passed": true
    },
    {
      "number": 2,
      "name": "later asynchronous completion requests a fresh frame",
      "passed": true
    },
    {
      "number": 3,
      "name": "invalidation during draw survives until the next flush",
      "passed": true
    },
    {
      "number": 4,
      "name": "idle flushes do nothing before and after requested work",
      "passed": true
    },
    {
      "number": 5,
      "name": "dispose cancels handle zero and ignores later requests and stale delivery",
      "passed": true
    },
    {
      "number": 6,
      "name": "failed draw propagates its error without wedging future requests",
      "passed": true
    },
    {
      "number": 7,
      "name": "request queued during a failed draw remains pending",
      "passed": true
    },
    {
      "number": 8,
      "name": "a scheduling failure does not wedge later requests",
      "passed": true
    },
    {
      "number": 9,
      "name": "the scheduled timestamp reaches draw unchanged",
      "passed": true
    },
    {
      "number": 10,
      "name": "invalid callbacks are rejected at construction",
      "passed": true
    }
  ]
}
