Skip to content

item 8d: REASONING_V3, the standing note — a policy worth swapping to - #26

Merged
compusophy merged 1 commit into
mainfrom
agent/reasoning-v3-standing-note
Aug 26, 2026
Merged

item 8d: REASONING_V3, the standing note — a policy worth swapping to#26
compusophy merged 1 commit into
mainfrom
agent/reasoning-v3-standing-note

Conversation

@compusophy

Copy link
Copy Markdown
Owner

#25 gave the agent a door. v1 and v2 are demonstrations — one changes nothing, the other prefixes a visible marker so a swap is observable — so "swap your reasoning policy" was an offer with no answer to "to what?".

what v3 claims, and why it is true

The transcript is trimmed at KEEP_MESSAGES and is per-conversation. A cartridge's kv is neither. So v3 gives the agent one line of memory that outlives both — deliberately the smallest thing that is genuinely not available otherwise.

  • answer phase: the first CARRY: in the answer, to the end of that line, becomes the standing note. No marker, no change. A bare CARRY: clears it. Capped at STANDING_MAX (400) — uncapped, the note would grow every later prompt for as long as the policy ran.
  • prompt phase: the note is prepended and a protocol line is appended. The module cannot edit the system prompt, so it teaches its own contract in the only channel it has: the prompt it is already shaping. A policy that needs the agent to cooperate has to say so itself.

It is also the first reference module that makes the language work rather than demonstrate it — store_get and the packed-i64 unpack path, a prompt assembled from three sources, and a byte search (find). Items 5 and 7 earning their keep.

the honest limit, in the plan rather than implied

v3 is verified to do what it says, not to help. Nothing in this substrate can yet judge whether a shaped prompt was better than the one it replaced — that is what item 9's corpus capture is for, and it is now the thing gating every further claim about policy quality. docs/CARTRIDGE_PLAN.md §12 says so in those words.

drift guard

rustlite cannot be handed a Rust constant, so CARRY_MARKER, STANDING_KEY, STANDING_MAX and STANDING_PROTOCOL are mirrors of literals inside the module. An eval pins them to the source they describe, because nothing else would.

evidence

7 new evals (23 in tests/cognitive_wiring.rs now): the protocol line appended when nothing stands; a marker taking its line and only its line; no marker leaving the note alone; a bare marker clearing it; the cap; the note surviving a simulated reload; and v3 swapping in over v1 with the rehearsal passing and its probe coming back plain.

bash ci/run_tests.sh → unit tests + 20 suites + clippy; cargo check --lib --bins --target wasm32-unknown-unknown clean.

smoke-preview will be red for the usual reason — the preview is behind Vercel Deployment Protection and the run reports EVIDENT-CAUSE FAILURE … the app was never served. Still waiting on the owner-only VERCEL_AUTOMATION_BYPASS_SECRET.

process note

The module was prototyped in a throwaway tests/v3_probe.rs and iterated there — it caught two real bugs (a line-end scan that reused its loop variable to stop and so threw the position away, and an over-greedy carry) before any of it became a crate constant. The probe is deleted in the same commit.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 26, 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 26, 2026 9:05pm

Request Review

8c gave the agent a door. v1 and v2 are demonstrations — one changes
nothing, the other prefixes a marker so a swap is visible — so "swap your
reasoning policy" was an offer with no answer to "to what?".

v3's claim is deliberately narrow and actually true: the transcript is
trimmed at KEEP_MESSAGES and is per-conversation, and a cartridge's kv is
neither, so v3 gives the agent one line of memory that outlives both.

- answer phase: the first CARRY: in the answer, to the end of THAT line,
  becomes the standing note. no marker, no change; a bare CARRY: clears it;
  capped at STANDING_MAX, because uncapped it would grow every later prompt
  for as long as the policy ran.
- prompt phase: the note is prepended and a protocol line is appended. the
  module cannot edit the system prompt, so it teaches its own contract in
  the only channel it has — the prompt it is already shaping.

it is the first reference module that makes the language work rather than
demonstrate it: store_get and the packed-i64 unpack path, a prompt
assembled from three sources, and a byte search. rustlite cannot be handed
a rust constant, so CARRY_MARKER / STANDING_KEY / STANDING_MAX /
STANDING_PROTOCOL are mirrors of literals inside the module and an eval
pins them together.

7 new evals, a "load v3" button, and the swap_cartridge description names
it. the honest limit is in plan section 12 rather than left implied: v3 is
verified to DO what it says, not to HELP — nothing here can yet judge
whether a shaped prompt was better, which is what item 9's corpus capture
is for.

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

Copy link
Copy Markdown
Owner Author

Live on the preview of 6ce70dc, in an authenticated browser: load v3hot-swap policy gives

🧪 rehearsal passed: "rehearsal: a prompt" → "rehearsal: a prompt

(policy: to carry one line into your next prompt, write CARRY: followed by that line in your answer.)"
🔁 cartridge 'reasoner' hot-swapped
🧠 reasoner: reasoning v3 up: standing note
🔁 'reasoner' is now the reasoning policy — the next prompt goes through it

The probe comes back with the protocol line appended and no standing note, which is exactly right for a fresh store — so the candidate really ran both phases before it was installed.

Also worth noting: this run produced no publish diagnostics race, because #27 landed and both verify runs were green so the step never ran.

@compusophy
compusophy merged commit c342979 into main Aug 26, 2026
4 of 5 checks passed
@compusophy
compusophy deleted the agent/reasoning-v3-standing-note branch August 26, 2026 21:06
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