Findings from the scoped pre-tag cora scan of the Rust sources changed since v0.8.0. None are in 0.8.1 code and none block the release; tole-cli/src/main.rs could not be scanned (gateway 502) and should be rescanned.
MAJOR (pre-existing code)
tole-core/src/turn.rs:323 — replay_intent ignores the cancel token (cancel is mapped to ApprovalRequired); the path still settles the intent as failed, so the session stays resumable.
tole-cli/src/serve.rs:176 — no Expect: 100-continue handling (curl stalls ~1s on POST bodies > 1KB).
tole-cli/src/serve.rs:114 — per-read timeout lets slow-trickle clients hold all 32 connection slots.
Notable minors
serve.rs: non-constant-time bearer compare (301), case-sensitive Authorization header (203), wrong reason phrase for 202/429/503 (233), oversized body drops the connection instead of 413 (208), expect() on the auth_failures mutex (272), duplicate Content-Length / Transfer-Encoding ignored (199).
session_tools.rs:145 workspace-jail TOCTOU (canonical cwd validated, raw string used); :174 session file created before the capacity check.
read_file.rs:145 TOCTOU between jail check and open; error strings expose canonical paths.
mission.rs:130 run_verify reports any subprocess error as a timeout; :262 budgets enforced only between turns.
openai.rs:268 global 120s timeout caps long streams.
Findings from the scoped pre-tag
cora scanof the Rust sources changed since v0.8.0. None are in 0.8.1 code and none block the release;tole-cli/src/main.rscould not be scanned (gateway 502) and should be rescanned.MAJOR (pre-existing code)
tole-core/src/turn.rs:323—replay_intentignores the cancel token (cancel is mapped toApprovalRequired); the path still settles the intent as failed, so the session stays resumable.tole-cli/src/serve.rs:176— noExpect: 100-continuehandling (curl stalls ~1s on POST bodies > 1KB).tole-cli/src/serve.rs:114— per-read timeout lets slow-trickle clients hold all 32 connection slots.Notable minors
serve.rs: non-constant-time bearer compare (301), case-sensitive Authorization header (203), wrong reason phrase for 202/429/503 (233), oversized body drops the connection instead of 413 (208),expect()on the auth_failures mutex (272), duplicate Content-Length / Transfer-Encoding ignored (199).session_tools.rs:145workspace-jail TOCTOU (canonical cwd validated, raw string used);:174session file created before the capacity check.read_file.rs:145TOCTOU between jail check and open; error strings expose canonical paths.mission.rs:130run_verifyreports any subprocess error as a timeout;:262budgets enforced only between turns.openai.rs:268global 120s timeout caps long streams.