Agent Context Audit: When Your Own Governance Becomes the Problem — and How to Fix It Without Losing Anything
Published on 27 April 2026
- The scene: session 051, something is wrong
- The audit: dissecting the 627 lines
- The fear of losing engineering
- The solution: encyclopedic split
- The contents of the ESSENTIALS file
- The result: -50% EAGER context
- Why the folder is called
encyclopedies/ - The logical next step in the series
- What I would have done differently
- The guide to auditing your own context
- A living governance
- Links
You spent weeks building impeccable agent governance. Eager/Lazy, end-of-session procedures, rotating backups. The system is running. Then one day, the agent becomes slow. Responses are diluted. You measure: 1414 lines loaded automatically. And the worst part is that the culprit isn’t the code, nor the backlog, nor the session archives. The culprit is the file documenting your method.
- toc
-
[]
The scene: session 051, something is wrong
April 30, 2026, 4:00 PM. I am in the middle of a session on`magic-stick`, my Linux live ISO build project. The Opencode agent automatically loaded my Eager files as usual —AGENT.adoc, PROMPT_REPRISE.adoc, .agents/INDEX.adoc. Everything is normal.
Except the responses are sluggish. The agent takes two seconds longer to reason. It forgets a detail it had right in front of it three messages ago. It’s not a crash, not an error — it’s a slow degradation, the kind you don’t notice immediately.
I had already experienced this in session 048, when I discovered that the governance files totaled 5200 lines. I had then conceptualized the Hot/Warm/Cold mechanism with its 10-session sliding window, its identical cold waves, and its two-trigger sensor. The problem was solved. In theory.
But now, we are at session 051. The backup rotation took place — EAGER files went from 2087 to 500 lines. Yet, the context remains heavy. Something is escaping me.
I open a terminal and type:
wc -l AGENT.adoc AGENT_MODUS_OPERANDI.adoc PROMPT_REPRISE.adoc \
.agents/INDEX.adoc .agents/SESSIONS_HISTORY.adoc \
.agents/archives/COMPLETED_TASKS_ARCHIVE_2026-04.adoc
287 AGENT.adoc
627 AGENT_MODUS_OPERANDI.adoc
51 PROMPT_REPRISE.adoc
218 .agents/INDEX.adoc
18 .agents/SESSIONS_HISTORY.adoc
213 .agents/archives/COMPLETED_TASKS_ARCHIVE_2026-04.adoc
1414 total
1414 lines. The backup rotation effectively trimmed INDEX, SESSIONS_HISTORY, and COMPLETED_TASKS — they are clean. But there is an elephant in the room I hadn’t seen:627 linesin a single file.AGENT_MODUS_OPERANDI.adoc.
This file is the one I wrote in session 1 to document the Eager/Lazy strategy. It’s the method manual. And it has become, on its own, 44% of the EAGER context.
The irony is complete. The file designed to save context has become the primary consumer of context. It’s as if your car’s owner’s manual weighed more than the engine.
The audit: dissecting the 627 lines
I decide to do a section-by-section audit. Not to delete — but to understand what deserves to be in EAGER and what could live elsewhere without loss of knowledge.
Here is the exact structure of`AGENT_MODUS_OPERANDI.adoc`and what I find there:
Section |
Lines |
Content |
Already present in… |
P1 — Overview |
64 |
Problem solved, fundamental principles, dashboard vs manual analogy |
— |
P2 — File Structure |
97 |
Tree structure, loading policy, when to load what |
— |
P3 — Absolute Rules |
34 |
Git forbidden, destructive commands forbidden, secrets forbidden |
|
P4 — Session Lifecycle |
133 |
Opening template, work rules, 6 end-of-session steps, checklist |
|
P5 — Metrics and Thresholds |
49 |
Ideal session (15-30 min, 1-3 files), warning signs |
— |
P6 — Session Types |
72 |
Detection table, proposal format, exceptions |
— |
P7 — Continuous Improvement |
39 |
Tracking metrics, weekly review |
— |
P8 — Startup Checklist |
13 |
New project bootstrap |
— |
P9 — References |
30 |
Reference files, external resources |
|
Appendices A+B |
42 |
Glossary, version history |
— |
The verdict is unequivocal:
-
Full Duplicates(167 lines): P3, P4, P9 — everything is already in`AGENT.adoc` ou
INDEX.adoc, often word for word -
Never consulted in practice(215 lines): P5, P6, P7, P8, Appendices — meta-governance that has never been used in any session
-
Unique Knowledge(161 lines): P1 and P2 — the LAZY/EAGER vocabulary, the analogy, the loading policy
Out of 627 lines,382 are noise. And these 382 lines are loaded at the start of every session, consumed by the agent, diluting its attention before I even say hello.
This diagram is the key to everything. The duplicates (yellow) are pure noise — the agent reads them twice, in two different files. The never-consulted (red) is dead documentation — carefully written, never used. Only the green contains knowledge the agent cannot find elsewhere.
The fear of losing engineering
At this stage, the evidence is before my eyes: I must reduce`AGENT_MODUS_OPERANDI.adoc`. But I hesitate.
I wrote this file by hand. Each section is the result of a lesson learned in a real session. Part P3 was born from an`rm -rf`accidental on`bakery-plugin`that cost me real Firebase tokens. Part P4 is the result of fifteen sessions where I forgot to archive and lost the thread. The 6-step procedure didn’t come from a book — it came from pain.
Deleting these sections would be throwing away the history of my own engineering. The lessons that produced them, the sessions during which I discovered them, the mistakes I never want to make again. This isn’t text — it’s crystallized experience.
That’s where I formulate the principle that will guide the solution:
_ Never delete. Always relocate.Knowledge does not have to disappear from the project. It just shouldn’t be loaded automatically when it is not necessary. _
The solution: encyclopedic split
The model I propose is simple and inspired by how Wikipedia grew: when an article becomes too long, you don’t cut it — you create a detailed article and keep a summary in the main article.
For`AGENT_MODUS_OPERANDI.adoc`, this means:
-
Extractthe 161 lines of unique knowledge (P1 + P2) into a new file`LAZY_EAGER_ESSENTIALS.adoc`— compacted to ~50 lines, strictly EAGER
-
Rename
AGENT_MODUS_OPERANDI.adocen.agents/encyclopedies/LAZY_EAGER_ENCYCLOPEDIE.adoc— the original 627-line file, preserved intact, in cold storage -
Never loadthe encyclopedia file automatically — it is there for the human, for future distillation, for the agent we will summon in six months with a better model
The name`encyclopedies/`is not accidental. An encyclopedia is not an archive folder — it is a collection of organized knowledge, consultable but not portable. You don’t read the Encyclopædia Universalis on the subway. You keep it in the library, and you go there when you have a specific question.
That is exactly the role of this folder: a cold, structured, exhaustive reference library — that the agent does not touch automatically.
The contents of the ESSENTIALS file
Here is what the new`LAZY_EAGER_ESSENTIALS.adoc`file looks like in practice, extracted and compacted from P1 and P2:
= Stratégie LAZY/EAGER — Principes Essentiels
[abstract]
Ce fichier définit la stratégie de gestion du contexte agent.
Chargé automatiquement (EAGER) en début de session.
== Principes
|===
| EAGER | LAZY
| Tableau de bord | Manuel du propriétaire
| Chargé automatiquement | Chargé sur demande
| <= 100 lignes, <= 10k tokens | Illimité, détaillé
| Règles absolues, mission courante | Archives, historique, références
|===
== Politique de Chargement
|===
| Fichier | Type | Quand charger
| PROMPT_REPRISE.adoc | EAGER | Début session (auto)
| *_ESSENTIALS.adoc | EAGER | Début session si EPIC active
| .agents/INDEX.adoc | EAGER | Début session (auto)
| *_REFERENCE.adoc | LAZY | Sur besoin (détails architecture)
| .agents/sessions/N-*.adoc | LAZY | Sur demande (détails session)
| .agents/encyclopedies/*.adoc | COLD | Jamais auto (humain seulement)
|===
== Comment l'Agent Sait Quoi Charger
Début session → PROMPT_REPRISE + INDEX + ESSENTIALS actifs.
Besoin de détails → charger les *_REFERENCE et sessions/ en LAZY.
Connaissance froide → encyclopedies/, jamais automatique.
Fifty lines. That’s all the agent needs to understand the mechanics. Everything else — the history of lessons, detailed analogies, step-by-step procedures, appendices — lives in the encyclopedia.
And most importantly:nothing was deleted. The 627 lines of engineering are still there, in`.agents/encyclopedies/LAZY_EAGER_ENCYCLOPEDIE.adoc`. They are just stored in the library rather than on the workbench.
The result: -50% EAGER context
Before the split:
287 AGENT.adoc
627 AGENT_MODUS_OPERANDI.adoc
51 PROMPT_REPRISE.adoc
218 .agents/INDEX.adoc
18 .agents/SESSIONS_HISTORY.adoc
213 .agents/archives/COMPLETED_TASKS_ARCHIVE_2026-04.adoc
1414 total
After the split:
287 AGENT.adoc
50 LAZY_EAGER_ESSENTIALS.adoc ← remplace 627 lignes
51 PROMPT_REPRISE.adoc
218 .agents/INDEX.adoc
18 .agents/SESSIONS_HISTORY.adoc
213 .agents/archives/COMPLETED_TASKS_ARCHIVE_2026-04.adoc
837 total ← -41%
The biggest consumer (AGENT_MODUS_OPERANDI, 627 lines) was replaced by a 50-line file. The gain is immediate: 577 lines of context freed. The agent can breathe.
And in`.agents/encyclopedies/`, the original 627-line file waits. Intact. With all its sections — including those that are duplicates, including those that were never used. Because one day, a better model or a human data scientist will want to cross-reference these angles, these intentional redundancies, these lessons learned. And on that day, the raw material will be there.
Why the folder is called encyclopedies/
The choice of name is not cosmetic. It encodes the philosophy of the mechanism.
An archive (archives/) contains historical data organized chronologically — like the monthly COMPLETED_TASKS. A backup (backup/) is a timestamped snapshot — a safety copy of a past state.
An encyclopedia is something else. It is a collection of thematic knowledge, structured by subject, exhaustive but non-linear. You don’t read an encyclopedia from beginning to end. You dive in to answer a specific question.
That is exactly the contract of this folder:
Folder |
Role |
Access |
Granularity |
|
Historical data (tasks finished by month) |
LAZY, structured |
Chronological |
|
Cold snapshots (waves of 10 sessions) |
COLD, full copy |
Chronological |
|
Exhaustive thematic knowledge (methodology, patterns) |
COLD, never auto |
Thematic |
This distinction avoids the catch-all. Each file knows where it should live based on what it contains, not when it was created.
The logical next step in the series
If you have read the first two articles, here is how the three pieces fit together:
-
0108answers: "How to give the agent a memory between two sessions?"
-
0110answers: "How to prevent this memory from suffocating the agent?"
-
0111answers: "What if the problem isn’t the size of the archives, but what we chose to put in EAGER?"
The first article built the structure. The second added the aging mechanism. The third audits the content — and discovers that the methodology itself has become the problem.
What I would have done differently
In hindsight, I see the initial design error.`AGENT_MODUS_OPERANDI.adoc`was created as a single document — a manifesto. That was the right approach to formalize the thinking. But once the thinking was formalized, the document should have been split immediately: the essential in EAGER, the exhaustive in cold.
I didn’t do it because I was proud of the document. 627 lines of pure engineering, handwritten, each section the fruit of a session lesson. It was my work. And like any author, I struggled to cut it.
The lesson:just because a document is good doesn’t mean it should be loaded automatically. The quality of the content has nothing to do with its relevance to the agent’s immediate context.
Today, the rule is simple: any document over 100 lines in the EAGER context is a suspect. It deserves an audit. Not a condemnation — an audit. And the question is never "should it be deleted?" but "should it be loaded every session?"
The guide to auditing your own context
If you have followed the first two articles and set up your own Eager/Lazy governance, here is a five-step audit procedure:
-
Measure:`wc -l`on all your EAGER files. The total should be under 1000 lines.
-
Identify the largest: the file that accounts for more than 20% of the total is suspect number one.
-
Audit section by section: for each section, ask yourself "Is this information already elsewhere? Has the agent already read it in another file? Has it been useful in the last 5 sessions?"
-
Classify: duplicate, never used, unique knowledge.
-
Split or relocate: what is unique and critical → compacted ESSENTIALS. Everything else →
encyclopedies/.
This procedure takes 15 minutes. Over a project of 50 sessions, it saves hundreds of tokens per future session. The ROI is immediate.
A living governance
What this series of three articles has taught me is that agent governance is not a finished product. It is aliving organism. It grows with the project. It catches growth diseases. It requires regular check-ups.
Session 048 revealed that archives swell. Session 051 revealed that the methodology itself swells. Session 060 will probably reveal something else. That’s normal. It’s healthy. A governance that never questions itself is a dead governance.
The three mechanisms put in place — Eager/Lazy, Hot/Warm/Cold, encyclopedic split — form a defense-in-depth system against context saturation. None are sufficient alone. Together, they complement each other:
-
Eager/Lazystructures information by availability
-
Hot/Warm/Coldstructures information by freshness
-
Encyclopedic Auditstructures information by density
With these three layers, the agent context on`magic-stick`went from 2087 lines (before any optimization) to about 800 lines — a division by 2.6. Without having lost a single line of documentation, a single session archive, a single lesson learned.
Everything is there. Just better organized.
Links
-
Article 0108 — Eager/Lazy Strategy:Governing an AI Agent with AsciiDoc
-
Article 0110 — Hot/Warm/Cold Mechanism:Sliding Window and Cold Wave
-
My site: https://cheroliv.com
-
The`magic-stick`project: https://github.com/cheroliv/magic-stick
Knowledge does not have to disappear. It just shouldn’t be loaded when it is not necessary.