Research: chat-template tags in text the model reads; tips I15 and T33; an open decision
M5a task 04 stopped twice on the chat-template tags the check refuses. The first time, the model read them in a file and took them for its own template. The second time, it spelled them out in its own reasoning. Measured on straylight: the think and tool-call tags are one token whatever the tokenizer's flag. Inside any chat message, the turn markers become control tokens, so a tool result can forge a system turn. Adds the rule to AGENTS.md, and proposes neutralizing the tags in loopd as an open decision. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -73,6 +73,10 @@ These come from defects found in review. The evidence is in `docs/implementer-le
|
||||
the state a crash leaves behind, not only the states you write on purpose.
|
||||
- When two programs must agree about a set of things (which files are a log, which names are ids),
|
||||
one of them deciding alone is a bug. Write the case that walks both.
|
||||
- Never write the model's chat-template tags out whole (the think and tool-call tags, the
|
||||
angle-bar turn markers), in code, comments, commands or your log. Build them from pieces
|
||||
(`concat!("<", "think")`) and name them in words: text holding them becomes your own control
|
||||
tokens when you read it.
|
||||
|
||||
## The gate
|
||||
|
||||
|
||||
Reference in New Issue
Block a user