Agent Tradition: institutional memory for AI coding agents
What this is
A small, portable _meta/ layer you drop into any repo. It gives an AI agent the
three things a new teammate would get on day one but an agent normally never gets:
why this project exists, what we currently believe works, and the scars from
everything we already tried. Plain text files, version-controlled, read at the
start of work and written at the end. No service, no database required.
The problem it solves: agent amnesia
Every session, a coding agent wakes up with zero memory. It re-derives the same
architecture, re-proposes a rejected approach, re-walks a wall someone already
bruised on, and re-learns a lesson that cost real hours last week. The intelligence
is high; the continuity is zero. Tradition is the continuity layer: the part of
the mind that persists when the session ends, so judgment compounds instead of
resetting to blank every time.
The five-file vocabulary
Five files under _meta/, each answering a different question. Together they're the
institutional memory; apart, each changes a specific decision.
- telos.md: WHY this repo exists. One or two stable sentences of purpose (not
goals, not tasks). Changes in years, not weeks. It's the spine: it anchors every
other file and tells an agent what "good" is even aimed at. Example: "A billing
service whose single job is to never double-charge a customer."
- ethos.md: HOW work behaves unsupervised. Character, not rules. The disposition
an agent brings before any specific rule applies: skeptical, evidence-seeking,
minimal, honest about failure. Inherited and rarely edited. Where a rule is silent,
ethos decides. Example: "Verify live; 'committed' is never 'done.'"
- doctrine.md: current FALSIFIABLE beliefs. Each entry is a standing bet:
belief · confidence · evidence · what would falsify it · review date. This file
is supposed to change. The discipline is the falsifier: an entry with no
falsifier is faith, not doctrine. Example: "Postgres advisory locks are enough for
our concurrency, falsified if we see a double-write under load test."
- canon/: narrative memory. Preserved stories of failures, breakthroughs, and
precedents, kept with their context, conflict, and consequence, not flattened
to a one-line rule. A rule says "don't delete that folder"; canon keeps why someone
did, what it cost, and how it was recovered, so the judgment transmits, not just the
prohibition. If it fits in one line, it belongs in doctrine, not here.
- phronesis.md: distilled judgment. Practical wisdom extracted ONLY from patterns
that recurred across multiple sessions: one case is an anecdote, not phronesis.
Every entry carries its own "danger of overgeneralizing" counter-indication, so
the wisdom doesn't harden into dogma. Example: "Audit the premise before executing,
but don't re-litigate well-specified, low-stakes asks."
The commission → chronicle work loop
Wrapped around substantial work are two units that turn a session into a reusable
record:
- Commission (written BEFORE): the work order. Scope, granted authority, desired
outcomes-as-end-states (not a step recipe), boundaries, and how "done" gets verified
live. It grants authority and context, then leaves the path to the agent. If you're
writing every step, you're writing a plan, not a commission.
- Chronicle (written AFTER): the honest "what actually happened" account:
attempted, changed, verified-live, failed, deferred, and any disagreements with
the ask. Not a success report; it must survive a future reality audit. The disagreements
and failures are the most valuable part, because that's what the next agent inherits.
How to make it stick: hooks, not honor-system
Prose rules drift under load: an agent skips the file it was "supposed" to read.
So the loop is hook-enforced, not aspirational. Three hooks (full spec in
reference/adoption.md):
- SessionStart: surface. Prints the telos chain and points the agent at ethos +
doctrine + canon before any source work. The tradition can't be invisible.
- PreToolUse (Write|Edit): commission-scaffold. On the first source edit of a
session with no active commission, auto-creates a commission stub. No wall; it
always allows the edit, it just refuses to let work start untracked.
- Stop: chronicle-gate. A session that changed source cannot end until a
chronicle exists. This is the load-bearing one: it's what forces memory to actually
get written instead of evaporating with the context window.
How to adopt it in your repo
- Create
_meta/ with the five files. Generic fill-in-the-blank templates for all
five (plus commission + chronicle) are in reference/adoption.md, copy
them and replace the bracketed parts.
- Add the three hooks to
.claude/hooks/ and register them in .claude/settings.json
(SessionStart / PreToolUse Write|Edit / Stop). The hook bodies + registration
JSON are in reference/adoption.md.
- Fill in
telos.md first: it's the spine; the hooks key off its presence.
- Seed
ethos.md and doctrine.md from the baseline templates; leave canon/ and
phronesis.md empty. They earn their entries from real sessions.
- Commit
_meta/. Never gitignore it: untracked memory is unrecoverable memory.
What NOT to do
- Don't flatten canon into rules. A one-line "don't do X" loses the context that
makes the judgment transferable. Keep the story.
- Don't write doctrine without a falsifier. No "what would prove this wrong" = it's
faith; move it to ethos or delete it.
- Don't promote one case to phronesis. Wait for the pattern to recur, and always
attach the danger of overgeneralizing.
- Don't let it become a note-hoard. A file never read at the moment it would change
a decision is rot. Every entry earns its place by changing behavior, or it's pruned.
- Don't write a chronicle that's all wins. If nothing failed and nothing was
deferred, you're hiding something the next agent needs.
- Don't rely on honor-system reading. If a behavior must hold, it's a hook, not a
sentence.
1---2name: agent-tradition3description: Give AI coding agents durable institutional memory: purpose, falsifiable beliefs, narrative lessons, and hook-enforced session accountability, so each session makes the next one smarter instead of starting blind.4---56# Agent Tradition: institutional memory for AI coding agents78## What this is910A small, portable `_meta/` layer you drop into any repo. It gives an AI agent the11three things a new teammate would get on day one but an agent normally never gets:12**why this project exists, what we currently believe works, and the scars from13everything we already tried.** Plain text files, version-controlled, read at the14start of work and written at the end. No service, no database required.1516## The problem it solves: agent amnesia1718Every session, a coding agent wakes up with zero memory. It re-derives the same19architecture, re-proposes a rejected approach, re-walks a wall someone already20bruised on, and re-learns a lesson that cost real hours last week. The intelligence21is high; the *continuity* is zero. Tradition is the continuity layer: the part of22the mind that persists when the session ends, so judgment compounds instead of23resetting to blank every time.2425## The five-file vocabulary2627Five files under `_meta/`, each answering a different question. Together they're the28institutional memory; apart, each changes a specific decision.2930- **telos.md: WHY this repo exists.** One or two stable sentences of purpose (not31 goals, not tasks). Changes in years, not weeks. It's the spine: it anchors every32 other file and tells an agent what "good" is even aimed at. Example: *"A billing33 service whose single job is to never double-charge a customer."*34- **ethos.md: HOW work behaves unsupervised.** Character, not rules. The disposition35 an agent brings before any specific rule applies: skeptical, evidence-seeking,36 minimal, honest about failure. Inherited and rarely edited. Where a rule is silent,37 ethos decides. Example: *"Verify live; 'committed' is never 'done.'"*38- **doctrine.md: current FALSIFIABLE beliefs.** Each entry is a standing bet:39 **belief · confidence · evidence · what would falsify it · review date.** This file40 is *supposed* to change. The discipline is the falsifier: *an entry with no41 falsifier is faith, not doctrine.* Example: *"Postgres advisory locks are enough for42 our concurrency, falsified if we see a double-write under load test."*43- **canon/: narrative memory.** Preserved *stories* of failures, breakthroughs, and44 precedents, kept with their **context, conflict, and consequence**, not flattened45 to a one-line rule. A rule says "don't delete that folder"; canon keeps *why someone46 did, what it cost, and how it was recovered*, so the judgment transmits, not just the47 prohibition. If it fits in one line, it belongs in doctrine, not here.48- **phronesis.md: distilled judgment.** Practical wisdom extracted ONLY from patterns49 that **recurred across multiple sessions**: one case is an anecdote, not phronesis.50 Every entry carries its own **"danger of overgeneralizing"** counter-indication, so51 the wisdom doesn't harden into dogma. Example: *"Audit the premise before executing,52 but don't re-litigate well-specified, low-stakes asks."*5354## The commission → chronicle work loop5556Wrapped around substantial work are two units that turn a session into a reusable57record:5859- **Commission** (written BEFORE): the work order. Scope, granted authority, desired60 outcomes-as-end-states (not a step recipe), boundaries, and how "done" gets verified61 live. It grants authority and context, then leaves the path to the agent. If you're62 writing every step, you're writing a plan, not a commission.63- **Chronicle** (written AFTER): the honest "what actually happened" account:64 attempted, changed, **verified-live**, failed, deferred, and any disagreements with65 the ask. Not a success report; it must survive a future reality audit. The disagreements66 and failures are the most valuable part, because that's what the next agent inherits.6768## How to make it stick: hooks, not honor-system6970Prose rules drift under load: an agent skips the file it was "supposed" to read.71So the loop is **hook-enforced**, not aspirational. Three hooks (full spec in72`reference/adoption.md`):73741. **SessionStart: surface.** Prints the telos chain and points the agent at ethos +75 doctrine + canon before any source work. The tradition can't be invisible.762. **PreToolUse (Write|Edit): commission-scaffold.** On the first *source* edit of a77 session with no active commission, auto-creates a commission stub. No wall; it78 always allows the edit, it just refuses to let work start untracked.793. **Stop: chronicle-gate.** A session that changed source **cannot end** until a80 chronicle exists. This is the load-bearing one: it's what forces memory to actually81 get written instead of evaporating with the context window.8283## How to adopt it in your repo84851. Create `_meta/` with the five files. Generic fill-in-the-blank templates for all86 five (plus commission + chronicle) are in **`reference/adoption.md`**, copy87 them and replace the bracketed parts.882. Add the three hooks to `.claude/hooks/` and register them in `.claude/settings.json`89 (SessionStart / PreToolUse `Write|Edit` / Stop). The hook bodies + registration90 JSON are in `reference/adoption.md`.913. Fill in `telos.md` first: it's the spine; the hooks key off its presence.924. Seed `ethos.md` and `doctrine.md` from the baseline templates; leave `canon/` and93 `phronesis.md` empty. They earn their entries from real sessions.945. Commit `_meta/`. Never gitignore it: untracked memory is unrecoverable memory.9596## What NOT to do9798- **Don't flatten canon into rules.** A one-line "don't do X" loses the context that99 makes the judgment transferable. Keep the story.100- **Don't write doctrine without a falsifier.** No "what would prove this wrong" = it's101 faith; move it to ethos or delete it.102- **Don't promote one case to phronesis.** Wait for the pattern to recur, and always103 attach the danger of overgeneralizing.104- **Don't let it become a note-hoard.** A file never read at the moment it would change105 a decision is rot. Every entry earns its place by changing behavior, or it's pruned.106- **Don't write a chronicle that's all wins.** If nothing failed and nothing was107 deferred, you're hiding something the next agent needs.108- **Don't rely on honor-system reading.** If a behavior must hold, it's a hook, not a109 sentence.