happy520ai/gateway-price-check

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/happy520ai--gateway-price-check.svg).

mcp-server

Works on Linux with Haiku

README claims checked out on 1 recorded setup. Other recorded outcomes appear below.

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

Tested on Linux
PlatformHaikuLuna
Linuxyes

Linux / Haiku 5.5: yes · Oct 25, 2026 · e49e3a3a781d · claude-code / 2.1.310 (Claude Code)
Recorded operation: node src/mcp-server.mjs · local stdio MCP start + initialize + tools/list

Does what it says
2 of 2 claims checked out
  • CLI reads an OpenAI-compatible endpoint's price disclosure without a key: Real input produced the expected result: 467/467

    Source: node src/cli.mjs --url https://your-gateway.example/v1 --name mine

    Input: --url https://openrouter.ai/api/v1 --name OpenRouter

    Expected: table with OpenRouter 467/467 priced models

    Command: node src/cli.mjs --url https://openrouter.ai/api/v1 --name OpenRouter

    Observed: 467/467 | 317 | 0 | 467 | 467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识 | 判词只回答"免登录时公布了什么",不回答"给的是不是真权重"。 探测 OpenRouter … [按 OpenAI 兼容约定补全为 https://openrouter.ai/api/v1/models] YES (169ms)

  • MCP tool check_price_disclosure performs one unauthenticated GET and returns the verdict: Real input produced the expected result: 467/467

    Source: `check_price_disclosure(url, name?)`

    Input: {"tool": "check_price_disclosure", "arguments": {"url": "https://openrouter.ai/api/v1", "name": "OpenRouter"}}

    Expected: verdict table with 467/467 priced

    Command: node src/mcp-server.mjs tools/call {"tool": "check_price_disclosure", "arguments": {"url": "https://openrouter.ai/api/v1", "name": "OpenRouter"}}

    Observed: 467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识"}], "structuredContent": {"as_of": "2026-10-25", "as_of_tz": "UTC+00:00", "note": "全部为无鉴权 GET;本工具不发送任何对话请求,因此不评估模型保真度。", "reading": {"name": "OpenRouter", "url": "https://openrouter.ai/api/v1/models", "ms": 158, "level": "YES", "verdict": "467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识", "total": 467, "listShape": false, "inputPriced": 467, "anyPriced": 467, "hasPricing": 467, "cache": 317, "currency": 0, "upstream": 467, "pricedButUnparsed": 0, "unrecognizedKeys": []}}, "isError": false}

MCP
Yes, observed
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 0 days ago; 48 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; latest release 2026-10-17

Last commit Oct 25, 2026

Setup time
2 min 3 s
2 min 3 s to a working result
Issue
none found in confirmed setups
Examples
3 of 3 ran as expected
  • CLI reads a public endpoint and reports the price disclosure verdict: command completed successfully

    Source: README.md: 一条命令直接跑 / node src/cli.mjs --url

    Input: --url https://openrouter.ai/api/v1 --name OpenRouter

    Expected: OpenRouter row with 467/467 priced models

    Command: node src/cli.mjs --url https://openrouter.ai/api/v1 --name OpenRouter

    Observed: | 服务商 | 模型数 | 公布价格 | 含缓存价 | 显式币种 | 上游标识 | 判词 | |---|---|---|---|---|---|---| | OpenRouter | 467 | 467/467 | 317 | 0 | 467 | 467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识 | 判词只回答"免登录时公布了什么",不回答"给的是不是真权重"。 探测 OpenRouter … [按 OpenAI 兼容约定补全为 https://openrouter.ai/api/v1/models] YES (169ms)

  • CLI reports an endpoint that requires a key as AUTH, not as a price disclosure: command completed successfully

    Source: README.md: AUTH 不注册连清单都看不到(401)

    Input: --url https://api.openai.com/v1 --name OpenAI

    Expected: 401 reported, verdict AUTH

    Command: node src/cli.mjs --url https://api.openai.com/v1 --name OpenAI

    Observed: | 服务商 | 模型数 | 公布价格 | 含缓存价 | 显式币种 | 上游标识 | 判词 | |---|---|---|---|---|---|---| | OpenAI | — | — | — | — | — | 需要 key 才能读清单(HTTP 401)——对"免登录可见价格"这个问题,这就是否 | 判词只回答"免登录时公布了什么",不回答"给的是不是真权重"。 探测 OpenAI … [按 OpenAI 兼容约定补全为 https://api.openai.com/v1/models] AUTH (254ms)

  • documented self-test suite: command completed successfully

    Source: README.md: ## 自测 / node --test

    Input: none

    Expected: no failing tests

    Command: node --test

    Observed: ype: 'test' ... # Subtest: 图例三档家数=按 level 聚合,且三档之和等于总家数 ok 43 - 图例三档家数=按 level 聚合,且三档之和等于总家数 --- duration_ms: 0.163187 type: 'test' ... # Subtest: 文本元素总数 = 2+2N+3+2(漏一家就会红) ok 44 - 文本元素总数 = 2+2N+3+2(漏一家就会红) --- duration_ms: 0.118142 type: 'test' ... # Subtest: 假靶:读数不足 5 行时拒绝出图,且不留旧文件 ok 45 - 假靶:读数不足 5 行时拒绝出图,且不留旧文件 --- duration_ms: 86.043289 type: 'test' ... # Subtest: 假靶:服务商名超出名称列时拒绝出图 ok 46 - 假靶:服务商名超出名称列时拒绝出图 --- duration_ms: 87.53321 type: 'test' ... 1..46 # tests 46 # suites 0 # pass 45 # fail 0 # cancelled 0 # skipped 1 # todo 0 # duration_ms 4415.207368

Evidence
README behavior checked
Agent interfaces
MCP
MCP

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

MCP context
2 tools · about 263 tokens
2 tools · about 263 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Haiku 5.5 · Oct 25, 2026 on e49e3a3a781d

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.310 (Claude Code) · Checked operation passed · Oct 25, 2026 on e49e3a3a781d

Each entry describes its recorded operation and source revision.

Safety
Made outbound HTTPS connections: yes (hosts not recorded) by <guest-path>

Review signals across current setups: connection review.

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

Reviewed as expected for a test run: resolver address lookups that send no data.

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

Repair history and test corrections
Current diagnosis: unknown · pending

product invocation failed: {"argv": ["node", "src/cli.mjs", "--url", "https://ai.space.opencsg.com/v1", "--name", "OpenCSG", "--json"], "returncode": 0, "stdout": "{\n \"as_of\": \"2026-10-25\",\n \"as_of_tz\": \"UTC+00:00\",\n \"as_of_utc\": \"2026-10-25T23:07:44.146Z\",\n \"note\": \"\u5168\u90e8\u4e3a\u65e0\u9274\u6743 GET\uff1b\u672c\u5de5\u5177\u4e0d\u53d1\u9001\u4efb\u4f55\u5bf9\u8bdd\u8bf7\u6c42\uff0c\u56e0\u6b64\u4e0d\u8bc4\u4f30\u6a21\u578b\u4fdd\u771f\u5ea6\u3002\",\n \"results\": [\n {\n \"name\": \"OpenCSG\",\n \"url\": \"https://ai.space.opencsg.com/v1/models\",\n \"ms\": 747,\n \"level\": \"YES\",\n \"verdict\": \"20/22 \u6761\u516c\u5e03\u4ef7\u683c\uff0891%\uff09 \u00b7 \u5e26\u663e\u5f0f\u5e01\u79cd\u5b57\u6bb5 \u00b7 \u542b\u7f13\u5b58\u4ef7 \u00b7 \u542b\u4e0a\u6e38\u4ed3\u5e93\u6807\u8bc6\",\n \"total\": 22,\n \"listShape\": true,\n \"inputPriced\": 17,\n \"anyPriced\": 20,\n \"hasPricing\": 20,\n \"cache\": 13,\n \"currency\": 20,\n \"upstream\": 13,\n \"pricedButUnparsed\": 0,\n \"unrecognizedKeys\": []\n }\n ]\n}\n", "stderr": "\u63a2\u6d4b OpenCSG \u2026 [\u6309 OpenAI \u517c\u5bb9\u7ea6\u5b9a\u8865\u5168\u4e3a https://ai.space.opencsg.com/v1/models] YES (747ms)\n", "needs_credentials": false, "needs_browser": false}

Repair record fix-0480d69932f2d6b6c362 · current status JSON. Original run outcomes remain unchanged.

Failed run: happy520ai/gateway-price-check · Oct 25, 2026 · Held back.

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation node src/mcp-server.mjs · local stdio MCP start + initialize + tools/list

Agent-reported scope: Check whether an OpenAI-compatible endpoint publishes model prices without auth: <secret>

MCP server returned: gateway-price-check · version 0.5.8.

MCP tools returned: check_price_disclosure, latest_archive_readings. Tool listing does not establish authenticated tool-call success.

Run details
run
happy520ai--gateway-price-check-claude-haiku-5-5-1792969566186927729
date
Oct 25, 2026
time to working
123.4s
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.310 (Claude Code)
platform
linux
reported cost
$0.021680
Recorded source
https://github.com/happy520ai/gateway-price-check
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "e49e3a3a781d07d3d1437d648fba6355471051aa", "url": "https://github.com/happy520ai/gateway-price-check"}
Test version
readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa
revision
e49e3a3a781d07d3d1437d648fba6355471051aa
Whose fault: not assigned · resolved

Safety: Review signals: 1 connection review.

Review signals: 1 connection review.

Reviewed as expected for a test run: resolver address lookups that send no data.

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

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
  • CLI reads an OpenAI-compatible endpoint's price disclosure without a key: Real input produced the expected result: 467/467

    Source: node src/cli.mjs --url https://your-gateway.example/v1 --name mine

    Input: --url https://openrouter.ai/api/v1 --name OpenRouter

    Expected: table with OpenRouter 467/467 priced models

    Command: node src/cli.mjs --url https://openrouter.ai/api/v1 --name OpenRouter

    Observed: 467/467 | 317 | 0 | 467 | 467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识 | 判词只回答"免登录时公布了什么",不回答"给的是不是真权重"。 探测 OpenRouter … [按 OpenAI 兼容约定补全为 https://openrouter.ai/api/v1/models] YES (169ms)

  • MCP tool check_price_disclosure performs one unauthenticated GET and returns the verdict: Real input produced the expected result: 467/467

    Source: `check_price_disclosure(url, name?)`

    Input: {"tool": "check_price_disclosure", "arguments": {"url": "https://openrouter.ai/api/v1", "name": "OpenRouter"}}

    Expected: verdict table with 467/467 priced

    Command: node src/mcp-server.mjs tools/call {"tool": "check_price_disclosure", "arguments": {"url": "https://openrouter.ai/api/v1", "name": "OpenRouter"}}

    Observed: 467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识"}], "structuredContent": {"as_of": "2026-10-25", "as_of_tz": "UTC+00:00", "note": "全部为无鉴权 GET;本工具不发送任何对话请求,因此不评估模型保真度。", "reading": {"name": "OpenRouter", "url": "https://openrouter.ai/api/v1/models", "ms": 158, "level": "YES", "verdict": "467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识", "total": 467, "listShape": false, "inputPriced": 467, "anyPriced": 467, "hasPricing": 467, "cache": 317, "currency": 0, "upstream": 467, "pricedButUnparsed": 0, "unrecognizedKeys": []}}, "isError": false}

Examples

  • CLI reads a public endpoint and reports the price disclosure verdict: command completed successfully

    Source: README.md: 一条命令直接跑 / node src/cli.mjs --url

    Input: --url https://openrouter.ai/api/v1 --name OpenRouter

    Expected: OpenRouter row with 467/467 priced models

    Command: node src/cli.mjs --url https://openrouter.ai/api/v1 --name OpenRouter

    Observed: | 服务商 | 模型数 | 公布价格 | 含缓存价 | 显式币种 | 上游标识 | 判词 | |---|---|---|---|---|---|---| | OpenRouter | 467 | 467/467 | 317 | 0 | 467 | 467/467 条公布价格(100%) · 含缓存价 · 含上游仓库标识 | 判词只回答"免登录时公布了什么",不回答"给的是不是真权重"。 探测 OpenRouter … [按 OpenAI 兼容约定补全为 https://openrouter.ai/api/v1/models] YES (169ms)

  • CLI reports an endpoint that requires a key as AUTH, not as a price disclosure: command completed successfully

    Source: README.md: AUTH 不注册连清单都看不到(401)

    Input: --url https://api.openai.com/v1 --name OpenAI

    Expected: 401 reported, verdict AUTH

    Command: node src/cli.mjs --url https://api.openai.com/v1 --name OpenAI

    Observed: | 服务商 | 模型数 | 公布价格 | 含缓存价 | 显式币种 | 上游标识 | 判词 | |---|---|---|---|---|---|---| | OpenAI | — | — | — | — | — | 需要 key 才能读清单(HTTP 401)——对"免登录可见价格"这个问题,这就是否 | 判词只回答"免登录时公布了什么",不回答"给的是不是真权重"。 探测 OpenAI … [按 OpenAI 兼容约定补全为 https://api.openai.com/v1/models] AUTH (254ms)

  • documented self-test suite: command completed successfully

    Source: README.md: ## 自测 / node --test

    Input: none

    Expected: no failing tests

    Command: node --test

    Observed: ype: 'test' ... # Subtest: 图例三档家数=按 level 聚合,且三档之和等于总家数 ok 43 - 图例三档家数=按 level 聚合,且三档之和等于总家数 --- duration_ms: 0.163187 type: 'test' ... # Subtest: 文本元素总数 = 2+2N+3+2(漏一家就会红) ok 44 - 文本元素总数 = 2+2N+3+2(漏一家就会红) --- duration_ms: 0.118142 type: 'test' ... # Subtest: 假靶:读数不足 5 行时拒绝出图,且不留旧文件 ok 45 - 假靶:读数不足 5 行时拒绝出图,且不留旧文件 --- duration_ms: 86.043289 type: 'test' ... # Subtest: 假靶:服务商名超出名称列时拒绝出图 ok 46 - 假靶:服务商名超出名称列时拒绝出图 --- duration_ms: 87.53321 type: 'test' ... 1..46 # tests 46 # suites 0 # pass 45 # fail 0 # cancelled 0 # skipped 1 # todo 0 # duration_ms 4415.207368

Local or hosted: local

What the agent did

Check whether an OpenAI-compatible endpoint publishes model prices without auth: <secret>

cd <guest-path> && pwd && ls -la && id -u && python3 --version && (cat README.md 2>/dev/null | head -c 6000)
ls -la <guest-path> <guest-path> 2>&1; ls /inputs 2>&1; echo "CDP=$CDP_URL"
cd <guest-path> && tail -c 4200 README.md; echo; echo ---; node -v 2>&1; npm -v 2>&1; cat package.json
cd <guest-path> && ls src test scripts .coldpass && node src/cli.mjs --help 2>&1 | head -40; echo "rc=$?"
cd <guest-path> && timeout 240 node --test 2>&1 | tail -40; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && timeout 240 node --test 2>&1 | grep -n -B2 -A25 "^not ok\|^    not ok\|  not ok" | head -80
cd <guest-path> && git init -q && git remote add origin https://github.com/happy520ai/gateway-price-check && timeout 200 git fetch --depth 1 origin e49e3a3a781d07d3d1437d648fba6355471051aa 2>&1 | tail -5; echo "rc=$?"; git reset --mixed FETCH_HEAD 2>&1 | tail -3; git log --oneline -1 2>&1; git status --short | head -20
cd <guest-path> && timeout 240 node --test > /tmp/nodetest.log 2>&1; echo "rc=$?"; grep -E "^# (tests|pass|fail|skipped)" /tmp/nodetest.log; grep -n "^not ok" /tmp/nodetest.log; grep -n "skip" /tmp/nodetest.log | head
cd <guest-path> && sed -n 25,40p /tmp/nodetest.log; sed -n 1,30p test/gist-bundle.test.mjs; git cat-file -t 3c942c8 2>&1; git rev-parse --short HEAD
cd <guest-path> && timeout 200 git fetch --unshallow origin 2>&1 | tail -3; git cat-file -t 3c942c8 2>&1; git log --oneline | wc -l; git log --oneline | grep -n 3c942c8 | head -3
cd <guest-path> && git rev-parse --short HEAD && timeout 240 node --test > /tmp/nodetest.log 2>&1; echo "rc=$?"; grep -E "^# (tests|pass|fail|skipped)" /tmp/nodetest.log; grep -n "^not ok\|# SKIP\|skip:" /tmp/nodetest.log | head; grep -n "readme-claims" -A0 /tmp/nodetest.log | head -2
cd <guest-path> && cat src/providers.json | head -30; echo ---; timeout 20 curl -sS -m 15 -o /dev/null -w "%{http_code}\n" https://ai.space.opencsg.com/v1/models 2>&1; timeout 20 curl -sS -m 15 -o /dev/null -w "%{http_code}\n" https://openrouter.ai/api/v1/models 2>&1
cd <guest-path> && sed -n 1,60p src/probe.mjs | cut -c1-220
cd <guest-path> && timeout 120 node src/cli.mjs --url https://openrouter.ai/api/v1 --name OpenRouter; echo "rc=$?"; echo ---; timeout 120 node src/cli.mjs --url https://api.openai.com/v1 --name OpenAI; echo "rc=$?"
cd <guest-path> && grep -n "name:\|registerTool\|'check_price\|'latest_archive\|GPC_ALLOW" src/mcp-server.mjs | cut -c1-200 | head -30; echo ---; grep -rn "setInterval\|cron\|--once\|--now\|schedule" src scripts | cut -c1-200 | head; echo ---; sed -n 1,40p scripts/archive-reading.mjs | cut -c1-200
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["node","src/mcp-server.mjs"],"cwd":"<guest-path>","tool":"check_price_disclosure","arguments":{"url":"https://openrouter.ai/api/v1","name":"OpenRouter"},"expected_text":"467/467"}
EOF
cat > .coldpass/claims.json <<'EOF'
[
{"kind":"claim","claim":"CLI reads an OpenAI-compatible endpoint's price disclosure without a key","source":"node src/cli.mjs --url https://your-gateway.example/v1 --name mine","input":"--url https://openrouter.ai/api/v1 --name OpenRouter","expected":"table with OpenRouter 467/467 priced models","probe_kind":"cli","argv":["node","src/cli.mjs","--url","https://openrouter.ai/api/v1","--name","OpenRouter"],"cwd":"<guest-path>","expected_text":"467/467"},
{"kind":"claim","claim":"MCP tool check_price_disclosure performs one unauthenticated GET and returns the verdict","source":"`check_price_disclosure(url, name?)`","input":"url https://openrouter.ai/api/v1 name OpenRouter","expected":"verdict table with 467/467 priced","probe_kind":"mcp","argv":["node","src/mcp-server.mjs"],"tool":"check_price_disclosure","arguments":{"url":"https://openrouter.ai/api/v1","name":"OpenRouter"},"expected_text":"467/467","cwd":"<guest-path>"}
]
EOF
python3 -I -c 'import json;json.load(open(".coldpass/probe.json"));json.load(open(".coldpass/claims.json"));print("json ok")'; printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"0"}}}' '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"check_price_disclosure","arguments":{"url":"https://openrouter.ai/api/v1","name":"OpenRouter"}}}' | timeout 60 node src/mcp-server.mjs 2>/dev/null | tail -1 | cut -c1-600
cd <guest-path> && cat > .coldpass/examples.json <<'EOF'
[
{"kind":"example","claim":"CLI reads a public endpoint and reports the price disclosure verdict","source":"README.md: 一条命令直接跑 / node src/cli.mjs --url","input":"--url https://openrouter.ai/api/v1 --name OpenRouter","expected":"OpenRouter row with 467/467 priced models","argv":["node","src/cli.mjs","--url","https://openrouter.ai/api/v1","--name","OpenRouter"],"cwd":"<guest-path>","expected_text":"467/467"},
{"kind":"example","claim":"CLI reports an endpoint that requires a key as AUTH, not as a price disclosure","source":"README.md: AUTH 不注册连清单都看不到(401)","input":"--url https://api.openai.com/v1 --name OpenAI","expected":"401 reported, verdict AUTH","argv":["node","src/cli.mjs","--url","https://api.openai.com/v1","--name","OpenAI"],"cwd":"<guest-path>","expected_text":"HTTP 401"},
{"kind":"example","claim":"documented self-test suite","source":"README.md: ## 自测 / node --test","input":"none","expected":"no failing tests","argv":["node","--test"],"cwd":"<guest-path>","expected_text":"# fail 0"}
]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Entry points inspected: src/cli.mjs (one-shot CLI, exits after printing), src/mcp-server.mjs (stdio server, answers requests only), package.json scripts (check/test/prepublishOnly). No cron, loop, setInterval, --once/--now or webhook in src/ or scripts/. The daily reading runs only from a GitHub Actions schedule (.github/workflows/daily.yml), which is CI and not a product cycle. Not triggered.","checks":[]}
EOF
python3 -I -c 'import json;[json.load(open(f)) for f in (".coldpass/examples.json",".coldpass/cycles.json")];print("json ok")'; <env-var>=<guest-path> timeout 400 python3 -I <guest-path> --validate --replay > /tmp/check1.log 2>&1; echo "rc=$?"; tail -c 3000 /tmp/check1.log
cd <guest-path> && wc -c /tmp/check1.log; grep -o '"[a-z_]*problem[a-z_]*"[^]]\{0,300\}' /tmp/check1.log | head -5; grep -o '"ok": *[a-z]*\|"valid": *[a-z]*\|"passed": *[a-z]*\|"status": *"[^"]*"' /tmp/check1.log | sort | uniq -c | head; head -c 1200 /tmp/check1.log
cd <guest-path> && grep -o '"status": "[A-Z]*"' /tmp/check1.log | sort | uniq -c; grep -c '"outcome": "command completed successfully"' /tmp/check1.log; grep -o '"verdict": "[a-z]*"' /tmp/check1.log | sort | uniq -c; grep -o 'FAIL[^"]\{0,80\}' /tmp/check1.log | head -3; pgrep -fa "mcp-server|cli.mjs" || echo "no leftover processes"; git status --short
cd <guest-path> && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Check whether an OpenAI-compatible endpoint publishes model prices without auth: <secret>","operation_scope":"Node v22.23.4 (engines >=18), no npm dependencies, outbound HTTPS to openrouter.ai and api.openai.com; public endpoints only, no key needed","steps":["git init; git remote add origin https://github.com/happy520ai/gateway-price-check; git fetch --depth 1 origin e49e3a3a781d07d3d1437d648fba6355471051aa; git reset --mixed FETCH_HEAD","node --test (initial run: 44 pass, 1 fail)","git fetch --unshallow origin; node --test (45 pass, 0 fail, 1 skipped live test)","node src/cli.mjs --url https://openrouter.ai/api/v1 --name OpenRouter (YES, 467/467)","node src/cli.mjs --url https://api.openai.com/v1 --name OpenAI (AUTH, HTTP 401)","node src/mcp-server.mjs, tools/call check_price_disclosure {url: https://openrouter.ai/api/v1, name: OpenRouter} (YES, 467/467)","<env-var>=<guest-path> python3 -I <guest-path> --validate --replay (valid, no problems)"],"deviations":["README's MCP install path is npx github:happy520ai/gateway-price-check; not used. Ran the same stdio server from the checkout as node src/mcp-server.mjs (the package.json bin entry).","Workspace had no .git. Initial git fetch used --depth 1 as the task specified. That made test/gist-bundle.test.mjs fail, because the gist header cites commit 3c942c8, which a shallow clone lacks. Fixed by git fetch --unshallow origin, keeping HEAD at the pinned e49e3a3. No product source was edited.","The README's npx and GitHub Action paths were not run. The live-network test is skipped unless GPC_LIVE_TESTS=1 is set.","No product scheduler exists. The daily job is a GitHub Actions schedule (CI), so cycles.json has detected:false and no cycle was triggered."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"No product fix needed. Optional: the gist-bundle test depends on full git history, so CI or checkouts with depth 1 will fail it; consider fetching full history or skipping that check when the cited commit is absent."}
EOF
python3 -I -c 'import json;json.load(open(".coldpass/report.json"));print("report ok")'; <env-var>=<guest-path> timeout 400 python3 -I <guest-path> --validate --replay 2>&1 | head -c 400; echo; echo "rc=${PIPESTATUS[0]}"