coldpass

avijitbhuin21/Serpentine

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

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

coding

Works

The recorded run passed on 2 setups.

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

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 27, 2026 · fe585a98f4ef · claude-code / 2.1.310 (Claude Code)
Recorded operation: <guest-path> new probeapp2

Linux / Luna: yes · Oct 27, 2026 · fe585a98f4ef · codex / codex-cli 0.164.0
Recorded operation: /tmp/serpvenv/bin/serp run

Does what it says
1 of 1 claims checked out
  • Run the scaffolded project: Real input produced the expected result: Hello from _tmp_serp_demo!

    Source: serp run # build (LLVM, debug) + run

    Input: scaffolded default project

    Expected: prints its greeting

    Command: /tmp/serpvenv/bin/serp run

    Observed: Hello from _tmp_serp_demo!

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

Last commit Oct 27, 2026

Setup time
2 min 5 s
2 min 5 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Create and run a starter project: command completed successfully

    Source: README.md Quick start

    Input: serp new then serp run

    Expected: starter greeting

    Command: /tmp/serpvenv/bin/serp run

    Observed: Hello from _tmp_serp_demo!

Evidence
README behavior checked
Agent interfaces
CLI
CLI

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

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.164.0 · Checked operation passed · Oct 27, 2026 on fe585a98f4ef

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 4 static matches retained as context.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

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

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation <guest-path> new probeapp2

Agent-reported scope: Install Serpentine (serp CLI) and compile/run a Python program natively, plus reject a use-after-move ownership error at compile time

Run details
run
avijitbhuin21--Serpentine-claude-haiku-5-5-1793144186169005665
date
Oct 27, 2026
time to working
291.0s
product hosting / execution
Local command 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.020628
Recorded source
https://github.com/avijitbhuin21/Serpentine
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "fe585a98f4ef6c72578b98da4fe3e73782e0440e", "url": "https://github.com/avijitbhuin21/Serpentine"}
Test version
readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2
revision
fe585a98f4ef6c72578b98da4fe3e73782e0440e
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks. 2 static matches retained as context.

No problems traced to this repository code in these checks. 2 static matches retained as context.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

1 encoded blob 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
  • ownership errors are refused at compile time: Real input produced the expected result: value was moved before this use

    Source: Aliasing a non-Copy value without `move()` (a compile-time ownership error)

    Input: project main.py that prints a list after move()

    Expected: use-after-move diagnostic and nonzero exit

    Command: <guest-path> run

    Observed: value was moved before this use --> <guest-path> | 11 | archive = move(prices) | ------------ 'prices' moved here help: re-initialize 'prices' before this point, or borrow instead of moving

  • project scaffold runs under the native backend: Real input produced the expected result: Hello from myapp!

    Source: serp run # build (LLVM, debug) + run

    Input: myapp project from serp new

    Expected: Hello from myapp!

    Command: <guest-path> run

    Observed: Hello from myapp!

Examples

  • run the accept corpus locally: command completed successfully

    Source: tests/README.md

    Input: tests/accept programs

    Expected: all accept tests pass

    Command: <guest-path> tools/run_accept_tests.py

    Observed: tests/accept/105_finally_loop_jumps.py ok tests/accept/106_try_assigned_locals.py ok tests/accept/109_lambda_none.py ok tests/accept/110_multi_comprehensions.py ok tests/accept/111_noncopy_captures.py ok tests/accept/112_format_specs.py ok tests/accept/034_two_module/main.py ok tests/accept/059_package_import/main.py ok tests/accept/075_cross_module_inherit/main.py ok tests/accept/077_classmethod_models/main.py ok tests/accept/091_dup_class_names/main.py ok tests/accept/107_class_attr_bindings/main.py ok tests/accept/108_plain_import/main.py 112/112 accept tests passed

Local or hosted: local

What the agent did

Install Serpentine (serp CLI) and compile/run a Python program natively, plus reject a use-after-move ownership error at compile time

cd <guest-path> && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md | head -150
curl -sS -m 10 "$CDP_URL/json/version"; echo " exit=$?"; echo "CDP_URL=$CDP_URL"
which cc gcc rustc cargo git uv pip3 2>&1; python3 -m pip --version 2>&1; ls <guest-path> <guest-path> <guest-path> | head -50; cat /etc/os-release | head -2
python3 -m venv <guest-path> && <guest-path> install -q --upgrade pip 2>&1 | tail -3; <guest-path> install serpentine-lang 2>&1 | tail -5; ls <guest-path> | grep -i serp
mkdir -p <guest-path> && cd <guest-path> && export PATH=<guest-path> && serp new myapp --git 2>&1 | tail -20; echo "rc=$?"; ls -la myapp 2>&1; cat myapp/main.py 2>/dev/null
cd <guest-path> && export PATH=<guest-path> && serp run 2>&1 | tail -20; echo "rc=$?"; serp build main.py -o <guest-path> 2>&1 | tail -15; echo "build rc=${PIPESTATUS[0]}"; ls -la <guest-path> 
mkdir -p <guest-path> && cd <guest-path> && cat > main.py <<'EOF'
from serpentine import Ref


def mean(xs: Ref[list[float]]) -> float:
    return sum(xs) / len(xs)


def main() -> None:
    temps: list[float] = [21.5, 23.0, 19.25]
    print(f"mean {mean(temps):.2f}  max {max(temps):>6.1f}")


if __name__ == "__main__":
    main()
EOF
export PATH=<guest-path>; serp check main.py 2>&1 | tail -5; echo "check rc=$?"; python3 main.py; serp build main.py -o <guest-path> 2>&1 | tail -2; <guest-path>
mkdir -p <guest-path> && cd <guest-path> && cat > main.py <<'EOF'
from serpentine import Owned, Ref, Mut, move


def total(prices: Ref[list[float]]) -> float:
    return sum(prices)


def main() -> None:
    prices: Owned[list[float]] = [9.99, 4.50]
    print(total(prices))
    archive = move(prices)
    print(prices)


if __name__ == "__main__":
    main()
EOF
export PATH=<guest-path>; serp check main.py 2>&1 | tail -8; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && cat tests/README.md | head -60; ls .github/workflows; grep -n "run:" .github/workflows/*.yml | head -40; grep -rln -i "cron\|schedul\|webhook\|--once" compiler/ docs/ 2>/dev/null | head
cd <guest-path> && export PATH=<guest-path> && timeout 900 python tools/run_accept_tests.py 2>&1 | tail -8; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && <guest-path> run main.py 2>&1 | tail -3; echo "rc=$?"; cd <guest-path> && grep -n -i "cron\|schedul\|webhook\|--once" compiler/src/serpentine_lang/prelude.rs | head -3
cd <guest-path> && cat > probe.json <<'EOF'
{"kind":"cli","argv":["<guest-path>","new","probeapp"],"cwd":"<guest-path>","output_directory":"<guest-path>","expected_text":"serp: created project 'probeapp'"}
EOF
cat > claims.json <<'EOF'
[
{"kind":"claim","claim":"serp check reports ownership errors","source":"`serp check` gives ownership/type diagnostics; `serp lsp` serves them to your editor.","input":"main.py that uses a list after move()","expected":"use-after-move diagnostic and nonzero exit","probe_kind":"cli","argv":["<guest-path>","check","main.py"],"cwd":"<guest-path>","expected_returncode":1,"expected_text":"value was moved before this use"},
{"kind":"claim","claim":"same observable behavior under native build and run","source":"Any program accepted by `serp check` produces the same observable behavior when","input":"main.py with mean() over a Ref[list[float]]","expected":"native run prints mean line","probe_kind":"cli","argv":["<guest-path>","run","main.py"],"cwd":"<guest-path>","expected_text":"mean 21.25  max   23.0"}
]
EOF
cat > examples.json <<'EOF'
[{"kind":"example","claim":"run the accept corpus locally","source":"tests/README.md","input":"tests/accept programs","expected":"all accept tests pass","argv":["<guest-path>","tools/run_accept_tests.py"],"cwd":"<guest-path>","expected_text":"112/112 accept tests passed"}]
EOF
cat > cycles.json <<'EOF'
{"detected":false,"reason":"Entry points inspected (README quick start, serp CLI commands new/check/build/run, tools/*.py CI scripts). Serpentine is a one-shot compiler/runner with no cron, scheduler, loop, webhook or --once product mode; the only 'schedule' hits are asyncio task scheduling inside the runtime prelude.","checks":[]}
EOF
<guest-path> -I -c 'import json;[json.load(open(f)) for f in ["probe.json","claims.json","examples.json","cycles.json"]];print("json ok")'
cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install Serpentine (serp CLI) and compile/run/check a Python program through the native LLVM backend","operation_scope":"Linux x86_64, Ubuntu 24.04, Python 3.12 venv with serpentine-lang 0.7.4 from PyPI, rustc and cc present; no browser needed","steps":["python3 -m venv <guest-path> && <guest-path> install serpentine-lang","serp new myapp --git","serp run (in myapp)","serp build main.py -o <guest-path>","serp check main.py (ownership example from README, expected to fail with use-after-move)","serp run main.py (Ref[list[float]] mean example from README)","python tools/run_accept_tests.py (tests/README.md; 112/112 passed)"],"deviations":["Ubuntu 24.04 is externally managed, so pip was run inside a venv at <guest-path> instead of system-wide.","Installed serpentine-lang 0.7.4 from PyPI rather than building ./shim and ./compiler from the checkout; the workspace is not a git checkout and I did not run the git fetch of pinned commit fe585a98f4ef6c72578b98da4fe3e73782e0440e, so the source snapshot was used as provided.","serp build printed a warning that LLVM bitcode inlining was unavailable (LLVM 23 producer vs LLVM 22 reader) and linked the runtime as a plain library; the binary still built and matched CPython output.","Accept-corpus check ran the repo's tools/run_accept_tests.py against the PyPI-installed serp, not the checkout's compiler."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -40; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && <guest-path> check 2>&1 | tail -3; echo "rc1=${PIPESTATUS[0]}"; cd <guest-path> && <guest-path> run 2>&1 | tail -2; echo "rc2=${PIPESTATUS[0]}"
cd <guest-path> && <guest-path> build main.py -o <guest-path> 2>&1 | tail -4; echo "rc=${PIPESTATUS[0]}"; ls <guest-path> 2>&1
cd <guest-path> && cat > claims.json <<'EOF'
[
{"kind":"claim","claim":"ownership errors are refused at compile time","source":"Aliasing a non-Copy value without `move()` (a compile-time ownership error)","input":"main.py that prints a list after move()","expected":"use-after-move diagnostic and nonzero exit, no binary","probe_kind":"cli","argv":["<guest-path>","build","main.py","-o","<guest-path>"],"cwd":"<guest-path>","expected_returncode":1,"expected_text":"value was moved before this use"},
{"kind":"claim","claim":"project scaffold runs under the native backend","source":"serp run                           # build (LLVM, debug) + run","input":"myapp project from serp new","expected":"Hello from myapp!","probe_kind":"cli","argv":["<guest-path>","run"],"cwd":"<guest-path>","expected_text":"Hello from myapp!"}
]
EOF
<guest-path> -I -c 'import json;json.load(open("claims.json"));print("ok")'; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 3000; echo; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && rm -rf <guest-path> && cat > probe.json <<'EOF'
{"kind":"cli","argv":["<guest-path>","new","probeapp2"],"cwd":"<guest-path>","output_directory":"<guest-path>","expected_text":"serp: created project 'probeapp2'"}
EOF
cat > claims.json <<'EOF'
[
{"kind":"claim","claim":"ownership errors are refused at compile time","source":"Aliasing a non-Copy value without `move()` (a compile-time ownership error)","input":"main.py that prints a list after move()","expected":"use-after-move diagnostic and nonzero exit, no binary","probe_kind":"cli","argv":["<guest-path>","build","main.py"],"cwd":"<guest-path>","expected_returncode":1,"expected_text":"value was moved before this use"},
{"kind":"claim","claim":"project scaffold runs under the native backend","source":"serp run                           # build (LLVM, debug) + run","input":"myapp project from serp new","expected":"Hello from myapp!","probe_kind":"cli","argv":["<guest-path>","run"],"cwd":"<guest-path>","expected_text":"Hello from myapp!"}
]
EOF
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 2500; echo; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && <guest-path> new moveproj 2>&1 | tail -1 && cat > moveproj/main.py <<'EOF'
from serpentine import Owned, Ref, Mut, move


def total(prices: Ref[list[float]]) -> float:
    return sum(prices)


def main() -> None:
    prices: Owned[list[float]] = [9.99, 4.50]
    print(total(prices))
    archive = move(prices)
    print(prices)


if __name__ == "__main__":
    main()
EOF
cd moveproj && <guest-path> run > <guest-path> 2>&1; echo "rc=$?"; grep -c "value was moved before this use" <guest-path>; tail -2 <guest-path>
cd <guest-path> && cat > claims.json <<'EOF'
[
{"kind":"claim","claim":"ownership errors are refused at compile time","source":"Aliasing a non-Copy value without `move()` (a compile-time ownership error)","input":"project main.py that prints a list after move()","expected":"use-after-move diagnostic and nonzero exit","probe_kind":"cli","argv":["<guest-path>","run"],"cwd":"<guest-path>","expected_returncode":1,"expected_text":"value was moved before this use"},
{"kind":"claim","claim":"project scaffold runs under the native backend","source":"serp run                           # build (LLVM, debug) + run","input":"myapp project from serp new","expected":"Hello from myapp!","probe_kind":"cli","argv":["<guest-path>","run"],"cwd":"<guest-path>","expected_text":"Hello from myapp!"}
]
EOF
cd <guest-path> && rm -rf <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 1500; echo; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && cat > report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install Serpentine (serp CLI) and compile/run a Python program natively, plus reject a use-after-move ownership error at compile time","operation_scope":"Linux x86_64, Ubuntu 24.04, Python 3.12 venv with serpentine-lang 0.7.4 from PyPI; rustc and cc present; no browser needed","steps":["python3 -m venv <guest-path> && <guest-path> install serpentine-lang","serp new myapp --git","serp run (in myapp) -> Hello from myapp!","serp build main.py -o <guest-path> (native binary)","README Ref[list[float]] mean example: serp run / serp build -> mean 21.25  max   23.0 from both CPython and native binary","README ownership example in a project (serp new moveproj): serp run -> use-after-move error, exit 1","python tools/run_accept_tests.py (tests/README.md) -> 112/112 accept tests passed"],"deviations":["Ubuntu 24.04 is externally managed, so pip was run inside a venv at <guest-path> instead of system-wide.","Installed serpentine-lang 0.7.4 from PyPI rather than building ./shim and ./compiler from the checkout. The workspace is not a git checkout and I did not run the git fetch of pinned commit fe585a98f4ef6c72578b98da4fe3e73782e0440e, so the provided snapshot was used as-is.","serp build printed a warning that LLVM bitcode inlining was unavailable (LLVM 23 producer vs LLVM 22 reader) and linked the runtime as a plain library; the binary still built and matched CPython output.","The first validation attempts were blocked by the checker for claims that passed a .py file argument; the claim was moved to a serp project (moveproj) and run with the documented 'serp run' form. The moveproj project is hand-made setup, not a checker-generated output.","The accept corpus was run with the PyPI-installed serp, not the checkout's compiler."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF
rm -rf <guest-path>; <guest-path> -I -c 'import json;json.load(open("report.json"));print("report ok")'; ls <guest-path>
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation /tmp/serpvenv/bin/serp run

Agent-reported scope: Scaffolded project execution with serp run

Run details
run
avijitbhuin21--Serpentine-gpt-6-luna-1793144700712867853
date
Oct 27, 2026
time to working
124.7s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.164.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/avijitbhuin21/Serpentine
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "fe585a98f4ef6c72578b98da4fe3e73782e0440e", "url": "https://github.com/avijitbhuin21/Serpentine"}
Test version
readme-38e6b13f3b13804effb95797e3466b1a1334da7a232d897cbc8965867f802605
revision
fe585a98f4ef6c72578b98da4fe3e73782e0440e
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks. 2 static matches retained as context.

No problems traced to this repository code in these checks. 2 static matches retained as context.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

1 encoded blob 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
  • Run the scaffolded project: Real input produced the expected result: Hello from _tmp_serp_demo!

    Source: serp run # build (LLVM, debug) + run

    Input: scaffolded default project

    Expected: prints its greeting

    Command: /tmp/serpvenv/bin/serp run

    Observed: Hello from _tmp_serp_demo!

Examples

  • Create and run a starter project: command completed successfully

    Source: README.md Quick start

    Input: serp new then serp run

    Expected: starter greeting

    Command: /tmp/serpvenv/bin/serp run

    Observed: Hello from _tmp_serp_demo!

Local or hosted: local

What the agent did

Scaffolded project execution with serp run

pwd; git status --short; rg --files -g 'README*' -g 'pyproject.toml' -g 'package.json' -g 'requirements*.txt' -g 'Cargo.toml' -g 'go.mod' -g 'Makefile' -g 'AGENTS.md' -g '.github/**' | head -80
ls -la; find . -maxdepth 3 -type f | head -100
cat README.md; python3 --version; find .github -type f -maxdepth 3
python3 -m pip install serpentine-lang; sudo -n apt-get -o DPkg::Lock::Timeout=300 update && sudo -n apt-get -o DPkg::Lock::Timeout=300 install -y rustc cargo build-essential
python3 -m venv /tmp/serpvenv; /tmp/serpvenv/bin/pip install serpentine-lang
find <guest-path> -maxdepth 2 -name check.py -o -name preflight.py; /tmp/serpvenv/bin/serp --help
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["/tmp/serpvenv/bin/serp","new","/tmp/serp-demo"],"cwd":"<guest-path>","output_directory":"/tmp/serp-demo","expected_text":"Created"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Scaffold a project","source":"serp new myapp --git               # scaffold: serp.toml, main.py, .venv (shim installed), git","input":"/tmp/serp-claim-demo","expected":"serp.toml and main.py created","probe_kind":"cli","argv":["/tmp/serpvenv/bin/serp","new","/tmp/serp-claim-demo"],"cwd":"<guest-path>","output_directory":"/tmp/serp-claim-demo","expected_text":"serp.toml"}]
EOF
/tmp/serpvenv/bin/serp new /tmp/serp-demo
cat /tmp/serp-demo/main.py; cat /tmp/serp-demo/serp.toml
cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["/tmp/serpvenv/bin/serp","run"],"cwd":"/tmp/serp-demo","expected_text":"Hello from _tmp_serp_demo!"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Run the scaffolded project","source":"serp run                           # build (LLVM, debug) + run","input":"scaffolded default project","expected":"prints its greeting","probe_kind":"cli","argv":["/tmp/serpvenv/bin/serp","run"],"cwd":"/tmp/serp-demo","expected_text":"Hello from _tmp_serp_demo!"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Create and run a starter project","source":"README.md Quick start","input":"serp new then serp run","expected":"starter greeting","argv":["/tmp/serpvenv/bin/serp","run"],"cwd":"/tmp/serp-demo","expected_text":"Hello from _tmp_serp_demo!"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"README product commands provide project build/run actions; inspected entry points disclose no recurring scheduler or cycle trigger.","checks":[]}
EOF

<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Scaffolded project execution with serp run","operation_scope":"Python 3.12.3 venv package install; Rust and C toolchain available","steps":["Installed serpentine-lang in /tmp/serpvenv","Ran documented serp new and serp run workflow"],"deviations":["Initial system pip install failed due to externally-managed-environment; installed successfully in venv instead."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF