{
  "run_id": "alexeyban--EKOS-claude-haiku-5-5-1792777997206854539",
  "date": "2026-10-23T18:49:45.231479+00:00",
  "repo": "alexeyban/EKOS",
  "kind": "mcp",
  "source": "https://github.com/alexeyban/EKOS",
  "commit": "8698c2f75a13c0f829ee6b878e895df04749aaf7",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 3262.1061860169284,
  "total_s": 3388.0245893001556,
  "steps": [
    "cd <guest-path> && pwd && ls -la && id -u && python3 --version && (git -C . status 2>&1 | head -3); cat /etc/os-release | head -2",
    "cd <guest-path> && ls README* 2>/dev/null; cat README.md 2>/dev/null | head -200",
    "cd <guest-path> && grep -n '^#' README.md | head -120; echo ---; grep -n -i 'cargo \\|rustup\\|mcp serve\\|ekos init\\|ekos build\\|--out\\|python3 -m venv\\|pip install' README.md | head -80",
    "cd <guest-path> && sed -n 651,732p README.md; echo ----; sed -n 325,345p README.md; echo ----; sed -n 1589,1600p README.md",
    "cd <guest-path> && sed -n 184,207p README.md; echo ----; sed -n 1,60p install.sh; echo; echo ----; cat rust-toolchain.toml; echo ----; which cargo rustc curl; echo $HTTPS_PROXY $https_proxy",
    "cd /tmp && export NODE_USE_ENV_PROXY=1 && curl -fsSL https://raw.githubusercontent.com/alexeyban/EKOS/main/install.sh -o /tmp/ekos-install.sh; echo \"fetch rc=$?\"; EKOS_CLI_ONLY=1 sh /tmp/ekos-install.sh 2>&1 | tail -30; echo \"rc=${PIPESTATUS[0]}\"; ls -la ~/.ekos/bin 2>&1",
    "cd <guest-path> && ls ekos; grep -m3 -n '^version\\|^name' ekos/Cargo.toml; ls ekos/crates | head -50; which cc gcc make; echo HOME=$HOME; ls ~/.cargo 2>&1 | head -2; ~/.ekos/bin/ekos --version 2>&1 | head -2; ls <guest-path>; ls -la <guest-path>",
    "id -u; sudo -n true && echo SUDO_OK; (sudo -n apt-get update -qq && sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y -qq build-essential pkg-config curl ca-certificates) 2>&1 | tail -5; echo \"apt rc=${PIPESTATUS[0]}\"; which cc gcc",
    "cd /tmp && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup-init.sh && sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain stable 2>&1 | tail -4; echo \"rc=$?\"; . <guest-path> 2>/dev/null || . $HOME/.cargo/env; which cargo && cargo --version && rustc --version",
    "cd <guest-path> && . <guest-path> && nohup cargo build --release -p ekos > <guest-path> 2>&1 &\nsleep 60; tail -5 <guest-path>",
    "cd <guest-path> && sed -n 1600,1645p README.md | cut -c1-400; echo ----; sleep 120; tail -3 <guest-path>",
    "sleep 290; tail -3 <guest-path>",
    "E=<guest-path>; $E --version; $E --help | head -60",
    "set -x; E=<guest-path>; rm -rf /tmp/ekos-sample && mkdir -p /tmp/ekos-sample/src && cd /tmp/ekos-sample && cat > src/billing.py <<'EOF'\n\"\"\"Billing rules for invoices.\"\"\"\n\nclass Invoice:\n    \"\"\"An invoice owed by a customer.\"\"\"\n\n    def total(self, items):\n        \"\"\"Sum the line item prices.\"\"\"\n        return sum(i.price for i in items)\n\n\ndef apply_discount(invoice, percent):\n    \"\"\"Reduce an invoice total by a percentage.\"\"\"\n    return invoice.total([]) * (100 - percent) / 100\nEOF\ncat > src/orders.py <<'EOF'\nfrom billing import Invoice, apply_discount\n\ndef place_order(items):\n    \"\"\"Create an invoice for the items.\"\"\"\n    return Invoice().total(items)\nEOF\n$E init --detect 2>&1 | tail -30; echo \"init rc=$?\"; ls -la; cat ekos.toml | head -40",
    "E=<guest-path>; cd /tmp/ekos-sample && $E build 2>&1 | tail -8; echo \"build rc=$?\"; $E recover 2>&1 | tail -4; $E resolve 2>&1 | tail -4; $E compile 2>&1 | tail -6; $E commit 2>&1 | tail -6; echo ---; $E coverage 2>&1 | tail -15; $E status 2>&1 | tail -5",
    "E=<guest-path>; cd /tmp/ekos-sample && $E query --help 2>&1 | head -25; echo ---; $E mcp serve --help 2>&1 | head -30; echo ---; $E ekl --help 2>&1 | head -12",
    "E=<guest-path>; cd /tmp/ekos-sample && $E query find Invoice 2>&1 | head -20; echo \"rc=$?\"; echo ---; $E ekl \"SELECT name FROM objects\" 2>&1 | head -20; echo ---; $E ekl \"SELECT * FROM objects WHERE name = 'Invoice'\" 2>&1 | head -20",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport json, subprocess, sys\nargv = sys.argv[1:]\nmsgs = [\n {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"probe\",\"version\":\"0\"}}},\n {\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"},\n {\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"},\n]\ninp = \"\".join(json.dumps(m)+\"\\n\" for m in msgs)\nout = subprocess.run(argv, input=inp, capture_output=True, text=True, timeout=120)\nfor line in out.stdout.splitlines():\n    try:\n        m = json.loads(line)\n    except Exception:\n        continue\n    if m.get(\"id\") == 2:\n        for t in m[\"result\"][\"tools\"]:\n            print(t[\"name\"], json.dumps(t.get(\"inputSchema\",{}).get(\"required\",[])), list(t.get(\"inputSchema\",{}).get(\"properties\",{}).keys()))\nprint(\"stderr:\", out.stderr[:300])\nEOF\ncd <guest-path> && python3 -I mcp_session.py <guest-path> mcp serve --config /tmp/ekos-sample/ekos.toml --workspace /tmp/ekos-sample 2>&1 | head -60",
    "cat > <guest-path> <<'EOF'\nimport json, subprocess, sys\ntool, args = sys.argv[1], json.loads(sys.argv[2])\nargv = sys.argv[3:]\nmsgs = [\n {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"probe\",\"version\":\"0\"}}},\n {\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"},\n {\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":tool,\"arguments\":args}},\n]\ninp = \"\".join(json.dumps(m)+\"\\n\" for m in msgs)\nout = subprocess.run(argv, input=inp, capture_output=True, text=True, timeout=300)\nfor line in out.stdout.splitlines():\n    try: m = json.loads(line)\n    except Exception: continue\n    if m.get(\"id\") == 2:\n        print(json.dumps(m, indent=1)[:2500])\nprint(\"stderr:\", out.stderr[:300])\nEOF\ncd <guest-path> && python3 -I mcp_call.py ekos_search '{\"query\":\"Invoice\"}' <guest-path> mcp serve --config /tmp/ekos-sample/ekos.toml --workspace /tmp/ekos-sample",
    "cd <guest-path> && grep -n 'ekos query\\|ekos ekl\\|ekos_search`' README.md | cut -c1-220 | head -20; echo ---; grep -n -i 'cron\\|--once\\|--now\\|webhook\\|schedul\\|watch mode\\|--every\\|daemon' README.md | cut -c1-200 | head -30; echo ---; ls ekos/crates/scheduler/src; grep -rn 'fn run\\|pub fn\\|tick' ekos/crates/scheduler/src/*.rs | head -20",
    "cd <guest-path> && sed -n 2100,2112p README.md; echo ---; wc -l ekos/crates/scheduler/src/lib.rs; grep -n 'pub ' ekos/crates/scheduler/src/lib.rs | head -30; echo ---; grep -rln 'APScheduler\\|apscheduler' --include=*.py . | head; grep -rn 'schedule' ekos/crates/cli/src/*.rs | head -10",
    "cd <guest-path> && wc -l app/scheduler.py && sed -n 1,60p app/scheduler.py; ls; cat requirements*.txt 2>/dev/null | head -30; python3 -c \"import apscheduler\" 2>&1 | tail -1",
    "cd <guest-path> && cat pyproject.toml | head -40; which uv; ls tests | head; grep -rn 'def test.*sched\\|fake\\|clock' tests/*.py | head -5",
    "cd <guest-path> && . <guest-path> && nohup cargo test --workspace > <guest-path> 2>&1 &\ncd /tmp/ekos-sample && E=<guest-path> && $E ekl \"FIND Object WHERE kind = 'View'\" 2>&1 | head -5; echo \"rc=$?\"; $E ekl \"FIND Object WHERE kind = 'Module'\" 2>&1 | head -5; $E query find Invoice --mode lexical 2>&1 | head -4",
    "cd <guest-path> && grep -nF '`ekos mcp serve --workspace <dir>` exposes the read-only Runtime as a Model Context Protocol' README.md; grep -nF '`ekos query find \\\"<text>\\\" --mode lexical|vector|hybrid`' README.md; grep -nF 'cargo test --workspace' README.md; grep -nF \"ekos ekl \\\"FIND Object WHERE kind = 'View'\\\"\" README.md; grep -nF 'def build_trigger(kind: str, expr: str):' web/api/app/scheduler.py; sed -n 1295p README.md | cut -c1-200",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport json, os\nW = \"<guest-path>\"\nE = \"<guest-path>\"\nSAMPLE = \"/tmp/ekos-sample\"\nCFG = SAMPLE + \"/ekos.toml\"\nMCP_ARGV = [E, \"mcp\", \"serve\", \"--config\", CFG, \"--workspace\", SAMPLE]\nQ_QUOTE = '`ekos query find \"<text>\" --mode lexical|vector|hybrid`'\nMCP_QUOTE = \"`ekos mcp serve --workspace <dir>` exposes the read-only Runtime as a Model Context Protocol\"\n\nprobe = {\n    \"kind\": \"mcp\", \"argv\": MCP_ARGV, \"cwd\": W,\n    \"tool\": \"ekos_search\", \"arguments\": {\"query\": \"Invoice\"},\n    \"expected_text\": \"billing.Invoice\",\n}\nclaims = [\n    {\"kind\": \"claim\",\n     \"claim\": \"The read-only MCP server exposes the compiled ledger to agents; searching it returns the compiled objects\",\n     \"source\": MCP_QUOTE, \"input\": \"query=Invoice on the committed sample repo\",\n     \"expected\": \"ekos_search returns the compiled object billing.Invoice\",\n     \"probe_kind\": \"mcp\", \"argv\": MCP_ARGV, \"tool\": \"ekos_search\",\n     \"arguments\": {\"query\": \"Invoice\"}, \"expected_text\": \"billing.Invoice\", \"cwd\": W},\n    {\"kind\": \"claim\",\n     \"claim\": \"ekos query find searches compiled object names from the command line\",\n     \"source\": Q_QUOTE, \"input\": \"find Invoice (lexical) on the committed sample repo\",\n     \"expected\": \"lists billing.Invoice among the matches\",\n     \"probe_kind\": \"cli\", \"argv\": [E, \"query\", \"find\", \"Invoice\", \"--mode\", \"lexical\", \"--config\", CFG],\n     \"expected_text\": \"billing.Invoice\", \"cwd\": SAMPLE},\n]\nexamples = [\n    {\"kind\": \"example\", \"claim\": \"EKL query over the ledger returns rows for a matching kind (View; none in this Python-only sample, so zero rows)\",\n     \"source\": \"README.md, Views (RFC 0169) section\",\n     \"input\": \"FIND Object WHERE kind = 'View'\", \"expected\": \"0 rows.\",\n     \"argv\": [E, \"ekl\", \"FIND Object WHERE kind = 'View'\", \"--config\", CFG],\n     \"cwd\": SAMPLE, \"expected_text\": \"0 rows.\"},\n    {\"kind\": \"example\", \"claim\": \"Optional documented test suite of the Rust workspace\",\n     \"source\": \"README.md, Verify the install section\",\n     \"input\": \"cargo test --workspace from ekos/\", \"expected\": \"test result: ok\",\n     \"argv\": [\"<guest-path>\", \"test\", \"--workspace\"],\n     \"cwd\": W + \"/ekos\", \"expected_text\": \"test result: ok\"},\n]\ncycles = {\n    \"detected\": True,\n    \"checks\": [\n        {\"claim\": \"Scheduled runs: the console fires pipeline commands on a cron or interval trigger\",\n         \"source\": \"web/api/app/scheduler.py\",\n         \"quote\": \"def build_trigger(kind: str, expr: str):\",\n         \"reason\": \"Scheduling is a feature of the EKOS web console (FastAPI, APScheduler, SQLite, auth tokens, a required notify_url). Its dependencies were not installed and the console was not started in this run, so no cycle was triggered; the Rust CLI has no cron or --once entry point.\"}\n    ],\n}\ndef dump(name, obj):\n    p = os.path.join(W, \".coldpass\", name)\n    with open(p, \"w\", encoding=\"utf-8\") as f:\n        json.dump(obj, f, indent=2, ensure_ascii=False); f.write(\"\\n\")\n    print(\"wrote\", p)\ndump(\"probe.json\", probe)\ndump(\"claims.json\", claims)\ndump(\"examples.json\", examples)\ndump(\"cycles.json\", cycles)\nEOF\npython3 -I <guest-path> && tail -3 <guest-path>",
    "for i in $(seq 1 28); do if grep -q 'test result\\|error\\[' <guest-path> && ! pgrep -f 'cargo test' >/dev/null; then break; fi; sleep 10; done; pgrep -f 'cargo test' >/dev/null && echo STILL_RUNNING; grep -c 'test result: ok' <guest-path>; grep 'test result' <guest-path> | grep -v ' 0 failed' | head; grep -c 'FAILED\\|panicked' <guest-path>; tail -3 <guest-path>",
    "for i in $(seq 1 28); do pgrep -f 'cargo test' >/dev/null || break; sleep 10; done; pgrep -f 'cargo test' >/dev/null && echo STILL_RUNNING; grep 'test result' <guest-path> | awk '{p+=$4; f+=$6} END {print \"passed=\"p\" failed=\"f\" suites=\"NR}'; grep -c 'FAILED\\|panicked' <guest-path>; tail -4 <guest-path>",
    "grep -n -B2 -A12 '^error' <guest-path> | grep -v 'Caused by\\|failed to parse' | cut -c1-300 | head -60; grep -c 'warning' <guest-path>",
    "df -h / /tmp <guest-path> 2>/dev/null; du -sh <guest-path> 2>/dev/null",
    "rm -rf <guest-path> && df -h / | tail -1 && cd <guest-path> && . <guest-path> && CARGO_PROFILE_TEST_DEBUG=0 CARGO_INCREMENTAL=0 nohup cargo test --workspace > <guest-path> 2>&1 &\nsleep 240; df -h / | tail -1; tail -2 <guest-path> | cut -c1-200",
    "for i in $(seq 1 27); do pgrep -f 'cargo test' >/dev/null || break; sleep 10; done; pgrep -f 'cargo test' >/dev/null && echo STILL_RUNNING; df -h / | tail -1; grep 'test result' <guest-path> | awk '{p+=$4; f+=$6} END {print \"passed=\"p\" failed=\"f\" suites=\"NR}'; tail -2 <guest-path> | cut -c1-300",
    "for i in $(seq 1 27); do pgrep -f 'cargo test' >/dev/null || break; sleep 10; done; pgrep -f 'cargo test' >/dev/null && echo STILL_RUNNING; grep 'test result' <guest-path> | awk '{p+=$4; f+=$6} END {print \"passed=\"p\" failed=\"f\" suites=\"NR}'; grep -c 'FAILED\\|panicked' <guest-path>; tail -3 <guest-path> | cut -c1-200",
    "for i in $(seq 1 27); do pgrep -f 'cargo test' >/dev/null || break; sleep 10; done; pgrep -f 'cargo test' >/dev/null && echo STILL_RUNNING; grep 'test result' <guest-path> | awk '{p+=$4; f+=$6} END {print \"passed=\"p\" failed=\"f\" suites=\"NR}'; grep -c 'FAILED\\|panicked' <guest-path>; tail -2 <guest-path> | cut -c1-200",
    "for i in $(seq 1 28); do pgrep -f 'cargo test' >/dev/null || break; sleep 10; done; pgrep -f 'cargo test' >/dev/null && echo STILL_RUNNING; grep 'test result' <guest-path> | awk '{p+=$4; f+=$6} END {print \"passed=\"p\" failed=\"f\" suites=\"NR}'; grep -c 'FAILED\\|panicked' <guest-path>; tail -3 <guest-path> | cut -c1-200; ps aux | grep -c '[r]ustc\\|[t]est-'",
    "grep -c '^error' <guest-path>; grep -n 'Doc-tests\\|Running' <guest-path> | tail -3 | cut -c1-200; grep 'test result' <guest-path> | tail -2; ps -eo pid,args | grep -E '[c]argo|[r]ustc' | head -3",
    "cd <guest-path> && python3 -I -c \"\nimport json\np='<guest-path>'\nex=json.load(open(p))\nex[1]['env']={'CARGO_PROFILE_TEST_DEBUG':'0','CARGO_INCREMENTAL':'0'}\nex[1]['argv']=['<guest-path>','test','--workspace']\njson.dump(ex,open(p,'w'),indent=2,ensure_ascii=False); open(p,'a').write('\\n')\nprint('ok')\n\" && cd <guest-path> && <env-var>=<guest-path> timeout 3000 python3 -I <guest-path> --validate --replay 2>&1 | tail -60",
    "cd <guest-path> && python3 -I -c \"\nimport json\nr={\n 'outcome':'working',\n 'fault_owner':'none',\n 'operation':'ekos mcp serve (stdio) and ekos query find on the committed sample repo; ekos ekl and cargo test --workspace as examples',\n 'operation_scope':'EKOS v1.1.0 Rust CLI built from the pinned snapshot at ekos/target/release/ekos; sample repo /tmp/ekos-sample; web console scheduling not exercised',\n 'steps':[\n  'Read README; installed build-essential via sudo apt-get and Rust via rustup minimal profile (repo pin 1.98.0 fetched automatically).',\n  'Ran install.sh with EKOS_CLI_ONLY=1 to avoid the browser wizard; installed release v1.1.0.',\n  'Built from source: cargo build --release -p ekos in ekos/ (about 7m44s).',\n  'Initialized and ran init --detect, build, recover, resolve, compile, commit on /tmp/ekos-sample; coverage ok.',\n  'Probed MCP ekos_search for Invoice over stdio; result contains billing.Invoice.',\n  'Ran ekos query find Invoice --mode lexical; result lists billing.Invoice.',\n  'Ran ekos ekl FIND Object WHERE kind = View; 0 rows (expected, Python-only sample).',\n  'Ran cargo test --workspace: 3102 passed, 0 failed, 181 suites. First run hit disk full in debug build; deleted own target/debug and reran with CARGO_PROFILE_TEST_DEBUG=0 CARGO_INCREMENTAL=0.',\n  'Ran checker with --validate --replay: valid, no problems, replay PASS.'\n ],\n 'deviations':[\n  'Installer fetched release v1.1.0 instead of the pinned commit 8698c2f7; probes and claims used the source-built snapshot binary (also v1.1.0).',\n  'Debug test build exhausted the 30G disk; recovered by deleting only own target/debug and running tests with reduced debug info.',\n  'Scheduler/cycle feature (web console, FastAPI + APScheduler) was not installed or started; recorded as blocked in cycles.json with no argv.'\n ],\n 'stuck_step':None,\n 'main_blocker':None,\n 'plain_failure':None,\n 'suggested_fix':'Install and start the web console (web/api) with a notify_url to exercise scheduled cycles; provision at least 60G disk for debug test builds, or use CARGO_PROFILE_TEST_DEBUG=0.'\n}\nimport os\nos.makedirs('<guest-path>',exist_ok=True)\njson.dump(r,open('<guest-path>','w'),indent=2)\nprint('written')\n\" && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -c \"import sys,json; d=json.load(sys.stdin) if False else None; print(sys.stdin.read()[:400])\""
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "ekos mcp serve (stdio) and ekos query find on the committed sample repo; ekos ekl and cargo test --workspace as examples",
  "suggested_fix": null,
  "tokens_in": 1579307,
  "tokens_out": 23661,
  "cost_usd": 0.045286795000000005,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>",
          "mcp",
          "serve",
          "--config",
          "/tmp/ekos-sample/ekos.toml",
          "--workspace",
          "/tmp/ekos-sample"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "ekos",
          "version": "1.1.0"
        },
        "tools": [
          "ekos_search",
          "ekos_query",
          "ekos_retrieve",
          "ekos_ekl",
          "ekos_neighborhood",
          "ekos_audit",
          "ekos_state",
          "ekos_dependents",
          "ekos_impact",
          "ekos_graph_export",
          "ekos_diff",
          "ekos_status",
          "ekos_transformation_explain",
          "ekos_transformation_diff",
          "ekos_architecture_evaluate",
          "ekos_architecture_drift",
          "ekos_architecture_diff",
          "ekos_identity_review",
          "ekos_architecture_review",
          "ekos_conflicts"
        ],
        "tool_schema_bytes": 13788,
        "tool_result": {
          "content": [
            {
              "text": "{\n  \"arm_timings\": [\n    {\n      \"candidates\": 6,\n      \"elapsed_ms\": 0.569554,\n      \"source\": \"Bm25\"\n    },\n    {\n      \"candidates\": 1,\n      \"elapsed_ms\": 0.001072,\n      \"source\": \"ExactName\"\n    }\n  ],\n  \"arms_run\": {\n    \"bm25\": true,\n    \"vector\": false\n  },\n  \"matches\": [\n    {\n      \"id\": \"75f45cf5-ddd2-5e5d-b799-d1535248910e\",\n      \"name\": \"Invoice\"\n    },\n    {\n      \"id\": \"a3ab434a-8ea7-5991-add8-c66cec73f13d\",\n      \"name\": \"billing.Invoice\"\n    },\n    {\n      \"id\": \"2eea1b14-c51c-51ab-9481-0f4a34162010\",\n      \"name\": \"src/billing.py\"\n    },\n    {\n      \"id\": \"9f491768-37e8-522d-b904-e1899af11a1b\",\n      \"name\": \"apply_discount\"\n    },\n    {\n      \"id\": \"3b4feb46-6ab7-5e0b-9d80-ade7b390a713\",\n      \"name\": \"src/orders.py\"\n    },\n    {\n      \"id\": \"7cff1a25-a3b9-5686-b26e-66693d36cc66\",\n      \"name\": \"place_order\"\n    }\n  ]\n}",
              "type": "text"
            }
          ],
          "isError": false
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 download and execute, 11 hardcoded secret, 69 known vulnerability. 12 static matches retained as context.",
    "expected": "Reviewed as expected for a test run: wrote only to its own open file handles.",
    "findings": [
      {
        "kind": "download-and-execute",
        "count": 1,
        "note": "Source contains download and execute; review its purpose.",
        "location_count": 1,
        "path": "install.sh"
      },
      {
        "kind": "hardcoded-secret",
        "count": 11,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 3
      },
      {
        "kind": "known-vulnerability",
        "count": 43,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 23
      }
    ],
    "context": [
      {
        "kind": "hardcoded-secret",
        "count": 8,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 4
      }
    ],
    "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=alexeyban--EKOS-claude-haiku-5-5-1792777997206854539",
    "evidence_file": "/data/safety/alexeyban--EKOS-claude-haiku-5-5-1792777997206854539.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": 38,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "8698c2f75a13c0f829ee6b878e895df04749aaf7",
    "url": "https://github.com/alexeyban/EKOS"
  },
  "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": null,
  "operation_scope": "product operation",
  "tool_calls": 38,
  "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/alexeyban/EKOS",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled runs: the console fires pipeline commands on a cron or interval trigger",
      "source": "web/api/app/scheduler.py",
      "input": "",
      "expected": "",
      "command": "",
      "schedule": "",
      "method": "",
      "verdict": "blocked",
      "outcome": "Scheduling is a feature of the EKOS web console (FastAPI, APScheduler, SQLite, auth tokens, a required notify_url). Its dependencies were not installed and the console was not started in this run, so no cycle was triggered; the Rust CLI has no cron or --once entry point.",
      "evidence": "Scheduling is a feature of the EKOS web console (FastAPI, APScheduler, SQLite, auth tokens, a required notify_url). Its dependencies were not installed and the console was not started in this run, so no cycle was triggered; the Rust CLI has no cron or --once entry point."
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "The read-only MCP server exposes the compiled ledger to agents; searching it returns the compiled objects",
      "source": "`ekos mcp serve --workspace <dir>` exposes the read-only Runtime as a Model Context Protocol",
      "input": "{\"tool\": \"ekos_search\", \"arguments\": {\"query\": \"Invoice\"}}",
      "expected": "ekos_search returns the compiled object billing.Invoice",
      "command": "<guest-path> mcp serve --config /tmp/ekos-sample/ekos.toml --workspace /tmp/ekos-sample tools/call {\"tool\": \"ekos_search\", \"arguments\": {\"query\": \"Invoice\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: billing.Invoice",
      "evidence": "billing.Invoice\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"2eea1b14-c51c-51ab-9481-0f4a34162010\\\",\\n      \\\"name\\\": \\\"src/billing.py\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"9f491768-37e8-522d-b904-e1899af11a1b\\\",\\n      \\\"name\\\": \\\"apply_discount\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"3b4feb46-6ab7-5e0b-9d80-ade7b390a713\\\",\\n      \\\"name\\\": \\\"src/orders.py\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"7cff1a25-a3b9-5686-b26e-66693d36cc66\\\",\\n      \\\"name\\\": \\\"place_order\\\"\\n    }\\n  ]\\n}\", \"type\": \"text\"}], \"isError\": false}",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "ekos query find searches compiled object names from the command line",
      "source": "`ekos query find \"<text>\" --mode lexical|vector|hybrid`",
      "input": "find Invoice (lexical) on the committed sample repo",
      "expected": "lists billing.Invoice among the matches",
      "command": "<guest-path> query find Invoice --mode lexical --config /tmp/ekos-sample/ekos.toml",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: billing.Invoice",
      "evidence": "billing.Invoice\n  2eea1b14-c51c-51ab-9481-0f4a34162010  src/billing.py\n  9f491768-37e8-522d-b904-e1899af11a1b  apply_discount\n  3b4feb46-6ab7-5e0b-9d80-ade7b390a713  src/orders.py\n  7cff1a25-a3b9-5686-b26e-66693d36cc66  place_order\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "EKL query over the ledger returns rows for a matching kind (View; none in this Python-only sample, so zero rows)",
      "source": "README.md, Views (RFC 0169) section",
      "input": "FIND Object WHERE kind = 'View'",
      "command": "<guest-path> ekl 'FIND Object WHERE kind = '\"'\"'View'\"'\"'' --config /tmp/ekos-sample/ekos.toml",
      "evidence": "0 rows.",
      "deferred": false,
      "expected": "0 rows.",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Optional documented test suite of the Rust workspace",
      "source": "README.md, Verify the install section",
      "input": "cargo test --workspace from ekos/",
      "command": "<guest-path> test --workspace",
      "evidence": "ql_dialect_clickhouse\n   Doc-tests ekos_plugin_sql_dialect_databricks\n   Doc-tests ekos_plugin_sql_dialect_mssql\n   Doc-tests ekos_plugin_sql_dialect_mysql\n   Doc-tests ekos_plugin_sql_dialect_oracle\n   Doc-tests ekos_plugin_sql_dialect_postgres\n   Doc-tests ekos_plugin_sql_dialect_snowflake\n   Doc-tests ekos_plugin_sql_dialect_trino\n   Doc-tests ekos_plugin_treasury\n   Doc-tests ekos_recovery\n   Doc-tests ekos_runtime\n   Doc-tests ekos_scheduler\n   Doc-tests ekos_segment_backend\n   Doc-tests ekos_semantic\n   Doc-tests ekos_session\n   Doc-tests ekos_simulation\n   Doc-tests ekos_sql_dialect_sdk",
      "deferred": false,
      "expected": "test result: ok",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-23T13:36:27Z",
    "commits_90d": 491,
    "merged_prs_90d": 2,
    "open_issues": 0,
    "open_prs": 0,
    "reply_share": 0.0,
    "reply_threads": 1,
    "median_reply_hours": null,
    "last_release_at": "2026-10-14T16:04:08Z",
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 0 days ago; 491 commits and 2 merged PRs in 90 days; 0 open issues, 0 open PRs; 0 of 1 recent threads got a maintainer reply; latest release 2026-10-14"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 0 days ago; 491 commits and 2 merged PRs in 90 days; 0 open issues, 0 open PRs; 0 of 1 recent threads got a maintainer reply; latest release 2026-10-14",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago; 0 open issues, 13 answered or closed",
  "last_commit_at": "2026-10-23T13:36:29Z",
  "last_release_at": "2026-10-14T16:04:08Z",
  "open_issues": 0,
  "answered_issues": 13,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "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": 20,
    "schema_bytes": 13788,
    "tokens_approx": 3447,
    "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-23T18:49:45.231479+00:00",
  "tested_commit": "8698c2f75a13c0f829ee6b878e895df04749aaf7",
  "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": "alexeyban/EKOS",
    "source": "https://github.com/alexeyban/EKOS",
    "commit": "8698c2f75a13c0f829ee6b878e895df04749aaf7",
    "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": "8698c2f75a13c0f829ee6b878e895df04749aaf7",
      "url": "https://github.com/alexeyban/EKOS"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "ekos mcp serve (stdio) and ekos query find on the committed sample repo; ekos ekl and cargo test --workspace as examples",
    "operation_scope": "product operation",
    "hosting": null,
    "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/alexeyban--EKOS-claude-haiku-5-5-1792777997206854539.json"
}
