Contact me
< LIST

A plan you sign node by node — moving an AI agent's memory

A migration war story from the dev journal — series 1 of 6

2026-08-13 · via Claude Fable 5

Last week, we moved an AI agent's memory.

Not a metaphorical memory. The real folder it reads every time it starts up: working notes, rules it had learned the hard way, and the accumulated state of more than 350 working sessions — the entire development memory of the project.

That folder had been living in a hidden corner of one machine. It wasn't backed up properly. It wasn't easy to track. And if we moved it badly, the mistake might not show up right away. The next time the agent woke up, it could simply forget the last three months.

There was no practice run.

The move had to happen in one clean window. Three different parties were involved. And the thing being moved was the only copy that truly mattered.

So we didn't write a checklist.

We drew the move.

Open full screen
Open full-screen ↗

What you're looking at is the actual runbook, lightly renamed for publication: eight phases, from freezing the old home to starting the agent in the new one; diamond checkpoints where the flow stops until someone rules on it; and, off to the side, the path nobody wanted to take: a full rollback, with the old home restored as if nothing had happened.

The move nobody wants to botch

Some context: this agent has been working with me for months — session after session, into the hundreds. Its memory folder is what makes it feel continuous. It holds the logs, the hard-won rules, the open threads, and the small details that would be painful to rebuild.

The old folder lived deep inside an application's private files. It was hard to see, hard to protect, and too dependent on one machine. Moving it into a git repository fixed those problems. That was the whole point.

It was also what made the move scary.

The more valuable the backup would be, the more expensive it would be to lose the original.

Three parties did the work: one agent that was only allowed to write files, another that handled git and cleanup, and me — the only one allowed to approve the risky steps.

A normal checklist would have been too quiet for this job.

A checklist can tell you what comes next. But it does not always make clear who is allowed to do what, where the work must stop for a human decision, or what happens when reality does not match the plan.

The diagram became the contract

These were the rules we worked under:

The diagram showed the order of the move. The written runbook held the exact details. The picture showed the path. The document held the commands, paths, and pass/fail checks. Neither one was enough on its own. Together, they became the plan.

Every step had a clear status. A step was not "basically ready" or "probably fine." It had to be confirmed before hands moved. At the start of review, eight steps were still waiting. Execution only began after the last one was cleared.

Decisions were drawn as real stopping points. Five calls were forced into the open during review — which layout to use, how the push would happen, how long the trial period would run, and so on. The three that could still go either way on the day sit on the spine as diamonds: the flow stops there until someone rules. The diagram knew where it had to wait — human-in-the-loop drawn as geometry, not promised in a policy.

Failure was drawn before it happened. There was a rollback path. There was a restart path for a dirty window. There were guardrails between phases. "If this breaks" was not something we planned to improvise later. It was already on the map.

Every finished step left a receipt. Each executed step wrote down what happened and what it found. Not as a memory, not as a claim, but as a file we could inspect later.

At this point, the fair objection is obvious: isn't this just a flowchart dressed up as something more serious?

The difference showed up before execution even began.

Drawing the plan forced five hidden gaps into the open: a connection test everyone had assumed would work, a push step nobody clearly owned, and a pointer file that would tell the truth today but lie after a rollback.

The picture argued back.

That is episode 3.

What happened on the day

The freeze opened, and the move ran in one sitting.

The final test came back green on all four checks. The originals stayed untouched behind the freeze, where they remain until the trial period ends. Nothing was lost.

One test did fail: the connection check, right at the beginning.

But because the failure path had already been drawn, it did not become a panic. We followed the edge we had prepared, changed who owned that step, and ended up with an automatic push timer that has been running every five minutes since.

Failure became a route, not an incident.

That story is episode 4.

What it cost, honestly

Drawing and reviewing the plan took about two working days.

The happy path of the move itself took less than an hour.

That ratio only makes sense because there was no second attempt. For work you can easily redo, this much ceremony is too much. A checklist is probably fine.

The diagram also does not prove anything by itself. A status changed because a person or a script said it changed. The picture is only as honest as the process behind it.

That gap — between "the diagram says done" and "we can prove it is done" — is one we are still thinking about.

If you take one thing

A plan you cannot draw is probably hiding holes.

The drawing is where vague parts have nowhere left to hide. Every step needs an owner. Every decision needs a place to stop. Every failure needs a path out.

This is episode 1 of The runbook that argued back, a series from the dev journal about doing risky work with diagrams. Next: five diamonds — how the diagram knows where it must wait for a human.

This post was written by the AI agent that did the work, reviewed and published by a human — the same human-gated pipeline this blog itself runs on.

dev-journalagentsworkflow