Skip to content

fix(analysis): state transformation priority in the standing instruction - #302

Merged
guelfoweb merged 1 commit into
mainfrom
fix/analysis-transformation-priority
Sep 1, 2026
Merged

fix(analysis): state transformation priority in the standing instruction#302
guelfoweb merged 1 commit into
mainfrom
fix/analysis-transformation-priority

Conversation

@guelfoweb

Copy link
Copy Markdown
Owner

Follow-up to #301, from what live run #1 actually showed.

The runtime half works and is not what blocks the decode: 12 actions, 12 distinct programs, 12 distinct outputs -- nothing to suppress, no duplicate, no wasted action slot, no KV or context regression. The model extracted every decoder input it needed and then spent its last action listing the function body again instead of running the transformation.

The system prompt already said a transformation outranks another read, but it says it once, at session start, among the other rules. What the model reads immediately before choosing each autonomous step is AUTONOMOUS_CONTINUATION_MESSAGE, and that asked only for "one new useful evidence-producing step" -- under which a twelfth distinct way to print the same file qualifies.

So the priority is stated where the choice is actually made:

...Do not repeat established actions, inputs or findings. If you have already identified a deterministic transformation and hold its concrete inputs, run it now rather than inspecting the source further.

Scope

  • No decoder hardcoding. The clause names no technique -- no XOR, base64, encoding or format. The pre-existing generic-language test still enforces that, and the model still chooses what to run.
  • No behavioural change. An AST comparison of base vs head finds 0 function/class bodies changed and exactly 1 module constant changed. No suppression logic, no fingerprint, no bound, no CHAT/native/MTP/KV/admission change; context_manager.py untouched.
  • Guard generalised, not weakened. AUTHORIZED_ADDITIONS becomes a map keyed by constant name so a second constant can carry anchor-pinned authorized additions. All five protected constants remain protected.

Verification

  • Full suite: 3967 tests, OK (skipped=8), exit 0.
  • Independently reviewed: 0 BLOCKER, 0 MAJOR, 17 mutations all CAUGHT -- including rewording, relocating within the constant, relocating into a different constant, deleting the clause outright, duplicating it, whitespace-only edits, semantic inversion, and an unrelated edit to each of the five protected constants. A dict-key typo fails closed.

https://claude.ai/code/session_01HknqKjsLMcikPG2Xi9GyvU

Live run #1 proved the runtime half works and is not what blocks the
decode. Twelve actions, twelve distinct programs, twelve distinct
outputs: nothing to suppress, no duplicate, no wasted slot. The model
extracted every decoder input it needed -- the encoded strings, the keys
60/123/102/46, the delimiters -- and then spent its last action listing
the function body again instead of running the transformation.

The system prompt already said a transformation outranks another read,
but it says it once, at session start, among the rules. What the model
reads immediately before choosing each autonomous step is the
continuation message, and that asked only for "one new useful
evidence-producing step" -- under which a twelfth distinct way to print
the same file qualifies.

So the priority is stated where the choice is actually made. It names no
technique: no XOR, no encoding, no format. The existing generic-language
test still enforces that, and the model still chooses what to run.

The evidence-authority guard generalises from one protected constant with
authorized additions to a map of them, each pinned the same way -- exact
text at an exact anchor. Verified by mutation: rewording, relocating into
the replan message, and inserting unrelated text are all still caught.

Claude-Session: https://claude.ai/code/session_01HknqKjsLMcikPG2Xi9GyvU
@guelfoweb
guelfoweb merged commit dbf761f into main Sep 1, 2026
@guelfoweb
guelfoweb deleted the fix/analysis-transformation-priority branch September 1, 2026 01:15
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