{
  "run_id": "trailhq--Trail-Code-gpt-6-luna-1792773961244666647",
  "checker": {
    "claims": [
      {
        "claim": "A code search returns ranked matching code with exact file locations.",
        "command": "npm run cli -- ask 'tree-sitter parser' .",
        "evidence": "graft ask \u2014 \"tree-sitter parser\"  (lexical)\n\n1. tree.ts \u00b7 file  [symbol]\n   viewer/tree.ts\n\n2. native.ts \u00b7 file  [symbol]\n   src/graph/native.ts\n\n3. isGitWorkTree \u00b7 function  [symbol]\n   src/init-guard.ts:L16-L19\n   function isGitWorkTree(dir: string): boolean\n\n4. sameSyntaxNode \u00b7 function  [symbol]\n   src/graph/extract.ts:L1019-L1024\n   function sameSyntaxNode( a: Parser.SyntaxNode | null | undefined, b: Parser.SyntaxNode | null | undefined, ): boolean\n\n5. workTreeOf \u00b7 function  [symbol]\n   src/notes/linked-learnings.ts:L24-L33\n   function workTreeOf(start: string): string | null\n\n6. treeLear",
        "expected": "A ranked result includes src/graph/native.ts or a tree-sitter parser function with file and line.",
        "input": "tree-sitter parser",
        "kind": "claim",
        "outcome": "Real input produced the expected result: graft ask \u2014 \"tree-sitter parser\"",
        "returncode": 0,
        "source": "trail ask \"<task>\" [dir]             # the matching code and learnings: ranked nodes + exact file:line (no LLM, no key)",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "README entry points describe commands run on demand (trail build, ask, grep, map); no product scheduler or recurring cycle is documented. The documented on-demand graph refresh was exercised with trail ask.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "README entry points describe commands run on demand (trail build, ask, grep, map); no product scheduler or recurring cycle is documented. The documented on-demand graph refresh was exercised with trail ask.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "npm",
        "run",
        "cli",
        "--",
        "ask",
        "tree-sitter parser",
        "."
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "\n> @nanonets/graft@0.25.0 cli\n> tsx src/cli.ts ask tree-sitter parser .\n\ngraft ask \u2014 \"tree-sitter parser\"  (lexical)\n\n1. tree.ts \u00b7 file  [symbol]\n   viewer/tree.ts\n\n2. native.ts \u00b7 file  [symbol]\n   src/graph/native.ts\n\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "README CLI search example",
        "command": "npm run cli -- ask 'tree-sitter parser' .",
        "deferred": false,
        "evidence": "de | null | undefined, ): boolean\n\n5. workTreeOf \u00b7 function  [symbol]\n   src/notes/linked-learnings.ts:L24-L33\n   function workTreeOf(start: string): string | null\n\n6. treeLearnings \u00b7 function  [symbol]\n   src/cloud/workspace-sync.ts:L279-L286\n   function treeLearnings(checkout: string): Array<{ name: string; text: string }>\n\n7. loadWasmLanguage \u00b7 function  [symbol]\n   src/graph/generic.ts:L218-L231\n   async function loadWasmLanguage(wasm: string): Promise<unknown | null>\n\n8. copyTree \u00b7 function  [symbol]\n   src/graph/seed.ts:L168-L180\n   function copyTree(srcDir: string, outDir: string): void",
        "expected": "Ranked matching nodes with file locations",
        "input": "tree-sitter parser",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md#CLI",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
