{
  "run_id": "ModernRelay--omnigraph-claude-haiku-5-5-1792775373235323521",
  "date": "2026-10-23T17:13:36.322788+00:00",
  "repo": "ModernRelay/omnigraph",
  "kind": "mcp",
  "source": "https://github.com/ModernRelay/omnigraph",
  "commit": "1ec9b32e60b678329c35468220f85344f1940faf",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 207.53279119508807,
  "total_s": 243.08740210533142,
  "steps": [
    "cd <guest-path> && pwd && ls -la && id -u && python3 --version && cat /etc/os-release | head -3 && (git -C . rev-parse HEAD 2>&1 | head -1)",
    "cd <guest-path> && ls -la; find . -maxdepth 1 -iname 'readme*' -exec cat {} \\; | head -300",
    "cd <guest-path> && cat scripts/install.sh | head -150; echo ----; cat docs/user/quickstart.md | head -200; echo ----; cat rust-toolchain.toml; which cargo rustc curl; uname -m",
    "export NODE_USE_ENV_PROXY=1; curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh -o /tmp/install-omnigraph.sh; echo \"dl rc=$?\"; bash /tmp/install-omnigraph.sh 2>&1 | tail -40; echo \"rc=${PIPESTATUS[0]}\"; ls -la ~/.local/bin 2>/dev/null; ~/.local/bin/omnigraph --version 2>&1",
    "export PATH=$HOME/.local/bin:$PATH; mkdir -p /tmp/qs && cd /tmp/qs && cat > schema.pg <<'EOF'\nnode Source {\n  slug: String @key\n  title: String\n}\n\nnode Claim {\n  slug: String @key\n  statement: String\n}\n\nedge Supports: Source -> Claim\nEOF\ncat > evidence.jsonl <<'EOF'\n{\"type\":\"Claim\",\"data\":{\"slug\":\"lower-latency\",\"statement\":\"The migration reduced request latency.\"}}\n{\"type\":\"Source\",\"data\":{\"slug\":\"load-test\",\"title\":\"Load test report\"}}\n{\"type\":\"Source\",\"data\":{\"slug\":\"production-metrics\",\"title\":\"Production metrics\"}}\n{\"edge\":\"Supports\",\"from\":\"load-test\",\"to\":\"lower-latency\"}\n{\"edge\":\"Supports\",\"from\":\"production-metrics\",\"to\":\"lower-latency\"}\nEOF\ncat > queries.gq <<'EOF'\nquery sources_for_claim($claim: String) {\n  match {\n    $source: Source\n    $claim_node: Claim { slug: $claim }\n    $source supports $claim_node\n  }\n  return { $source.title as source }\n  order { source asc }\n}\nEOF\nomnigraph init --schema schema.pg graph.omni 2>&1; echo \"init rc=$?\"\nomnigraph load --data evidence.jsonl --mode overwrite --target ./graph.omni 2>&1; echo \"load rc=$?\"\nomnigraph query sources_for_claim --query queries.gq --params '{\"claim\":\"lower-latency\"}' --format table --target ./graph.omni 2>&1; echo \"query rc=$?\"",
    "cd <guest-path> && cat docs/user/operations/mcp.md | head -150",
    "cd <guest-path> && sed -n 1,200p docs/user/operations/server.md",
    "export PATH=$HOME/.local/bin:$PATH; omnigraph-server --help 2>&1 | head -60; echo ----; cd <guest-path> && grep -n -i \"uri boot\\|--uri\\|URI boot\" docs/user/operations/server.md docs/user/cli/*.md docs/user/clusters/index.md | head -30; echo ----; sed -n 1,80p docs/user/cli/targets.md",
    "cd <guest-path> && grep -n \"^#\" docs/user/clusters/index.md; echo ----; sed -n '/## Bootstrap a cluster/,/^## [A-Z]/p' docs/user/clusters/index.md | head -150",
    "cd <guest-path> && sed -n 11,56p docs/user/clusters/index.md; echo ----; sed -n 201,232p docs/user/clusters/index.md",
    "cd <guest-path> && grep -rl \"applies_to\" --include=*.md --include=*.yaml . | head -20; echo ----; sed -n 1,80p docs/user/operations/policy.md",
    "cd <guest-path> && sed -n 80,140p docs/user/operations/policy.md",
    "export PATH=$HOME/.local/bin:$PATH; mkdir -p /tmp/cb/company-brain/queries && cd /tmp/cb/company-brain && cat > cluster.yaml <<'EOF'\nversion: 1\nmetadata:\n  name: company-brain\ngraphs:\n  knowledge:\n    schema: knowledge.pg\n    queries: queries/\npolicies:\n  cluster-access:\n    file: cluster.policy.yaml\n    applies_to: [cluster]\n  graph-access:\n    file: graph.policy.yaml\n    applies_to: [knowledge]\nEOF\ncp /tmp/qs/schema.pg knowledge.pg\ncat > queries/people.gq <<'EOF'\nquery sources_for_claim($claim: String) {\n  match {\n    $source: Source\n    $claim_node: Claim { slug: $claim }\n    $source supports $claim_node\n  }\n  return { $source.title as source }\n  order { source asc }\n}\nEOF\ncat > cluster.policy.yaml <<'EOF'\nversion: 1\ngroups:\n  owners: [act-alice]\nrules:\n  - id: owners-manage-config\n    allow:\n      actors: { group: owners }\n      actions: [config_manage]\n  - id: owners-list-graphs\n    allow:\n      actors: { group: owners }\n      actions: [graph_list]\nEOF\ncat > graph.policy.yaml <<'EOF'\nversion: 1\ngroups:\n  readers: [act-alice]\nrules:\n  - id: readers-can-read\n    allow:\n      actors: { group: readers }\n      actions: [read]\n      branch_scope: any\n  - id: readers-can-invoke\n    allow:\n      actors: { group: readers }\n      actions: [invoke_query, change, schema_apply, branch_create, branch_merge]\nEOF\nomnigraph cluster validate --config /tmp/cb/company-brain 2>&1; echo \"validate rc=$?\"\nmkdir -p /tmp/cb/out && omnigraph cluster plan --target /tmp/cb/company-data --config /tmp/cb/company-brain --as act-alice 2>&1; echo \"plan rc=$?\"",
    "export PATH=$HOME/.local/bin:$PATH; mkdir -p /tmp/cb/company-data && cd /tmp/cb && omnigraph cluster plan --target /tmp/cb/company-data --config /tmp/cb/company-brain 2>&1; echo \"plan rc=$?\"; omnigraph cluster apply --target /tmp/cb/company-data --config /tmp/cb/company-brain --as act-alice --json 2>&1; echo \"apply rc=$?\"; ls -la /tmp/cb/company-data",
    "export PATH=$HOME/.local/bin:$PATH; cd /tmp/cb && omnigraph --target file:///tmp/cb/company-data cluster force-unlock '01M5MVXH571C6J9F3XPTCKD76G' 2>&1; echo \"unlock rc=$?\"; (OMNIGRAPH_SERVER_BEARER_TOKENS_JSON='{\"act-alice\":\"secret\"}' nohup omnigraph-server --cluster /tmp/cb/company-data --bind 127.0.0.1:8080 > /tmp/cb/server.log 2>&1 &) ; sleep 8; curl -s -i http://127.0.0.1:8080/healthz | head -12; echo; curl -s -i http://127.0.0.1:8080/readyz | head -5; echo; tail -5 /tmp/cb/server.log",
    "cd /tmp/cb && curl -s -X POST http://127.0.0.1:8080/mcp -H 'Authorization: <secret>' -H 'Omnigraph-Http-Api: 0.14' -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}' | head -c 3000; echo; echo ---; curl -s -X POST http://127.0.0.1:8080/mcp -H 'Authorization: <secret>' -H 'Omnigraph-Http-Api: 0.14' -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"access\",\"arguments\":{}}}' | head -c 1500",
    "cd /tmp/cb && H=(-H 'Authorization: <secret>' -H 'Omnigraph-Http-Api: 0.14' -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream'); curl -s -X POST http://127.0.0.1:8080/mcp \"${H[@]}\" -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}' | python3 -I -c 'import json,sys; d=json.load(sys.stdin); print([t[\"name\"] for t in d[\"result\"][\"tools\"]])'; echo ---; curl -s -X POST http://127.0.0.1:8080/mcp \"${H[@]}\" -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"schema\",\"arguments\":{\"graph\":\"knowledge\"}}}' | head -c 1200",
    "echo \"HOME=$HOME\"; ls -la <guest-path> /inputs/coldpass-preflight.py 2>&1 | head; cd <guest-path> && grep -rn -i \"cron\\|--once\\|--now\\|interval\\|tokio::time::interval\\|schedule\" README.md docs/user/cli/reference.md docs/user/operations/server.md 2>/dev/null | head -20; grep -rln \"tokio::time::interval\\|loop {\" crates/*/src 2>/dev/null | head -10; ls <guest-path>",
    "cd <guest-path> && sed -n 225,250p docs/user/cli/reference.md",
    "pkill -f 'omnigraph-server --cluster /tmp/cb/company-data' ; sleep 3; pgrep -af omnigraph-server || echo \"no server running\"; mkdir -p /tmp/cb/gen && KEY=$(openssl rand -hex 16) && echo \"$KEY\" > /tmp/cb/gen/guest.key && cat > /tmp/cb/gen/mk.py <<'EOF'\nimport json, os, sys\nkey = open(\"/tmp/cb/gen/guest.key\").read().strip()\nW = \"<guest-path>\"\nos.makedirs(W + \"/.coldpass\", exist_ok=True)\nserver = [\"<guest-path>\", \"--cluster\", \"/tmp/cb/company-data\", \"--bind\", \"127.0.0.1:8080\"]\nenv = {\"OMNIGRAPH_SERVER_BEARER_TOKENS_JSON\": json.dumps({\"act-alice\": key})}\nheaders = {\"Authorization\": \"<secret>\" + key, \"Omnigraph-Http-Api\": \"0.14\"}\nmcp_args = {\"graph\": \"knowledge\"}\nmcp_expect = \"edge Supports: Source -> Claim\"\nprobe = {\"kind\": \"mcp_http\", \"argv\": server, \"cwd\": W, \"url\": \"http://127.0.0.1:8080/mcp\",\n         \"env\": env, \"headers\": headers, \"tool\": \"schema\", \"arguments\": mcp_args,\n         \"expected_text\": mcp_expect}\nclaims = [\n {\"kind\": \"claim\",\n  \"claim\": \"The built-in MCP server lets an agent connect to a running omnigraph server and call its tools.\",\n  \"source\": \"connect an agent to the server's `/mcp`\",\n  \"input\": \"schema tool for graph knowledge\",\n  \"expected\": \"returns the declared Supports edge\",\n  \"probe_kind\": \"mcp_http\", \"argv\": server, \"url\": \"http://127.0.0.1:8080/mcp\",\n  \"env\": env, \"headers\": headers, \"tool\": \"schema\", \"arguments\": mcp_args,\n  \"expected_text\": mcp_expect, \"cwd\": W},\n {\"kind\": \"claim\",\n  \"claim\": \"A --target ./graph.omni flag addresses a standalone local graph for querying.\",\n  \"source\": \"Use `--target ./graph.omni` for a standalone local graph.\",\n  \"input\": \"stored query sources_for_claim on the local quickstart graph\",\n  \"expected\": \"returns the two source titles\",\n  \"probe_kind\": \"cli\",\n  \"argv\": [\"<guest-path>\", \"query\", \"sources_for_claim\", \"--query\", \"queries.gq\",\n           \"--params\", \"{\\\"claim\\\":\\\"lower-latency\\\"}\", \"--format\", \"table\", \"--target\", \"./graph.omni\"],\n  \"cwd\": \"/tmp/qs\", \"expected_text\": \"Load test report\"},\n]\nexamples = [\n {\"kind\": \"example\", \"claim\": \"Validate a cluster bundle before deploying it\",\n  \"source\": \"docs/user/clusters/index.md#bootstrap-a-cluster\",\n  \"input\": \"/tmp/cb/company-brain\", \"expected\": \"cluster config valid\",\n  \"argv\": [\"<guest-path>\", \"cluster\", \"validate\", \"--config\", \"/tmp/cb/company-brain\"],\n  \"cwd\": W, \"env\": {}, \"expected_text\": \"cluster config valid\"},\n {\"kind\": \"example\", \"claim\": \"Quickstart query returns the two sources supporting the claim\",\n  \"source\": \"docs/user/quickstart.md#4-query\",\n  \"input\": \"sources_for_claim lower-latency\", \"expected\": \"Load test report and Production metrics\",\n  \"argv\": [\"<guest-path>\", \"query\", \"sources_for_claim\", \"--query\", \"queries.gq\",\n           \"--params\", \"{\\\"claim\\\":\\\"lower-latency\\\"}\", \"--format\", \"table\", \"--target\", \"./graph.omni\"],\n  \"cwd\": \"/tmp/qs\", \"env\": {}, \"expected_text\": \"Production metrics\"},\n]\ncycles = {\"detected\": False,\n  \"reason\": \"Entry points inspected (README.md, docs/user/operations/server.md, docs/user/cli/reference.md, crates/*/src). omnigraph and omnigraph-server run on demand: a CLI command or a long-running request server with no internal scheduler, cron, --once or --now trigger. The only polling (two-second interval, reference.md) is a client-side wait for managed-cloud deployments, which this local setup does not use.\",\n  \"checks\": []}\ndef w(name, obj):\n    with open(os.path.join(W, \".coldpass\", name), \"w\") as f:\n        json.dump(obj, f, indent=2); f.write(\"\\n\")\nw(\"probe.json\", probe); w(\"claims.json\", claims); w(\"examples.json\", examples); w(\"cycles.json\", cycles)\nprint(\"written\")\nEOF\npython3 -I /tmp/cb/gen/mk.py && ls -la <guest-path> && cat <guest-path>",
    "pkill -f 'omnigraph-server --cluster /tmp/cb/company-[d]ata'; sleep 3; (pgrep -af 'omnigraph-server --cluster' | grep -v pgrep) || echo \"no server running\"; ls /tmp/cb/gen 2>/dev/null; ls -la <guest-path>",
    "mkdir -p /tmp/cb/gen && openssl rand -hex 16 > /tmp/cb/gen/guest.key && cat > /tmp/cb/gen/mk.py <<'EOF'\nimport json, os\nkey = open(\"/tmp/cb/gen/guest.key\").read().strip()\nW = \"<guest-path>\"\nos.makedirs(W + \"/.coldpass\", exist_ok=True)\nserver = [\"<guest-path>\", \"--cluster\", \"/tmp/cb/company-data\", \"--bind\", \"127.0.0.1:8080\"]\nenv = {\"OMNIGRAPH_SERVER_BEARER_TOKENS_JSON\": json.dumps({\"act-alice\": key})}\nheaders = {\"Authorization\": \"<secret>\" + key, \"Omnigraph-Http-Api\": \"0.14\"}\nmcp_args = {\"graph\": \"knowledge\"}\nmcp_expect = \"edge Supports: Source -> Claim\"\nprobe = {\"kind\": \"mcp_http\", \"argv\": server, \"cwd\": W, \"url\": \"http://127.0.0.1:8080/mcp\",\n         \"env\": env, \"headers\": headers, \"tool\": \"schema\", \"arguments\": mcp_args,\n         \"expected_text\": mcp_expect}\nclaims = [\n {\"kind\": \"claim\",\n  \"claim\": \"The built-in MCP server lets an agent connect to a running omnigraph server and call its tools.\",\n  \"source\": \"connect an agent to the server's `/mcp`\",\n  \"input\": \"schema tool for graph knowledge\",\n  \"expected\": \"returns the declared Supports edge\",\n  \"probe_kind\": \"mcp_http\", \"argv\": server, \"url\": \"http://127.0.0.1:8080/mcp\",\n  \"env\": env, \"headers\": headers, \"tool\": \"schema\", \"arguments\": mcp_args,\n  \"expected_text\": mcp_expect, \"cwd\": W},\n {\"kind\": \"claim\",\n  \"claim\": \"A --target ./graph.omni flag addresses a standalone local graph for querying.\",\n  \"source\": \"Use `--target ./graph.omni` for a standalone local graph.\",\n  \"input\": \"stored query sources_for_claim on the local quickstart graph\",\n  \"expected\": \"returns the two source titles\",\n  \"probe_kind\": \"cli\",\n  \"argv\": [\"<guest-path>\", \"query\", \"sources_for_claim\", \"--query\", \"queries.gq\",\n           \"--params\", \"{\\\"claim\\\":\\\"lower-latency\\\"}\", \"--format\", \"table\", \"--target\", \"./graph.omni\"],\n  \"cwd\": \"/tmp/qs\", \"expected_text\": \"Load test report\"},\n]\nexamples = [\n {\"kind\": \"example\", \"claim\": \"Validate a cluster bundle before deploying it\",\n  \"source\": \"docs/user/clusters/index.md#bootstrap-a-cluster\",\n  \"input\": \"/tmp/cb/company-brain\", \"expected\": \"cluster config valid\",\n  \"argv\": [\"<guest-path>\", \"cluster\", \"validate\", \"--config\", \"/tmp/cb/company-brain\"],\n  \"cwd\": W, \"env\": {}, \"expected_text\": \"cluster config valid\"},\n {\"kind\": \"example\", \"claim\": \"Quickstart query returns the two sources supporting the claim\",\n  \"source\": \"docs/user/quickstart.md#4-query\",\n  \"input\": \"sources_for_claim lower-latency\", \"expected\": \"Load test report and Production metrics\",\n  \"argv\": [\"<guest-path>\", \"query\", \"sources_for_claim\", \"--query\", \"queries.gq\",\n           \"--params\", \"{\\\"claim\\\":\\\"lower-latency\\\"}\", \"--format\", \"table\", \"--target\", \"./graph.omni\"],\n  \"cwd\": \"/tmp/qs\", \"env\": {}, \"expected_text\": \"Production metrics\"},\n]\ncycles = {\"detected\": False,\n  \"reason\": \"Entry points inspected (README.md, docs/user/operations/server.md, docs/user/cli/reference.md, crates/*/src). omnigraph and omnigraph-server run on demand: a CLI command or a long-running request server with no internal scheduler, cron, --once or --now trigger. The only polling (two-second interval, reference.md) is a client-side wait for managed-cloud deployments, which this local setup does not use.\",\n  \"checks\": []}\ndef w(name, obj):\n    with open(os.path.join(W, \".coldpass\", name), \"w\") as f:\n        json.dump(obj, f, indent=2); f.write(\"\\n\")\nw(\"probe.json\", probe); w(\"claims.json\", claims); w(\"examples.json\", examples); w(\"cycles.json\", cycles)\nprint(\"written\")\nEOF\npython3 -I /tmp/cb/gen/mk.py && ls -la <guest-path> && python3 -I -c \"import json;print(json.load(open('<guest-path>'))['tool'])\"",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -80; echo \"rc=${PIPESTATUS[0]}\"",
    "cat > /tmp/cb/gen/report.py <<'EOF'\nimport json\nreport = {\n \"outcome\": \"working\",\n \"fault_owner\": None,\n \"operation\": \"Install omnigraph 0.14.0 with the README installer, create and load a local graph, query it, and serve a graph over the built-in MCP endpoint (tool schema on graph knowledge).\",\n \"operation_scope\": \"Linux x86_64 Ubuntu 24.04 guest, user ubuntu (uid 1000), Python 3.12.3. Uses the published stable release binaries installed by the README installer; no source build. The MCP check runs a local streamable-HTTP omnigraph-server on 127.0.0.1:8080 with a static bearer token. Not tested: managed/cloud targets, S3 or Azure storage, OIDC, signed data tokens, writes over MCP, the stdio bridge (omnigraph mcp).\",\n \"steps\": [\n  \"curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash (run as a saved file, NODE_USE_ENV_PROXY=1 exported); installed omnigraph and omnigraph-server 0.14.0\",\n  \"omnigraph init --schema schema.pg graph.omni\",\n  \"omnigraph load --data evidence.jsonl --mode overwrite --target ./graph.omni\",\n  \"omnigraph query sources_for_claim --query queries.gq --params '{\\\"claim\\\":\\\"lower-latency\\\"}' --format table --target ./graph.omni\",\n  \"omnigraph cluster validate --config /tmp/cb/company-brain\",\n  \"omnigraph cluster plan --target /tmp/cb/company-data --config /tmp/cb/company-brain (after mkdir -p /tmp/cb/company-data, as the README's mkdir -p ./company-data step)\",\n  \"omnigraph cluster apply --target /tmp/cb/company-data --config /tmp/cb/company-brain --as act-alice --json\",\n  \"omnigraph --target file:///tmp/cb/company-data cluster force-unlock <exact lock ID printed by apply>\",\n  \"OMNIGRAPH_SERVER_BEARER_TOKENS_JSON='{\\\"act-alice\\\":\\\"<guest key>\\\"}' omnigraph-server --cluster /tmp/cb/company-data --bind 127.0.0.1:8080\",\n  \"POST /mcp tools/call schema {\\\"graph\\\":\\\"knowledge\\\"} returned: edge Supports: Source -> Claim\",\n  \"python3 -I <guest-path> --validate --replay (<env-var> set): valid, no problems, replay PASS\"\n ],\n \"deviations\": [\n  \"The README's build and test commands (cargo build --workspace --locked; cargo test ...) were not run. cargo is not installed in the guest and the Rust 1.97.1 toolchain pinned in rust-toolchain.toml was not installed. Building the whole workspace was not done; the README's published-binary install path was used instead.\",\n  \"The installed binaries are the published stable release 0.14.0 (server reports source_version 60bfd19db780fdff3a5178f959c1204143420114), not a build of the pinned commit 1ec9b32e60b678329c35468220f85344f1940faf. Git metadata was not set up because no step needed it; the snapshot in <guest-path> has no .git directory, and the pin was not fetched or checked against it.\",\n  \"The installer put files under <guest-path> (HOME is <guest-path>), not ~/.local/bin as the README states. Probes and claims use the absolute path.\",\n  \"The first cluster plan failed with storage_root_invalid because the storage root directory did not exist. Fixed by creating it with mkdir -p as the README does; the storage root is the apply target, not a checker output.\",\n  \"cluster apply took an admission lock (01M5MVXH571C6J9F3XPTCKD76G). Released it with the exact-ID force-unlock command from docs/user/clusters/index.md after confirming no other writer was running, then started the server.\",\n  \"The README's /inputs/coldpass-preflight.py path does not exist in this guest; the checker at <guest-path> was used with the same flags.\",\n  \"The MCP and cluster-bundle policies were written by hand (small examples based on docs/user/operations/policy.md and clusters/index.md) because no ready-made example bundle was found in the repository.\",\n  \"The README's Build and test section is recorded as an example with a reason rather than run.\"\n ],\n \"stuck_step\": None,\n \"main_blocker\": None,\n \"plain_failure\": None,\n \"suggested_fix\": \"None for the tested path. Optional: run the README's cargo build and test commands with the pinned Rust toolchain in a guest with enough disk and time, and confirm the release binaries match the pinned commit.\"\n}\nwith open(\"<guest-path>\", \"w\") as f:\n    json.dump(report, f, indent=2); f.write(\"\\n\")\nprint(\"report written\")\nEOF\npython3 -I /tmp/cb/gen/report.py && (pgrep -af 'omnigraph-server' | grep -v pgrep || echo \"no omnigraph-server running\") && cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c 'import json,sys; d=json.loads(sys.stdin.read()); print(\"valid:\",d[\"valid\"]); print(\"problems:\",d[\"problems\"]); print(\"replay:\",d[\"replay\"][\"status\"])'; ls -la <guest-path>",
    "cd <guest-path>; . /etc/os-release; echo \"$PRETTY_NAME\"; uname -m; python3 --version; ls -d .git 2>/dev/null || echo \"no .git\"; <guest-path> --version; <guest-path> --version 2>&1 | head -3; cat .coldpass/probe.json; echo; cat .coldpass/observed.json | head -c 1500; echo; grep -n \"init\\|load --\\|query \" <guest-path> | head -20",
    "cd /tmp/cb/gen && python3 -I - <<'EOF'\nimport json\np=\"<guest-path>\"\nr=json.load(open(p))\nr[\"operation_scope\"]=\"Linux x86_64, Ubuntu 24.04.5 LTS, Python 3.12.3, user ubuntu. Uses the published 0.14.0 release binaries installed by the README installer (no source build). The MCP check runs a local streamable-HTTP omnigraph-server on 127.0.0.1:8080 with a static bearer token. Not tested: managed/cloud targets, S3 or Azure storage, OIDC, writes over MCP, the stdio bridge (omnigraph mcp).\"\nr[\"steps\"][0]=\"curl -fsSL https://raw.githubusercontent.com/ModernRelay/omnigraph/main/scripts/install.sh | bash (saved to /tmp/install-omnigraph.sh and run with bash); installed omnigraph 0.14.0 and omnigraph-server\"\nr[\"deviations\"][1]=\"The installed binaries are the published 0.14.0 release, not a build of the pinned commit 1ec9b32e60b678329c35468220f85344f1940faf. The workspace has no .git directory, so the pin was not checked against the installed binaries.\"\nr[\"deviations\"]=[d for d in r[\"deviations\"] if \"Git metadata was not set up\" not in d]\nr[\"deviations\"].append(\"The 'omnigraph --version' output reports 0.14.0; omnigraph-server does not accept --version, so its version was taken from the serverInfo in the MCP initialize response.\")\njson.dump(r,open(p,\"w\"),indent=2); open(p,\"a\").write(\"\\n\")\nprint(\"ok\")\nEOF\ncd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c 'import json,sys; d=json.loads(sys.stdin.read()); print(\"valid:\",d[\"valid\"]); print(\"problems:\",d[\"problems\"]); print(\"replay:\",d[\"replay\"][\"status\"])'; pgrep -af omnigraph-server | grep -v pgrep || echo \"no omnigraph-server running\""
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Install omnigraph 0.14.0 with the README installer, create and load a local graph, query it, and serve a graph over the built-in MCP endpoint (tool schema on graph knowledge).",
  "suggested_fix": null,
  "tokens_in": 942625,
  "tokens_out": 24199,
  "cost_usd": 0.03988055,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "kind": "mcp_http",
        "url": "http://127.0.0.1:8080/mcp",
        "hosting": "local",
        "transport": "streamable-http",
        "scope": "remote hosted MCP initialize + tools/list",
        "argv": [
          "<guest-path>",
          "--cluster",
          "/tmp/cb/company-data",
          "--bind",
          "127.0.0.1:8080"
        ],
        "serverInfo": {
          "name": "omnigraph-server",
          "version": "0.14.0"
        },
        "protocolVersion": "2025-06-18",
        "tools": [
          "health",
          "graphs",
          "schema",
          "queries",
          "query",
          "snapshot",
          "access",
          "branches_list",
          "commits_list",
          "commits_get",
          "commits_changes",
          "changes_poll"
        ],
        "tool_schema_bytes": 12980,
        "tool_result": {
          "content": [
            {
              "type": "text",
              "text": "{\"schema_source\":\"node Source {\\n  slug: String @key\\n  title: String\\n}\\n\\nnode Claim {\\n  slug: String @key\\n  statement: String\\n}\\n\\nedge Supports: Source -> Claim\\n\",\"system_columns\":{\"id\":\"__id\",\"src\":\"__src\",\"dst\":\"__dst\"},\"catalogue_source\":\"node @Operator {\\n    name: String @key\\n    inputs: [I64]\\n}\\n\\nnode @Pass {\\n    name: String @key\\n    position: I64\\n}\\n\\nnode @Setting {\\n    name: String @key\\n    kind: String\\n    default: String\\n    scope: String\\n}\\n\\nnode @Engine {\\n    version: String @key\\n    current_internal_schema_version: I64\\n    min_supported_internal_schema_version: I64\\n}\\n\\nnode @LogicalKind {\\n    name: String @key\\n    coverage: String\\n}\"}"
            }
          ],
          "structuredContent": {
            "schema_source": "node Source {\n  slug: String @key\n  title: String\n}\n\nnode Claim {\n  slug: String @key\n  statement: String\n}\n\nedge Supports: Source -> Claim\n",
            "system_columns": {
              "id": "__id",
              "src": "__src",
              "dst": "__dst"
            },
            "catalogue_source": "node @Operator {\n    name: String @key\n    inputs: [I64]\n}\n\nnode @Pass {\n    name: String @key\n    position: I64\n}\n\nnode @Setting {\n    name: String @key\n    kind: String\n    default: String\n    scope: String\n}\n\nnode @Engine {\n    version: String @key\n    current_internal_schema_version: I64\n    min_supported_internal_schema_version: I64\n}\n\nnode @LogicalKind {\n    name: String @key\n    coverage: String\n}"
          },
          "isError": false
        },
        "tool_result_checked": true
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 10 hardcoded secret, 11 known vulnerability. 2 static matches retained as context.",
    "findings": [
      {
        "kind": "hardcoded-secret",
        "count": 3,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 3
      },
      {
        "kind": "known-vulnerability",
        "count": 11,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 7
      }
    ],
    "context": [
      {
        "kind": "hardcoded-secret",
        "count": 2,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 2
      }
    ],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=ModernRelay--omnigraph-claude-haiku-5-5-1792775373235323521",
    "evidence_file": "/data/safety/ModernRelay--omnigraph-claude-haiku-5-5-1792775373235323521.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 26,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "1ec9b32e60b678329c35468220f85344f1940faf",
    "url": "https://github.com/ModernRelay/omnigraph"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": "local",
  "operation_scope": "remote hosted MCP initialize + tools/list",
  "tool_calls": 26,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/ModernRelay/omnigraph",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "outcome": "Entry points inspected (README.md, docs/user/operations/server.md, docs/user/cli/reference.md, crates/*/src). omnigraph and omnigraph-server run on demand: a CLI command or a long-running request server with no internal scheduler, cron, --once or --now trigger. The only polling (two-second interval, reference.md) is a client-side wait for managed-cloud deployments, which this local setup does not use.",
      "evidence": "Entry points inspected (README.md, docs/user/operations/server.md, docs/user/cli/reference.md, crates/*/src). omnigraph and omnigraph-server run on demand: a CLI command or a long-running request server with no internal scheduler, cron, --once or --now trigger. The only polling (two-second interval, reference.md) is a client-side wait for managed-cloud deployments, which this local setup does not use.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "The built-in MCP server lets an agent connect to a running omnigraph server and call its tools.",
      "source": "connect an agent to the server's `/mcp`",
      "input": "{\"tool\": \"schema\", \"arguments\": {\"graph\": \"knowledge\"}}",
      "expected": "returns the declared Supports edge",
      "command": "<guest-path> --cluster /tmp/cb/company-data --bind 127.0.0.1:8080 tools/call {\"tool\": \"schema\", \"arguments\": {\"graph\": \"knowledge\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: edge Supports: Source -> Claim",
      "evidence": "edge Supports: Source -> Claim\\\\n\\\",\\\"system_columns\\\":{\\\"id\\\":\\\"__id\\\",\\\"src\\\":\\\"__src\\\",\\\"dst\\\":\\\"__dst\\\"},\\\"catalogue_source\\\":\\\"node @Operator {\\\\n    name: String @key\\\\n    inputs: [I64]\\\\n}\\\\n\\\\nnode @Pass {\\\\n    name: String @key\\\\n    position: I64\\\\n}\\\\n\\\\nnode @Setting {\\\\n    name: String @key\\\\n    kind: String\\\\n    default: String\\\\n    scope: String\\\\n}\\\\n\\\\nnode @Engine {\\\\n    version: String @key\\\\n    current_internal_schema_version: I64\\\\n    min_supported_internal_schema_version: I64\\\\n}\\\\n\\\\nnode @LogicalKind {\\\\n    name: String @key\\\\n    coverage: String\\\\n}\\\"}\"}], \"",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "A --target ./graph.omni flag addresses a standalone local graph for querying.",
      "source": "Use `--target ./graph.omni` for a standalone local graph.",
      "input": "stored query sources_for_claim on the local quickstart graph",
      "expected": "returns the two source titles",
      "command": "<guest-path> query sources_for_claim --query queries.gq --params '{\"claim\":\"lower-latency\"}' --format table --target ./graph.omni",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Load test report",
      "evidence": "Load test report  \nProduction metrics\ntarget ./graph.omni (inline): direct graph /tmp/qs/graph.omni; requested=/tmp/qs/graph.omni; provider=Local\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Validate a cluster bundle before deploying it",
      "source": "docs/user/clusters/index.md#bootstrap-a-cluster",
      "input": "/tmp/cb/company-brain",
      "command": "<guest-path> cluster validate --config /tmp/cb/company-brain",
      "evidence": "cluster config valid: 5 resource(s), 4 dependency edge(s)\nWARN  external_blob_ingress_default_deny graphs.knowledge.external_blobs: effective policy is deny: new external Blob URI references will be rejected; existing stored references remain readable",
      "deferred": false,
      "expected": "cluster config valid",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Quickstart query returns the two sources supporting the claim",
      "source": "docs/user/quickstart.md#4-query",
      "input": "sources_for_claim lower-latency",
      "command": "<guest-path> query sources_for_claim --query queries.gq --params '{\"claim\":\"lower-latency\"}' --format table --target ./graph.omni",
      "evidence": "2 rows from branch main via sources_for_claim\nsource            \n------------------\nLoad test report  \nProduction metrics\ntarget ./graph.omni (inline): direct graph /tmp/qs/graph.omni; requested=/tmp/qs/graph.omni; provider=Local",
      "deferred": false,
      "expected": "Load test report and Production metrics",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-23T13:23:34Z",
    "commits_90d": 661,
    "merged_prs_90d": 469,
    "open_issues": 95,
    "open_prs": 31,
    "reply_share": null,
    "reply_threads": 0,
    "median_reply_hours": null,
    "last_release_at": "2026-10-22T17:01:58Z",
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 0 days ago; 661 commits and 469 merged PRs in 90 days; 95 open issues, 31 open PRs; latest release 2026-10-22"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 0 days ago; 661 commits and 469 merged PRs in 90 days; 95 open issues, 31 open PRs; latest release 2026-10-22",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago; 0 open issues, 1 answered or closed",
  "last_commit_at": "2026-10-23T13:36:10Z",
  "last_release_at": "2026-10-22T17:01:58Z",
  "open_issues": 0,
  "answered_issues": 1,
  "platforms_claimed": [
    "mac"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": {
    "tool_count": 12,
    "schema_bytes": 12980,
    "tokens_approx": 3245,
    "estimate_method": "ceil(compact UTF-8 tools/list JSON bytes / 4)",
    "scope": "returned tools/list page only; excludes client framing and tool results"
  },
  "tested_at": "2026-10-23T17:13:36.322788+00:00",
  "tested_commit": "1ec9b32e60b678329c35468220f85344f1940faf",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "ModernRelay/omnigraph",
    "source": "https://github.com/ModernRelay/omnigraph",
    "commit": "1ec9b32e60b678329c35468220f85344f1940faf",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "1ec9b32e60b678329c35468220f85344f1940faf",
      "url": "https://github.com/ModernRelay/omnigraph"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Install omnigraph 0.14.0 with the README installer, create and load a local graph, query it, and serve a graph over the built-in MCP endpoint (tool schema on graph knowledge).",
    "operation_scope": "remote hosted MCP initialize + tools/list",
    "hosting": "local",
    "kind": "mcp",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": null,
  "report_url": "/reports/ModernRelay--omnigraph-claude-haiku-5-5-1792775373235323521.json"
}
