Don't trust the AI's memory. Keep everything in GitHub
Article two — a story about being suspicious of a convenience feature. AIs have a memory that persists across conversations. It's useful. But the moment you use it as the basis for a decision, things break.
Case files
Case 1: the planet altitudes differed between memory and reality

The game has a table of altitudes at which you reach each planet. One day the AI began work using values it had in memory. Those values were weeks out of date — the real code had long since been retuned. It carried on calculating with the old numbers until I pointed it out.
Memory is a summary of a moment in time. It doesn't follow the code when the code changes.
Case 2: a folder that was supposed to exist didn't
While publishing the portal site, the AI worked from a memory entry describing the structure. Looking at the actual repository, the structure was different — and the result was that it overwrote a page created by other work. Recoverable, but it would never have happened with a check.
Case 3: memory content that's simply wrong
This one is routine. "X is implemented", "Y isn't supported" — check, and it's the other way round. Summarising loses nuance, and guesses get written down as if they were facts. Memory is a reason to go and check; it is not grounds for a decision. Drilling that distinction into both the AI and myself was necessary.
The fix: keep everything in GitHub
What I did was simple: write it in the repository instead of relying on the AI's memory. The goal is one thing — the current state of the project, code, open Issues and PRs, rules and all, should be readable and current from GitHub alone. Chat history and AI memory don't count.
- A rules document in the repository root, which the AI must read before starting work. "Large files go through Issues", "the merge decision is mine", "three changes per Issue" — all of it lives here
- Handovers go in the Issue. Have the AI write "done so far, next is this" as a comment, and a fresh conversation can pick it up
- Reasoning goes in the commit message. Why a value was chosen stays readable later
- Keep the version string consistent in three places — the on-screen display, the service worker, and the registration query. When those drift, you can't tell what's in production
Do this and your history and data survive even if your AI account is suspended, or you switch to a different AI entirely. That's a real difference in how safe it feels. Having information exist only inside a conversation log is more fragile than it looks.
Making the shared rules stick
Writing rules isn't enough — AIs forget the earliest instructions as a conversation grows. So I have the rules re-read at each checkpoint:
- At the start of a session: report the rules document, the latest commit, and the open Issues and PRs
- Before implementing: "wait for the go-ahead. Don't write code until then"
- When reporting: anything unverified must be explicitly labelled "unverified". Don't let a guess be stated as fact
- When a mistake surfaces: fix the rules document there and then, so it doesn't recur
The "unverified" label works especially well. AIs speak with confidence, so from the outside you can't tell verified from guessed. Forcing the label makes the guesses visible as guesses.
What I wish I'd known
- Memory is useful, but always confirm it against the code
- Rules and history go in GitHub. Don't create information that lives only in a conversation
- Make the AI say "unverified". Don't trust one that won't
Series: "I wish I'd known this from the start"
- Start with GitHub, whatever else you do
- Where I got stuck connecting GitHub
- Don't trust the AI's memory. Keep everything in GitHub (this article)
- Working with Xserver — FTP, .htaccess, and deploys that fail
- Always start from the facts — write the rules, then keep fixing them
- The parts that were genuinely hard, and what I did about them
- AdSense keeps rejecting my site
- Just write @claude in an Issue, and Claude Code gets to work
- Can you really hand game dev off to AI?
- Goodbye, ChatGPT — Banned Twice, Moved to Claude
- How I Get Claude to Make Pictures