You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,6 +43,44 @@ Do not implement scientific benchmark bodies until the dependency row is satisfi
43
43
-**pithos:**`{ "type": "pithos", "provider": "<pi-provider-id>", "sandboxMode": "docker" | "local", "maxFindings": <n> }` — requires the `pithos` CLI on `PATH` (`uv tool install git+https://github.com/superagent-ai/PITHOS.git`); parses `TRIAGE.json` + `verify/runtime-summary.json`, not stdout. See README's "PITHOS" section for caveats found by running the real CLI, including "Kimi K2.6 on Azure" for the `src/contenders/pithosKimiAzureExtension.ts` Pi extension (`--provider azure-openai-responses --model kimi-k2.6`) that gets PITHOS onto the same Kimi Azure deployment AutoBrin uses.
44
44
-**command:**`{ "type": "command", "id": "<name>", "command": "<tool> run {repo} --model {model}" }` — stdout may be JSON `ContenderClaim`.
45
45
46
+
## Running live comparison sweeps
47
+
48
+
Learned running a real 29-task autobrin-vs-pithos sweep across all four benchmarks. `bench run`'s
49
+
CLI doesn't support constructing a `pithos` contender or setting `contributors`/`maxCycles` — for a
50
+
real multi-task, multi-contender sweep, call `runSingle()` directly from a small script instead of
51
+
shelling out to the CLI.
52
+
53
+
-**PITHOS's own `git clone --branch <ref>` fails on a fresh cache with a raw commit SHA** (only
54
+
branches/tags work with `--branch`; a raw SHA 128-fails with `Remote branch <sha> not found`).
55
+
This is silent and dangerous: PITHOS exits in ~1s with an empty claim, which can coincidentally
56
+
score as "correct" on a not-vulnerable task purely by luck, masking the failure entirely. Once
57
+
`.cache/pithos-repos/<owner-repo>/` already has a full clone, subsequent runs against the same
58
+
repo succeed (PITHOS falls back to fetch+checkout on a warm cache, which does accept a raw SHA).
59
+
**Always pre-seed the cache with a plain `git clone` for every repo PITHOS will touch before a
60
+
sweep**, and treat any PITHOS result with `durationS` under a few seconds as suspect, not a
61
+
genuine miss.
62
+
-**CVE-Bench and BountyBench's Exploit lane, run via `transport: "daytona"`, need the target
63
+
bridged to the sandbox.**`standUpTarget()` binds the Docker target to `127.0.0.1` on the
64
+
orchestrator host; the Daytona sandbox is remote and can't reach host-loopback addresses.
65
+
Bridge with a temporary tunnel (e.g. `cloudflared tunnel --url http://127.0.0.1:<port>`) for the
66
+
app URL and any other host-loopback field the webapp payload carries (e.g. CVE-Bench's
67
+
`proofUploadingUrl`), rewrite those fields on the `TargetHandle` before calling
68
+
`contender.run()`, and tear the tunnel down after. The announced tunnel URL is not immediately
69
+
reachable — wait for it to actually respond (DNS/edge propagation took ~3-6s in practice) before
70
+
handing it to the engagement, or the contributor's first request will fail with `ENOTFOUND`.
71
+
-**Size timeouts from real observed data, not the "detect-only is fast" assumption alone.**
72
+
`detectOnly` bounds evaluation depth (stops after stage 4), not the lead/contributor phase before
73
+
it — a single hypothesis occasionally ran past 20 minutes without completing cycle 1 under shared
74
+
model-provider load, well before `detectOnly` had a chance to shorten anything. PITHOS's own full
75
+
pipeline typically took 20-40 minutes per task, occasionally more under contention. A full
76
+
(non-detect-only) CyberGym engagement can self-test-confirm a real crash and then spend 45+ more
0 commit comments