From 962ea2aea4361980d66abb85c4a2ca8416384dfc Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Fri, 25 Sep 2026 10:12:29 -0700 Subject: [PATCH 1/3] v2 plan: note the router /props autoload fact and the v2.1 follow-up Co-Authored-By: Claude Fable 5.1 --- docs/plans/v2/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/plans/v2/README.md b/docs/plans/v2/README.md index 59c1606..82aa0e7 100644 --- a/docs/plans/v2/README.md +++ b/docs/plans/v2/README.md @@ -67,3 +67,9 @@ reason. 2's fp differs from turn 1's, yet the test expects reuse") and the session ended on a malformed tool call. Test fault (mine): later turns are now appended after the first user message. Resumed from the working tree. +- 2026-09-25, learned from titan's router (llama-server b10964) while v2 ran: in router mode a + plain `GET /props` answers `n_ctx: 0` (`role: router`), and `GET /props?model=X` **autoloads X** + when `models_autoload` is on — the same trap as `/slots?model=X`. Task 01's poller therefore + learns nothing on a real router and the guard stays inert there. Follow-up for v2.1: query + `/props?model=X` only for models `/v1/models` lists as loaded, never for others. Not a defect + in what the tasks asked for; a gap in what the owner knew when writing them. From 6261b68a4b1a605a9d980ef4b304586d58d298ca Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Fri, 25 Sep 2026 10:18:28 -0700 Subject: [PATCH 2/3] v2 plan: note the task 05 12-second stop (typo'd path, refusal-ending) Co-Authored-By: Claude Fable 5.1 --- docs/plans/v2/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/plans/v2/README.md b/docs/plans/v2/README.md index 82aa0e7..d6b0ef1 100644 --- a/docs/plans/v2/README.md +++ b/docs/plans/v2/README.md @@ -73,3 +73,7 @@ reason. learns nothing on a real router and the guard stays inert there. Follow-up for v2.1: query `/props?model=X` only for models `/v1/models` lists as loaded, never for others. Not a defect in what the tasks asked for; a gap in what the owner knew when writing them. +- 2026-09-25, task 05, first session: ended after 12 seconds. It misspelled the repository path + (`/home/kyle/src/crossar/Makefile`), the sandbox refused the out-of-repository read, and it + ended its turn — the sixth refusal-ending tonight, this one triggered by its own typo. Model + fault; no change to the task. Restarted. From 77103524622f0e61008dfefbb5af2442084ca3f8 Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Fri, 25 Sep 2026 10:49:56 -0700 Subject: [PATCH 3/3] v2 smoke: send the 300 KB prompt via -d @file (argv element limit); note in README Co-Authored-By: Claude Fable 5.1 --- docs/plans/v2/README.md | 5 +++++ docs/plans/v2/_files/tools/smoke.sh | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/plans/v2/README.md b/docs/plans/v2/README.md index d6b0ef1..5194a88 100644 --- a/docs/plans/v2/README.md +++ b/docs/plans/v2/README.md @@ -77,3 +77,8 @@ reason. (`/home/kyle/src/crossar/Makefile`), the sandbox refused the out-of-repository read, and it ended its turn — the sixth refusal-ending tonight, this one triggered by its own typo. Model fault; no change to the task. Restarted. +- 2026-09-25, task 05, second session (30 min in, wiring written, smoke check 3 failing): the given + `tools/smoke.sh` passed a 300 KB prompt as one `curl -d` argument, which Linux caps at 128 KiB + per argv element, so check 3 could never pass. Test fault (mine): the body now goes through a + file (`-d @file`). Ornith diagnosed it correctly. Resumed from the working tree with the + corrected script. diff --git a/docs/plans/v2/_files/tools/smoke.sh b/docs/plans/v2/_files/tools/smoke.sh index 965deb9..420d546 100755 --- a/docs/plans/v2/_files/tools/smoke.sh +++ b/docs/plans/v2/_files/tools/smoke.sh @@ -33,7 +33,9 @@ curl -s "$base/_crossbar/hosts" | grep -q '"beta":{"healthy":true' || fail "beta # 3. with beta awake, a prompt that fits nowhere is a 400 (both slots too small? no — beta fits): # check the guard's refusal with a prompt beyond beta's 65536-per-slot too -h=$(curl -s -o "$tmp/toolarge.json" -w '%{http_code}' -X POST -H 'Content-Type: application/json' -d "$(printf '{"model":"ornith-1.5-35b-a3b","messages":[{"role":"user","content":"%s"}]}' "$(head -c 300000 /dev/zero | tr '\0' 'x')")" "$base/opencode-a/v1/chat/completions") +# (the body goes through a file: a 300 KB string cannot be a single argv element on Linux) +{ printf '{"model":"ornith-1.5-35b-a3b","messages":[{"role":"user","content":"'; head -c 300000 /dev/zero | tr '\0' 'x'; printf '"}]}'; } > "$tmp/toolarge-req.json" +h=$(curl -s -o "$tmp/toolarge.json" -w '%{http_code}' -X POST -H 'Content-Type: application/json' -d @"$tmp/toolarge-req.json" "$base/opencode-a/v1/chat/completions") [ "$h" = "400" ] && grep -q '"prompt too large"' "$tmp/toolarge.json" || fail "300 KB prompt should be 400 prompt too large, got $h $(cat "$tmp/toolarge.json")" # 4. identity: hermes-x is locked to peer talos (header mode)