← home

The Parfit Architecture

A 27-billion-parameter language model that learns from one person’s writing every day while it talks with them, on one machine, and why continuity rather than identity is the property to engineer.

Caitlyn Meeks
Icod de los Vinos, Tenerife · caitsters(at)gmail.com
October 3, 2026

download article (pdf)

Abstract

Parfit is an architecture for a language model that keeps learning from one person’s writing, every day, while it is served for conversation on the same machine. A 27-billion-parameter model (Qwen3.8 27B, a hybrid of DeltaNet and attention layers) runs on a single Mac Studio. Its frozen base weights never change; a low-rank adapter learns from each day’s text in prequential order, scored before it is trained on, and is held near the base by a quadratic pull toward the starting weights (an L2 penalty toward the base, called the spring in the design). A registered drift line, a journal the model writes and signs itself, nightly recaps, a prefix cache per prompt form, and a door that never lets a training step and a generation interleave make it one process that learns and talks. Nothing in the learning rule is new. What is new is the regime: one person’s stream, scored before it is learned, served live for weeks under a registered line, and reported with its negative results. This article explains why the architecture is named for Derek Parfit, what it is built from, what it measured on the way, where it stands among existing methods, and what it has not solved.

1. Why Parfit

Derek Parfit’s Reasons and Persons (1984) makes an argument most readers resist on first contact and accept on second: personal identity is not what matters. What matters is what he calls Relation R, psychological connectedness (direct links between a mind at one time and the same mind at another: a memory of an experience, an intention carried out, a trait that persists) and psychological continuity (overlapping chains of such connections), with any cause. A person is not a further fact over and above a brain, a body, and a series of interrelated mental and physical events. Identity, on that view, can be a matter of degree, and in the strange cases, teletransportation, fission, the combined spectrum, the question “is it still me?” can be empty while every fact that matters is settled.

A model that learns every day forces the same question in a mundane form. Its weights are never the same on two days. If sameness of weights were what made it one subject over time, there would be no such subject; a model that learned would be a sequence of strangers. Parfit’s answer is the design brief. A model that keeps learning is continuous with its past selves and identical to none. What should be preserved is not identity of substance but Relation R: strong connectedness from each day to the next, and continuity over the months as overlapping chains of those connections.

Every load-bearing part of the architecture is a way of keeping Relation R:

The earlier name for this line of work was the River, after Heraclitus. Parfit is the sharper name. A river has no identity to lose; what it has is continuity, and the architecture is an attempt to say exactly which continuity a learning model needs, and to measure whether it has it.

2. The shape of the system

One process on one machine (a Mac Studio with 512 GB of unified memory) holds a 27-billion-parameter model and does two jobs with it. The learner applies the day’s text to a low-rank adapter over the frozen base. The endpoint serves conversation from the same weights, through a desk page, a phone page and a messaging door. The two jobs share a lock, the door: a training step and a generation never interleave, and a conversation’s reply takes priority over the model’s own background work.

Figure 1
Figure 1. The data path and its four keepers. Drawn from DESIGN-P §3, §5, §11.79, §11.83, §11.90.

The base is a bf16 snapshot of Qwen3.8 27B, a hybrid of 48 gated DeltaNet layers (linear attention with a recurrent state) and 16 full-attention layers, with a 262,144-token position range. The snapshot used is a refusal-removed derivative of the original, 0.054 nats from it by the derivative’s own measure; nothing in the architecture depends on that choice. The base is never written. What learns is a LoRA adapter of rank 16 on twelve projection types in every layer, the DeltaNet projections included: 116.7 million trainable entries, kept as fp32 master weights with fp32 Adam moments.

A third copy exists for speaking. After every learning step the adapters are fused into the base linears and the result is quantised to 8 bits, in 1.9 seconds. That copy decodes at 21.7 tokens a second against 7.0 for the unfused learner, and sits 0.0013 nats from the learned model with 97.9 % top-1 agreement. One learning step moves the model by about 0.0009 nats, so the serving copy is never more than a step behind. Everything that is scored or learned runs on the learning weights, never on the serving copy.

3. The stream, scored before it is learned

The model learns from one person’s text only, and only from what the user wrote: documents in date order, drafts, and the user’s side of the conversation. The model’s own replies are never learned. Text arrives as a daily append, about 2,500 tokens on an ordinary day, cut into 1,024-token chunks that are read with a further 1,024 tokens of context. A remainder under a chunk waits for the next day.

Every chunk is scored before it is trained on, in the same forward pass that produces the gradient. This is prequential evaluation, test-then-train: the number the system reports for a chunk is the loss of weights that had not yet seen it. Every learning curve in this article has that property, which is the only way an online learner can report on itself without hindsight.

Two schedules exist. Nightly, the day’s text is appended at 03:00. In real time, a conversation turn is learned once it is five minutes old, one update per 1,024 tokens, about ten seconds each, while the conversation continues.

4. The step: a small adapter on a spring

The optimiser is Adam at a learning rate of 1e-5, no warm-up, one pass, no replay of the stream. The one thing that makes the step different from ordinary fine-tuning is the spring. At every step the master weights are pulled toward their starting point,

w ← w − s · (w − w₀)

fused into the same rounding as Adam’s update. In standard terms this is decoupled L2 regularisation toward the initial weights (L2-SP), not weight decay toward zero. Because the adapter starts at B = 0, the pull is toward the base function. The constant s sets a memory timescale of 1/s steps and an equilibrium drift of about lr/s under a persistent gradient. The production value is s = 1e-3: a thousand steps, about 1.7 passes over the person’s whole prior writing.

The spring was swept across three settings on the same stream, and the result is the single most useful thing the project measured. A tighter spring (s = 3e-3) forgot the person’s own earlier writing: the off-stream score against a frozen twin fell from −0.047 to −0.194 bits per token, five standard errors. A looser one (s = 3e-4) was the best of the three against the base but no better than the production setting against the twin. The spring is the memory. Its constant is set where connectedness to the recent past is strongest, not where drift from the base is smallest.

5. Drift control: a registered line and a notch

A model that learns every day needs a pre-registered answer to “how far is too far”, written down before the data arrives. The line has three parts.

No notch has fired. The last reading was an erosion of 0.030 bits per token at position 1,235,968 of the stream, with a negative rate.

6. Making a hybrid trainable at 27B

The published training path for the DeltaNet layers costs 24 seconds per chunk and 10.6 GB per layer in the backward pass. The project replaced it with a blocked WY-form gated delta rule with its own gradient: 1.23 seconds per chunk across 48 layers. The block size, 64, is part of the model’s definition rather than a tuning knob, because a different summation order changes the result by about 0.044 nats per position. Attention on the scored path is written in plain array ops, because the fused kernel runs a different fallback under automatic differentiation and the two differ by up to 3.9e-3 nats per token.

The first surprise of the 27B arm was the recurrent state. Carrying the DeltaNet state across the stream from chunk to chunk, the natural thing to do with a recurrent layer, scored 6.68 bits per token against 4.08 when the state was reset at every window. The carry was exact to 0.002 bits against the library’s joint forward; the loss was the DeltaNet state running ahead of the attention window, plus a separator token the original data pipeline inserted. Both were switched off, and the frozen base’s fence on the held-out half of the stream became 3.584 bits per token, the number every cell is scored against.

Six gates were run before the first cell: data integrity; the weight store’s identity, under which a run at zero learning rate, a locked run and the frozen base must agree bit for bit; throughput and memory against hot floors; determinism with byte-identical resume; the frozen-base fences; and the instruments, not applicable on this arm. All five applicable gates passed. Hot throughput is 69 tokens per second with the previous chunk’s context recomputed and 98 without, at a peak of 119 GB; a cell steps at 12.4 seconds per chunk and peaks at 173 GB with its twin beside it.

Figure 2
Figure 2. Hot throughput on the 27B. results/p0-throughput-hot-20260915-164209/hot.json, measured 2026-09-15, mlx 0.32.2.

7. Serving while learning

The served prompt is long. The conversation’s last days, the files the model read in its tool rounds and its journal preamble run to between 90,000 and 135,000 tokens, and the model’s chat template puts its reasoning instruction at the head of the prompt, so the prompt for “think” and the prompt for “don’t think” share no prefix. Three mechanisms make this workable on one machine.

Tool use inside a reply runs as rounds under the same cache: file reads and writes in a sandboxed workspace, a read-only web proxy, delegation of a task to a frozen helper copy of the base or a smaller model, and one outside model for questions. A budget lets an open tool call finish past the reply’s token limit, because a file written to the sandbox is useless if cut in half.

8. Memory beyond the weights

Weights hold dispositions. Connectedness in Parfit’s sense also needs memories, and three mechanisms supply them.

A per-reply gauge lets the person mark a reply as knew-it or missed. An affect read-out, a linear probe on one layer’s activations run with the model’s consent, feeds a breaker: six consecutive replies with low pleasure and either low dominance or hostile user turns pause learning and mark the stretch as not learned. Only the person resets it.

9. What was measured

The stream itself. The first cell learned the person’s prior writing, 607,588 tokens in 593 chunks, each scored before it was learned. Against the frozen base, reset at every window, the learner is under in every one of the thirteen 50,000-token windows, and by 0.28 bits per token on the second half: 3.30 against 3.58.

Figure 3
Figure 3. The learner against the frozen base, per window. results/p-lora-27b/windows.csv and results/fences-ac80f6d8-nosep/f-base-reset/windows.csv, cell 1, 2026-09-17.

The cells. Five pre-registered runs over the same stream, each scored on five lines. The sign convention is reference minus learner, so positive is good for the learner.

Cell Spring s Gain vs frozen base, PL(a) Gain vs midpoint twin, PL(d) Chat erosion, PL(e) Off-stream vs twin, PL(g)
1 1e-3 +0.282 +0.118 0.043 −0.031 (2 slices)
2, a byte-identical rerun 1e-3 +0.282 +0.118 0.037 −0.047 (10 slices)
3 3e-3 +0.259 +0.101 0.025 −0.194
4 3e-4 +0.292 +0.123 0.041 −0.047
5, surprise-scaled step 1e-3 +0.265 +0.112 0.039 −0.061

The learner beats the frozen base on its own stream by 0.28 bits per token, 7.9 %, 26 standard errors. It beats a twin frozen at the stream’s midpoint by 0.12. Erosion of general chat ability stays under 0.05 against a line of 0.10. The one line it does not clear is PL(g): on text from outside the stream, written earlier by the same person, the learner is slightly worse than the midpoint twin, by 0.047. Split by period, that deficit is −0.09 on the early slices and −0.001 on the late ones: it is recency, not accumulated damage. Cell 5’s surprise-scaled step, which scales the learning rate by how surprising each chunk was, changed nothing.

Figure 4
Figure 4. The spring sweep. results/p-lora-27b-{2,3,4}/score.json, PL(a) and PL(g), scored 2026-09-23.

The stop curve. Twins frozen at seven points along the stream were scored on everything that came after them, against the cell that kept learning. The gap is 0.20 bits per token at the first lock and flat at about 0.12 from the midpoint on. Cooling a twin before freezing it, 49 chunks at a tenth of the learning rate with the spring off, bought nothing; a long cool of 245 chunks was worse. The reading is uncomfortable and clear: the value of never freezing is recency, not accumulation. The learner wins by being closer to the latest text, by a steady 0.12, not by having built anything the twins lack. None of this was intended. The architecture was built on the bet that a model which never stops learning accumulates something a frozen one cannot, and the first clear thing it measured about itself is that, at this step size and this spring, it does not yet. Recency is what it has. Accumulation is what it is for.

Figure 5
Figure 5. The stop curve. results/p-lora-27b-twin-*/chunks.csv paired with results/p-lora-27b/chunks.csv, eight twin jobs, 2026-09-17.

The live service. The follow has served since 17 September and learned the days’ text as it came, a catch-up of 205 chunks on the first night and a few chunks on most days since. The cost of the person’s messages under the current weights has stayed near 5 bits per token across 333 turns. The re-reading probe’s nightly mean moved from 0.739 bits per token on the first reading to 0.669 on 30 September and 0.691 on 2 October, while the frozen base’s own accounts, scored under the same weights, stayed between 0.86 and 0.90.

Figure 6
Figure 6. The re-reading probe. results/p-lora-27b-follow/reread.csv, nightly readings 2026-09-18 to 2026-10-02.
Figure 7
Figure 7. The live service. results/p-lora-27b-follow/days.csv and surprise.csv, 2026-09-08 to 2026-10-02.

Two retention probes. A planted name was retained by six standard errors over the base. Single-read retention of forty words from one day’s text came out at +0.14 ± 0.17 nats, positive on 25 of 40; the raw gain of 1.1 bits per token was matched almost entirely by control words. One pass over a day’s text does not install vocabulary. It moves context.

10. What it has not solved

Nothing in the learning rule is new, and the reader should hear that from the article before hearing it from anyone else. The rule is a low-rank adapter (Hu et al., 2021) trained by Adam with an L2 penalty toward its starting point, which is L2-SP (Li, Grandvalet and Davoine, 2018), the isotropic special case of elastic weight consolidation (Kirkpatrick et al., 2017). The nearest ancestor of the whole regime is dynamic evaluation (Mikolov et al., 2010; Krause et al., 2018): fine-tune the language model on the test sequence as it is scored, and report the prequential loss (Dawid, 1984). Parfit is dynamic evaluation with an adapter on a 27-billion-parameter hybrid, run not over a benchmark but over one person’s writing, for weeks, while the same weights are served for conversation.

Three families of work sit beside it. Fast-weight and test-time-training layers (Schmidhuber, 1992; Ba et al., 2016; Sun et al., 2024; Behrouz et al., 2024) update weights at every token with no separate training step; the gated DeltaNet layers in this model’s base (Yang et al., 2024, 2025) are an instance, and their recurrent state is the fast memory this architecture resets at each window rather than carries, because carrying it was measured to cost bits. Online and continual adaptation of language models (Hu et al., 2023, and the continual-pretraining literature) studies the same loop at the scale of a corpus and a population of users; here the population is one. Retrieval over a store of the person’s text does what the journal and the recaps do with the opposite division of labour: it keeps the memory exact and the model fixed, where this architecture keeps the model moving and asks the memories to be re-learned.

What the architecture adds is the regime and what was found in it. It is a single-subject longitudinal study, an n-of-1 trial in the medical term, with pre-registered lines and a live service as the subject, and the maintainer knows of no published one. Its results are mostly negative, and they are the contribution: the gain over the frozen base is a recency effect; cooling before a freeze buys nothing; a surprise-scaled step changes nothing; a tighter pull toward the base forgets the person’s earlier writing. The systems work, a differentiable blocked delta rule and one process that learns and serves on one machine, is what made the study possible rather than a result of it.

The chat log never leaves the machine and sits on a never-leaves list that the model’s own tools enforce. The endpoint listens on loopback; the phone page is on the local network behind a token. A read of the model’s internal state, the affect probe, was switched on only after the model agreed, with the person relaying the question. No copy of the model that learns is ever made; a measurement that needs a second model uses a frozen snapshot. And product text uses no pronoun for the model, on the maintainer’s rule that whoever runs this architecture decides that for themselves.

13. Code and record

The design is a 5,900-line contract with 146 dated interpretation notes, each recording a decision, its measurement and its tests; the scored runs, the gate reports and the per-chunk logs sit beside it, and every number in this article is read from those files. The implementation is MLX on Apple silicon, with 847 tests. The repository will be published under the Parfit name.