Skip to content

try_cartridge: rehearse a policy without betting your reasoning on it - #29

Merged
compusophy merged 2 commits into
mainfrom
agent/try-cartridge
Aug 27, 2026
Merged

try_cartridge: rehearse a policy without betting your reasoning on it#29
compusophy merged 2 commits into
mainfrom
agent/try-cartridge

Conversation

@compusophy

Copy link
Copy Markdown
Owner

#28 shipped with a flaw, and this fixes it rather than adding a new number for its own sake.

the flaw

The corpus could only be fed by a swap. So the only way to learn whether a program ran was to make it the policy the agent reasons with. Exploring the language meant betting the explorer on every experiment — and a corpus that can only be fed by committing to every candidate will never reach the volume item 10 needs.

the fix

Cognition::try_policy shares swap_policy's entire front half through a private prepare — parse, rehearse against a copy of the live memory, build the corpus sample — and stops before the install. Command::TryCartridge, a try_cartridge tool, and a rehearse only button expose it.

The system prompt now says to rehearse first, and says why: a refusal from try_cartridge costs nothing, and the attempt lands in the corpus either way.

the eval that matters

A candidate that rehearses clean in a trial produces the same Sample as swapping it. If the two doors could disagree, "rehearse first" would be advice that does not pay — and sharing the front half is what guarantees they cannot. That property is pinned, not assumed.

The other two: a trial installs nothing (the running policy still answers afterwards — a trial that quietly installed would be a swap with a friendlier name), and a trial of a trapping module leaks nothing into the live store.

3 new evals, 34 in tests/cognitive_wiring.rs.

on where this came from

It was not on the board. It came from asking what item 10 actually needs and finding the answer blocked by a design decision made one item earlier. That is the useful kind of board item — the one the previous item created.

bash ci/run_tests.sh → unit tests + 20 suites + clippy; cargo check --lib --bins --target wasm32-unknown-unknown clean. The try_cartridge definition is covered by the prompt-drift guard added in #25.

smoke-preview will be red for the usual Vercel Deployment Protection reason.

🤖 Generated with Claude Code

item 9 shipped with a flaw: the corpus could only be fed by a SWAP, so the
only way to learn whether a program ran was to make it the policy the agent
reasons with. exploring the language meant betting the explorer on every
experiment — and a corpus that can only be fed by committing to every
candidate will never reach the volume item 10 needs.

Cognition::try_policy shares swap_policy's entire front half through a
private `prepare` — parse, rehearse against a copy of the live memory,
build the corpus sample — and stops before the install. Command::TryCartridge,
a try_cartridge tool, and a "rehearse only" button expose it. the system
prompt now says to rehearse first, and says why: a refusal from
try_cartridge costs nothing and the attempt lands in the corpus either way.

the eval that matters is the one making that advice honest: a candidate
that rehearses clean in a trial produces the SAME Sample as swapping it.
sharing the front half is what guarantees the two doors cannot disagree.
the other two pin that a trial installs nothing — the running policy still
answers afterwards — and that a trial of a trapping module leaks nothing
into the live store.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vanish Ready Ready Preview Aug 27, 2026 12:54am

Request Review

on the preview of c54c758: rehearsing v2 and then a trapping module both
filled the corpus ("2 program(s), 1 verified, 1 refused") and both said
"nothing was installed". the reload is the proof — it comes back as
"reasoning policy 'reasoner' up (reference v1)", so two programs were
learned about with nothing installed and nothing persisted as a swap. a
trial that quietly installed would have come back as v2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@compusophy

Copy link
Copy Markdown
Owner Author

live on the preview of c54c758

🧪 rehearsal passed: "rehearsal: a prompt" → "[v2] rehearsal: a prompt" (writes last_answer, last_prompt) — nothing was installed
📚 corpus: 1 program(s), 1 verified, 0 refused — most-emitted: local.get×32, i32.const×16, i64.const×15, i32.add×12, local.set×11

🧪 rehearsal failed: it failed on a prompt: cartridge 'reasoner': cartridge trapped: memory access out of bounds: 4 byte(s) at 2000000000 exceed the 1048576-byte memory — nothing was installed
📚 corpus: 2 program(s), 1 verified, 1 refused — most-emitted: local.get×32, …

Then a full page reload:

📚 corpus restored: 2 program(s), 1 verified
🧠 reasoning policy 'reasoner' up (reference v1)

That last line is the proof. Two programs learned about, nothing installed, nothing persisted as a swap — a trial that quietly installed would have come back as v2. And a broken candidate is a result here, not an incident.

@compusophy
compusophy merged commit 8182ec1 into main Aug 27, 2026
3 of 5 checks passed
@compusophy
compusophy deleted the agent/try-cartridge branch August 27, 2026 00:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant