jarrodwatts/jev-trader

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Not tested · Linux / Luna: Not tested (no product behavior was checked)

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

other

Not tested

The saved checks do not establish a current product result.

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

Tested on Linux
PlatformHaikuLuna
Linuxnot testednot tested

Linux / Haiku 5.5: not tested · Oct 23, 2026 · d6254bf36a78 · claude-code / 2.1.300 (Claude Code)
Recorded operation: bun run start · local HTTP start + response check

Linux / Luna: not tested · Oct 23, 2026 · d6254bf36a78 · codex / codex-cli 0.163.0
Recorded operation: /root/.bun/bin/bun run start · local HTTP start + response check

Does what it says
not tested (blocked)
  • With no PRIVATE_KEY it dry-runs: Not replayable as a claim: 'bun run start' is a long-running server, and the claim path waits for the process to exit within a 120 s window (stays_running is not honored for claims; it timed out). Dry-run mode is instead checked by the probe: GET / on the started server returns "dryRun":true with no PRIVATE_KEY set (the banner also prints DRY RUN when started by hand).

    Source: With no `PRIVATE_KEY` it dry-runs: real book, real decisions, simulated fills.

    Observed: Not replayable as a claim: 'bun run start' is a long-running server, and the claim path waits for the process to exit within a 120 s window (stays_running is not honored for claims; it timed out). Dry-run mode is instead checked by the probe: GET / on the started server returns "dryRun":true with no PRIVATE_KEY set (the banner also prints DRY RUN when started by hand).

MCP
No
Local or hosted
local
Local: runs on your machine
Maintained
Maintained
actively maintained: last commit 10 days ago; 16 commits and 2 merged PRs in 90 days; 2 open issues, 1 open PRs; 7 of 14 recent threads got a maintainer reply, median first reply 453.4h; no releases

Last commit Oct 13, 2026

Issue
not tested
Examples
not tested (blocked)
  • signs a buy and a sell offline, asserts the calldata matches the SDK: Not run to success: the script reads the live Kuru MON-USDC book first, and at the time of testing the book had 0 bids and 9 asks at every block (checked over ~10 minutes, and the Kuru SDK itself also returned 0 bids), so buildBook throws 'empty book side'. Not a repo decoding fault; needs a two-sided live market.

    Source: README.md ## Layout / The 300 ms budget: bun run scripts/dry-encode.ts

    Expected: documented command completes successfully

    Observed: Not run to success: the script reads the live Kuru MON-USDC book first, and at the time of testing the book had 0 bids and 9 asks at every block (checked over ~10 minutes, and the Kuru SDK itself also returned 0 bids), so buildBook throws 'empty book side'. Not a repo decoding fault; needs a two-sided live market.

  • book reader vs the SDK: exactness and latency: Not run to success for the same reason: the live book is one-sided (0 bids), so the reader throws before the SDK comparison. The SDK was checked directly and also reports 0 bids. Needs a two-sided live market.

    Source: README.md ## The 300 ms budget: bun run scripts/bench-read.ts

    Expected: documented command completes successfully

    Observed: Not run to success for the same reason: the live book is one-sided (0 bids), so the reader throws before the SDK comparison. The SDK was checked directly and also reports 0 bids. Needs a two-sided live market.

Cycles
not tested (blocked)
  • Every new block runs one trader cycle (decision, then quote): Live Kuru MON-USDC book had zero bids for the whole test window, so each block's cycle throws 'empty book side' before any decision. The cycle does fire per block (blocks are logged), but no decision or quote can be produced to check.

    Source: src/index.ts

    Input: live Monad block feed for MON-USDC with 0 bids at every block observed

    Expected: a decision and dry-run quote for the block

    Observed: Live Kuru MON-USDC book had zero bids for the whole test window, so each block's cycle throws 'empty book side' before any decision. The cycle does fire per block (blocks are logged), but no decision or quote can be produced to check.

Evidence
some README behavior checked
Agent interfaces
API
API

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

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.300 (Claude Code) · not tested · Oct 23, 2026 on d6254bf36a78

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

Safety
Reads credential-like files: yes by <guest-path>; writes outside the project folder: yes; made outbound connections: yes (hosts not recorded)

Review signals across current setups: connection review, outside write, sensitive read. 54 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 27 distinct locations. 2 findings. 24 attributed processes.

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

Repository processes attempted these writes outside documented output/cache paths. //package.json 1 attributed processes.

PID 2698: <guest-path> · <guest-path>

A repository process attempted to read this sensitive path. 2 distinct locations. 2 findings. 2 attributed processes.

Reviewed as expected for a test run: read only test files inside the test workspace or its temporary folders.

Reviewed as expected for a test run: read only test files inside the test workspace or its temporary folders; the Bun runtime wrote its own trace marker.

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

Run details

Haiku 5.5

Native agent · Not tested

Operation / attempted scope bun run start · local HTTP start + response check

Agent-reported scope: Run the jev-trader dry-run server (no PRIVATE_KEY) and read its GET / snapshot; then exercise the per-block decision/quote loop against the live Kuru MON-USDC book.

Run details
run
jarrodwatts--jev-trader-claude-haiku-5-5-1792778165152073244
date
Oct 23, 2026
time to working
not recorded
product hosting / execution
Local HTTP 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.026689
Recorded source
https://github.com/jarrodwatts/jev-trader
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "d6254bf36a7875e009533fb722c1af8977b96e2d", "url": "https://github.com/jarrodwatts/jev-trader"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
d6254bf36a7875e009533fb722c1af8977b96e2d
Whose fault: prerequisite · diagnosed

The live Kuru MON-USDC order book has no bids: every block reports bids=0 asks=9, for roughly 10 minutes of observation, and the Kuru SDK agrees.

Recorded blocker / warning

Step: bun run scripts/dry-encode.ts (and bench-read) reading the live order book

The live Kuru MON-USDC order book has no bids: every block reports bids=0 asks=9, for roughly 10 minutes of observation, and the Kuru SDK agrees.

Safety: Review signals: 1 connection review, 27 known vulnerability, 1 outside write, 1 sensitive read.

Review signals: 1 connection review, 27 known vulnerability, 1 outside write, 1 sensitive read.

Reviewed as expected for a test run: read only test files inside the test workspace or its temporary folders; the Bun runtime wrote its own trace marker.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 27 distinct locations. 20 attributed processes.

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

Repository processes attempted these writes outside documented output/cache paths. //package.json 1 attributed processes.

PID 2698: <guest-path> · <guest-path>

A repository process attempted to read this sensitive path. <guest-path> 1 attributed processes.

PID 2698: <guest-path> · <guest-path>

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
  • With no PRIVATE_KEY it dry-runs: Not replayable as a claim: 'bun run start' is a long-running server, and the claim path waits for the process to exit within a 120 s window (stays_running is not honored for claims; it timed out). Dry-run mode is instead checked by the probe: GET / on the started server returns "dryRun":true with no PRIVATE_KEY set (the banner also prints DRY RUN when started by hand).

    Source: With no `PRIVATE_KEY` it dry-runs: real book, real decisions, simulated fills.

    Observed: Not replayable as a claim: 'bun run start' is a long-running server, and the claim path waits for the process to exit within a 120 s window (stays_running is not honored for claims; it timed out). Dry-run mode is instead checked by the probe: GET / on the started server returns "dryRun":true with no PRIVATE_KEY set (the banner also prints DRY RUN when started by hand).

Examples

  • signs a buy and a sell offline, asserts the calldata matches the SDK: Not run to success: the script reads the live Kuru MON-USDC book first, and at the time of testing the book had 0 bids and 9 asks at every block (checked over ~10 minutes, and the Kuru SDK itself also returned 0 bids), so buildBook throws 'empty book side'. Not a repo decoding fault; needs a two-sided live market.

    Source: README.md ## Layout / The 300 ms budget: bun run scripts/dry-encode.ts

    Expected: documented command completes successfully

    Observed: Not run to success: the script reads the live Kuru MON-USDC book first, and at the time of testing the book had 0 bids and 9 asks at every block (checked over ~10 minutes, and the Kuru SDK itself also returned 0 bids), so buildBook throws 'empty book side'. Not a repo decoding fault; needs a two-sided live market.

  • book reader vs the SDK: exactness and latency: Not run to success for the same reason: the live book is one-sided (0 bids), so the reader throws before the SDK comparison. The SDK was checked directly and also reports 0 bids. Needs a two-sided live market.

    Source: README.md ## The 300 ms budget: bun run scripts/bench-read.ts

    Expected: documented command completes successfully

    Observed: Not run to success for the same reason: the live book is one-sided (0 bids), so the reader throws before the SDK comparison. The SDK was checked directly and also reports 0 bids. Needs a two-sided live market.

Cycles

  • Every new block runs one trader cycle (decision, then quote): Live Kuru MON-USDC book had zero bids for the whole test window, so each block's cycle throws 'empty book side' before any decision. The cycle does fire per block (blocks are logged), but no decision or quote can be produced to check.

    Source: src/index.ts

    Input: live Monad block feed for MON-USDC with 0 bids at every block observed

    Expected: a decision and dry-run quote for the block

    Observed: Live Kuru MON-USDC book had zero bids for the whole test window, so each block's cycle throws 'empty book side' before any decision. The cycle does fire per block (blocks are logged), but no decision or quote can be produced to check.

Local or hosted: local

Suggested next step (agent-reported): Re-run once the market has two-sided liquidity. Separately, the bot could treat a one-sided book as a skipped block with a clear log line, and the README scripts could report 'no two-sided book' instead of exiting with an error.

What the agent did

Run the jev-trader dry-run server (no PRIVATE_KEY) and read its GET / snapshot; then exercise the per-block decision/quote loop against the live Kuru MON-USDC book.

cd <guest-path> && ls -la && id -u && python3 --version && git status 2>&1 | head -3; cat README.md 2>/dev/null | head -200
ls -la <guest-path> /inputs 2>&1; ls -la <guest-path> 2>&1
cd <guest-path> && cat package.json; echo ---; cat .env.example; echo ---; ls -la .coldpass scripts src web; echo ---; which bun node npm uv 2>&1; node --version 2>&1; bun --version 2>&1; cat Dockerfile; echo; cat .dockerignore
cd /tmp && (curl -fsSL https://bun.sh/install | bash -s "bun-v1.3.0" 2>&1 | tail -5); ls -la ~/.bun/bin 2>&1; ~/.bun/bin/bun --version 2>&1
sudo -n true && echo SUDO_OK; sudo -n apt-get install -y unzip 2>&1 | tail -3; cd /tmp && (curl -fsSL https://bun.sh/install | bash -s "bun-v1.3.0" 2>&1 | tail -5); ls -la $HOME/.bun/bin 2>&1; $HOME/.bun/bin/bun --version 2>&1
sudo -n apt-get update 2>&1 | tail -2; sudo -n apt-get install -y unzip 2>&1 | tail -2; cd /tmp && (curl -fsSL https://bun.sh/install | bash -s "bun-v1.3.0" 2>&1 | tail -5); $HOME/.bun/bin/bun --version 2>&1
export PATH="$HOME/.bun/bin:$PATH"; export NODE_USE_ENV_PROXY=1; cd <guest-path> && cp .env.example .env && bun install 2>&1 | tail -15; echo EXIT=$?
export PATH="$HOME/.bun/bin:$PATH"; cd <guest-path> && (timeout 25 bun run start > /tmp/jev-start.log 2>&1 &) ; sleep 20; cat /tmp/jev-start.log | head -60; echo ---; curl -s -m 5 http://localhost:3000/ | head -c 1500; echo; echo ---; curl -s -m 5 http://localhost:3000/history | head -c 300
cd <guest-path> && cat src/server.ts; echo ---; cat src/index.ts; echo ---; grep -n "empty book" -B5 -A5 src/*.ts | head -60; echo ---; cat CLAUDE.md | head -60
export PATH="$HOME/.bun/bin:$PATH"; cd <guest-path> && timeout 120 bun run scripts/dry-encode.ts 2>&1 | tail -30; echo EXIT=${PIPESTATUS[0]}; echo ----; timeout 150 bun run scripts/bench-read.ts 2>&1 | tail -25; echo EXIT=${PIPESTATUS[0]}
export PATH="$HOME/.bun/bin:$PATH"; cd <guest-path> && sed -n 1,40p scripts/dry-encode.ts; echo ----; timeout 60 bun run scripts/dry-encode.ts 2>&1 | head -12
export PATH="$HOME/.bun/bin:$PATH"; cd <guest-path> && for i in 1 2 3 4; do timeout 60 bun run scripts/dry-encode.ts > /tmp/de-$i.log 2>&1; echo "try $i exit=$?"; grep -E "^market|^ok|^FAIL|error:" /tmp/de-$i.log | head -8; sleep 25; done
export PATH="$HOME/.bun/bin:$PATH"; cd <guest-path> && timeout 150 bun run scripts/bench-read.ts 2>&1 | head -30; echo; sed -n 1,30p scripts/bench-read.ts | cut -c1-200
export PATH="$HOME/.bun/bin:$PATH"; mkdir -p /tmp/diag && cat > /tmp/diag/sdkbook.ts <<'EOF'
import { ethers } from "<guest-path>";
import * as Kuru from "<guest-path>";
const MARKET = "0x065C9d28E428A0db40191a54d33d5b7c71a9C394";
const provider = new ethers.providers.StaticJsonRpcProvider("https://rpc.monad.xyz", 143);
const params = await Kuru.ParamFetcher.getMarketParams(provider, MARKET);
const b = await Kuru.OrderBook.getFormattedL2OrderBook(provider, MARKET, params);
console.log("block", b.blockNumber, "bids", b.bids.length, "asks", b.asks.length, "top bid", b.bids[0], "top ask", b.asks.at(-1));
EOF
cd /tmp/diag && timeout 90 bun run sdkbook.ts 2>&1 | tail -8; echo EXIT=${PIPESTATUS[0]}
sudo -n ln -sf $HOME/.bun/bin/bun /usr/local/bin/bun && which bun && bun --version; (ss -ltnp 2>/dev/null | grep ':3000' || echo "port 3000 free"); pgrep -fa "bun run" || echo "no bun processes"; cd <guest-path> && grep -nF 'With no `PRIVATE_KEY` it dry-runs: real book, real decisions, simulated fills.' README.md | cut -c1-120; grep -nF 'bun run scripts/dry-encode.ts' README.md; grep -nF 'bun run scripts/bench-read.ts' README.md; grep -nF '`GET /` snapshot: model, wallet, dryRun, latest block event' README.md | cut -c1-120; find . -path ./node_modules -prune -o \( -name '*.test.*' -o -name '*.spec.*' \) -print | head
cd <guest-path> && grep -nF 'startBlockFeed((block) => trader.onBlock(block));' src/index.ts; grep -n "setInterval\|subscribe\|newHeads\|poll" src/chain.ts | head; mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"http","argv":["bun","run","start"],"cwd":"<guest-path>","url":"http://localhost:3000/","expected_text":"\"dryRun\":true"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"With no PRIVATE_KEY it dry-runs","source":"With no `PRIVATE_KEY` it dry-runs: real book, real decisions, simulated fills.","input":"default .env from .env.example (PRIVATE_KEY empty, DRY_RUN=true)","expected":"startup banner reports DRY RUN","probe_kind":"cli","argv":["bun","run","start"],"cwd":"<guest-path>","stays_running":true,"expected_text":"DRY RUN"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"signs a buy and a sell offline, asserts the calldata matches the SDK","source":"README.md ## Layout / The 300 ms budget: bun run scripts/dry-encode.ts","reason":"Not run to success: the script reads the live Kuru MON-USDC book first, and at the time of testing the book had 0 bids and 9 asks at every block (checked over ~10 minutes, and the Kuru SDK itself also returned 0 bids), so buildBook throws 'empty book side'. Not a repo decoding fault; needs a two-sided live market."},
{"kind":"example","claim":"book reader vs the SDK: exactness and latency","source":"README.md ## The 300 ms budget: bun run scripts/bench-read.ts","reason":"Not run to success for the same reason: the live book is one-sided (0 bids), so the reader throws before the SDK comparison. The SDK was checked directly and also reports 0 bids. Needs a two-sided live market."}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":true,"checks":[{"claim":"Every new block runs one trader cycle (decision, then quote)","source":"src/index.ts","quote":"startBlockFeed((block) => trader.onBlock(block));","schedule":"each new Monad block from the block feed (WebSocket newHeads plus polling backstop)","method":"not run: a manual cycle needs a two-sided live book, which was unavailable","input":"live Monad block feed for MON-USDC with 0 bids at every block observed","expected":"a decision and dry-run quote for the block","testable":false,"reason":"Live Kuru MON-USDC book had zero bids for the whole test window, so each block's cycle throws 'empty book side' before any decision. The cycle does fire per block (blocks are logged), but no decision or quote can be produced to check."}]}
EOF
python3 -I -c 'import json;[json.load(open(".coldpass/"+f)) for f in ["probe.json","claims.json","examples.json","cycles.json"]];print("json ok")'
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -80; echo EXIT=${PIPESTATUS[0]}
cd <guest-path> && cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"With no PRIVATE_KEY it dry-runs","source":"With no `PRIVATE_KEY` it dry-runs: real book, real decisions, simulated fills.","testable":false,"reason":"Not replayable as a claim: 'bun run start' is a long-running server, and the claim path waits for the process to exit within a 120 s window (stays_running is not honored for claims; it timed out). Dry-run mode is instead checked by the probe: GET / on the started server returns \"dryRun\":true with no PRIVATE_KEY set (the banner also prints DRY RUN when started by hand)."}]
EOF
python3 -I -c 'import json;json.load(open(".coldpass/claims.json"));print("ok")'; ss -ltnp | grep ':3000' || echo "port 3000 free"; <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -40; echo EXIT=${PIPESTATUS[0]}
pkill -f "bun run src/index.ts" ; pkill -f "bun run start"; sleep 2; ss -ltnp | grep ':3000' || echo "port 3000 free"; pgrep -af "src/index.ts" || echo "no product servers"; rm -rf /tmp/diag /tmp/jev-start.log /tmp/de-*.log; ls <guest-path>
ss -ltnp | grep ':3000' ; for p in $(ss -ltnp | grep ':3000' | grep -o 'pid=[0-9]*' | cut -d= -f2); do kill $p && echo "killed $p"; done; sleep 2; ss -ltnp | grep ':3000' || echo "port 3000 free"; rm -rf /tmp/diag /tmp/jev-start.log /tmp/de-*.log; ls <guest-path>
cd <guest-path> && cat > .coldpass/report.json <<'EOF'
{
  "outcome": "blocked",
  "fault_owner": "prerequisite",
  "operation": "Run the jev-trader dry-run server (no PRIVATE_KEY) and read its GET / snapshot; then exercise the per-block decision/quote loop against the live Kuru MON-USDC book.",
  "operation_scope": "Linux guest, Bun 1.3.0 (Dockerfile pins oven/bun:1.3), public Monad RPC (rpc.monad.xyz), live Kuru MON-USDC market 0x065C9d28E428A0db40191a54d33d5b7c71a9C394, DRY RUN with the mock model. The server start and snapshot were exercised. The decision/quote path was not, because the live book had zero bids throughout testing.",
  "steps": [
    "cp .env.example .env",
    "bun install",
    "bun run start  (server on :3000, DRY RUN banner)",
    "GET http://localhost:3000/  -> {\"model\":\"mock\",...,\"dryRun\":true,...}",
    "bun run scripts/dry-encode.ts  (failed: empty book side)",
    "bun run scripts/bench-read.ts  (failed: empty book side)"
  ],
  "deviations": [
    "Bun was not installed. The official installer (curl -fsSL https://bun.sh/install | bash -s bun-v1.3.0) failed first with 'unzip is required to install bun'. Fixed with sudo apt-get update && sudo apt-get install -y unzip, then re-ran the installer: bun 1.3.0 installed to ~/.bun/bin.",
    "Symlinked bun to /usr/local/bin/bun (sudo ln -sf) so the checker's PATH can find it.",
    "The README has no installer step for Bun; the Dockerfile's oven/bun:1.3 was used as the version guide.",
    "Claim 'With no PRIVATE_KEY it dry-runs' is recorded as testable:false. The claim path waits for the process to exit within 120 s and times out on the long-running server, so the claim could not be replayed. The HTTP probe covers dry-run mode instead (GET / returns dryRun:true).",
    "scripts/dry-encode.ts and scripts/bench-read.ts both failed with 'empty book side at block N (bids=0 asks=9)'. The Kuru SDK's own getFormattedL2OrderBook also returned 0 bids, so this is market state, not the repo's decoder. Recorded as examples with reasons.",
    "The manual cycle could not be triggered with a decision: each block's onBlock throws on the empty bid side before any decision or quote. Recorded in cycles.json as testable:false with the reason.",
    "The checker path /inputs/coldpass-preflight.py does not exist in this guest; used <guest-path> as provided in the task.",
    "Each test server was stopped after use; port 3000 was confirmed free."
  ],
  "stuck_step": "bun run scripts/dry-encode.ts (and bench-read) reading the live order book",
  "main_blocker": "The live Kuru MON-USDC order book has no bids: every block reports bids=0 asks=9, for roughly 10 minutes of observation, and the Kuru SDK agrees.",
  "plain_failure": "The trading bot cannot make any buy or sell decision or post a quote right now, because the live market it trades has no buy orders. The server itself starts correctly, reports dry-run mode, and serves its status page.",
  "suggested_fix": "Re-run once the market has two-sided liquidity. Separately, the bot could treat a one-sided book as a skipped block with a clear log line, and the README scripts could report 'no two-sided book' instead of exiting with an error."
}
EOF
python3 -I -c 'import json;json.load(open(".coldpass/report.json"));print("report ok")'; <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -5 | cut -c1-1500; echo EXIT=${PIPESTATUS[0]}; ss -ltnp | grep ':3000' || echo "port 3000 free"
Earlier attempts (1)

Luna

Native agent · Not tested (no product behavior was checked)

Operation / attempted scope /root/.bun/bin/bun run start · local HTTP start + response check

Run details
run
jarrodwatts--jev-trader-gpt-6-luna-1792770721024822154
date
Oct 23, 2026
time to working
not recorded
product hosting / execution
Local HTTP server in the guest
recorded operation scope
not separately recorded
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/jarrodwatts/jev-trader
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "d6254bf36a7875e009533fb722c1af8977b96e2d", "url": "https://github.com/jarrodwatts/jev-trader"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
d6254bf36a7875e009533fb722c1af8977b96e2d
Whose fault: not assigned · pending

[Errno 13] Permission denied: '/root/.bun/bin/bun'

Fix: fix-7c544535c349f9160053.

Recorded blocker / warning

Step: /root/.bun/bin/bun run start

[Errno 13] Permission denied: '/root/.bun/bin/bun'

Safety: Review signals: 1 connection review, 27 known vulnerability, 1 sensitive read.

Review signals: 1 connection review, 27 known vulnerability, 1 sensitive read.

Reviewed as expected for a test run: read only test files inside the test workspace or its temporary folders.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 27 distinct locations. 4 attributed processes.

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

A repository process attempted to read this sensitive path. <guest-path> 1 attributed processes.

PID 2670: <guest-path> · <guest-path>

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 root endpoint returns a snapshot including model and dry run state.: Probe could not complete: [Errno 13] Permission denied: '/root/.bun/bin/bun'

    Source: `GET /` snapshot: model, wallet, dryRun, latest block event

    Input: GET /

    Expected: dryRun true with mock model

    Command: /root/.bun/bin/bun run start

    Observed: Probe could not complete: [Errno 13] Permission denied: '/root/.bun/bin/bun'

Examples

  • README startup command: command could not start: [Errno 13] Permission denied: '/root/.bun/bin/bun'

    Source: README.md Run

    Input: cp .env.example .env; bun install; bun run start

    Expected: server starts in dry run mode

    Command: /root/.bun/bin/bun install

    Observed: [Errno 13] Permission denied: '/root/.bun/bin/bun'

Cycles

  • Cycle replay: cycle source must contain the quoted trigger

    Source: cycles.json

    Observed: cycle source must contain the quoted trigger

Local or hosted: local

Suggested next step (agent-reported): Inspect the recorded blocker and correct the README prerequisites or harness error.