Chapitre 32 / 39

Annexe : journal des décisions

Statut : En ligne

Cette annexe est le journal complet des décisions de la mission. Sur cinq semaines, 152 décisions nommées (D-001 à D-152) ont été soulevées, délibérées, puis soit verrouillées, laissées ouvertes, ou marquées hors périmètre. Chacune a été annotée par Tom dans les fichiers sources ; le tableau ci-dessous est ce journal sous forme compacte.

L’annexe existe pour deux raisons. Premièrement, les fichiers ANNOTATED antérieurs qui contenaient ces annotations vivaient en dehors de l’artefact de livraison et n’étaient pas visibles pour quiconque lisant ce manuel — quiconque voulait savoir pourquoi un chapitre dit ce qu’il dit n’avait aucun moyen de le remonter. L’annexe comble ce manque. Deuxièmement, les décisions sont l’archive archéologique du projet : quand un futur ingénieur regardera un quadlet, une table ou un workflow et se demandera pourquoi il a été conçu ainsi, le numéro D dans ce journal est la réponse en source primaire.

Comment lire le tableau. Chaque ligne est une décision. La colonne ID est le numéro D attribué quand la décision a été soulevée. La colonne Décision est un bref résumé de la question. La colonne Annotation est l’arbitrage réel de Tom, transcrit (légèrement réduit pour tenir ; les commentaires sensibles ou hors périmètre sont marqués [redacted]). La colonne Statut réduit le résultat à l’un de quatre compartiments : verrouillé (un arbitrage a été rendu et il se reflète ailleurs dans le manuel), ouvert (encore à résoudre, habituellement à un moment ultérieur précis comme « pendant la migration email »), ou hors-périmètre (explicitement abandonné ou différé au-delà de la mission). La colonne Lié pointe vers le chapitre où la décision atterrit, quand il en existe un.

D-001 à D-082 proviennent du passage ANNOTATED du lundi en fin de Semaine 1. D-083 à D-152 proviennent du passage ANNOTATED du mardi qui a clôt l’architecture de la Semaine 2. Les notes de dépendances transversales sont omises de ce tableau pour la lisibilité ; elles se trouvent dans les fichiers sources.


Tableau des décisions

IDDécisionAnnotation de TomStatutLié
D-001Supprimer le mot de passe en clair de l’historique git avant le push publicleave as isverrouillé
D-002D1 comme source canonique vs miroir Postgres pour Power BIdrop PowerBI completely; D1 on a CF Worker is the canonical dbverrouilléch23, ch32
D-003Protocole de transport MCP (Streamable HTTP uniquement vs dual)100% Cloudflare MCP host; D1 retrieval + long-run CRM; self-hosted email accessibleverrouilléch42
D-004Couche d’auth MCP (Worker uniquement vs CF Access + bypass bearer)most Cloudflare-native path; maximally CF-sideverrouilléch42
D-005Topologie tag/ACL TailscaleTailscale is a dev tool for now; already installed on harness, sufficientouvertch31
D-006Ingestion Sodiwin : SFTP uniquement vs SFTP + fallback emailFTP only at Florian’s rolling window; one-time historical dump; written to D1 via ETLverrouilléch14, ch21
D-007Découpage du chemin d’upsert (Pattern A seeds vs Pattern B tables chaudes)depends on shape of Sodiwin data; decision postponedouvertch23
D-008Surface d’exposition du routeur (interne vs router.sodimo.eu)MCP done = the principal connects the Claude.ai sub and controls everythingverrouilléch42
D-009Source ruptures/ruptures de stock (Florian a refusé les champs rup*)compute ourselves; ETL repo concern; option Cverrouilléch23
D-010CRM natif Sodiwin vs TS custom sur CF Workerscustom TS on CF; inspired by Twenty + Pipedrive; centerpiece; unlocks CF-gated dashboardsverrouilléch53
D-011Convention de nommage des dépôts dans l’org sodimooption B — drop prefix inside orgverrouilléch51
D-012Matrice de visibilité des dépôtsall private until final deployment; exception for sodimo/harnessverrouilléch51
D-013Schéma frontmatter REPO.md (10 champs vs 5)use whatever the handbook schema already hasverrouilléch51
D-014Ce qui entre dans sodimo/harness vs ce qui vit séparémentno Terraform; harness is anything in the Linux server that’s not a dotfile — it programsverrouilléch35
D-015Emplacement canonique de la bibliothèque de skillschezmoi dotfiles-backed; users consume via releases; may add a changelog sectionouvertch43
D-016Convention de tag de release (calver vs semver)calver only across all sodimo/* repos; semver droppedverrouilléch51
D-017Stratégie de fork du harnesssodimo/harness already doneverrouilléch35
D-018Porte de préparation end-to-end de sodimo-repo-templatetest E2E with harness release as first test, tied to changelogverrouilléch51
D-019Séquençage des dépôts annexes pendant que les piliers sont bloquésone bite at a timeverrouilléch51
D-020Livrer la brand v2 Cedar/Sumac en productionreal nice-to-have; not before Week 3-4; not shown to team until more is shippedhors-périmètre
D-021Bibliothèque d’icônes (commission sur mesure vs Lucide)Lucideverrouillé
D-022Auto-hébergement des polices vs Google Fonts CDNoption A fine; hold off on further brand/design; will use new Claude design laterverrouillé
D-023Version Fedora bootc (41 vs 44)F44, pinned, resolvedverrouilléch35
D-024Protocole de montage NAS (NFSv4.1 vs SMB vs les deux)big blocker; needs in-person resolution mid-Week 2ouvertch35
D-025Topologie réseau vers Halo (repatch vs wifi intérimaire)ideal handoff: harness in the server rack next to NAS, on company intranetverrouilléch31
D-026Spécification UPSsame UPS as current server; not my concern, resolved for a decadeverrouilléch35
D-027Rétention mail par défaut (10 ans vs 7 ans)indefinite, redundant backups; still need to resolve “email sent during reboot”verrouilléch34
D-028Instrumentation « Déployé = 5 jours »purpose of the manual; nothing fancy needed; the principal sees completed work not progressverrouilléch28
D-029Séquence de bootstrap d’identité adminCF/Gmail/GitHub/Tailscale set up; domain + email transfer in one day when server arrivesverrouilléch35
D-030Échelle d’escalade du ticket FAIno external SMTP provider; this was relevant to email, revisit during migrationouvertch34
D-031Nombre canonique de tables (20 vs 21)built around the Sodiwin data dumps we receiveouvertch24
D-032Fenêtre temporelle sur les tables de documentsFriday sent spec (full history forever)verrouilléch23
D-033Dump historique one-time encore dûone-time done by Florian; we work around thatverrouilléch14
D-034Destinataire des notifications d’échec ETLthe ERP admin; forward to Florian once admin is set upverrouilléch23
D-035Élargissement des colonnes base-clients (35 à ~130 cols)ETL concern when buildingouvertch23
D-036Périmètre SCD-2 (3 hubs vs 4 vs 5)ETL concernouvertch23
D-037Clé d’idempotence pour document_linesETL concernouvertch23
D-038Cadence d’exécution ETL (timer 03:00 vs inotify)ETL concernouvertch23
D-039Cadence de snapshot D1 + rétention R2D1 daily with time-travel and clear rollback procedure; belongs in the manualverrouilléch23
D-040Porte de parité : quelles 2 tables doivent correspondreETL concern, to be decided laterouvertch23
D-041Sélection du gestionnaire de mots de passe d’équipeneither hosted option; self-manage; important keys written on paper; Google Password Manager OKverrouillé
D-042Ordre de bascule MXmake email addresses available to others; easy since we own the email serverouvertch34
D-043Smarthost SMTP externe : toujours actif vs fallback uniquementno external smarthost; defeats the purposeverrouilléch34
D-044Rampe DMARC sur sodimo.euoption C (skip quarantine; none to reject once DKIM clean)verrouilléch34
D-045Modèle d’accès Piler (UI Tailscale + CF Tunnel REST)service token; Claude.ai programmatic access; middle layer on harness possibleverrouilléch34
D-046Mécanisme de boîte partagée (Dovecot ACL vs Sieve vs alias-fanout)tbd; want the most feature-rich; aiming for podman quadlet for emailouvertch34
D-047Pattern BCC archive (always_bcc entrant + journal sortant)tbd when we build emailouvertch34
D-048Rétention Strato post-bascule4 weeks extra safetyverrouilléch34
D-049Notice de transparence CNIL employésdefer to Chapter 6 handoff; ensure employees read it onceverrouilléch34
D-050Topologie boîtes orders@ / commandes@MCP always uses English; preserve existing email aliasesverrouilléch34, ch42
D-051Pattern BCC pour les e-mails de commande Sodiwin (sortant commercial)existing mechanism; keep for laterouvertch34
D-052Routage de modèle pour les brouillons de recouvrementcurrent local models today, new model tomorrow; manage in harness; testing requiredverrouilléch41
D-053Niveau de modèle pour le skill de commentaire mensuel du principaltbdouvertch41
D-054Plafond mensuel cloud par utilisateur en fallbackcloud fallback is the Claude Code subscription; issue for laterouvert
D-055Sélection du modèle cloud (Anthropic uniquement vs +OpenAI)Claude only by design until further noticeverrouilléch41
D-056Propriété de la clé API (facturation Sodimo vs transfert Thomas)[redacted — commercial]hors-périmètre
D-057Plafond d’inférence cloud à l’échelle de l’organisation[redacted — commercial]hors-périmètre
D-058Conception du validateur pour l’escalade cloudcloud escalation is described on the Sodimo websiteouvertch41
D-059Écart de nombre d’outils MCP (27 vs 18)tbd final count, feature by featureouvertch42
D-060Kanban dans le CRMyes Kanban; feature parity and beyond; absorb Pipedrive workflows; CRM is the crown jewelverrouilléch53
D-061Calendrier de décommissionnement Pipedriveprogressive rollout; real-world testingverrouilléch53
D-062Politique de rotation du bearer-token MCPto be discussed on MCP repo; most Cloudflare-native wayouvertch42
D-063Ensemble d’alias shell du commercial (5 vs 7 vs 3)CRM concernouvertch43
D-064Miniature photo dans le brief MCP pre-calltbdouvertch42
D-065Périmètre de déploiement OpenWebUIanother podman quadlet on harness, documented to the teamverrouilléch36
D-066Contenu de la cadence admin (structuré vs ouvert)the ERP admin decides; we build the infraverrouillé
D-067Canal de diffusion du rapport vendredi du principalteach team to edit dashboards with Claude Code and deploy to CF Pages themselvesverrouilléch43
D-068[posture commerciale][redacted — commercial]hors-périmètre
D-069Seuil d’envoi automatique Recouvrement pour le Niveau 1set up with good CRM; add to CRM features (think like an engineer)verrouilléch53
D-070[commercial][redacted — commercial]hors-périmètre
D-071[commercial][redacted — commercial]hors-périmètre
D-072[transfert abonnement Claude.ai]drop fully; the sales lead has his own subscriptionhors-périmètre
D-073Cadence de scoping de la mission Draco[redacted — commercial]hors-périmètre
D-074Nombre de chapitres du manuel (7 vs 6 vs 5)flexible; revise in a focused session on handbookouvert
D-075Mécanisme d’exécution de la checklist « Déployé »dashboard specifics come way laterouvertch28
D-076Application de la discipline de régressionconvention only is fine; no need to overcomplicateverrouillé
D-077Format du journal quotidien de missiondaily engagement goes into the daily releases on the changelogverrouillé
D-078Format de la démo équipe du vendredidrop; the changelog does thatverrouillé
D-079Cadence de visibilité du ticker PRall PRs renderverrouillé
D-080Runbook d’échec ETL + chemin d’escaladeERP-admin email; escalates to Florian; debugs with Claude; texts me if issuesverrouilléch23
D-081Ton de la relation avec Florianoption A (arm’s-length)verrouilléch14
D-082Réduction du périmètre « 10 Inconnues »some point during the engagement; not priority at allouvert
D-083Périmètre et identité Paperclip AIPaperclip = tool to visualise agent runs dashboard-style; observability on agent runsverrouilléch44
D-084Périmètre Paperclip — agents uniquement vs agents + humainsoption C (agent now, human T+30); see paperclip docverrouilléch44
D-085Paperclip lecture seule vs file d’approbationspreferred read-only for observabilityverrouilléch44
D-08620 vs 21 tables D1 canoniquesagent queue/other mechanisms discussed later; prefer D1 airgapped for ERP mirrorverrouilléch24
D-087Fenêtre d’export Sodiwin (complet vs 18 mois glissants)already resolved with Florian; done when we build the ETL pipelineverrouilléch14
D-088Confirmation de la consolidation schéma 8-vers-20 fichiersleave for later; finalise D1 tables when Florian gives us data and we write ETLouvertch23
D-089Nommage de la table de file sodiwin-agentsodiwin agents are not the same as the MCP server; MCP delivers data and wraps opsouvertch45
D-090Visibilité du dépôt Paperclipwill be explained better in the dedicated paperclip fileverrouilléch44
D-091Protocole distant sodiwin-agentcomputer-use agent for the Sodiwin Windows VM; nice to have onlyouvertch45
D-092Critère de rampe pilote sodiwin-agentbuild and deploy early; let people within the company test itouvertch45
D-093Nommage sodimo/paperclip vs sodimo/observabilitysee paperclip fileouvertch44
D-094Consolidation des dépôts email en sodimo-runbooks uniqueoverwritten into sodimo/mail; DNS thing tbd during mail repo workverrouilléch51
D-095Agent SEO pour sodimo.euSEO is not my concern; team changes their website themselves once CF is sethors-périmètre
D-096Périmètre de déploiement OpenWebUIyes, another quadlet on harness; harness documentation must be strongest point of manualverrouilléch36
D-097Posture d’auth OpenWebUIkeep OpenWebUI dead simple; no auth; admin-level for everyone; CF Pages and/or Tailscaleverrouilléch36
D-098Utilisateurs OpenWebUI et bearer tokens par utilisateurOpenWebUI only for local AI models hosted on the device, optionally connecting to MCPverrouilléch36
D-099OpenWebUI voit PaperclipOpenWebUI is chat for local models; Paperclip covers background agent runsverrouilléch36, ch44
D-100Moonlight/Sunshine pour VNC humain sur le harnessyes, Moonlight installed on harness; more a backup if things go wrong than daily toolverrouilléch35
D-101Smarthost externe comme fallback emaildrop completely; all Sodimo email hosted locally until further noticeverrouilléch34
D-102Remplacement du gestionnaire de secretsto be discussed later; favor on-premise free OSS toolsouvert
D-103Ordre de bascule MX + confirmation T-scheduleto be discussed during the email migrationouvertch34
D-104Destination MX de fallbackStrato while we phase out; self-hosted primary; CF Routing 99% not neededverrouilléch34
D-105Délégation PTR depuis le fournisseur IP upstreamto be resolved during email migrationouvertch34
D-106Rétention 7 ans vs 10 ans (vs tripartite)hold all emails, ever; full archive; ~100 GB cap for decades is not a problemverrouilléch34
D-107Destinataire des alertes d’échec ETLETL issues are near-fatal; I remain available to deploy emergency fixesverrouilléch23
D-108Vue v_cultural_calendar dans le schéma D1 finalvestigial from initial research; drop completelyhors-périmètre
D-109Système de buffer Rouge/Jaune/Vert DDMRPvestigial; drophors-périmètre
D-110Prévision de demande double-calendriervestigial; drophors-périmètre
D-111Réconciliation SPF MailerLite + Shopify/OxatisMailerLite fully unused; kill entirely; make self-hosted; Shopify is the company’s scopeverrouilléch34
D-112Réutilisation de la réputation IP Halopart of email transition; agreed re: warmupouvertch34
D-113Pattern domaine séparé pour la prospection froidedecided NOT to do cold outreach; no cold outbound from the harness that carries the inboxverrouilléch34
D-114Implémentation de la boîte partagée (Dovecot ACL vs forwarder)Postfix virtual aliases good enough; Dovecot ACL also fine; explain, don’t finalizeouvertch34
D-115Confirmation de l’ordre de traitement imapsyncgets done once, over the weekend; not a big problemverrouilléch34
D-116Stack de monitoring de délivrabilitéthinnest defensible stackverrouilléch34
D-117Runtime d’inférence locale principalllama.cpp in a toolbox; final decision; no alternative runtime whatsoeververrouilléch41
D-118Périmètre de construction de l’ensemble MoAdense vs MoA doesn’t matter; only constraint is best available model on our hardwareverrouilléch41
D-119Mise en scène de l’écosystème vocaldrop voice ecosystem completely; WhatsApp gets a scoped bot with strong guardrailsverrouilléch54
D-12024 IDs de skills canoniques — découpage 15 production vs 9 stubsleave that granularity for later; my job is infrastructure for skill sharinghors-périmètrech43
D-121Séquençage du modèle + exemples pour le skill de commentaire mensueljust another skill; not importanthors-périmètre
D-122Couverture du validateur au niveau skilldrop; skills are not my responsibility until perhaps the final weekhors-périmètre
D-123Cadence des ensembles d’évaluationevals are not something Sodimo must do itself; teach them to upgrade LLMshors-périmètre
D-124Nettoyage de la fuite « Claude par défaut » du mardiheuristic to teach the team, not enforced at UI/UX levelouvertch41
D-125Périmètre du Kanban CRMyes Kanban; spending a full week refining the final CRM versionverrouilléch53
D-126Outil delta-alert Sodimoyes, this is indeed neededverrouilléch53
D-127Seuil d’envoi automatique Recouvrement Niveau 1auto-send + escalation to management are CRM-side concernsverrouilléch53
D-128Sodiwin Kanban-dans-CRM — vues spécifiques du commercialno sodiwin-in-CRM; clear layer of separation; sodiwin-as-blackbox matters hereverrouilléch53
D-129Fonctionnalités Twenty CRM + Pipedrive à absorberdedicated one-on-one with the sales lead; he is scoping his CRM of dreams; not a major blockerouvertch53
D-130Triage des idées du corpus de rechercheideas + admin feedback become a Sodimo SOUL.md; three-year plan for the principal; purge researchouvert
D-131Détection de restaurant pré-ouverturesales strategy to incorporate into the CRMouvertch53
D-132Décision de certification halalnot my problemhors-périmètre
D-133Sessions de mémoire institutionnelle de l’adminneeds doing before I leave; not crucial to my successouvert
D-134Passage mardi par dépôt sur les 28 dépôtslist of repos still being finalized; issues added to repos we created; list finalized todayverrouilléch51
D-135Adoption de la définition formelle de « Déployé »semantics; not sending energy on thatouvertch28
D-136Propriétaire du tableau de bord espace-hypothèsesI teach the team to build dashboards; I don’t build themverrouilléch43
D-137[posture politique][redacted — commercial]hors-périmètre
D-138Digest hebdomadaire — existence + diffusionthis is what the changelog and manual are forverrouillé
D-139Périmètre d’identité Paperclip (utilisateurs Claude.ai vs tous les authentifiés)will explain clearly what I mean with paperclipouvertch44
D-140Coexistence chemin de lecture vs chemin d’écriture Sodiwinwriting to Sodiwin may be explored later; for now keep the black-box conceptverrouilléch14, ch45
D-141Modèle cloud vs local pour sodiwin-agent computer-usedeferred; nice to have, not the cornerstonehors-périmètrech45
D-142Mainteneur post-mission de sodiwin-agentI build self-healing parts; tech choice (bootc + quadlets + backups + rollbacks) minimises riskverrouilléch35, ch45
D-143Harness de smoke-test quotidien sodiwin-agentsame as above — self-healing + robust tech minimises riskverrouilléch45
D-144Couche meta-bot Bot I1-I4resolve with paperclipouvertch44
D-145Remappage du stockage par secretto be determined later; leanest possible setupouvert
D-146Cadence de rampe DMARCto be determined as we do the mail migration; add a noteouvertch34
D-147Rétention Strato post-basculeStrato retention in place until I leave; detail; not thinking about 2 vs 4 weeksverrouilléch34
D-148Priorité de la notice CNIL (blocage chapitre 3 vs différé chapitre 6)part of the email transition; easyverrouilléch34
D-149Messagerie vocale vers commande (J1) — livrer vs différerextremely secondary; drophors-périmètre
D-150Agent vocal en direct (J2) — critère d’évaluation T+30drop never-ship; add as option for laterhors-périmètre
D-151Signature DKIM — rspamd vs OpenDKIMtaken as part of the investigation for mail setupouvertch34
D-152Topologie MX actif/actif vs actif/passifproblem for when I build email; CF Routing as fallback when harness is down is goodouvertch34
D-181amd-strix-halo-toolboxes de kyuz0 adopté comme référence canonique du runtime llama.cpp sur Strix Halopin du SHA upstream kyuz0 1421e8706020e8d7e797f71b9f28cd3072e7f868 ; les jeux de flags cmd: des modèles llama-swap sont repris verbatim des Dockerfiles et du README de kyuz0 ; le runbook de resynchronisation vit dans docs/resync-runbook.md du dépôt sodimo/dotfiles. Remplace la config llama-swap génériq lever-labs par un chemin de référence validé sur ce silicon — supprime toute une classe de questions « est-ce que ça marche sur ce silicon ? »verrouilléch38, ch41
D-182La passerelle llama-swap exécute /app/llama-server directement (pas ramalama)découvert lors de l’intégration kyuz0 que ghcr.io/mostlygeek/llama-swap:vulkan ne contient PAS de binaire ramalama — les anciens blocs cmd: avec ramalama --runtime llama.cpp run auraient échoué au premier chargement de modèle. Appeler /app/llama-server directement correspond au pattern d’invocation des toolboxes kyuz0 et supprime une classe de bugs latentsverrouilléch38, ch41
D-183La cible proxy: dans llama-swap.yaml utilise http://127.0.0.1:NNNN, jamais le DNS du conteneurllama-swap et le llama-server lancé partagent un netns ; utiliser le nom DNS du conteneur (http://llama-swap:NNNN) force un aller-retour netavark qui produit des 502 sous le DNAT hijack d’adguard après la première requête. La forme loopback a été vérifiée corrigée lors du smoke test du mercredi soir (5,4 s à froid, 0,08 s à chaud). S’applique à chaque URL proxy: du fichierverrouilléch38, ch41
D-184Alias local-heavy = gpt-oss-120b (unsloth UD-Q8_K_XL, GGUF 2 shards, 65k ctx, reasoning_effort=high)remplace le câblage gpt-oss-20b précédent dans litellm.yaml. gpt-oss-120b en Q8 tient dans le budget mémoire unifiée du Framework Desktop 128 Go et représente la classe de poids qui rend l’argument « l’inférence locale est first-class » crédible auprès de Michel. Première validation en production différée au harness prod (téléchargement de 100 Go + gate kernel cmdline kyuz0)verrouilléch41
D-185Posture de groupes rootless podman 5.8.2 : GroupAdd=video uniquementsuppression de GroupAdd=keep-groups et PodmanArgs=--group-add=render dans llama-swap.container. Sous rootless podman 5.8.2, la combinaison est incompatible et empêche llama-swap d’atteindre Active. video seul suffit pour RADV sur gfx1151. /dev/kfd + HSA_OVERRIDE_GFX_VERSION=11.0.0 conservés comme candidats à la suppression pour la compatibilité ROCm future (voir sodimo/dotfiles#14)verrouilléch38
D-186Les références d’images de conteneurs doivent être fully-qualifiedtwenty.container + twenty-worker.container épinglés à docker.io/twentycrm/twenty:v2.0.0. La politique de short-name échoue sur les chemins de mise à jour non-TTY (podman auto-update, premier boot bootc) car il n’y a aucune invite pour désambiguïser le registre. S’applique à chaque quadlet ; l’épinglage par digest est le pass de durcissement suivant (D-167)verrouilléch38
D-187Les images dérivées Sodimo vivent dans docker/<name>/Dockerfile, taguées ghcr.io/sodimo/<name>:v<upstream>-pi<resolved>première instance : docker/paperclip/Dockerfile qui superpose @mariozechner/pi@latest sur ghcr.io/paperclipai/paperclip:sha-b8725c5 ; build local abouti en ghcr.io/sodimo/paperclip:v2026.416.0-pi0.x.y (2,55 Go). Établit le pattern pour toute future image Sodimo : répertoire docker/ à la racine, base épinglée par SHA upstream, tag calver + dep résolue. Chemin de publication GHA + write:packages org suivi dans sodimo/dotfiles#12verrouilléch38, ch44
D-188Le routage LLM par défaut est local-first ; le cloud (Claude Opus via l’alias cloud-heavy) est une escalade opt-in par invocation, pas la valeur par défautdiscipline d’économies de tokens sous le Principe 2 : cost_eur vaut 0 pour chaque run local ; cost_eur_if_cloud enregistre le contrefactuel. Commencer par Opus et basculer sur le local inverse l’économie — le chiffre d’économies devient alors une affirmation sur un cas d’exception plutôt que sur la ligne de base. Quatre déclencheurs d’escalade sont énumérés dans ch41 ; aucune escalade silencieuse sans flag explicite escalate: "cloud-heavy" dans l’invocation de l’outil. gpt-oss-120b en UD-Q8_K_XL sur 128 Go Strix Halo a comblé l’écart de capacité pour une large part des tâches au 2026-04-22 après l’intégration kyuz0verrouilléch15, ch41
D-189Le compteur d’usage IA locale est adossé au ledger via ledger_write Worker → run_ledger ; Prometheus/Grafana non activés en v1chaque run llama-swap émet une ligne run_ledger avec cost_eur=0 et cost_eur_if_cloud fixé au prix cloud contrefactuel. SUM(cost_eur_if_cloud) - SUM(cost_eur) sur toutes les lignes locales donne le chiffre d’économies phare — une seule requête SQL, pas de pipeline de métriques séparé. Un tableau de bord Grafana nécessiterait un bridge D1-to-Prometheus sans valeur analytique supplémentaire en v1. Surface : compteur cumulatif sur la tuile launchpad (ch61) + graphique 7 jours glissants sur une page adjacente au progrès (emplacement exact ouvert). Revisit Grafana/Prometheus différé en Pivot 5averrouilléch41, ch42, ch61

Comment utiliser ce journal

Le tableau ci-dessus est l’index de décisions faisant autorité ; les chapitres du manuel sont l’endroit où ces décisions atterrissent. Si un chapitre semble contredire le tableau, le tableau l’emporte jusqu’à ce que le chapitre soit mis à jour pour correspondre. Si une décision est marquée ouvert, elle n’a pas encore été résolue — le chapitre lié (quand il en existe un) décrit la meilleure compréhension actuelle, et la résolution vit avec le travail identifié dans l’annotation.

Trois modes de lecture valent la peine d’être connus :

  • « Pourquoi c’est comme ça ? » Commencer par le chapitre lié, trouver le numéro D qu’il référence, lire la ligne ici, et le fichier ANNOTATED source à ~/sodimo/secondweek/ si vous avez besoin du contexte plus long.
  • « Qu’est-ce qui est encore ouvert ? » Filtrer la colonne Statut sur ouvert. Ce sont les questions vives.
  • « Qu’est-ce qui a été abandonné et pourquoi ? » Filtrer sur hors-périmètre. Ce sont les réductions de périmètre qui ont gardé la mission livrable ; l’annotation explique la raison.