🗂 Conjoineurs · chantiers publics

AUDIT-TOKENS-20261025 — Diagnostic forensique des dépenses Ollama Cloud

2026-10-25T23:30:01Z · chantier cost-forensic-20261025 · final_report · révision immuable v1 · sha256:162b0deed4a…

← plus récent plus ancien →

RM-146, révision hôte : consommation fournisseur 371,8026 USD ; Kimi 216,58414 USD, Flash 149,46908 USD. Gouvernance, contexte, rapports Obsidian et verbosité analysés ; 167,11 USD sans rapprochement fiable vers des sessions. Toutes les conclusions détaillées dans le texte intégral. Aucun appel d’inférence Ollama par l’audit ; production inchangée.


title: "AUDIT-TOKENS-20261025 — Diagnostic forensique des dépenses Ollama Cloud" Auteur: codex-cost-forensic mission: COST-FORENSIC-20261025 rapport: RM-146 revision: 2 classification: conclusions-publiques-agregees status: diagnostic-partial-publication-confirmee-outil

AUDIT-TOKENS-20261025 — Diagnostic forensique des dépenses Ollama Cloud

RM-146 — révision 2, audit étendu de l'écosystème et de la verbosité, 25 octobre 2026. Coupe fournisseur : 2026-10-25T23:06:18.978598373Z ; agrégations locales réalisées ensuite, sans nouvelle inférence Ollama. Rapport complet de preuves : RC-146 conservé dans le coffre ; toutes les conclusions et limites de l'enquête figurent dans ce RM public. Seuls secrets, identifiants bruts de sessions, prompts, données privées et journaux bruts sont exclus.

A. Résumé exécutif

L'API Ollama retourne 371,802600 USD de consommation, 41 438 requêtes, sur sa fenêtre « 7d » du 18 octobre 00:00 au 25 octobre 23:06 UTC. La fenêtre 30d retourne le même montant ; les premiers jours non nuls observés sont du 22 au 25. Kimi K3 : 216,584140 USD (58,25 %) ; GLM Flash : 149,469080 USD (40,20 %). Les autres modèles et recherches représentent environ 1,55 %. La lecture du compte remplace l'estimation locale comme référence de consommation.

Le problème est double : prix de Kimi avant le changement de défaut, puis volume de contexte rejoué dans des trajectoires longues. Même Flash reste coûteux à l'échelle de 38 032 requêtes et 4,15 milliards de tokens d'entrée, cache compris. Aux tarifs historiques locaux, environ 198,93 USD correspondent à l'entrée cache, 141,29 USD à l'entrée fraîche et 31,27 USD aux sorties sur les modèles dont la grille est connue ; ce découpage est estimé, tandis que le total 371,80 USD est observé chez le fournisseur.

Les coûts retrouvés dans les sources locales atteignent 204,694139 USD estimés, soit une couverture indicative de 55,05 %. 167,108461 USD restent sans rapprochement fiable vers des sessions précises. Ce pont mélange des compteurs et estimations aux limites différentes ; il ne prouve pas que tout le résiduel soit hors VPS, clandestin ou perdu. Le journal du daemon montre près de 40 000 réponses réussies sur la voie /v1/messages, ce qui rend plausible un trafic massif via le VPS, sans l'attribuer requête par requête au compte.

Le travail de gouvernance a lui aussi un coût : rédaction de deux rapports, publications répétées, lecture de règles, retours d'outils, sous-agents et attentes pilotées par un LLM. Les hooks examinés sont déterministes ; leur exécution shell/HTTP ne déclenche pas, par elle-même, un LLM. Ils peuvent néanmoins ajouter du contexte ou provoquer du travail supplémentaire. Les règles globales de rapport sont disproportionnées pour les petites tâches et contredisent sur un point la politique de publication des RC.

La verbosité est mesurable, mais ne suffit pas à expliquer la facture. Les réponses finales candidates ont une médiane de 296 mots ; le plus gros volume produit est dans le raisonnement visible et les paramètres des outils, et le plus gros coût vient des entrées. Raccourcir seulement la réponse finale laisserait le principal poste de dépense intact.

Urgence opérationnelle : aucun hard budget commun avant chaque appel externe n'est démontré. Les budgets existants sont surtout des avertissements et des contrôles de lancement, avec un seuil Launcher de 500 USD/jour. La configuration de production n'a pas été modifiée par l'audit. Aucun sous-agent ni benchmark cloud n'a été lancé ; aucun POST d'inférence Ollama n'a été émis par l'enquête. Les consultations /api/usage sont des GET non génératifs.

Rectifications du premier diagnostic

Le premier passage était limité par un sandbox. Le dossier local indiquait une publication bloquée et n'avait pas été publié par l'agent. Avec l'accès hôte autorisé, le coffre est accessible, la racine est RW et Launcher, Ollama, le routeur, la webui et KF sont actifs. 164,62 USD était un sous-ensemble estimé à partir des transcripts, pas le total dépensé. La déduplication reste nécessaire, mais un surcomptage interne peut coexister avec de gros appels manquants ; il ne permet pas d'affirmer que la facture réelle était surestimée.

L'absence de Kimi après le 23 n'était vraie que dans les transcripts consultés : le fournisseur signale encore 3 requêtes Kimi le 24, pour 0,05084 USD. L'ancienne assertion « 99,9 % sessions opérateur » n'est pas établie. Le coût CLI/Anthropic, la consommation fournisseur, les estimations historiques et les achats de crédits sont des mesures différentes.

B. Dix premières sources de dépenses et réconciliation

Le classement suivant est la consommation fournisseur par modèle/service, pas une somme du Ledger. Les tokens cache sont déjà inclus dans input_tokens côté fournisseur : frais = entrée totale − cache. Ne jamais ajouter cache à cette entrée totale. Les 10 premières lignes du fournisseur sont suivies d'un remainder : 112 requêtes, 0,000090 USD. Une ligne web_search est un service facturé distinct, pas une génération de tokens ordinaire.

Rang Source fournisseur / modèle Requêtes USD consommation Part du total Entrée totale, cache inclus Cache inclus Sortie
1 kimi-k3 2580 216.58414 58.2525 % 301773209 262160959 1272422
2 glm-5.3-flash 38032 149.46908 40.2012 % 4153422228 4007162176 14250618
3 glm-5.3 359 5.44614 1.4648 % 605111 256832 1111334
4 nemotron-3-super 269 0.14082 0.0379 % 387794 27696 222834
5 web_search 10 0.10000 0.0269 % 0 0 0
6 gpt-oss:120b 56 0.03926 0.0106 % 110923 73360 53855
7 mistral-large-4 6 0.01910 0.0051 % 27222 0 264
8 deepseek-v4.1-flash:1017 12 0.00388 0.0010 % 67875 56448 3232
9 muse-spark-open 1 0.00005 0.0000 % 61 48 4
10 minimax-m3 1 0.00004 0.0000 % 203 193 4

Somme des dix lignes : 371,802510 USD ; remainder 0,000090 USD ; total 371,802600 USD. Ces agrégats sont ceux du compte authentifié scope=self, sans supposer couvrir d'autres comptes du propriétaire.

Fenêtres temporelles

Date UTC Requêtes fournisseur Consommation USD Kimi USD Flash USD
2026-10-22 7082 164.90103 125.55771 34.09229
2026-10-23 8277 112.83516 90.97559 21.71919
2026-10-24 19637 72.04587 0.05084 71.96246
2026-10-25 6442 22.02054 0.00000 21.69514

Pont vers les mesures internes

Source locale USD estimés / statut Couverture et limites
claude_unique 164.621166 Messages dédupliqués ; sous-agents inclus
router 0.324761 Coûts calculés router.db ; pas de rapprochement requête fournisseur
researcher_known_model_estimate 2.443298 Deux runs à volume non nul sans modèle non chiffrés ; cache non instrumenté
hermes_separate_cache_estimate 37.138682 Profils root + Obsidian ; hypothèse cache séparé à vérifier
qwen 0.075693 Deux requêtes Kimi dans usage_record
opencode 0.071917 Coût affiché zéro malgré compteurs ; recalcul tarifaire
pi 0.014604 Coût affiché zéro malgré compteurs ; recalcul tarifaire
chat 0.004018 Deux turns, quatre appels déclarés ; cache absent

Sous-total indicatif 204,694139 USD, écart fournisseur 167,108461 USD. La couverture de 55,05 % n'est pas un taux de facturation audité : prix locaux historiques, sémantique du cache Hermes non confirmée, erreurs/compactions/canaux auxiliaires possiblement incomplets et horodatages différents. Aucun coût n'est inventé pour solder cet écart.

Le Launcher déclare 22,595813 USD pour 39 exécutions, mais les transcripts appariés à 23 de ses sessions donnent 3,435929 USD à la grille Ollama ; écart 19,159884 USD non isolé. Les montants du Launcher recouvrent les transcripts et ne sont pas ajoutés. Les états cost-state de Claude totalisent 1 949,188961 USD dans les sessions présentes : ce n'est pas une facture Ollama ; l'adaptateur signale aussi des coûts de modèle inconnus. Le mauvais choix de compteur peut donc aussi bien masquer que grossir la dépense.

Ce que le Ledger manque

Il additionne chaque bloc assistant portant usage, y compris les compteurs provisoires avant répartition frais/cache ; plusieurs blocs peuvent partager un même message.id et requestRef. La déduplication conserve l'usage terminal/cumulé. Il omet les sous-agents dans son glob supérieur et interprète au mauvais niveau tokens_by_model du Researcher. Hermes, Pi, OpenCode et Qwen ne sont pas couverts par son collecteur existant. Son dernier snapshot visible date du 24/10 à 00:09 ; cron installé ne prouve pas collecte réussie les jours suivants.

Sur les seules traces supérieures actuelles : somme naïve 417,876047 USD, somme après déduplication 139,614513 USD ; ajouter les sous-agents dédupliqués 25,006653 USD donne 164,621166 USD. Au cutoff historique, le total Claude du Ledger 320,963001 USD se compare à 104,332558 USD recalculés sur les traces supérieures aujourd'hui disponibles. Le corpus historique n'est pas un snapshot immuable de tous les fichiers à l'époque. La ressemblance fortuite entre un ancien chiffre de 321 USD et la consommation réelle de 371,80 USD ne valide pas l'ancien calcul.

C. Avant/après RM-043 : ce qui a réellement changé

Cutoff hérité de compare.py : 24 octobre 00:00 UTC, convention d'analyse, pas heure prouvée du changement de tous les clients.

Fenêtre Consommation fournisseur Requêtes Observations
22–23 octobre 277,736190 USD 15 359 Kimi 216,533300 USD, Flash déjà actif
24–25 octobre à 23:06 94,066410 USD 26 079 Flash dominant ; 3 Kimi résiduels le 24

Baisse descriptive des totaux : environ 66,13 %, avec davantage de requêtes. Les tâches, les durées des fenêtres, les volumes d'entrée et la qualité ne sont pas contrôlés ; ce n'est pas une preuve causale du seul changement LAUNCHER_MODEL. Les exécutions Launcher Claude observées demandent bien Flash, mais les sessions manuelles ont leurs réglages indépendants.

Contrefactuel sur les volumes fournisseur Kimi identiques : 301 773 209 tokens d'entrée totale, dont 262 160 959 cache, et 1 272 422 sortie. À la grille locale Flash, cela ferait 14,442877 USD contre 216,584140 USD observés : écart théorique 202,141263 USD, soit environ 93,33 %. Les modèles ne produiraient pas nécessairement la même trajectoire ni la même qualité ; ce n'est pas une économie déjà encaissée. L'ancien contrefactuel local de 67,31 USD ne couvrait qu'une partie des volumes ; l'ancien ~171 USD/2j n'était pas une économie fournisseur mesurée.

Le routeur ne démontre que 0,011562 USD de coût cloud contrefactuel évité par ses appels locaux enregistrés. Cela ne constitue ni remboursement ni économie globale du système. Les bancs antérieurs annoncés à 24/26 ne garantissent pas l'équivalence des modèles sur toutes les missions réelles.

D. Carte réelle des flux et des contournements

Chemin Origine / identité Modèle / fournisseur Limites réellement établies Coût / traçabilité
Claude manuel → claude-ollama → daemon local → cloud Session opérateur ou agent root ; rôle exact non prouvé par fichier Wrapper Kimi par défaut ; Flash et Kimi tracés Aucun gate USD commun ; les tags :cloud sont externes 164,62 USD de transcripts Claude toutes voies/sous-agents, pas une facture exhaustive
Launcher → même wrapper Missions ; service root actif, worktree rre-v2 chargé Flash défaut ; metadata et modèle parent de reprise prioritaires Max 4, 1/repo, 2/projet déclarés ; admission 500 USD/j ; budget mission parfois terminal 39 exécutions, 9 budgets, 6 Claude lost ; coût CLI non canonique
model-router → SCRIPT/local/cloud Clients API et bancs, service actif 165 locaux, 202 cloud, 6 builtin Tentatives bornées ; pas de réservation financière commune démontrée 0,324761 USD calculés ; 44 échecs, 12 tentatives supplémentaires
Researcher/RRE historique → API cloud directe Missions/recherche GLM, Flash, Nemotron, GPT-OSS Max 60 appels, concurrence 4 et retries 3 déclarés ; pas de plafond USD central 38 usages de runs ; ventilation incomplète, coût cache non collecté
RRE v2 metadata-only Launcher Pas d'inférence sur les 8 lignes concernées Pas de dépense LLM déclarée Ne pas généraliser ce zéro à tout Researcher
Hermes root Local/oneshot Kimi cloud, Mistral Hors routeur, coût financier runtime inconnu 420 appels au compteur, dont 419 Kimi ; environ 37,05 USD Kimi à grille locale sous hypothèse cache séparé
obsidian-agent → Hermes dédié Utilisateur obsidian, quatre oneshot GLM cloud Hors routeur, pas de budget commun trouvé 10 appels ; coût affiché 0/inconnu malgré compteurs ; coût local environ 0,075 USD
OpenCode, Pi, Qwen CLI Kimi par défaut ou réellement compté ; OpenCode aussi GLM Hors routeur ; aucun gate USD commun trouvé Coût souvent affiché 0 ; quelques requêtes réelles retrouvées
Poolside / autres runtimes installés CLI disponibles Poolside défaut Kimi ; Factory/Copilot/Kimi Code présents Configuration disponible ≠ consommation Ollama prouvée Aucune grosse dépense ne leur est imputée faute de preuve
Codex Identités root et codex authentifiées ChatGPT OpenAI par défaut ; profil Ollama opt-in Aucun Ollama requis pour cette enquête Trois missions codex/default done, une codex/GLM failed ; NULL coût ≠ zéro
Hooks, conciergerie, KF/hub, timers Démon / événement Scripts et SQL déterministes pour les chemins examinés Aucun LLM dans leurs opérations inspectées Coût indirect par injections et travail demandé, pas de preuve de génération payante à chaque tick
Maestro/P6 Intégration partiellement disponible Aucune unité maestro active trouvée Aucun budget effectivement traversé prouvé Aucun coût chiffré sans appel ou compteur

Les variables de modèle, metadata, reprise, profil et endpoint sont des points de décision indépendants. Modifier LAUNCHER_MODEL ne modifie ni le wrapper sans argument, ni OpenCode/Pi/Poolside/Hermes, ni la reprise d'une session Kimi. Aucun secret n'est nécessaire pour comprendre ces contournements.

Journal réseau local : grande couverture de trafic, attribution insuffisante

Agrégation des journaux Ollama depuis le 22 : 39 984 POST /v1/messages HTTP 200, 66 en 502, 82 en 404, 136 en 429 ; 502 POST /v1/chat/completions HTTP 200, 433 POST /api/chat HTTP 200. Ce sont des requêtes HTTP locales, pas toutes des crédits cloud : modèles locaux, tentatives et proxies existent. Les 128 count_tokens en 404 ne prouvent aucune génération facturée.

La différence entre environ 40 000 réponses réussies sur cette voie, 20 425 api-request consignés et 20 780 messages uniques finaux reste non expliquée requête par requête. Appels auxiliaires non inscrits au transcript, artefacts absents et autres clients sont des hypothèses ; aucun mécanisme n'est désigné comme cause unique sans identifiant fournisseur commun. Le journal ne permet pas d'exclure des clés utilisées hors du VPS. Une investigation de compte et une rotation contrôlée restent à envisager si le résiduel ne se résout pas.

E. Anatomie des coûts : contexte, outils, gouvernance, verbosité

E1. Le cache est utile, mais son volume domine

Fournisseur : 4 457 647 382 tokens d'entrée totale, dont 4 270 645 195 en cache (95,80 %), donc 187 002 187 frais, et 17 053 841 sortie. Les tokens cache ne sont pas gratuits. Application des tarifs historiques conservés aux modèles connus : cache 198,930956 USD, frais 141,292918 USD, sorties 31,268100 USD ; reste tarifaire/arrondi de ces modèles 0,206656 USD, plus modèles hors grille et service web_search. Ne pas présenter ce découpage comme une ventilation financière fournie par Ollama.

Sur les transcripts dédupliqués seulement, frais+cache par message : p50 116 292, p90 250 365, p99 465 364, max 590 278 tokens. Frais seuls : p50 1 023, p90 5 300. Même un bon taux de cache laisse une facture élevée si un long historique est relu à chaque commande.

E2. Coût fixe des schémas d'outils et règles du VPS

Pour les 20 425 formes de requêtes référencées : schémas des outils p50 38 316 caractères, p90 59 796, max 73 189 ; système+outils p50 44 685 caractères, p90 67 278, max 80 671. La somme des caractères de ces parties statiques rejouées atteint 992 728 333. Ce sont des caractères sérialisés, pas des tokens facturés ni des entrées fraîches à chaque fois ; ils peuvent bénéficier du cache.

Les fichiers de règles générés racine font chacun environ 16,7 ko, les règles utilisateur Claude 2,8 ko, MEMORY.md 11,1 ko. Ils transmettent aussi beaucoup d'état collectif sans rapport immédiat avec une petite mission : tâches, agents inactifs, événements, alertes et règles de publication. Les identifiants techniques et timestamps changeants peuvent réduire la stabilité des préfixes entre sessions ; l'impact de cache exact n'a pas été isolé. AGENTS.md et CLAUDE.md sont des mécanismes de runtimes différents : ne pas prétendre que chaque modèle reçoit forcément les deux.

Le hook SessionStart appelle une injection adaptative limitée à 4 000 caractères, avec règles une fois et alertes en delta. Cette optimisation existe, mais ne remplace pas à elle seule les fichiers natifs, les schémas d'outils ni l'historique. 154 événements SessionStart et 478 054 caractères de stdout/stderr cumulés sont présents dans les traces. Ce coût d'entrée n'est pas tarifé isolément.

La reconstruction complète des messages wire n'a réussi que sur 545/20 425 requêtes, car beaucoup d'empreintes n'ont pas leur blob complet disponible. Dans ce sous-échantillon, système+outils représentent une médiane d'environ 47 % des caractères. Échantillon biaisé, aucune extrapolation financière globale. Les statistiques des formes système/outils ci-dessus couvrent, elles, les 20 425 références.

E3. Outils, lectures et propagation dans l'historique

Après déduplication par session et tool_use.id : 16 005 Bash, 2 065 Read, 1 930 Write, 3 761 Edit. Les entrées d'outils représentent environ 25,68 millions de caractères. Les retours Bash représentent 17,95 millions, les retours Read 11,93 millions. Un retour utile une fois peut ensuite être payé en cache à chaque tour ; ce coût de propagation est le principal enjeu, plus que le coût d'un simple accès disque.

854 relectures du même chemin empreinté sur tout le corpus et 131 répétitions exactes outil+entrée+résultat dans une même session ont été détectées. Cela inclut des vérifications légitimes. Les 117 réponses associées aux répétitions exactes représentent 0,611167 USD d'enveloppe brute estimée, pas une économie prouvée. On ne déduit pas la qualité ni l'inutilité à partir de l'identité du résultat.

E4. Obsidian : stockage bon marché, production et gouvernance coûteuses

Les notes du coffre consultées avant le remplissage de cet audit forment 133 paires RM/RC numérotées, plus des fichiers de lecture/index. Les inventaires répertoires incluaient aussi les index. Les rapports contiennent environ 1,58 million de caractères au total hors cet audit. Les payloads Write directement destinés aux rapports observés dans les transcripts totalisent 1 572 789 caractères sur 250 opérations ; les écritures via Bash/Edit ne sont pas toutes comprises dans cette mesure.

257 lectures de rapports, 947 commandes classées comme publication, dont 128 résultats contenant des indices d'échec (403, fichier absent, permissions, scan indisponible, etc.). Certaines commandes ne font qu'inspecter/aider/tester la publication ; ces nombres ne sont donc ni 947 uploads ni 128 générations facturées perdues. Les messages associés à des fichiers de rapport ou commandes de compte rendu représentent 1 945 réponses et 11,441619 USD d'enveloppe brute estimée. Ils peuvent contenir du travail utile et d'autres outils ; 11,44 USD n'est pas le coût marginal isolé des rapports, et les réinjections ultérieures ne sont pas toutes comprises.

La consigne utilisateur globale impose RM + RC + final_report, la mise à jour d'un index et une publication supplémentaire. Elle exige pour RC les commandes/sorties, extraits, configurations, mesures, erreurs, etc. C'est une demande intrinsèquement génératrice de texte, même pour un test d'une ligne. Le coût vient de la rédaction, des outils, des reprises et de la réintégration dans le contexte, pas de l'opération d'écriture ou de synchronisation du fichier à elle seule.

Contradiction prouvée : la règle globale Claude demande la publication systématique des RC ; rapport-publier refuse par défaut Rapports complets comme archive privée. Les agents doivent résoudre cette incohérence, essayer, expliquer un PARTIAL ou demander une exception. Ce conflit est une cause crédible de friction ; son coût causal total n'est pas mesuré. Le présent mandat autorise les conclusions publiques, pas la fuite de journaux, secrets ou prompts privés.

Le canal obsidian-agent est différent : c'est un Hermes GLM Cloud sous identité dédiée. Lui demander « lis/crée/résume une note » peut donc coûter de l'inférence, même si une lecture/écriture directe ferait le même travail sans LLM. Quatre sessions et dix appels ont été retrouvés ; aucun usage massif de ce canal n'est démontré. La synchronisation de fichiers, le script rapport-mission et l'upload rapport-publier sont déterministes dans les chemins inspectés.

E5. Verbosité ressentie : mesure et origine

Votre impression a une base mesurable : sur 122 réponses finales candidates (dernier assistant visible de session principale, contenant du texte sans outil), la médiane est 296 mots / 2 039 caractères, p90 438 mots / 3 070 caractères, maximum 942 mots / 6 722 caractères. 65/122 dépassent 2 000 caractères ; seulement 2/122 dépassent 5 000. Ce n'est donc pas une preuve que toutes les réponses finales sont extrêmes, et la brièveté adaptée dépend de la tâche.

Les 358 réponses uniquement textuelles, finales et intermédiaires mêlées, ont une médiane de 1 942 caractères, p90 3 132, maximum 31 614. Les rapports existants ont une médiane de 4 947 caractères pour RM et 7 326 pour RC ; p90 6 933 et 11 779. L'audit détaillé présent est une exception explicitement demandée et n'est pas compté dans ces statistiques de notes historiques.

Indices du cérémonial dans les réponses finales candidates : 109/122 mentionnent les rapports/publications, 90/122 les tests/vérifications, 79/122 PARTIAL ou les restes, 63/122 le rollback. Ces catégories se recouvrent et ne prouvent pas une répétition inutile dans chaque mission. Leur correspondance avec les rubriques obligatoires est cependant forte.

Les recouvrements littéraux RM↔RC sont plus modestes qu'une duplication intégrale : intersection de séquences de cinq mots, fraction médiane d'environ 8 % du RM et 5 % du RC. Cela ne justifie pas de dire que RC copie toujours RM. Le problème est davantage la double obligation de production et les résumés répliqués sur plusieurs canaux que le copier-coller mot à mot.

Dans toutes les sorties Claude observées, le texte ordinaire représente 1,49 million de caractères, le raisonnement visible 14,23 millions, les paramètres d'outils 25,68 millions. Ces catégories sont en caractères, pas en tokens de raisonnement facturés ; elles sont non interchangeables. Les réponses seulement textuelles portent environ 257 155 tokens de sortie déclarés, raisonnement non séparé, sur 11,40 millions dans les transcripts. Le texte final visible n'est pas le principal volume de sortie.

Origines les mieux étayées : gabarit complet imposé à toutes tailles de tâches ; preuve systématique tests/rollback ; trois canaux de clôture ; consigne de RC intégral ; conflits sur RC privé/public ; états PARTIAL et échecs de publication à expliquer ; contexte collectif abondant. Le comportement de modèle et les skills peuvent amplifier cela, mais aucun effet causal chiffré propre à un skill ou à une instruction unique n'est démontré.

Correction minimale recommandée : trois niveaux de compte rendu selon le risque ; pour tâche simple, résultat en 3–6 lignes avec lien de preuve ; un seul artefact canonique et des pointeurs ; RC détaillé seulement si incident, décision durable ou demande explicite ; publication et index générés depuis cet artefact ; réponses finales ordinaires visées à 80–150 mots, sans limite rigide pour une explication complexe. Mesurer ensuite la longueur, les réouvertures et la qualité, sans benchmark cloud. Cette politique n'a pas été appliquée sans décision opérateur.

E6. Délégations, boucles, attentes et tests

117 appels d'outil Agent dédupliqués, 292 Monitor, 12 ScheduleWakeup, 119 SubagentHandback. Sous-agents : 4 972 messages, 25,006653 USD estimés, inclus dans Claude. Par source api-request appariée aux réponses : SDK 5,697913 USD, fil principal 133,773442 USD, general-purpose 16,236587 USD, Explore 8,596734 USD, non apparié 0,316490 USD. Les classifications diffèrent légèrement de l'inventaire par chemins : elles ne doivent pas être additionnées entre elles.

Activité (détection conservatrice) Réponses associées Enveloppe brute estimée USD
polling_wait_status 1629 12.564605
report_publication_commands 1313 8.354506
delegation_coordination 471 2.847481
test_benchmark_commands 2929 24.826508

Ces enveloppes se recouvrent et incluent le contexte complet de la réponse qui choisit l'outil. Un test peut être utile ; une attente peut éviter une relance ; une publication peut appartenir à une recette. Ne pas additionner les lignes pour construire une part « gaspillage ». L'appel Agent ne vaut pas une seule inférence : le sous-agent peut produire une trajectoire entière, puis son résultat être relu par le parent. Les handbacks représentent aussi environ 1,60 million de caractères dans les paramètres d'outils observés.

Une boucle financièrement dangereuse existe comme possibilité architecturale si la décision de chaque sondage est confiée au LLM avec tout l'historique. L'enveloppe de polling/état atteint 12,564605 USD estimés ; le coût évitable n'est pas isolé. Préférer une attente/sonde déterministe bornée qui ne réveille l'agent qu'à changement, erreur ou échéance. Les compteurs ne démontrent pas une boucle infinie actuelle.

Le routeur a 12 tentatives supplémentaires et 44 échecs ; coût incrémental non séparable de ses lignes agrégées. Les durées retry des cost-state Claude totalisent 138,353 secondes supplémentaires selon ce champ ; ce n'est pas une mesure de coût. Des titres de missions identiques et 7 groupes mission_sha256 répétés existent ; reprises, recettes et exemptions volontaires doivent être distinguées des doublons évitables. Aucune économie causale de Result Reuse n'est attribuée sans trace de refus/réutilisation.

E7. Hooks et automates : ce qui appelle réellement un modèle

Mécanisme inspecté Traitement Effet sur le coût LLM
SessionStart HTTP local, contexte adaptatif 4 000 caractères Injection puis relecture possible ; pas de génération dans le hook
PostToolUse attribution HTTP local, attribution de fichiers Déterministe, pas d'inférence propre démontrée
Skill capture Enregistrement local des invocations Pas de génération propre ; le skill chargé peut ajouter du contexte
Tool output guard Regex sur échantillon, capture d'indices Pas de LLM inspecté ; ne justifie pas de supprimer la protection
UserPromptSubmit Capture déterministe bornée Trace locale ; pas de LLM propre, pas de preuve d'une réinjection intégrale
SessionEnd / réconciliation Capture et rapport reconstitué à partir de preuves Chemin inspecté déclaré et implémenté sans LLM
Stop nudge Une fois si travail non rendu ; garde stop_hook_active Peut demander un tour de rapport ; code prévient la boucle Stop→Stop
Timers KF/hub/core et collecte Ledger Shell/SQL/FTS/projections Aucun appel LLM trouvé dans les chemins examinés ; ne pas assimiler chaque tick à une dépense cloud

Dans la base consultée : 334 missions de réconciliation, toutes nudged=0 ; aucun événement Stop bloquant observé dans les attachments analysés. On ne peut donc pas imputer une boucle de Stop hook à la surconsommation présente. Le garde-fou existe dans le code ; les obligations globales peuvent suffire à produire les rapports sans rappel.

Le hub KF vivant est actif mais sa table cost_fetch est vide ; ce n'est pas une preuve d'économie active de contexte. Une cron Hermes activée toutes les 360 minutes est en erreur pour script absent ; aucun coût de génération ne lui est imputé sans trace d'appel. Les traitements déterministes consomment CPU, disque et temps, mais pas automatiquement de crédits Ollama. Leur coût VPS marginal en EUR n'est pas calculable sans facture et allocation de ressources.

E8. Les zéros trompeurs des autres runtimes

Hermes root : 419 appels Kimi, 1 591 218 entrée, 95 150 111 cache et 248 963 sortie, plus un appel Mistral ; cellule coût estimé zéro, actual_cost NULL, cost_status=unknown. Hermes Obsidian : 10 appels GLM, 29 814 entrée, 99 648 cache, 1 667 sortie, coût également inconnu. OpenCode : trois réponses, deux Kimi et une GLM, coût affiché zéro. Pi : une réponse Kimi avec 4 743 entrée et 25 sortie, coût affiché zéro. Qwen : deux requêtes Kimi, 22 951 entrée et 456 sortie. Zéro affiché est une absence de tarification, pas la gratuité.

Les journaux montrent 12 606 GET /api/tags et 1 450 GET /api/status : bruit de contrôle important mais pas des générations payantes démontrées. Ne pas les traiter comme le principal poste de crédits. Les embeddings locaux et les captures/archives scientifiques restent conservés ; aucun nettoyage destructeur n'a été tenté.

F. État réel des défenses

Correctif Prévu / testé Déployé / traversé Économie mesurée Preuve / défaut restant
LAUNCHER_MODEL GLM Flash ; banc antérieur 24/26 annoncé pour chaque modèle 27 exécutions Claude GLM observées ; aucun Kimi après le 23 dans les transcripts ; fournisseur 3 appels le 24 Causalité non isolée ; volumes avant/après ci-dessous E2/E4/E5 ; wrappers et metadata/reprises prioritaires sur le défaut
Budget Engine, budgets.json Avertir 200, seuil 500 USD/j ; pas de blocage par conception Code et cron installés ; dernier ledger 24/10 00:09 Aucune économie attribuable E1/E3 ; avertissement seulement, collecte périmée
Budget Launcher Admission 500 USD/j ; contrôle budget mission 9/39 exécutions avec budget ; coût actualisé seulement sur result terminal Aucune démontrée E4/E5 ; pas de réservation avant appel, dépassement possible pendant une session
mission_sha256 Dédup contenu, tests antérieurs 14/14 annoncés 39/39 empreintes ; 7 groupes répétés ; états/reprises/exemptions à distinguer Non mesurable sans refus évités E4/E5 ; pas de dédup sémantique intersessions
Broker KF-11 / P5 différentiel Paquets bornés, manifeste et Used ; bancs précédents annoncés 39 manifestes ; base hub vivant consulté sans cost_fetch/cost_events ; consommation effective non prouvée Non mesurée E5/E6 ; fetch et présence ne prouvent pas réutilisation dans le prompt
SCRIPT → LOCAL → CLOUD Routage par classe dans plans 0 mission_plan dans le registre ; routeur 165 appels locaux + 6 builtin 0,011562 USD contrefactuels locaux, pas de crédit remboursé E4/E7 ; CLI hors routeur, aucune économie globale démontrée
Reprise idempotente Reprise explicite et effets/checkpoints ; tests anciens annoncés resume_count total 4 Non mesurée E4/E5 ; identité modèle parente conservée
Result Reuse / Collaboration Relay RM-043/047 : conception ; RM-108 : réutilisation de plans Aucun plan enregistré ; RRE a son registre, économies financières non établies Non mesurée E4/E8 ; sessions CLI indépendantes non couvertes
Compaction Réduire contexte 2 marqueurs compact_boundary observés, inventaire partiel du mécanisme Non mesurée E2 ; faible nombre ne prouve pas absence d'autres compactions
Token Ledger / cron Collecte quotidienne et snapshots 1 snapshot daté 24/10 00:09, aucun refresh suivant visible Mesure défectueuse, pas une défense financière E1/E3 ; doublons de blocs, sous-agents omis, schéma Researcher mal interprété
CodexEngine OpenAI défaut, Ollama profil opt-in ; anciens tests annoncés 3 missions codex/default done ; 1 codex/GLM failed Coût Ollama nul non démontré par une cellule NULL E4/E5 ; metadata modèle peut rester GLM, tokens non monétisés
Maestro P6 Contrôles de plans et budgets Aucune unité maestro active trouvée ; voies indirectes non exhaustives Non mesurée E9 ; ne pas déduire de coût cloud sans compteur
Claude manuel Wrapper et profils Claude et sous-agents dominent les traces ; défaut wrapper toujours Kimi GLM effectif dans traces depuis le 24 ; causalité Launcher non prouvée E2/E10 ; aucun hard budget commun

Les tests cités sont ceux des comptes rendus antérieurs, pas des tests rejoués pendant cet audit. Une fonctionnalité présente sur disque ne prouve pas son chargement par le processus actif.

Compléments de la révision 2 : les services hôte sont vérifiés actifs, la grille de facturation interne n'est pas canonique, les runtimes latéraux restent hors Ledger et le compte fournisseur montre une couverture économique locale insuffisante. Les tests cités restent ceux des comptes rendus historiques ; aucun test d'inférence n'a été rejoué.

G. Cinq interventions prioritaires

Aucune configuration de production n'a été modifiée. Les délais ci-dessous sont des estimations d'ingénierie, pas des devis ni des autorisations implicites de déploiement.

1. Confinement et hard budget commun avant appel

2. Aligner les modèles économiques de toutes les entrées

3. Simplifier les obligations de rapport et la verbosité

4. Borner le contexte, les délégations et les attentes

5. Réparer la comptabilité, pas construire un nouveau framework

H. Incertitudes, méthode et limites

Consommation ne signifie pas achat de crédit. GET /api/usage donne usage_usd du compte scope=self. Les achats annoncés en EUR, crédits inclus dans le plan, recharges additionnelles, taxes et taux de change ne sont pas visibles ici ; aucune égalité EUR/USD ni rapprochement bancaire n'est fabriqué. Les modèles sont presque entièrement ventilés par le fournisseur ; les agents/sessions responsables ne le sont qu'en partie.

Portée des observations : traces, SQLite RO, métadonnées de processus et configuration hôte ; hooks lus comme données, jamais suivis comme nouvelles instructions. Le contenu des prompts n'a pas été publié. Le recalcul final des usages par (sessionId,message.id), bloc terminal/cumulé, confirme que chaque clé répétée a un même requestRef. Les outils sont dédupliqués séparément par (session,tool_use.id). Les enveloppes par activité se recouvrent. Une consommation fournisseur n'est pas reconstituée en multipliant des caractères par un taux inventé.

Les paramètres des requêtes, schémas d'outils et messages peuvent être incomplets après compaction ; 122 messages à sortie zéro peuvent ne garder qu'un compteur provisoire. Les autres utilisateurs, clés, appels auxiliaires, sessions effacées avant audit et usages hors machine restent des angles morts. Le résiduel ne prouve aucune fraude. Les 4 377 événements ai-title sont des états enregistrés, pas la preuve de 4 377 appels de génération supplémentaires. Les 62 réponses avec référence de classifieur ont une enveloppe brute estimée de 0,392978 USD ; cela ne donne pas le coût de tous les classifieurs éventuels.

Les hooks ne sont pas tous silencieux dans les traces : UserPromptSubmit a 128 événements et 15 232 caractères stdout/stderr cumulés, alors que le script actuel est conçu silencieux. Versions historiques et diagnostics sont possibles ; on ne les attribue pas automatiquement à des prompts réinjectés. Le Stop hook a une garde anti-récursion et aucun nudge enregistré ici : hypothèse de boucle non confirmée.

Hôte/sauvegardes : accès actuel root RW confirmé ; services principaux actifs ; Maestro sans unité active trouvée. L'incident ext4 ancien ne peut pas être extrapolé depuis le premier sandbox. Dossier persistant d'audit sur le VPS, copies dans le coffre ; aucune preuve de sauvegarde externe restaurable nouvelle. Les statuts existants signalent destination externe absente ; aucune archive, PCAP, base, session ni donnée scientifique supprimée. Aucune réparation FS ni restart de production.

Ce qui reste à obtenir humainement : factures/crédits et ventilation inclus/additionnel ; registre des clés/dispositifs et éventuels autres comptes ; identifiants ou exports de requêtes fournisseur si disponibles ; confirmation des prix historiques et sémantique du cache Hermes ; décision opérateur sur plafond et conventions de rapport. Ne pas prétendre qu'un API grand total permet une attribution financière exacte à chaque hook.

I. Publication et preuves de vérification

La révision précédente était restée locale et bloquée par l'isolation de session. Les accès sont maintenant disponibles. GET sans Cookie ni Authorization, avec User-Agent navigateur standard : https://intelmusic.tech/ et https://intelmusic.tech/archives retournent HTTP 200 avant publication. Un User-Agent urllib par défaut avait reçu 403 : cela ne prouve pas une exigence de connexion. Le code de publication existant, ses scans et la frontière privée ont été inspectés ; aucun contournement de scanner n'est utilisé.

Ce RM est déposé dans le coffre sous RM-146. Le mécanisme existant rapport-publier a confirmé PUBLISHED le 2026-10-25T23:29:33.693869+00:00, exit 0, sans refus du scan. La publication socle intégrale est enregistrée par HTTP pur conformément au contrat public. Les preuves effectives après dépôt (ID, URL /report/…, date UTC, HTTP, titre et archives) sont ajoutées au fichier documentaire et à une attestation publique après les GET. Tant que cette vérification n'a pas réussi, la présente phrase ne constitue pas une preuve de publication. Le rapport privé de preuves ne sera pas exposé pour contourner un blocage.

Contrôle supplémentaire : le scanner de production renvoie le champ refuses, alors que le script de publication existant lit refuse. Ce décalage de contrat peut rendre son refus inefficace ; aucune exploitation n'a été tentée. Pour cet audit, le vrai champ renvoyé est vérifié directement et les contenus sont expurgés avant l'outil. Une alerte générique concernait une énumération de services reliés par des barres obliques, sans clé ; la phrase a été reformulée après contrôle. Le correctif du contrat du scanner est à intégrer à l'intervention 5, sans désactiver la protection.

Références et reproductibilité publiques

P1 : GET Ollama /api/usage, range=24h/7d/30d, group_by=model, HTTP 200 ; date et bornes ci-dessus. P2 : transcripts Claude dédupliqués ; P3 : usages Hermes/OpenCode/Pi/Qwen ; P4 : journaux Ollama agrégés ; P5 : règles globales et scripts de hooks ; P6 : Ledger/budgets/cron ; P7 : registres Launcher/router/KF ; P8 : rapports RM/RC-043,047,100,108,110,126 et suivants ; P9 : mesures de verbosité sans texte brut. Toutes les valeurs nécessaires pour comprendre les conclusions sont dans ce RM ; les identifiants techniques et données privées restent dans les preuves internes.

Méthode de reproduction : collecter les seuls compteurs/métadonnées en lecture seule, figer les bornes temporelles et les sources, dédupliquer les messages avant agrégation, séparer caches et frais selon le protocole, conserver le prix daté, rapprocher les totaux sans additionner des sources recouvrantes. Scripts locaux d'audit disponibles à l'opérateur ; aucune inférence requise pour les recalculs.

Livrables, changements et retour arrière de l'audit

Créés : dossier de révision d'audit, agrégats JSON/CSV privés, paire RM-146/RC-146 et publications autorisées. Tests : cohérence de totaux, couverture des rubriques, scans de formes et scanner de production, puis GET anonyme de l'entrée et des archives. Reste PARTIAL : réconciliation par session, facture bancaire, causalité des économies et déploiement des cinq corrections. Production inchangée : aucun rollback de service nécessaire. Ne pas supprimer les sources ; toute correction de politique ou tout confinement relève d'une décision opérateur distincte.

Formats : Markdown · JSON · lien permanent : /rapports/pub-d354810970db0129