Mandat user 2026-09-08 : « Ca fait pres de 100k tokens de memory, c'est trop. [...] tous les agents prennent le temps de nettoyer les memoires et optimiser le harnais. Toujours le meme principe, ventiler dans des docs a la lecture deferee ce qui peut l'etre, regrouper etc. Objectif redescendre en dessous de 70 ktokens. »
La mesure (ai-01, firsthand, 2026-09-08)
Le harnais auto-charge a chaque session pese 221 737 octets. Le ratio reel se lit sur un fichier dont le compte de tokens est affiche par le client : MEMORY.md = 24 705 o pour 11,1k tokens, soit ~2,25 o/token (dense : francais + liens [[...]]). A ce ratio le harnais fait ~98,5k tokens -- ce qui reproduit le 98,7k affiche. Le ratio n'est donc pas estime, il est calibre.
| Surface |
Octets |
~Tokens |
24 rules auto-chargees (sans frontmatter paths:) |
166 135 |
~73,8k |
CLAUDE.md projet |
22 885 |
~10,2k |
MEMORY.md (par machine) |
24 705 |
~11,0k |
~/.claude/CLAUDE.md global |
8 012 |
~3,6k |
| TOTAL auto-charge |
221 737 |
~98,5k |
Cible : < 70k tokens = < 157 500 o. Il faut retirer ~64 000 o (~29%) du chemin auto-charge.
63% du poids tient dans 9 fichiers (140 175 o) : MEMORY.md, CLAUDE.md, variation-protocol, proactive-coordination, submodule-maintenance, sota-not-workaround, secrets-hygiene, pr-review-discipline, catalog-pr-hygiene.
Levier A -- path-gating : -17,3k tokens SANS supprimer une ligne
Le levier le moins cher n'est pas la coupe, c'est le routage. Neuf rules auto-chargees declarent elles-memes une portee etroite mais se chargent dans toutes les sessions. Le mecanisme existe deja et est utilise (notebook-conventions.md, genai-config.md, wsl-kernels.md portent un frontmatter paths:).
Cas le plus net : consecutive-code-cells.md declare MyIA.AI.Notebooks/**/*.ipynb et n'est pas gate, alors que notebook-conventions.md -- meme sujet, meme portee -- l'est. C'est une incoherence, pas un arbitrage.
| Rule |
Octets |
~Tok |
paths: propose |
catalog-pr-hygiene.md |
9 932 |
4,4k |
{COURSE_CATALOG.generated.*,**/README.md,.github/workflows/catalog-*.yml} |
notebook-accretion-numbering.md |
8 107 |
3,6k |
MyIA.AI.Notebooks/**/*.ipynb |
codeql-suppressions-inertes.md |
6 190 |
2,8k |
{scripts/**/*.py,MyIA.AI.Notebooks/**/*.py} |
audit-cross-source-distillation.md |
3 542 |
1,6k |
MyIA.AI.Notebooks/**/*.ipynb |
readme-french-first.md |
3 217 |
1,4k |
{**/README*.md,docs/**/*.md} |
student-pr-reviews.md |
2 663 |
1,2k |
(gate par depot etudiant, sinon garder) |
consecutive-code-cells.md |
2 644 |
1,2k |
MyIA.AI.Notebooks/**/*.ipynb |
audit-reassessment.md |
1 714 |
0,8k |
MyIA.AI.Notebooks/**/*.ipynb |
bibliography-hygiene.md |
914 |
0,4k |
{docs/**,**/*.pdf} |
| TOTAL |
38 923 |
~17,3k |
|
Garde de non-regression : un gate ne doit pas rendre une regle inatteignable au moment ou elle sert. CLAUDE.md porte deja l'avertissement : « travailler sur ces domaines sans toucher les fichiers -- reviewer une PR notebook, par exemple -- demande de les Read explicitement ». Toute rule gatee doit rester citee en une ligne dans le §C de CLAUDE.md (pointeur, pas resume).
Levier B -- deportation vers docs/ : ~-15k tokens
Principe deja codifie par harness-hygiene.md (3 tiers) : le harnais reference, docs/ detaille, le dashboard porte l'ephemere. Plusieurs rules ont re-accrete du detail (tables d'incidents, verbatims, mesures datees, numeros de PR) que leur propre docs/<theme>.md existe deja pour porter.
Cibles, par ordre de rendement :
| Fichier |
Octets |
~Tok |
Ce qui se deporte |
MEMORY.md |
24 705 |
11,0k |
index d'accroches devenu un corpus : regrouper les lignes par theme, une accroche = un lien, deporter le reste dans les topic files |
CLAUDE.md projet |
22 885 |
10,2k |
§B.0 et §H portent des recits d'incidents entiers -> docs/reference/pr-review-context.md |
variation-protocol.md |
16 690 |
7,4k |
justifications mesurees + historique -> docs/reference/variation-protocol-detail.md (existe) |
proactive-coordination.md |
15 200 |
6,8k |
lecons L721/L740/L898/L1356 en entier -> docs/reference/proactive-coordination-detail.md (existe) |
submodule-maintenance.md |
14 329 |
6,4k |
tableau des 5 etats de gate + mesures datees -> docs/reference/ (a creer) |
sota-not-workaround.md |
12 213 |
5,4k |
checklist 6 axes + recits -> docs/reference/sota-verdicts-detail.md (existe) |
secrets-hygiene.md |
12 121 |
5,4k |
recits RooSync + quorum -> docs/reference/secrets-and-coord-detail.md (existe) |
pr-review-discipline.md |
12 100 |
5,4k |
contre-exemples chiffres §C -> docs/reference/pr-review-context.md (existe) |
La plupart des fichiers docs/*-detail.md cibles EXISTENT deja : le travail est de finir une deportation commencee, pas d'inventer une arborescence.
Arithmetique d'acceptance
- Levier A seul : 98,5k -> ~81,2k (insuffisant)
- Levier A + trim ~25% des 8 gros du levier B (-14,5k) : ~66,7k -> objectif tenu
Regle qui gouverne le travail (non negociable)
« Consolider != Archiver » (~/.claude/CLAUDE.md) : 3 etapes -- ANALYSER, FUSIONNER en citant les numeros de ligne comme preuve, ARCHIVER seulement apres verification. Deplacer du texte vers docs/ sans preuve de preservation n'est pas une deportation, c'est une perte (precedent : Session 101, 8+ scripts perdus).
Et le principe anti-pendule : quand une ligne cause un mauvais comportement, la supprimer d'abord ; n'ajouter un remplacement que si le retrait laisse un trou reel. L'equilibre s'atteint en soustrayant. Une regle deja portee par un mecanisme automatique (auto-condensation, retries, rate limits) ne se re-encode pas en prose.
Acceptance verifiable
python scripts/ci/measure_harness_weight.py (a creer dans cette issue) rend le total auto-charge en octets et en tokens au ratio calibre 2,25 o/tok, avec le detail par fichier.
- Le total auto-charge passe sous 157 500 o.
- Aucune regle supprimee : chaque bloc retire du harnais est retrouvable dans
docs/ (verifiable par git grep d'une phrase-temoin de chaque bloc deporte).
- Chaque rule path-gatee reste citee en une ligne dans le §C de
CLAUDE.md.
- Le §C de
CLAUDE.md continue de lister les rules gatees (sinon elles deviennent invisibles).
Repartition proposee (une lane = un fichier, pas de collision)
Le travail est partitionnable par fichier -- c'est ce qui le rend parallelisable sans conflit. Poser [CLAIMED] ... paths: .claude/rules/<fichier>.md avant d'editer (lane-claim-protocol).
- Levier A (path-gating) : un seul agent, une seule PR -- 9 frontmatters + la garde §C. Peu risque, gros rendement, a faire en premier.
- Levier B : une lane par gros fichier.
MEMORY.md est par machine : chaque agent nettoie le sien.
MEMORY.md n'est pas partageable entre machines -- chaque agent doit faire le sien, sur sa propre machine.
Note d'ordonnancement
Ceci est un grain META/tooling. Il ne tient pas le plancher G-VAR-1 d'un cycle (variation-protocol) : a prendre en complement d'un grain de CONTENU, pas a la place.
Mandat user 2026-09-08 : « Ca fait pres de 100k tokens de memory, c'est trop. [...] tous les agents prennent le temps de nettoyer les memoires et optimiser le harnais. Toujours le meme principe, ventiler dans des docs a la lecture deferee ce qui peut l'etre, regrouper etc. Objectif redescendre en dessous de 70 ktokens. »
La mesure (ai-01, firsthand, 2026-09-08)
Le harnais auto-charge a chaque session pese 221 737 octets. Le ratio reel se lit sur un fichier dont le compte de tokens est affiche par le client :
MEMORY.md= 24 705 o pour 11,1k tokens, soit ~2,25 o/token (dense : francais + liens[[...]]). A ce ratio le harnais fait ~98,5k tokens -- ce qui reproduit le 98,7k affiche. Le ratio n'est donc pas estime, il est calibre.paths:)CLAUDE.mdprojetMEMORY.md(par machine)~/.claude/CLAUDE.mdglobalCible : < 70k tokens = < 157 500 o. Il faut retirer ~64 000 o (~29%) du chemin auto-charge.
63% du poids tient dans 9 fichiers (140 175 o) :
MEMORY.md,CLAUDE.md,variation-protocol,proactive-coordination,submodule-maintenance,sota-not-workaround,secrets-hygiene,pr-review-discipline,catalog-pr-hygiene.Levier A -- path-gating : -17,3k tokens SANS supprimer une ligne
Le levier le moins cher n'est pas la coupe, c'est le routage. Neuf rules auto-chargees declarent elles-memes une portee etroite mais se chargent dans toutes les sessions. Le mecanisme existe deja et est utilise (
notebook-conventions.md,genai-config.md,wsl-kernels.mdportent un frontmatterpaths:).Cas le plus net :
consecutive-code-cells.mddeclareMyIA.AI.Notebooks/**/*.ipynbet n'est pas gate, alors quenotebook-conventions.md-- meme sujet, meme portee -- l'est. C'est une incoherence, pas un arbitrage.paths:proposecatalog-pr-hygiene.md{COURSE_CATALOG.generated.*,**/README.md,.github/workflows/catalog-*.yml}notebook-accretion-numbering.mdMyIA.AI.Notebooks/**/*.ipynbcodeql-suppressions-inertes.md{scripts/**/*.py,MyIA.AI.Notebooks/**/*.py}audit-cross-source-distillation.mdMyIA.AI.Notebooks/**/*.ipynbreadme-french-first.md{**/README*.md,docs/**/*.md}student-pr-reviews.mdconsecutive-code-cells.mdMyIA.AI.Notebooks/**/*.ipynbaudit-reassessment.mdMyIA.AI.Notebooks/**/*.ipynbbibliography-hygiene.md{docs/**,**/*.pdf}Garde de non-regression : un gate ne doit pas rendre une regle inatteignable au moment ou elle sert.
CLAUDE.mdporte deja l'avertissement : « travailler sur ces domaines sans toucher les fichiers -- reviewer une PR notebook, par exemple -- demande de lesReadexplicitement ». Toute rule gatee doit rester citee en une ligne dans le §C deCLAUDE.md(pointeur, pas resume).Levier B -- deportation vers
docs/: ~-15k tokensPrincipe deja codifie par
harness-hygiene.md(3 tiers) : le harnais reference,docs/detaille, le dashboard porte l'ephemere. Plusieurs rules ont re-accrete du detail (tables d'incidents, verbatims, mesures datees, numeros de PR) que leur propredocs/<theme>.mdexiste deja pour porter.Cibles, par ordre de rendement :
MEMORY.mdCLAUDE.mdprojetdocs/reference/pr-review-context.mdvariation-protocol.mddocs/reference/variation-protocol-detail.md(existe)proactive-coordination.mddocs/reference/proactive-coordination-detail.md(existe)submodule-maintenance.mddocs/reference/(a creer)sota-not-workaround.mddocs/reference/sota-verdicts-detail.md(existe)secrets-hygiene.mddocs/reference/secrets-and-coord-detail.md(existe)pr-review-discipline.mddocs/reference/pr-review-context.md(existe)La plupart des fichiers
docs/*-detail.mdcibles EXISTENT deja : le travail est de finir une deportation commencee, pas d'inventer une arborescence.Arithmetique d'acceptance
Regle qui gouverne le travail (non negociable)
« Consolider != Archiver » (
~/.claude/CLAUDE.md) : 3 etapes -- ANALYSER, FUSIONNER en citant les numeros de ligne comme preuve, ARCHIVER seulement apres verification. Deplacer du texte versdocs/sans preuve de preservation n'est pas une deportation, c'est une perte (precedent : Session 101, 8+ scripts perdus).Et le principe anti-pendule : quand une ligne cause un mauvais comportement, la supprimer d'abord ; n'ajouter un remplacement que si le retrait laisse un trou reel. L'equilibre s'atteint en soustrayant. Une regle deja portee par un mecanisme automatique (auto-condensation, retries, rate limits) ne se re-encode pas en prose.
Acceptance verifiable
python scripts/ci/measure_harness_weight.py(a creer dans cette issue) rend le total auto-charge en octets et en tokens au ratio calibre 2,25 o/tok, avec le detail par fichier.docs/(verifiable pargit grepd'une phrase-temoin de chaque bloc deporte).CLAUDE.md.CLAUDE.mdcontinue de lister les rules gatees (sinon elles deviennent invisibles).Repartition proposee (une lane = un fichier, pas de collision)
Le travail est partitionnable par fichier -- c'est ce qui le rend parallelisable sans conflit. Poser
[CLAIMED] ... paths: .claude/rules/<fichier>.mdavant d'editer (lane-claim-protocol).MEMORY.mdest par machine : chaque agent nettoie le sien.MEMORY.mdn'est pas partageable entre machines -- chaque agent doit faire le sien, sur sa propre machine.Note d'ordonnancement
Ceci est un grain META/tooling. Il ne tient pas le plancher G-VAR-1 d'un cycle (variation-protocol) : a prendre en complement d'un grain de CONTENU, pas a la place.