Close the arm leaks: neither arm names the other's vocabulary
`routes/chat.ts` hard-coded "read only the needed span with library_read section=" into the live system prompt for every non-coding session. In the address arm that instructs the model to use a parameter the arm does not have. The prompt is part of the surface under test, so it now follows the arm -- the same fix already applied to buildLeanLibraryBlock and missed here. The library_read parameters that belong to LEGACY were described as "Deprecated: use at='pdf:N'", and library_links / library_outline told the model about `library_read section=`. Each arm strips the other's parameters, so a deprecation pointer is both pointless and a leak: it teaches arm A about a parameter arm A cannot call. Every parameter now describes itself. Verified per arm rather than by eye: no resident tool in either arm carries the other arm's parameter names, and no description matches the other arm's vocabulary. The single hit is library_lookup.page, which is the citation organ's own locator API -- identical in both arms, so it cannot confound the comparison. 1,251 tests pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H9ToHYJVDxfeJcJwdzrP2H
| Repository | eliziff/Beaver |
|---|---|
| Author | Eli Ziff <eliasziff@gmail.com> |
| Authored | |
| Parents | d955b15f |
| Stats | 2 files changed , +41 , -9 |
| Part of | Evaluation harness: Beaver-CAN and LegalBench-RAG adapters |
Capture this commit into my fork
Download a Markdown prompt that tells Claude how to port this
exact commit into your working tree. Run it via
claude -p < capture-commit-b82c4d66.md
from inside the repo you want the change in.