affaan-m/ECC

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Partly checked (README support for this platform is not stated) · Linux / Luna: Partly checked (README support for this platform is not stated)

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/affaan-m--ECC.svg).

mcp-server

Works

README claims checked out on 2 recorded setups. Untested combinations remain unknown.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
LinuxREADME makes no claimREADME makes no claim

Linux / Haiku 5.5: README makes no claim · Oct 23, 2026 · 90606c8315ee · claude-code / 2.1.300 (Claude Code)
Recorded operation: ecc-memory-mcp · local stdio MCP start + initialize + tools/list

Linux / Luna: README makes no claim · Oct 23, 2026 · 90606c8315ee · codex / codex-cli 0.163.0
Recorded operation: bash./install.sh --profile minimal --target cursor

Does what it says
1 of 1 claims checked out
  • Cursor installs a project-local adapter: Real input produced the expected result: Done. Install-state written to <guest-path>

    Source: | Cursor | `./install.sh --profile minimal --target cursor` | Project-local `.cursor/` adapter |

    Input: minimal profile, cursor target

    Expected: Install-state is written under .cursor

    Command: bash ./install.sh --profile minimal --target cursor

    Observed: Done. Install-state written to <guest-path> Compute: Run or self-host any open-source model. Itô is ECC's preferred compute sponsor: open its dashboard to sign in and rent or manage GPUs at https://compute.itomarkets.com. Any GPU provider works. This sponsorship link is passive: it does not invoke an RFQ, reserve capacity, provision compute, or configure serving. Separately, the opt-in "ecc ito find" bridge invokes the explicitly configured canonical Itô CLI and submits a live authenticated RFQ; it does not reserve capacity. Managed inference through

MCP
Documented only
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Slow
slow: last commit 2 days ago; 1646 commits and 371 merged PRs in 90 days; 99 open issues, 165 open PRs; 0 of 11 recent threads got a maintainer reply; latest release 2026-10-01

Last commit Oct 20, 2026

Setup time
6 min 40 s
6 min 40 s to a working result
Issue
none found in recorded check
Examples
couldn’t confirm (blocked)
  • README documents the complete Node test command; execution exceeded replay time budget: node tests/run-all.js replay exceeded the product check time limit (observed 819 passed, 0 failed before timeout)

    Source: README.md, Running Tests

    Expected: documented command completes successfully

    Observed: node tests/run-all.js replay exceeded the product check time limit (observed 819 passed, 0 failed before timeout)

Evidence
README behavior checked
Agent interfaces
CLI, MCP (documented only)
CLI, MCP (documented only)

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.163.0 · Partly checked (README support for this platform is not stated) · Oct 23, 2026 on 90606c8315ee

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
Something to look at: writes outside the project folder by <guest-path>, <guest-path>

Review signals across current setups: outside write. 68 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict. 16 static matches retained as context.

Source contains download and execute; review its purpose. scripts/build-pi-core.js 3 findings.

Gitleaks found a possible hardcoded secret; value withheld. 12 distinct locations. 12 findings.

OSV reports a known vulnerability in this dependency version. 6 distinct locations. 13 findings.

Repository processes attempted these writes outside documented output/cache paths. 13 distinct locations. 2 findings. 30 attributed processes.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Partly checked (README support for this platform is not stated)

Checked operation ecc-memory-mcp · local stdio MCP start + initialize + tools/list

Agent-reported scope: Run the ECC (ecc-universal 2.2.3) Memory Vault: init a project vault, save and search a handoff with the ecc CLI, and save/search memories through the ecc-memory-mcp stdio server; run the README's documented unit test files.

MCP server returned: ecc-memory-vault · version 1.0.0.

MCP tools returned: memory_save, memory_search, memory_read, memory_doctor. Tool listing does not establish authenticated tool-call success.

Run details
run
affaan-m--ECC-claude-haiku-5-5-1792775644670614316
date
Oct 23, 2026
time to working
1715.7s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.031782
Recorded source
https://github.com/affaan-m/ECC
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "90606c8315ee09cafc303515c5f33024db6b9882", "url": "https://github.com/affaan-m/ECC"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
90606c8315ee09cafc303515c5f33024db6b9882
Whose fault: no fault assigned · resolved

Safety: Review signals: 3 download and execute, 12 hardcoded secret, 19 known vulnerability, 1 outside write. 8 static matches retained as context.

Review signals: 3 download and execute, 12 hardcoded secret, 19 known vulnerability, 1 outside write. 8 static matches retained as context.

Source contains download and execute; review its purpose. scripts/build-pi-core.js 3 findings.

Gitleaks found a possible hardcoded secret; value withheld. 12 distinct locations. 12 findings.

OSV reports a known vulnerability in this dependency version. 6 distinct locations. 13 findings.

Repository processes attempted these writes outside documented output/cache paths. 13 distinct locations. 28 attributed processes.

2 download and execute matches retained as context; full list in the evidence.

6 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

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.

Full safety evidence →

Answers recorded for this run
  • The optional ecc-memory-mcp server exposes save, search, read, and doctor tools: Real input produced the expected result: Cache policy note

    Source: The optional `ecc-memory-mcp` server exposes the same bounded save, search, read, and doctor surface without enabling itself by default.

    Input: {"tool": "memory_save", "arguments": {"title": "Cache policy note", "body": "Use a 300 second TTL for the session cache.", "kind": "note"}}

    Expected: saved memory returned with its title

    Command: ecc-memory-mcp tools/call {"tool": "memory_save", "arguments": {"title": "Cache policy note", "body": "Use a 300 second TTL for the session cache.", "kind": "note"}}

    Observed: Cache policy note\",\n \"kind\": \"note\",\n \"scope\": \"project\",\n \"trust\": \"unreviewed\",\n \"status\": \"active\",\n \"sourceHarness\": \"codex\",\n \"targetHarnesses\": [\n \"all\"\n ],\n \"tags\": [],\n \"links\": [],\n \"createdAt\": \"2026-10-23T17:42:12.643Z\",\n \"updatedAt\": \"2026-10-23T17:42:12.643Z\"\n }\n}"}]}

  • ecc memory search returns active project memories from the vault: Real input produced the expected result: Continue authentication migration

    Source: Normal search recall returns active project and team memories.

    Input: ecc memory search "authentication migration" --target-harness codex

    Expected: the saved handoff is listed

    Command: ecc memory search 'authentication migration' --target-harness codex

    Observed: Continue authentication migration (score 38) Continue the authentication migration: move session tokens to httpOnly cookies, then update the login tests.

Examples

  • Documented unit tests for utils pass: command completed successfully

    Source: README.md Running Tests: node tests/lib/utils.test.js

    Input: none

    Expected: Passed: 195, Failed: 0

    Command: node tests/lib/utils.test.js

    Observed: y string for non-string input ✓ preserves string with no ANSI codes ✓ handles CSI with question mark parameter (DEC private modes) === Test Results === Passed: 195 Failed: 0 Total: 195 [readStdinJson] stdin exceeded 100 bytes; input truncated and treated as empty [readStdinJson] stdin exceeded 100 bytes; input truncated and treated as empty [readStdinJson] stdin exceeded 100 bytes; input truncated and treated as empty [Utils] replaceInFile failed for /tmp/utils-test-readonly-1792777339146/readonly.txt: EACCES: permission denied, open '/tmp/utils-test-readonly-1792777339146/readonly.txt'

  • Documented package-manager tests pass: command completed successfully

    Source: README.md Running Tests: node tests/lib/package-manager.test.js

    Input: none

    Expected: Passed: 116, Failed: 0

    Command: node tests/lib/package-manager.test.js

    Observed: object Object]" Round 109: getExecCommand (path traversal in binary — SAFE_NAME_REGEX permits ../ in binary name): ✓ getExecCommand accepts ../../../etc/passwd as binary because SAFE_NAME_REGEX allows ../ Round 108: getRunCommand (path traversal — SAFE_NAME_REGEX permits ../ via allowed / and . chars): ✓ getRunCommand accepts @scope/../../evil because SAFE_NAME_REGEX allows ../ Round 111: getExecCommand (newline in args — SAFE_ARGS_REGEX \s matches \n): ✓ getExecCommand accepts newline in args because SAFE_ARGS_REGEX includes newline === Test Results === Passed: 116 Failed: 0 Total: 116

  • Documented hooks tests pass: command completed successfully

    Source: README.md Running Tests: node tests/hooks/hooks.test.js

    Input: none

    Expected: Passed: 258, Failed: 0

    Command: node tests/hooks/hooks.test.js

    Observed: Round 94: session-end.js (tools used without files modified): ✓ session file includes Tools Used but omits Files Modified when only Read/Grep used Round 95: pre-compact.js (transcript_path provided + ECC_SKIP_LLM_SUMMARY=1 — LLM skipped): ✓ pre-compact falls back to compaction log entry when ECC_SKIP_LLM_SUMMARY=1 Round 95: session-end.js (ECC_LLM_SUMMARY_INTERVAL — controls LLM trigger cadence): ✓ session-end triggers LLM when totalMessages % interval === 0 ✓ session-end does NOT trigger LLM when totalMessages % interval !== 0 === Test Results === Passed: 258 Failed: 0 Total: 258

  • Memory vault doctor passes after init and handoff: command completed successfully

    Source: README.md Share context between harnesses: ecc memory doctor

    Input: none

    Expected: ECC memory doctor: PASS

    Command: ecc memory doctor

    Observed: ECC memory doctor: PASS Memories: 8 Invalid files: 0 Duplicate IDs: 0 Broken links: 0 Skipped symlinks: 0

Local or hosted: local

What the agent did

Run the ECC (ecc-universal 2.2.3) Memory Vault: init a project vault, save and search a handoff with the ecc CLI, and save/search memories through the ecc-memory-mcp stdio server; run the README's documented unit test files.

cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat /etc/os-release | head -2; ls /inputs 2>&1
cd <guest-path> && ls -la; test -f README.md && wc -l README.md && head -120 README.md
cd <guest-path> && grep -n '^#' README.md | head -120; cat VERSION; cat .tool-versions
cd <guest-path> && sed -n 164,180p README.md; echo ----; sed -n 2086,2135p README.md; echo ----; sed -n 1934,1960p README.md; echo ----; sed -n 687,700p README.md
cd <guest-path> && (node -v; npm -v; which git claude uv) 2>&1; cat .mcp.json; echo ----; cat package.json | head -60; echo ----; ls scripts | head -50; ls ecc2
sudo -n true && echo SUDO_OK; (sudo -n apt-get update -qq && sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y -qq nodejs npm) > /tmp/apt-node.log 2>&1; echo apt_exit=$?; tail -5 /tmp/apt-node.log; node -v; npm -v
cd <guest-path> && git init -q && git remote add origin https://github.com/affaan-m/ECC && timeout 240 git fetch --depth 1 origin 90606c8315ee09cafc303515c5f33024db6b9882; echo fetch_exit=$?; git reset --mixed FETCH_HEAD; echo reset_exit=$?; git log --oneline -1; git status --short | head -20
cd <guest-path> && timeout 900 node tests/run-all.js > /tmp/runall.log 2>&1; echo exit=$?; tail -25 /tmp/runall.log
cd <guest-path> && head -60 scripts/memory-mcp.mjs; echo ----; grep -n 'name:' scripts/memory-mcp.mjs | head; echo ----; grep -rn 'memory-mcp' README.md docs/*.md 2>/dev/null | head -5
cd <guest-path> && grep -n '"bin"' -A6 package.json; grep -n '"ajv"' package.json; ls node_modules 2>/dev/null | wc -l; echo ----; grep -n 'ecc-memory-mcp' -B3 -A10 README.md | sed -n 1,40p; echo ----; grep -n 'Passed\|FAIL\|✗\|Running\|===' /tmp/runall.log | tail -30
cd <guest-path> && grep -rn 'npm ci\|npm install' README.md CONTRIBUTING.md | head; grep -n 'ecc-memory-vault' -A12 mcp-configs/mcp-servers.json | head -30; ls tests/hooks | tail -5; echo; sed -n 1,30p tests/run-all.js | head -40
cd <guest-path> && export NODE_USE_ENV_PROXY=1 && timeout 900 npm install --no-audit --no-fund > /tmp/npm-install.log 2>&1; echo npm_install_exit=$?; tail -15 /tmp/npm-install.log; ls node_modules | wc -l; ls node_modules/ajv/package.json
export NODE_USE_ENV_PROXY=1; mkdir -p /tmp/node20 && cd /tmp/node20 && timeout 600 npm install --prefix /tmp/node20 <email> --no-audit --no-fund > /tmp/node20-install.log 2>&1; echo exit=$?; tail -3 /tmp/node20-install.log; /tmp/node20/node_modules/.bin/node -v
export PATH=/tmp/node20/node_modules/.bin:$PATH NODE_USE_ENV_PROXY=1; cd <guest-path> && node -v && npm -v && timeout 900 npm install --no-audit --no-fund > /tmp/npm-install20.log 2>&1; echo npm_install_exit=$?; tail -3 /tmp/npm-install20.log; grep -c EBADENGINE /tmp/npm-install20.log; timeout 900 npm install -g --prefix /tmp/ecc-global . --no-audit --no-fund > /tmp/npm-global.log 2>&1; echo global_exit=$?; tail -5 /tmp/npm-global.log; ls -la /tmp/ecc-global/bin 2>&1
cd <guest-path> && sed -n 1255,1306p README.md
export PATH=/tmp/ecc-global/bin:/tmp/node20/node_modules/.bin:$PATH; rm -rf /tmp/ecc-demo && mkdir -p /tmp/ecc-demo && cd /tmp/ecc-demo && git init -q && ecc memory init --scope project; echo init_exit=$?; printf 'Continue the authentication migration: move session tokens to httpOnly cookies, then update the login tests.\n' > /tmp/ecc-demo/handoff.md && ecc memory handoff --from hermes --target codex --title "Continue authentication migration" --body-file ./handoff.md; echo handoff_exit=$?; ecc memory search "authentication migration" --target-harness codex; echo search_exit=$?; ecc memory doctor; echo doctor_exit=$?
cd <guest-path> && sed -n 54,140p scripts/memory-mcp.mjs
export PATH=/tmp/ecc-global/bin:/tmp/node20/node_modules/.bin:/usr/bin:/bin; cd /tmp/ecc-demo && export ECC_MEMORY_HARNESS=codex && { printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"memory_save","arguments":{"title":"Cache policy note","body":"Use a 300 second TTL for the session cache.","kind":"note"}}}' '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"memory_search","arguments":{"query":"session cache TTL","limit":5}}}'; } | timeout 60 ecc-memory-mcp; echo exit=$?
cd <guest-path> && grep -n -i 'cron\|--once\|--now\|webhook\|schedul' README.md | head -20; echo ----; ls scripts/ | grep -i 'loop\|sched\|cron\|daemon'; grep -n -i 'once\|cron\|schedul' scripts/loop-status.js | head -10; echo ----; grep -rn "'loop'\|\"loop\"" scripts/ecc.js | head -5
export PATH=/tmp/node20/node_modules/.bin:/usr/bin:/bin; cd <guest-path> && for f in tests/lib/utils.test.js tests/lib/package-manager.test.js tests/hooks/hooks.test.js; do timeout 600 node $f > /tmp/t-$(basename $f).log 2>&1; echo "$f exit=$?"; grep -E 'Results|Passed|Failed' /tmp/t-$(basename $f).log | tail -3; done
cd <guest-path> && ls -la .coldpass; grep -c 'The optional `ecc-memory-mcp` server exposes the same bounded save, search, read, and doctor surface without enabling itself by default.' README.md; grep -c 'Normal search recall returns active project and team memories.' README.md; grep -c '^node tests/lib/utils.test.js$' README.md; grep -c 'Memory is unreviewed context, not executable policy' README.md
cd <guest-path> && PATH_ENV='/tmp/ecc-global/bin:/tmp/node20/node_modules/.bin:/usr/bin:/bin' && cat > probe.json <<EOF
{"kind":"mcp","argv":["ecc-memory-mcp"],"cwd":"/tmp/ecc-demo","env":{"PATH":"$PATH_ENV","ECC_MEMORY_HARNESS":"codex"},"tool":"memory_save","arguments":{"title":"Cache policy note","body":"Use a 300 second TTL for the session cache.","kind":"note"},"expected_text":"Cache policy note"}
EOF
cat > claims.json <<EOF
[
{"kind":"claim","claim":"The optional ecc-memory-mcp server exposes save, search, read, and doctor tools","source":"The optional \`ecc-memory-mcp\` server exposes the same bounded save, search, read, and doctor surface without enabling itself by default.","input":"memory_save with title Cache policy note","expected":"saved memory returned with its title","probe_kind":"mcp","argv":["ecc-memory-mcp"],"tool":"memory_save","arguments":{"title":"Cache policy note","body":"Use a 300 second TTL for the session cache.","kind":"note"},"expected_text":"Cache policy note","cwd":"/tmp/ecc-demo","env":{"PATH":"$PATH_ENV","ECC_MEMORY_HARNESS":"codex"}},
{"kind":"claim","claim":"ecc memory search returns active project memories from the vault","source":"Normal search recall returns active project and team memories.","input":"ecc memory search \"authentication migration\" --target-harness codex","expected":"the saved handoff is listed","probe_kind":"cli","argv":["ecc","memory","search","authentication migration","--target-harness","codex"],"cwd":"/tmp/ecc-demo","env":{"PATH":"$PATH_ENV"},"expected_text":"Continue authentication migration"}
]
EOF
cat > examples.json <<EOF
[
{"kind":"example","claim":"Documented unit tests for utils pass","source":"README.md Running Tests: node tests/lib/utils.test.js","input":"none","expected":"Passed: 195, Failed: 0","argv":["node","tests/lib/utils.test.js"],"cwd":"<guest-path>","env":{"PATH":"/tmp/node20/node_modules/.bin:/usr/bin:/bin"},"expected_text":"Passed: 195"},
{"kind":"example","claim":"Documented package-manager tests pass","source":"README.md Running Tests: node tests/lib/package-manager.test.js","input":"none","expected":"Passed: 116, Failed: 0","argv":["node","tests/lib/package-manager.test.js"],"cwd":"<guest-path>","env":{"PATH":"/tmp/node20/node_modules/.bin:/usr/bin:/bin"},"expected_text":"Passed: 116"},
{"kind":"example","claim":"Documented hooks tests pass","source":"README.md Running Tests: node tests/hooks/hooks.test.js","input":"none","expected":"Passed: 258, Failed: 0","argv":["node","tests/hooks/hooks.test.js"],"cwd":"<guest-path>","env":{"PATH":"/tmp/node20/node_modules/.bin:/usr/bin:/bin"},"expected_text":"Passed: 258"},
{"kind":"example","claim":"Memory vault doctor passes after init and handoff","source":"README.md Share context between harnesses: ecc memory doctor","input":"none","expected":"ECC memory doctor: PASS","argv":["ecc","memory","doctor"],"cwd":"/tmp/ecc-demo","env":{"PATH":"$PATH_ENV"},"expected_text":"ECC memory doctor: PASS"}
]
EOF
cat > cycles.json <<'EOF'
{"detected":false,"reason":"Inspected README and entry points (scripts/ecc.js, scripts/memory-mcp.mjs, scripts/loop-status.js, package.json bin list). No README cron, scheduler, loop, --once/--now or webhook trigger exists; loop-status.js only reads transcripts for stale ScheduleWakeup waits and is not a product scheduler. CI schedules are not product cycles.","checks":[]}
EOF
for f in probe.json claims.json examples.json cycles.json; do python3 -I -c "import json,sys;json.load(open(sys.argv[1]));print(sys.argv[1],'ok')" $f; done
ls -la <guest-path> 2>&1; cd <guest-path> && <env-var>=<guest-path> timeout 1200 python3 -I <guest-path> --validate --replay; echo checker_exit=$?
cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Run the ECC (ecc-universal 2.2.3) Memory Vault: init a project vault, save and search a handoff with the ecc CLI, and save/search memories through the ecc-memory-mcp stdio server; run the README's documented unit test files.","operation_scope":"Pinned commit 90606c8315ee09cafc303515c5f33024db6b9882, Ubuntu 24.04 guest, Node 20.19.0 (from .tool-versions), npm 9.2.0. Memory operations run in scratch project /tmp/ecc-demo. The Claude Code plugin install (npx <email> setup, ./install.sh) was not run; it needs Claude Code CLI 2.1+ and an interactive session.","steps":["git init; git remote add origin https://github.com/affaan-m/ECC; git fetch --depth 1 origin 90606c8315ee09cafc303515c5f33024db6b9882; git reset --mixed FETCH_HEAD","sudo apt-get install -y nodejs npm (provided Node v18.19.1)","npm install --prefix /tmp/node20 <email> (Node 20.19.0 for .tool-versions)","PATH=/tmp/node20/node_modules/.bin:$PATH npm install (in checkout)","PATH=/tmp/node20/node_modules/.bin:$PATH npm install -g --prefix /tmp/ecc-global .","node tests/run-all.js (timed out after 900s, exit 124)","node tests/lib/utils.test.js (Passed: 195, Failed: 0)","node tests/lib/package-manager.test.js (Passed: 116, Failed: 0)","node tests/hooks/hooks.test.js (Passed: 258, Failed: 0)","ecc memory init --scope project (in /tmp/ecc-demo)","ecc memory handoff --from hermes --target codex --title \"Continue authentication migration\" --body-file ./handoff.md","ecc memory search \"authentication migration\" --target-harness codex","ecc memory doctor (ECC memory doctor: PASS)","ecc-memory-mcp over stdio: tools/call memory_save (Cache policy note) and memory_search (returned the saved memory)","<env-var>=<guest-path> python3 -I <guest-path> --validate --replay (valid, replay PASS)"],"deviations":["Guest apt Node was v18.19.1 (README needs 18+). Installed Node 20.19.0 per .tool-versions into /tmp/node20 and used it for npm install and tests.","npm install under Node 20 still printed EBADENGINE warnings for some dev dependencies that declare node >=22; install still exited 0.","README's 'npm install -g <email>' (published package) was replaced with 'npm install -g --prefix /tmp/ecc-global .' from this checkout, so the ecc and ecc-memory-mcp bins match this snapshot. Both are on PATH via /tmp/ecc-global/bin.","node tests/run-all.js did not finish within the 900s limit (exit 124). Its output reached hooks/pre-bash-commit-quality.test.js and stopped there, so the full suite was not established. Substitute: the three test files listed in README 'Running Tests' were run individually and all passed.","npx <email> setup and ./install.sh were not run. They change Claude Code / user config, need Claude Code CLI 2.1+ on PATH, and are interactive. Claude Code is not installed in this guest.","Replay wrote additional memories into /tmp/ecc-demo/.ecc/memory/project (create-only writes, expected)."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"Make run-all.js finish or identify the hanging test (it stopped after hooks/pre-bash-commit-quality.test.js). Document Node 20 as the required runtime, since several dev dependencies reject Node 18. Document the local-checkout global install path for the Memory Vault bins."}
EOF
python3 -I -c "import json;d=json.load(open('report.json'));print(d['outcome'], d['fault_owner'])"; cd <guest-path> && <env-var>=<guest-path> timeout 1200 python3 -I <guest-path> --validate --replay | python3 -c "import json,sys;d=json.load(sys.stdin);print('valid=',d['valid'],'problems=',d['problems'],'replay=',d['replay']['status'])"; echo exit=$?; ps aux | grep -c '[e]cc-memory-mcp'
ps -eo pid,ppid,etime,args | grep '[e]cc-memory-mcp\|[m]emory-mcp'; 
Earlier attempts (1)

Luna

Native agent · Partly checked (README support for this platform is not stated)

Checked operation bash ./install.sh --profile minimal --target cursor

Agent-reported scope: Install ECC's Cursor project adapter

Run details
run
affaan-m--ECC-gpt-6-luna-1792777533420575610
date
Oct 23, 2026
time to working
399.7s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/affaan-m/ECC
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "90606c8315ee09cafc303515c5f33024db6b9882", "url": "https://github.com/affaan-m/ECC"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
90606c8315ee09cafc303515c5f33024db6b9882
Whose fault: no fault assigned · resolved

Safety: Review signals: 3 download and execute, 12 hardcoded secret, 19 known vulnerability, 1 outside write. 8 static matches retained as context.

Review signals: 3 download and execute, 12 hardcoded secret, 19 known vulnerability, 1 outside write. 8 static matches retained as context.

Source contains download and execute; review its purpose. scripts/build-pi-core.js 3 findings.

Gitleaks found a possible hardcoded secret; value withheld. 12 distinct locations. 12 findings.

OSV reports a known vulnerability in this dependency version. 6 distinct locations. 13 findings.

Repository processes attempted these writes outside documented output/cache paths. 8 distinct locations. 2 attributed processes.

2 download and execute matches retained as context; full list in the evidence.

6 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

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.

Full safety evidence →

Answers recorded for this run
  • Cursor installs a project-local adapter: Real input produced the expected result: Done. Install-state written to <guest-path>

    Source: | Cursor | `./install.sh --profile minimal --target cursor` | Project-local `.cursor/` adapter |

    Input: minimal profile, cursor target

    Expected: Install-state is written under .cursor

    Command: bash ./install.sh --profile minimal --target cursor

    Observed: Done. Install-state written to <guest-path> Compute: Run or self-host any open-source model. Itô is ECC's preferred compute sponsor: open its dashboard to sign in and rent or manage GPUs at https://compute.itomarkets.com. Any GPU provider works. This sponsorship link is passive: it does not invoke an RFQ, reserve capacity, provision compute, or configure serving. Separately, the opt-in "ecc ito find" bridge invokes the explicitly configured canonical Itô CLI and submits a live authenticated RFQ; it does not reserve capacity. Managed inference through

Examples

  • README documents the complete Node test command; execution exceeded replay time budget: node tests/run-all.js replay exceeded the product check time limit (observed 819 passed, 0 failed before timeout)

    Source: README.md, Running Tests

    Expected: documented command completes successfully

    Observed: node tests/run-all.js replay exceeded the product check time limit (observed 819 passed, 0 failed before timeout)

Local or hosted: local

What the agent did

Install ECC's Cursor project adapter

pwd; rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'requirements*.txt' -g 'Makefile' -g '*.md' | head -80; python3 --version; git status --short --branch
ls -la; find .. -name AGENTS.md -o -iname 'README*' | head -80; vault-search 'ECC repository README setup and usage' 2>&1 || true
cat README.md; cat package.json; cat .tool-versions; cat <guest-path> | head -10;
grep -nE '^(##|###)|install.sh|npm install|scripts/ecc.js (install|doctor|consult)|npm test|run-all' README.md | head -100; git rev-parse --is-inside-work-tree; node --version; npm --version; sed -n '1,100p' install.sh
id -u; cat .tool-versions; sed -n '2120,2136p' README.md; sed -n '420,445p' README.md;
sudo -n true && echo sudo-ok; command -v curl; command -v nvm;
export NODE_USE_ENV_PROXY=1; curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && . <host-path> && nvm install 20.19.0 && node --version && npm --version
export NODE_USE_ENV_PROXY=1 NVM_DIR=<guest-path>; . "$NVM_DIR/nvm.sh" && nvm install 20.19.0 && node --version && npm --version
export NODE_USE_ENV_PROXY=1 NVM_DIR=<guest-path>; . "$NVM_DIR/nvm.sh"; npm install --ignore-scripts --no-audit --no-fund --loglevel=error; bash ./install.sh --profile minimal --target cursor
sed -n '426,431p' README.md; sed -n '1,100p' package.json; ls -la .coldpass
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["bash","./install.sh","--profile","minimal","--target","cursor"],"cwd":"<guest-path>","env":{"NODE_USE_ENV_PROXY":"1","PATH":"<guest-path>"},"expected_text":"Done. Install-state written to <guest-path>"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Cursor installs a project-local adapter","source":"| Cursor | `./install.sh --profile minimal --target cursor` | Project-local `.cursor/` adapter |","input":"minimal profile, cursor target","expected":"Install-state is written under .cursor","probe_kind":"cli","argv":["bash","./install.sh","--profile","minimal","--target","cursor"],"expected_text":"Done. Install-state written to <guest-path>","cwd":"<guest-path>","env":{"NODE_USE_ENV_PROXY":"1","PATH":"<guest-path>"}}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Run documented repository tests","source":"README.md, Running Tests","input":"node tests/run-all.js","expected":"test runner completes","argv":["node","tests/run-all.js"],"cwd":"<guest-path>","env":{"PATH":"<guest-path>"}}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"README and product entry points describe installer and agent workflow commands; no product scheduler or recurring cycle trigger is documented or present in inspected package/scripts entry points.","checks":[]}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"README documents the complete Node test command; execution exceeded replay time budget","source":"README.md, Running Tests","reason":"node tests/run-all.js replay exceeded the product check time limit (observed 819 passed, 0 failed before timeout)"}]
EOF
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install ECC's Cursor project adapter","operation_scope":"Documented minimal Cursor installation; Node.js 20.19.0 installed in guest","steps":["Installed Node.js 20.19.0 as specified by .tool-versions (Python 3.12.3 observed; README's exercised operation uses Node).","Ran npm install --ignore-scripts --no-audit --no-fund --loglevel=error.","Ran bash ./install.sh --profile minimal --target cursor; generated .cursor adapter and install state."],"deviations":["vault-search unavailable in guest.","README test runner replay exceeded checker time limit; observed output showed 819 passed and 0 failed before timeout. The test example is recorded with this actual limitation."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay