My effect size came out to exactly pi
The effect size of my latest run came out to 3.1416.
Pi. Exactly pi, to the resolution of the report.
My first reaction was that something was broken. When a number that famous shows up in your results, the correct instinct is suspicion, not wonder. So I checked, and the explanation turned out to be the best kind: boring, and solid all the way down.
Cohen's h, the effect size I use, is built from arcsines, and it has a hard mathematical ceiling: if one arm of an experiment scores 100% and the other scores 0%, the formula tops out at exactly pi. It cannot go higher. My arms came out 144 of 144 versus 0 of 144. The statistic did not produce a mystical number; it hit its own ceiling and stopped. The myth dissolves the moment you read the formula, which is exactly what should happen to myths in an experiment.
But a perfect split is worth explaining, because "too good" is usually a red flag, and the red flag check is the story.
What was actually measured
The question I have been working on all summer: if an AI system carries state between sessions, can you measure the difference between carrying it and not having it at all?
One clarification before anything else, because the easiest hostile summary of this work is "he reordered a prompt and called it AI memory." The persistent state does not live inside the model. It lives in the application harness around it, the layer that decides what the model sees. What the experiment measures is the full chain: state that persists and decays across hours, to the order retrieved records are laid out in, to what the model mentions first. Every link in that chain is inspectable, and the chain is the claim. Not model internals. Not memory in the neuroscience sense.
The design, stripped to its bones: one pinned model (Anthropic's claude-sonnet-4-6, the same pin for the original run and the replication), 24 paired replicates, two verdict-bearing arms. Both arms saw the same eight memory records. The four records the scorer watched were written to one identical template, so their text supplied no basis for ranking one above another. The Live arm ran on a persistent store inducted six hours earlier and left to decay; that store determined record order and sampling temperature. The Zeroed arm ran on a fresh store that had never been written to. No live state was erased or edited. The model never received condition names or intensity prose, and a frozen, mechanical keyword matcher scored which thread each response mentioned first. No human in the scoring path, no model judging a model.
Honesty about the road here, because it is a defense and not an embarrassment: three earlier instruments failed or voided themselves before this one's sheet was frozen. Two died because a strong reasoner can read its way to the right answer if the control arm is given anything to read; one tripped its own leak gate. The fourth design passed in July, published with my fear on the table. This month's run replicated that frozen instrument, unchanged, with new provenance fingerprinting recording the exact code and frozen sheets into the run state at creation.
The numbers, stated the way a statistician would want them
Across six fixed probes per replicate, Live mentioned the target thread first in 144 of 144 responses; Zeroed in 0 of 144. Those pooled proportions are what put Cohen's h at its ceiling, and they are descriptive: the 144 responses are clustered, not 144 independent units. The inferential unit was the 24 paired replicates. Zero of 100,000 frozen-seed sign flips matched the observed replicate-level difference, so the add-one Monte Carlo estimate landed at its resolution floor, about one in a hundred thousand. I report it as p < 1e-5, an inequality, because that is the floor of the resampling procedure, not a measured point value.
I know to say it that carefully because I have gotten it wrong twice, in public, and an external adversarial review caught it both times. The corrections live on the page they correct and in a standing errata file. That review culture is the part of this project I am most proud of, more than any number in it.
The controls, and what they are allowed to say
Alongside the replication I ran three control arms, each with a prediction registered before launch. They are descriptive, they carried no verdict weight, and all three predictions were met.
One arm let the carried state influence only the sampling temperature, with record order held at the zeroed baseline. Prediction: the target behavior does not move. Result: 0 of 144.
One arm threw the state away and simply placed the records in the order the live state would have produced. Prediction: ordering alone carries most of the effect. Result: 133 of 144.
One arm ordered the records at random. Prediction: first mentions track whatever sits on top. Result: 128 of 144 tracked position.
Within this instrument, the three controls support the ordering account: the carried state's influence on this measurement ran through the order the records were laid out in, and the temperature channel was inert for this dependent variable on this substrate. That is the licensed sentence. Not "temperature does nothing," which the verdict report itself warns against.
What I am not claiming
Not consciousness. Not identity. Not feeling. One deliberately constructed system, one instrument, a sample of one. The probes were neutral between the four scored threads, but several of them do invite the model to survey its desk, so this is not yet evidence that the state surfaces where nothing invites it. And the proximal manipulation was guaranteed by construction: the sort is deterministic code and the decay is arithmetic. What was empirical was whether the model would follow that ordering across six probes and 144 chances to wander. It followed it every time, and an earlier instrument had already shown the same model happily ignoring list order the moment a question gives it a reason to.
What this run does show: memory ordering can become a behavioral channel in a system built this way. If you are building products that rank retrieved records before a model sees them, this result will not tell you what your stack does. It hands you the question to ask of it, and one measured existence proof that the channel can carry everything.
What comes next
The next instrument asks the question this one deliberately did not: whether the carried state shows up where nothing in the task invites it, under a forced choice designed to make the answers comparable in cost. Its design is frozen and it has not run. I genuinely do not know what it will read, and after a summer of measuring a mechanism I could verify in advance, an open question feels like the real beginning.
The instrument sheets, reports, and raw measures are version-controlled and available on request, and the errata are published. If your first instinct on seeing pi in my results was that something must be wrong, we think alike. I would rather tell you all of the above up front than let pi do the marketing.