{
  "checker": {
    "claims": [
      {
        "claim": "The quickstart benchmark writes its result file on CPU",
        "command": "'C:\\coldpass\\workspace\\.tools\\uv.exe' run --no-project --python .venv python benchmarks/bench_laya_cpu.py --model .cache/model/typed-decisions --threads 4 --warmup 1 --repeats 1 --counts 1,3 --output .cache/claim-bench.json-checker-b1cd51be3c914d7791f6153aa070b924",
        "evidence": "\"device\": \"cpu\",\r\n    \"model_path\": \"<local typed-decisions checkpoint>\",\r\n    \"model_config\": {\r\n      \"encoder\": \"answerdotai/ModernBERT-large\",\r\n      \"head_layers\": 2,\r\n      \"max_len\": 1024,\r\n      \"head_max_len\": 256,\r\n      \"max_prefixes\": 6,\r\n      \"act_costs\": {\r\n        \"escalate\": 0.5\r\n      },\r\n      \"cost_wrong_act\": 3.0,\r\n      \"amp_dtype\": \"bf16\",\r\n      \"model_name\": \"laya-typed-decisions\",\r\n      \"training\": {\r\n        \"updates\": 7313,\r\n        \"epochs_completed\": 1,\r\n        \"hours\": 1.96,\r\n        \"world_size\": 1,\r\n        \"fine_tuned_from_checkpoint\": true\r\n      },\r\n      ",
        "expected": "JSON output with device cpu",
        "input": "bench_laya_cpu.py with counts 1,3 and a fresh output file",
        "kind": "claim",
        "outcome": "Real input produced the expected result: \"device\": \"cpu\"",
        "returncode": 0,
        "source": "Expect `meta.device` to be `\"cpu\"`, finite",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The syntax check passes on the repository",
        "command": "'C:\\coldpass\\workspace\\.tools\\uv.exe' run --no-project --python .venv python scripts/check_syntax.py",
        "evidence": "Python syntax checked.\r\n",
        "expected": "Python syntax checked.",
        "input": "scripts/check_syntax.py",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Python syntax checked.",
        "returncode": 0,
        "source": "python3 scripts/check_syntax.py",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: scripts/download_model.py, scripts/download_onnx.py, scripts/parity.py, scripts/check_syntax.py and benchmarks/*.py are one-shot CLIs with no cron, loop, watch, --once/--now or webhook. A search for schedule/cron/--once/--now/webhook found none. The product runs once per command when a user starts it.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: scripts/download_model.py, scripts/download_onnx.py, scripts/parity.py, scripts/check_syntax.py and benchmarks/*.py are one-shot CLIs with no cron, loop, watch, --once/--now or webhook. A search for schedule/cron/--once/--now/webhook found none. The product runs once per command when a user starts it.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "C:\\coldpass\\workspace\\.tools\\uv.exe",
        "run",
        "--no-project",
        "--python",
        ".venv",
        "python",
        "benchmarks/bench_laya_cpu.py",
        "--model",
        ".cache/model/typed-decisions",
        "--threads",
        "4",
        "--warmup",
        "1",
        "--repeats",
        "1",
        "--counts",
        "1,3",
        "--output",
        ".cache/probe-bench.json-checker-cd5cb4bb7eb1424eb6745c483e03ccca"
      ],
      "expected_file": ".cache/probe-bench.json-checker-cd5cb4bb7eb1424eb6745c483e03ccca",
      "file_checked": true,
      "file_excerpt": "\"device\": \"cpu\",\r\n    \"model_path\": \"<local typed-decisions checkpoint>\",\r\n    \"model_config\": {\r\n      \"encoder\": \"answerdotai/ModernBERT-large\",\r\n      \"head_layers\": 2,\r\n      \"max_len\": 1024,\r\n      \"head_max_len\": 256,\r\n      \"max_prefixes\": 6,\r\n      \"act_costs\": {\r\n        \"escalate\": 0.5\r\n      },\r\n      \"cost_wrong_act\": 3.0,\r\n      \"amp_dtype\": \"bf16\",\r\n      \"model_name\": \"laya-typed-decisions\",\r\n      \"training\": {\r\n        \"updates\": 7313,\r\n        \"epochs_completed\": 1,\r\n        \"hours\": 1.96,\r\n        \"world_size\": 1,\r\n        \"fine_tuned_from_checkpoint\": true\r\n      },\r\n      \"gradient_checkpointing\": true,\r\n      \"max_tokens_per_batch\": 4096,\r\n      \"fine_tuned\": true\r\n    },\r\n    \"calibration_source\": \"pinned upstream rl_agent_config.json\",\r\n    \"cold_load_ms\": 16787.829,\r\n    \"rss_before_mib\": 193.77,\r\n    \"rss_after_load_mib\": 1974.8\r\n  },\r\n  \"workloads\": {\r\n    \"1\": {\r\n      \"p50_ms\": 351.584,\r\n      \"p95_ms\": 351.584,\r\n      \"min_ms\": 351.584,\r\n      \"max_ms\": 351.584,\r\n      \"mean_ms\": 351.584,\r\n      \"questions\": 1,\r\n      \"questions_per_second_p50\": 2.844,\r\n      \"rss_peak_mib\": 1973.27,\r\n      \"cpu_percent_mean_sampled\": 191.0,\r\n      \"output_sha256_first\": \"615045d6d0cc8bcc75c059903638b8198377b74f90ab179d89f8f006b21cecdf\",\r\n      \"output_sha256_last\": \"615045d6d0cc8bcc75c059903638b8198377b74f90ab179d89f8f006b21cecdf\",\r\n      \"deterministic_repeated_output\": true,\r\n      \"sample_ms\": [\r\n        351.584\r\n      ]\r\n    },\r\n    \"3\": {\r\n      \"p50_ms\": 959.092,\r\n      \"p95_ms\": 959.092,\r\n      \"min_ms\": 959.092,\r\n      \"max_ms\": 959.092,\r\n      \"mean_ms\": 959.092,\r\n      \"questions\": 3,\r\n      \"questions_per_second_p50\": 3.128,\r\n      \"rss_peak_mib\": 1984.32,\r\n      \"cpu_percent_mean_sampled\": 190.3,\r\n      \"output_sha256_first\": \"62e8e2041019b6894716c30d3050e0beec1e70ea2b9c0e0405e80fb01a4e3aa4\",\r\n      \"output_sha256_last\": \"62e8e2041019b6894716c30d3050e0beec1e70ea2b9c0e0405e80fb01a4e3aa4\",\r\n      \"deterministic_repeated_output\": true,\r\n      \"sample_ms\": [\r\n        959.092\r\n      ]\r\n    }\r\n  },\r\n  \"batch_equivalence\": {\r\n    \"same_public_answers\": true,\r\n    \"batched_digest\": \"9b003fbe3501b995d7d9255fe97b2044dec65b44825b40302b949c40eb2ed62d\",\r\n    \"singles_digest\": \"9b003fbe3501b995d7d9255fe97b2044dec65b44825b40302b949c40eb2ed62d\",\r\n    \"batched_answers\": {\r\n      \"department\": {\r\n        \"type\": \"choice\",\r\n        \"choice\": \"billing\",\r\n        \"probabilities\": {\r\n          \"billing\": 0.6989,\r\n          \"technical\": 0.0814,\r\n          \"sales\": 0.1338,\r\n          \"other\": 0.086\r\n        },\r\n        \"confidence\": 0.3258,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"urgency\": {\r\n        \"type\": \"score\",\r\n        \"score\": 1.6111,\r\n        \"legend\": {\r\n          \"0\": \"not urgent\",\r\n          \"1\": \"soon\",\r\n          \"2\": \"critical or blocking\"\r\n        },\r\n        \"probabilities\": {\r\n          \"0\": 0.0408,\r\n          \"1\": 0.3073,\r\n          \"2\": 0.6519\r\n        },\r\n        \"confidence\": 0.2972,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"refund\": {\r\n        \"type\": \"noul\",\r\n        \"noul\": 0.68,\r\n        \"confidence\": 0.68,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      }\r\n    },\r\n    \"single_answers\": {\r\n      \"department\": {\r\n        \"type\": \"choice\",\r\n        \"choice\": \"billing\",\r\n        \"probabilities\": {\r\n          \"billing\": 0.6989,\r\n          \"technical\": 0.0814,\r\n          \"sales\": 0.1338,\r\n          \"other\": 0.086\r\n        },\r\n        \"confidence\": 0.3258,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"urgency\": {\r\n        \"type\": \"score\",\r\n        \"score\": 1.6111,\r\n        \"legend\": {\r\n          \"0\": \"not urgent\",\r\n          \"1\": \"soon\",\r\n          \"2\": \"critical or blocking\"\r\n        },\r\n        \"probabilities\": {\r\n          \"0\": 0.0408,\r\n          \"1\": 0.3073,\r\n          \"2\": 0.6519\r\n        },\r\n        \"confidence\": 0.2972,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"refund\": {\r\n        \"type\": \"noul\",\r\n        \"noul\": 0.68,\r\n        \"confidence\": 0.68,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      }\r\n    }\r\n  },\r\n  \"fixture\": {\r\n    \"state\": {\r\n      \"ticket\": {\r\n        \"subject\": \"Duplicate charge\",\r\n        \"body\": \"The customer was billed twice for invoice 4411 and asks for a refund today. They say the duplicate charge is blocking month-end close.\"\r\n      }\r\n    },\r\n    \"questions\": {\r\n      \"department\": {\r\n        \"type\": \"choice\",\r\n        \"instructions\": \"Which team should handle this ticket?\",\r\n        \"criteria\": {\r\n          \"billing\": \"invoices, payments, refunds\",\r\n          \"technical\": \"bugs, outages, integrations\",\r\n          \"sales\": \"pricing, demos, new purchases\",\r\n          \"other\": \"everything else\"\r\n        }\r\n      },\r\n      \"urgency\": {\r\n        \"type\": \"score\",\r\n        \"instructions\": \"How urgent is this ticket?\",\r\n        \"criteria\": [\r\n          \"not urgent\",\r\n          \"soon\",\r\n          \"critical or blocking\"\r\n        ]\r\n      },\r\n      \"refund\": {\r\n        \"type\": \"noul\",\r\n        \"instructions\": \"Does the customer ask for money back?\"\r\n      }\r\n    },\r\n    \"answers\": {\r\n      \"department\": {\r\n        \"type\": \"choice\",\r\n        \"choice\": \"billing\",\r\n        \"probabilities\": {\r\n          \"billing\": 0.6989,\r\n          \"technical\": 0.0814,\r\n          \"sales\": 0.1338,\r\n          \"other\": 0.086\r\n        },\r\n        \"confidence\": 0.3258,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"urgency\": {\r\n        \"type\": \"score\",\r\n        \"score\": 1.6111,\r\n        \"legend\": {\r\n          \"0\": \"not urgent\",\r\n          \"1\": \"soon\",\r\n          \"2\": \"critical or blocking\"\r\n        },\r\n        \"probabilities\": {\r\n          \"0\": 0.0408,\r\n          \"1\": 0.3073,\r\n          \"2\": 0.6519\r\n        },\r\n        \"confidence\": 0.2972,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"refund\": {\r\n        \"type\": \"noul\",\r\n        \"noul\": 0.68,\r\n        \"confidence\": 0.68,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n",
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "timing 1 questions ...\n  p50=351.6 ms p95=351.6 ms 2.84 q/s RSS=1973.3 MiB CPU=191.0%\ntiming 3 questions ...\n  p50=959.1 ms p95=959.1 ms 3.13 q/s RSS=1984.3 MiB CPU=190.3%\nwrote .cache\\probe-bench.json-checker-cd5cb4bb7eb1424eb6745c483e03ccca\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Collect PyTorch reference answers for the parity suite",
        "command": "'C:\\coldpass\\workspace\\.tools\\uv.exe' run --no-project --python .venv python scripts/parity.py collect --backend pytorch --output .cache/example-parity-reference.json-checker-27a7baa54c3a46aa86d4e37fc948d878",
        "deferred": false,
        "evidence": "\"refund\": {\r\n        \"type\": \"noul\",\r\n        \"noul\": 0.1578,\r\n        \"confidence\": 0.8422,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      },\r\n      \"urgency\": {\r\n        \"type\": \"score\",\r\n        \"score\": 1.0602,\r\n        \"legend\": {\r\n          \"0\": \"not urgent\",\r\n          \"1\": \"soon\",\r\n          \"2\": \"critical or blocking\"\r\n        },\r\n        \"probabilities\": {\r\n          \"0\": 0.2235,\r\n          \"1\": 0.4927,\r\n          \"2\": 0.2838\r\n        },\r\n        \"confidence\": 0.0524,\r\n        \"action\": {\r\n          \"act_probability\": 1.0\r\n        }\r\n      }\r\n    }\r\n  ]\r\n}\r\n",
        "expected": "60 cases collected with pytorch-fp32",
        "input": "parity.py collect --backend pytorch on the pinned checkpoint",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md: Check any ONNX build against the reference",
        "verdict": "yes"
      },
      {
        "claim": "Download and verify the pinned typed-decisions checkpoint",
        "command": "'C:\\coldpass\\workspace\\.tools\\uv.exe' run --no-project --python .venv python scripts/download_model.py",
        "deferred": false,
        "evidence": "Downloading about 846 MB of public upstream files; no account required.\r\nPinned typed-decisions checkpoint verified.\r\n\rFetching 5 files:   0%|          | 0/5 [00:00<?, ?it/s]\rFetching 5 files: 100%|##########| 5/5 [00:00<?, ?it/s]",
        "expected": "checkpoint verified",
        "input": "scripts/download_model.py",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md: Quickstart: PyTorch FP32",
        "verdict": "yes"
      },
      {
        "claim": "Collect ONNX candidate answers for the parity suite",
        "command": "",
        "deferred": false,
        "evidence": "Not run: requires the separate .venv-onnx environment and the 1.69 GB ONNX graph download, which were outside this quickstart run.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Not run: requires the separate .venv-onnx environment and the 1.69 GB ONNX graph download, which were outside this quickstart run.",
        "source": "README.md: Check any ONNX build against the reference",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "python3 replaced by uv run --python .venv python on Windows guest",
    "Visual C++ 2022 x64 redistributable installed as prerequisite for torch; installer needed per-machine AppData/ProgramData env workaround",
    "ONNX route not run (needs separate .venv-onnx and 1.69 GB graphs)",
    "Unit test suite not used as a claim (checker does not count it as a product operation)"
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "PyTorch FP32 CPU quickstart: install, download pinned typed-decisions checkpoint, run CPU benchmark, parity collect, local syntax check",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "Install uv via README install.ps1 (absolute powershell path used)",
    "uv venv --python 3.12 .venv (CPython 3.12.15)",
    "Install PyTorch 2.14.0+cpu and laya 0.3.4 per README quickstart",
    "scripts/download_model.py: pinned typed-decisions checkpoint downloaded and verified",
    "benchmarks/bench_laya_cpu.py --counts 1,3 wrote CPU result JSON (exit 0)",
    "scripts/parity.py collect --backend pytorch: 60 cases collected, backend pytorch-fp32",
    "scripts/check_syntax.py passed"
  ],
  "stuck_step": null,
  "suggested_fix": "Guest images for Windows should include the Visual C++ 2022 x64 runtime so torch imports without a manual install."
}
