{
  "schemaVersion": 1,
  "ogjsVersion": "0.5.10",
  "generatedAt": "2026-08-28",
  "status": "canonical-bundle-ready-host-verification-pending",
  "reviewer": "Codex root — independent fixture checker, typecheck, and build rerun",
  "hosts": [
    {
      "host": "Claude Code",
      "support": "verified",
      "verified": true,
      "verifiedAt": "2026-08-28",
      "version": "2.1.235",
      "model": "claude-sonnet-5",
      "tasks": [
        {
          "id": "readable-investigation",
          "prompt": "Build a readable investigation from supplied stable-ID graph data using only public @mizansec/ogjs imports, semantic presentation, automatic layout and framing, accessible selection, and cleanup.",
          "output": "Application data and domain-role mapping remain application-owned; OGJS owns presentation, layout, framing, accessible activation, selection state, and teardown.",
          "checks": {
            "projectChecker": "pass",
            "typecheck": "pass",
            "build": "pass"
          }
        },
        {
          "id": "group-and-select",
          "prompt": "Group by the supplied data.domain, add stable-ID selection and a public ungroup action, preserve graph and camera state, and clean up.",
          "output": "Grouping overlays the existing stable IDs; selection and ungrouping use public state APIs without rebuilding the graph or fitting the camera after interaction.",
          "checks": {
            "projectChecker": "pass",
            "typecheck": "pass",
            "build": "pass"
          }
        },
        {
          "id": "remove-manual-plumbing",
          "prompt": "Replace manual canvas sizing, pixel scaling, animation frames, renderer access, camera math, and window globals with the smallest public OGJS intent APIs while retaining graph data and missing-container policy.",
          "output": "OGJS now owns canvas sizing, device-pixel scaling, render scheduling, framing, and teardown; the application retains graph data and missing-container policy.",
          "checks": {
            "projectChecker": "pass",
            "typecheck": "pass",
            "build": "pass"
          }
        }
      ]
    },
    {
      "host": "Codex",
      "support": "verified",
      "verified": true,
      "verifiedAt": "2026-08-28",
      "version": "0.146.0",
      "model": "gpt-5.6-sol",
      "tasks": [
        {
          "id": "readable-investigation",
          "reasoningEffort": "high",
          "prompt": "Build a readable investigation from supplied stable-ID graph data using only public @mizansec/ogjs imports, semantic presentation, automatic layout and framing, accessible selection, and cleanup.",
          "output": "Application owns graph data, stable IDs, role mapping, and selection policy. OGJS owns rendering, layout, coordinates, framing, accessibility surface, interaction state, and teardown.",
          "checks": {
            "projectChecker": "pass",
            "typecheck": "pass",
            "build": "pass"
          }
        },
        {
          "id": "group-and-select",
          "reasoningEffort": "medium",
          "prompt": "Group by the supplied data.domain, add stable-ID selection and a public ungroup action, preserve graph and camera state, and clean up.",
          "output": "Grouping, selection, and ungrouping use public APIs without rebuilding the graph or fitting the camera; original IDs and data remain unchanged.",
          "checks": {
            "projectChecker": "pass",
            "typecheck": "pass",
            "build": "pass"
          }
        },
        {
          "id": "remove-manual-plumbing",
          "reasoningEffort": "medium",
          "prompt": "Replace manual canvas sizing, pixel scaling, animation frames, renderer access, camera math, and window globals with the smallest public OGJS intent APIs while retaining graph data and missing-container policy.",
          "output": "OGJS owns canvas sizing, pixel scaling, rendering, animation, layout, framing, and cleanup. The application retains graph data and missing-container policy.",
          "checks": {
            "projectChecker": "pass",
            "typecheck": "pass",
            "build": "pass"
          }
        }
      ]
    },
    {
      "host": "OpenCode",
      "support": "blocked-provider-capacity",
      "verified": false,
      "version": "1.4.0",
      "model": "opencode/big-pickle",
      "note": "Skill discovery succeeded, but the hosted model returned HTTP 500 and then FreeUsageLimitError before producing code."
    },
    {
      "host": "GitHub Copilot CLI",
      "support": "not-installed",
      "verified": false,
      "version": null,
      "model": null,
      "note": "The CLI is not installed on the verification host."
    },
    {
      "host": "DeepSeek",
      "support": "format-compatible-beta",
      "verified": false,
      "version": null,
      "model": null,
      "note": "No exact coding host and model combination has passed the fixture suite."
    },
    {
      "host": "Kimi K3",
      "support": "format-compatible-beta",
      "verified": false,
      "version": null,
      "model": null,
      "note": "No exact coding host and model combination has passed the fixture suite."
    },
    {
      "host": "GLM",
      "support": "format-compatible-beta",
      "verified": false,
      "version": null,
      "model": null,
      "note": "No exact coding host and model combination has passed the fixture suite."
    }
  ]
}
