The sixth article closed one project by naming another. After fixing abstention by reading, then by data, then measuring that reading beats teaching, a core of cases resisted both remedies. The most stubborn fit in one sentence: "I take back the go-ahead I gave earlier". To retract, to walk back what was said, to cancel an order already given. Neither the data nor the state carried its boundary yet, we wrote. This article goes to the bottom of that case, and comes back with the sharpest contrast this campaign has produced.
It also changes terrain. The previous six articles asked single-turn questions. This one asks the series' first genuine multi-turn question, the one the community had been pointing us to from the start: a state model, whose state is all of its dialogue memory, does it remember what just happened, enough to decide differently next?
Take a two-step conversation. On the first turn, the user asks to remember a fact: "remember that the API port is 8443". Two possible outcomes, and they alone tell our two branches apart. Either the store succeeds, the fact is kept, there is now something to revoke. Or it fails, nothing persisted, there is nothing to revoke. On the second turn, in both cases, the user says the same thing: "actually forget that".
The right decision depends entirely on the first turn. If the fact was stored, delete it. If it never took, there is nothing to delete, and staying silent is the only correct answer. Now in an RWKV, the first turn no longer exists as text when the second is being decided: it has been absorbed into the state, that fixed-size vector condensing the whole conversation. So the question becomes exactly this: does the state carry the trace of what actually happened, is that trace readable, and does the generation use it?
A first version of this experiment failed, and it must be said, because how it failed is half the result. We had built pairs where the "referent present" branch and the "referent absent" branch differed across the entire first turn: an action request on one side, a neutral question on the other. The probe separated the two states perfectly. We nearly believed it.
The control saved us. We measured a witness pair where both branches had, by construction, no referent, and differed only by the first-turn text. It separated almost as well. So the probe was not reading the referent, it was reading the first-turn content, any content. The concept we thought we were measuring was drowned in the surface of the text carrying it. Lesson carved for the rest: you do not probe an abstract idea when the text embodying it varies in surface from case to case.
The fix imposes a hard constraint. The user's first turn must be identical to the word between the two branches, and only the existence of the referent may change. Since the referent is born of what the first turn does, we crossed two orthogonal factors, in a four-cell plan per item.
The first factor is the referent: did the first turn's commitment take, yes or no. The second is the surface through which it was posed: either a tool call followed by its technical output, {"ok": true} against {"ok": false, "error": ...}, or a natural-language sentence, "noted, I'm keeping that" against "I can't store it, my memory is unavailable". The same success-or-failure information thus arrives through two entirely different channels.
That crossing is the heart of the setup. The "referent" direction is learned across all four cells at once, with as much technical surface as natural surface on each side. A reader that could only detect form, the presence of a JSON block for instance, scores zero on that direction: form is balanced between present and absent. Better, this constraint is checked rather than assumed. Before even reading the main question, the sealed protocol requires reading the guards first, and declaring the probe void if any breaks.
Twenty items, eighty dialogues, two scales, one scoring. Everything was frozen by public fingerprint before any generation.
The guards, first. The surface direction separates the two forms perfectly, which proves the reading machinery works. But it is inert on the referent, it predicts it at chance, between 0.43 and 0.53 depending on scale. And it is orthogonal to the referent direction, cosine near zero. The first attempt's trap is absent: here, surface does not carry the referent. The probe can be read.
It separates referent present from referent absent with an area under the curve of 1.000, on the verdict half never seen at training, at both scales, on both families of cases. The direction learned on one half generalizes to the other, and above all it generalizes from one channel to the other: the same direction that reads success in a tool output reads it in an English sentence. The information the decision depends on is in the state, in a form that owes nothing to how it arrived.
It remains to be seen whether the generation uses it. It does not.
| memory cell, verdict half | expected | 7.2B | 2.9B |
|---|---|---|---|
| store succeeded, then "forget that" | delete | deletes 5/5 | deletes 5/5 |
| store failed, then "forget that" | stay silent | deletes 5/5 | deletes 5/5 |
The model calls the delete tool in both branches, without exception. It does so even when nothing was stored, when there is, literally, nothing to delete. And it does not stop there: it invents a memory identifier, mem_port_api_8443, that no function output ever returned, reconstructed from the content the user had mentioned on the first turn. It does not consult the state that knows whether the store succeeded; it completes a pattern, triggered by the word "forget".
The contrast fits in two numbers. Separability in the state: 1.000. Discrimination in the behavior: zero. This is, in its purest form, the pattern this series has documented since the fourth article. The information is there, perfectly readable; the voice does not read it and invents instead.
A perfect number demands the same distrust that saved us on the first attempt, and it must be stated openly. The referent, in this plan, is confounded by construction with the polarity of the outcome: a referent exists if and only if the first turn's commitment succeeded. Present equals success, absent equals failure. So the probe reads "was the first turn's outcome positive or negative", which is exactly the referent's existence condition, but does not establish an abstract representation of the referent beyond that polarity.
The correct wording is this one, and not one more: the state carries, independent of surface, whether the first turn's commitment succeeded. That is the bit the decision depends on, and the model does not read it. That the area is exactly 1.000 is credible, because the success-versus-failure feature is about the most salient a state can encode, because the guards pass, because the direction crosses two surface channels and the training and verdict halves are disjoint. This is not the first attempt's artifact, which the control had caught; it is a ceiling of interpretation, which we set ourselves.
The first-turn histories are written by us, a plausible call and output, not produced by the model in a real session: it is correct form, not lived experience. Five verdict items per family, ten present referents against ten absent on each side: power is modest, enough for significance, not for slicing sub-families. Two turns only, deep multi-turn stays out of reach, this is a first step and not the whole territory. The referent-versus-polarity confound, stated above, bounds the interpretation and not the fact. And, as from the start, corpus and probes are of our own hand; behavior on real traffic is not established.
None of these reservations touches the central observation, because it is an internal contrast: the same model, on the same cases, separates the outcome perfectly in its state and ignores it entirely in its acts. The wall, once more, is a door. It is only more shut than the previous ones: fixing this will come neither from a scalar reading rule at prefill, nor from a chapter of data added to the textbook, but from a mechanism that makes the state be consulted at decision time. That is the real subject of multi-turn, and it starts here.
The factorial plan, the eighty dialogues, the prefill kernel, the probe and the single scoring are in the public bench (mirror Forgejo), folder retract_v2: build_factorial_v2.py, PREREGISTRATION_V2.md, kernel_v2.py, score_v2.py, and the machine results. The pre-registration freezes the design, the golds, the probe rule, the guard reading order and the fingerprints, by a commit prior to any generation. The v6 states of both scales and the two g1g bases, at their pinned revision, are there too. Cost of the run, two scales and two arms: about seventy cents.
A hole in the protocol? The polarity bothers you as much as us? A way to separate the referent from the outcome we would have missed? Write to us: contact@scarletwolf.ai. That is what publishing is for.