{
  "checker": {
    "claims": [
      {
        "claim": "omd check reports design-lint findings and exits 1 when any are found, so it works as a CI gate",
        "command": "node bin/omd.ts check --ir test/fixtures/ir.raw.json",
        "evidence": "[warn] CONTRAST-001 Screen/Checkout/PayNow: Text contrast ratio 3.03 is below the WCAG AA minimum for its rendered size and weight (3:1 for large text; 4.5:1 otherwise).\n[warn] TOKEN-003 Screen/Checkout/PayNow: Fill is not tokenised (got null)\n[warn] TOKEN-004 Screen/Grid/CardOffGrid1: Corner radius is not tokenised (got null). A one-off radius is a decision made outside the system; map it to a radius token so the corner scale stays coherent.\n[warn] TOKEN-004 Screen/Grid/CardOffGrid2: Corner radius is not tokenised (got null). A one-off radius is a decision made outside the system; map it to a",
        "expected": "findings printed and exit code 1",
        "input": "test/fixtures/ir.raw.json (prebuilt IR, no browser)",
        "kind": "claim",
        "outcome": "Real input produced the expected result: [warn] CONTRAST-001 Screen/Checkout/PayNow",
        "returncode": 1,
        "source": "Any finding exits 1, so it is usable in CI.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "omd slop scan reads supported source files without writing them",
        "command": "node bin/omd.ts slop scan test/fixtures --json",
        "evidence": "\"filesScanned\":28,\"candidates\":[]}",
        "expected": "JSON scan report with 28 files scanned",
        "input": "test/fixtures directory",
        "kind": "claim",
        "outcome": "Real input produced the expected result: \"filesScanned\":28",
        "returncode": 0,
        "source": "`omd slop scan [root] [--json]` reads supported production source without writing it.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (README CLI reference, bin/omd.ts, core/cli, package.json scripts): no cron/scheduler/loop/webhook/--once/--now product trigger. Repeating behaviour lives in host hooks (Pi/Codex/Claude Code) and CI schedules, not in the product CLI.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (README CLI reference, bin/omd.ts, core/cli, package.json scripts): no cron/scheduler/loop/webhook/--once/--now product trigger. Repeating behaviour lives in host hooks (Pi/Codex/Claude Code) and CI schedules, not in the product CLI.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "node",
        "bin/omd.ts",
        "check",
        "--ir",
        "test/fixtures/ir.raw.json"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 1,
      "scope": "product operation",
      "stderr": "",
      "stdout": "[warn] CONTRAST-001 Screen/Checkout/PayNow: Text contrast ratio 3.03 is below the WCAG AA minimum for its rendered size and weight (3:1 for large text; 4.5:1 otherwise).\n[warn] TOKEN-003 Screen/Checkout/PayNow: Fill is not tokenised (got null)\n[warn] TOKEN-004 Screen/Grid/CardOffGrid1: Corner radius is not tokenised (got null). A one-off radius is a decision made outside the system; map it to a radius token so the corner scale stays coherent.\n[warn] TOKEN-004 Screen/Grid/CardOffGrid2: Corner radius is not tokenised (got null). A one-off radius is a decision made outside the system; map it to a radius token so the corner scale stays coherent.\n[warn] TOKEN-004 Screen/Grid/CardOffGrid3: Corner radius is not tokenised (got null). A one-off radius is a decision made outside the system; map it to a radius token so the corner scale stays coherent.\n[warn] TOKEN-003 Screen/List/CardOffGrid: Fill is not tokenised (got null)\n[warn] TOKEN-004 Screen/List/CardOffGrid: Corner radius is not tokenised (got null). A one-off radius is a decision made outside the system; map it to a radius token so the corner scale stays coherent.",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "read-only source candidate scan (CLI reference)",
        "command": "node bin/omd.ts slop scan test/fixtures --json",
        "deferred": false,
        "evidence": "{\"schemaVersion\":\"1.0\",\"root\":\"<guest-path>\",\"filesScanned\":28,\"candidates\":[]}",
        "expected": "JSON scan report",
        "input": "test/fixtures --json",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md CLI reference: omd slop scan [root] [--json]",
        "verdict": "yes"
      },
      {
        "claim": "stack routing reports existing toolchain for this repo (CLI reference: omd stack)",
        "command": "node bin/omd.ts stack --json",
        "deferred": false,
        "evidence": "{\"stack\":\"existing\",\"framework\":null,\"greenfield\":false,\"reason\":\"existing toolchain (package.json) \u2014 preserve and investigate it, never replace it with a different stack\",\"shell\":{\"kind\":\"browser\",\"evidence\":[],\"devUrl\":null,\"builtEntry\":null,\"builtEntryExists\":false,\"buildCommand\":null,\"devCommand\":null,\"inapplicableChecks\":[]}}",
        "expected": "stack reported as existing",
        "input": "--json in repo root",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md CLI reference: omd stack [--json]",
        "verdict": "yes"
      },
      {
        "claim": "documented offline unit test tier",
        "command": "",
        "deferred": false,
        "evidence": "npm run test:unit ran 986 tests: 985 passed, 1 failed (test/ci-coverage-merge.test.ts 'raw V8 coverage keeps opposite hits...': TypeError from node:path in node test coverage merge under Node 22.23.4). Not hidden; test run exit code 1. Not replayed as a passing example.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "npm run test:unit ran 986 tests: 985 passed, 1 failed (test/ci-coverage-merge.test.ts 'raw V8 coverage keeps opposite hits...': TypeError from node:path in node test coverage merge under Node 22.23.4). Not hidden; test run exit code 1. Not replayed as a passing example.",
        "source": "README.md Testing: npm test / test:unit",
        "verdict": "blocked"
      },
      {
        "claim": "browser-dependent README commands (omd render / omd ir / omd check <page> / omd probe)",
        "command": "",
        "deferred": false,
        "evidence": "Chromium not present (omd doctor: playwright chromium not found). The README browser download step was not run because the task forbids browser downloads, and no CDP endpoint is supplied (OMD_BROWSER_CDP_URL unset). Ran browser-free substitutes: omd check --ir and omd slop scan.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Chromium not present (omd doctor: playwright chromium not found). The README browser download step was not run because the task forbids browser downloads, and no CDP endpoint is supplied (OMD_BROWSER_CDP_URL unset). Ran browser-free substitutes: omd check --ir and omd slop scan.",
        "source": "README.md CLI reference",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Node/npm were absent; installed Node v22.23.4 from nodejs.org tarball (README needs >=22.19).",
    "node bin/omd.ts doctor fails on 'playwright chromium (not found)'. The README's browser download step was not run: the task forbids browser downloads and no CDP endpoint was supplied.",
    "node bin/omd-install.ts install exits 1: 'No supported host found: neither ~/.claude nor ~/.codex exists'. Host install not done.",
    "omd check <page>, omd ir, omd render, omd probe, omd slop checkpoint not run: they need Chromium (browserType.launch failed).",
    "npm run test:unit: 985/986 pass; 1 failure in test/ci-coverage-merge.test.ts (node:path TypeError in coverage merge under Node 22.23.4).",
    "Ran npm install (lifecycle scripts) with NODE_USE_ENV_PROXY=1; no telemetry prompt appeared."
  ],
  "fault_owner": "prerequisite",
  "main_blocker": null,
  "operation": "Run oh-my-design (omd) CLI design checks from source at pin 7618cc4",
  "operation_scope": "Browser-free CLI checks (omd check --ir, omd slop scan, omd stack) work on Ubuntu 24.04 with Node 22.23.4. Page rendering, page checks, probe and reference capture need a local Chromium or a supplied CDP endpoint, neither available in this guest. Host install needs Claude Code or Codex (not present).",
  "outcome": "working",
  "plain_failure": "The design tool's core page-rendering features cannot run on this test machine because its web browser is missing and this task does not allow downloading one. The parts that work without a browser (design-rule checks on prebuilt layouts, source scanning, and stack detection) were run and produced their documented output.",
  "steps": [
    "git init; git remote add origin https://github.com/3x-haust/oh-my-design; git fetch --depth 1 origin 7618cc4b6bdd92ed43a7fa62b6be12789f94aca6; git reset --mixed FETCH_HEAD",
    "Install Node 22 (official nodejs.org linux-x64 tarball, v22.23.4) into /usr/local (README requires Node >=22.19)",
    "npm install (README: From source (contributors))",
    "node bin/omd.ts doctor",
    "node bin/omd-install.ts install",
    "node bin/omd.ts check --ir test/fixtures/ir.raw.json",
    "node bin/omd.ts slop scan test/fixtures --json",
    "npm run test:unit"
  ],
  "stuck_step": "A local Chromium is required for rendering and page checks; it is not present, browser downloads are forbidden here, and no CDP endpoint was supplied.",
  "suggested_fix": "Provide a shared CDP endpoint via OMD_BROWSER_CDP_URL or allow the README's Chromium setup in the guest; install Claude Code or Codex to test host install; investigate the ci-coverage-merge test under Node 22.23.4."
}
