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
| ID | Décision | Annotation de Tom | Statut | Lié |
|---|---|---|---|---|
| D-001 | Supprimer le mot de passe en clair de l’historique git avant le push public | leave as is | verrouillé | — |
| D-002 | D1 comme source canonique vs miroir Postgres pour Power BI | drop PowerBI completely; D1 on a CF Worker is the canonical db | verrouillé | ch23, ch32 |
| D-003 | Protocole de transport MCP (Streamable HTTP uniquement vs dual) | 100% Cloudflare MCP host; D1 retrieval + long-run CRM; self-hosted email accessible | verrouillé | ch42 |
| D-004 | Couche d’auth MCP (Worker uniquement vs CF Access + bypass bearer) | most Cloudflare-native path; maximally CF-side | verrouillé | ch42 |
| D-005 | Topologie tag/ACL Tailscale | Tailscale is a dev tool for now; already installed on harness, sufficient | ouvert | ch31 |
| D-006 | Ingestion Sodiwin : SFTP uniquement vs SFTP + fallback email | FTP only at Florian’s rolling window; one-time historical dump; written to D1 via ETL | verrouillé | ch14, ch21 |
| D-007 | Découpage du chemin d’upsert (Pattern A seeds vs Pattern B tables chaudes) | depends on shape of Sodiwin data; decision postponed | ouvert | ch23 |
| D-008 | Surface d’exposition du routeur (interne vs router.sodimo.eu) | MCP done = the principal connects the Claude.ai sub and controls everything | verrouillé | ch42 |
| D-009 | Source ruptures/ruptures de stock (Florian a refusé les champs rup*) | compute ourselves; ETL repo concern; option C | verrouillé | ch23 |
| D-010 | CRM natif Sodiwin vs TS custom sur CF Workers | custom TS on CF; inspired by Twenty + Pipedrive; centerpiece; unlocks CF-gated dashboards | verrouillé | ch53 |
| D-011 | Convention de nommage des dépôts dans l’org sodimo | option B — drop prefix inside org | verrouillé | ch51 |
| D-012 | Matrice de visibilité des dépôts | all private until final deployment; exception for sodimo/harness | verrouillé | ch51 |
| D-013 | Schéma frontmatter REPO.md (10 champs vs 5) | use whatever the handbook schema already has | verrouillé | ch51 |
| D-014 | Ce qui entre dans sodimo/harness vs ce qui vit séparément | no Terraform; harness is anything in the Linux server that’s not a dotfile — it programs | verrouillé | ch35 |
| D-015 | Emplacement canonique de la bibliothèque de skills | chezmoi dotfiles-backed; users consume via releases; may add a changelog section | ouvert | ch43 |
| D-016 | Convention de tag de release (calver vs semver) | calver only across all sodimo/* repos; semver dropped | verrouillé | ch51 |
| D-017 | Stratégie de fork du harness | sodimo/harness already done | verrouillé | ch35 |
| D-018 | Porte de préparation end-to-end de sodimo-repo-template | test E2E with harness release as first test, tied to changelog | verrouillé | ch51 |
| D-019 | Séquençage des dépôts annexes pendant que les piliers sont bloqués | one bite at a time | verrouillé | ch51 |
| D-020 | Livrer la brand v2 Cedar/Sumac en production | real nice-to-have; not before Week 3-4; not shown to team until more is shipped | hors-périmètre | — |
| D-021 | Bibliothèque d’icônes (commission sur mesure vs Lucide) | Lucide | verrouillé | — |
| D-022 | Auto-hébergement des polices vs Google Fonts CDN | option A fine; hold off on further brand/design; will use new Claude design later | verrouillé | — |
| D-023 | Version Fedora bootc (41 vs 44) | F44, pinned, resolved | verrouillé | ch35 |
| D-024 | Protocole de montage NAS (NFSv4.1 vs SMB vs les deux) | big blocker; needs in-person resolution mid-Week 2 | ouvert | ch35 |
| D-025 | Topologie réseau vers Halo (repatch vs wifi intérimaire) | ideal handoff: harness in the server rack next to NAS, on company intranet | verrouillé | ch31 |
| D-026 | Spécification UPS | same UPS as current server; not my concern, resolved for a decade | verrouillé | ch35 |
| D-027 | Rétention mail par défaut (10 ans vs 7 ans) | indefinite, redundant backups; still need to resolve “email sent during reboot” | verrouillé | ch34 |
| D-028 | Instrumentation « Déployé = 5 jours » | purpose of the manual; nothing fancy needed; the principal sees completed work not progress | verrouillé | ch28 |
| D-029 | Séquence de bootstrap d’identité admin | CF/Gmail/GitHub/Tailscale set up; domain + email transfer in one day when server arrives | verrouillé | ch35 |
| D-030 | Échelle d’escalade du ticket FAI | no external SMTP provider; this was relevant to email, revisit during migration | ouvert | ch34 |
| D-031 | Nombre canonique de tables (20 vs 21) | built around the Sodiwin data dumps we receive | ouvert | ch24 |
| D-032 | Fenêtre temporelle sur les tables de documents | Friday sent spec (full history forever) | verrouillé | ch23 |
| D-033 | Dump historique one-time encore dû | one-time done by Florian; we work around that | verrouillé | ch14 |
| D-034 | Destinataire des notifications d’échec ETL | the ERP admin; forward to Florian once admin is set up | verrouillé | ch23 |
| D-035 | Élargissement des colonnes base-clients (35 à ~130 cols) | ETL concern when building | ouvert | ch23 |
| D-036 | Périmètre SCD-2 (3 hubs vs 4 vs 5) | ETL concern | ouvert | ch23 |
| D-037 | Clé d’idempotence pour document_lines | ETL concern | ouvert | ch23 |
| D-038 | Cadence d’exécution ETL (timer 03:00 vs inotify) | ETL concern | ouvert | ch23 |
| D-039 | Cadence de snapshot D1 + rétention R2 | D1 daily with time-travel and clear rollback procedure; belongs in the manual | verrouillé | ch23 |
| D-040 | Porte de parité : quelles 2 tables doivent correspondre | ETL concern, to be decided later | ouvert | ch23 |
| D-041 | Sélection du gestionnaire de mots de passe d’équipe | neither hosted option; self-manage; important keys written on paper; Google Password Manager OK | verrouillé | — |
| D-042 | Ordre de bascule MX | make email addresses available to others; easy since we own the email server | ouvert | ch34 |
| D-043 | Smarthost SMTP externe : toujours actif vs fallback uniquement | no external smarthost; defeats the purpose | verrouillé | ch34 |
| D-044 | Rampe DMARC sur sodimo.eu | option C (skip quarantine; none to reject once DKIM clean) | verrouillé | ch34 |
| D-045 | Modèle d’accès Piler (UI Tailscale + CF Tunnel REST) | service token; Claude.ai programmatic access; middle layer on harness possible | verrouillé | ch34 |
| D-046 | Mécanisme de boîte partagée (Dovecot ACL vs Sieve vs alias-fanout) | tbd; want the most feature-rich; aiming for podman quadlet for email | ouvert | ch34 |
| D-047 | Pattern BCC archive (always_bcc entrant + journal sortant) | tbd when we build email | ouvert | ch34 |
| D-048 | Rétention Strato post-bascule | 4 weeks extra safety | verrouillé | ch34 |
| D-049 | Notice de transparence CNIL employés | defer to Chapter 6 handoff; ensure employees read it once | verrouillé | ch34 |
| D-050 | Topologie boîtes orders@ / commandes@ | MCP always uses English; preserve existing email aliases | verrouillé | ch34, ch42 |
| D-051 | Pattern BCC pour les e-mails de commande Sodiwin (sortant commercial) | existing mechanism; keep for later | ouvert | ch34 |
| D-052 | Routage de modèle pour les brouillons de recouvrement | current local models today, new model tomorrow; manage in harness; testing required | verrouillé | ch41 |
| D-053 | Niveau de modèle pour le skill de commentaire mensuel du principal | tbd | ouvert | ch41 |
| D-054 | Plafond mensuel cloud par utilisateur en fallback | cloud fallback is the Claude Code subscription; issue for later | ouvert | — |
| D-055 | Sélection du modèle cloud (Anthropic uniquement vs +OpenAI) | Claude only by design until further notice | verrouillé | ch41 |
| D-056 | Propriété de la clé API (facturation Sodimo vs transfert Thomas) | [redacted — commercial] | hors-périmètre | — |
| D-057 | Plafond d’inférence cloud à l’échelle de l’organisation | [redacted — commercial] | hors-périmètre | — |
| D-058 | Conception du validateur pour l’escalade cloud | cloud escalation is described on the Sodimo website | ouvert | ch41 |
| D-059 | Écart de nombre d’outils MCP (27 vs 18) | tbd final count, feature by feature | ouvert | ch42 |
| D-060 | Kanban dans le CRM | yes Kanban; feature parity and beyond; absorb Pipedrive workflows; CRM is the crown jewel | verrouillé | ch53 |
| D-061 | Calendrier de décommissionnement Pipedrive | progressive rollout; real-world testing | verrouillé | ch53 |
| D-062 | Politique de rotation du bearer-token MCP | to be discussed on MCP repo; most Cloudflare-native way | ouvert | ch42 |
| D-063 | Ensemble d’alias shell du commercial (5 vs 7 vs 3) | CRM concern | ouvert | ch43 |
| D-064 | Miniature photo dans le brief MCP pre-call | tbd | ouvert | ch42 |
| D-065 | Périmètre de déploiement OpenWebUI | another podman quadlet on harness, documented to the team | verrouillé | ch36 |
| D-066 | Contenu de la cadence admin (structuré vs ouvert) | the ERP admin decides; we build the infra | verrouillé | — |
| D-067 | Canal de diffusion du rapport vendredi du principal | teach team to edit dashboards with Claude Code and deploy to CF Pages themselves | verrouillé | ch43 |
| D-068 | [posture commerciale] | [redacted — commercial] | hors-périmètre | — |
| D-069 | Seuil d’envoi automatique Recouvrement pour le Niveau 1 | set 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 subscription | hors-périmètre | — |
| D-073 | Cadence de scoping de la mission Draco | [redacted — commercial] | hors-périmètre | — |
| D-074 | Nombre de chapitres du manuel (7 vs 6 vs 5) | flexible; revise in a focused session on handbook | ouvert | — |
| D-075 | Mécanisme d’exécution de la checklist « Déployé » | dashboard specifics come way later | ouvert | ch28 |
| D-076 | Application de la discipline de régression | convention only is fine; no need to overcomplicate | verrouillé | — |
| D-077 | Format du journal quotidien de mission | daily engagement goes into the daily releases on the changelog | verrouillé | — |
| D-078 | Format de la démo équipe du vendredi | drop; the changelog does that | verrouillé | — |
| D-079 | Cadence de visibilité du ticker PR | all PRs render | verrouillé | — |
| D-080 | Runbook d’échec ETL + chemin d’escalade | ERP-admin email; escalates to Florian; debugs with Claude; texts me if issues | verrouillé | ch23 |
| D-081 | Ton de la relation avec Florian | option A (arm’s-length) | verrouillé | ch14 |
| D-082 | Réduction du périmètre « 10 Inconnues » | some point during the engagement; not priority at all | ouvert | — |
| D-083 | Périmètre et identité Paperclip AI | Paperclip = tool to visualise agent runs dashboard-style; observability on agent runs | verrouillé | ch44 |
| D-084 | Périmètre Paperclip — agents uniquement vs agents + humains | option C (agent now, human T+30); see paperclip doc | verrouillé | ch44 |
| D-085 | Paperclip lecture seule vs file d’approbations | preferred read-only for observability | verrouillé | ch44 |
| D-086 | 20 vs 21 tables D1 canoniques | agent queue/other mechanisms discussed later; prefer D1 airgapped for ERP mirror | verrouillé | ch24 |
| D-087 | Fenêtre d’export Sodiwin (complet vs 18 mois glissants) | already resolved with Florian; done when we build the ETL pipeline | verrouillé | ch14 |
| D-088 | Confirmation de la consolidation schéma 8-vers-20 fichiers | leave for later; finalise D1 tables when Florian gives us data and we write ETL | ouvert | ch23 |
| D-089 | Nommage de la table de file sodiwin-agent | sodiwin agents are not the same as the MCP server; MCP delivers data and wraps ops | ouvert | ch45 |
| D-090 | Visibilité du dépôt Paperclip | will be explained better in the dedicated paperclip file | verrouillé | ch44 |
| D-091 | Protocole distant sodiwin-agent | computer-use agent for the Sodiwin Windows VM; nice to have only | ouvert | ch45 |
| D-092 | Critère de rampe pilote sodiwin-agent | build and deploy early; let people within the company test it | ouvert | ch45 |
| D-093 | Nommage sodimo/paperclip vs sodimo/observability | see paperclip file | ouvert | ch44 |
| D-094 | Consolidation des dépôts email en sodimo-runbooks unique | overwritten into sodimo/mail; DNS thing tbd during mail repo work | verrouillé | ch51 |
| D-095 | Agent SEO pour sodimo.eu | SEO is not my concern; team changes their website themselves once CF is set | hors-périmètre | — |
| D-096 | Périmètre de déploiement OpenWebUI | yes, another quadlet on harness; harness documentation must be strongest point of manual | verrouillé | ch36 |
| D-097 | Posture d’auth OpenWebUI | keep OpenWebUI dead simple; no auth; admin-level for everyone; CF Pages and/or Tailscale | verrouillé | ch36 |
| D-098 | Utilisateurs OpenWebUI et bearer tokens par utilisateur | OpenWebUI only for local AI models hosted on the device, optionally connecting to MCP | verrouillé | ch36 |
| D-099 | OpenWebUI voit Paperclip | OpenWebUI is chat for local models; Paperclip covers background agent runs | verrouillé | ch36, ch44 |
| D-100 | Moonlight/Sunshine pour VNC humain sur le harness | yes, Moonlight installed on harness; more a backup if things go wrong than daily tool | verrouillé | ch35 |
| D-101 | Smarthost externe comme fallback email | drop completely; all Sodimo email hosted locally until further notice | verrouillé | ch34 |
| D-102 | Remplacement du gestionnaire de secrets | to be discussed later; favor on-premise free OSS tools | ouvert | — |
| D-103 | Ordre de bascule MX + confirmation T-schedule | to be discussed during the email migration | ouvert | ch34 |
| D-104 | Destination MX de fallback | Strato while we phase out; self-hosted primary; CF Routing 99% not needed | verrouillé | ch34 |
| D-105 | Délégation PTR depuis le fournisseur IP upstream | to be resolved during email migration | ouvert | ch34 |
| D-106 | Rétention 7 ans vs 10 ans (vs tripartite) | hold all emails, ever; full archive; ~100 GB cap for decades is not a problem | verrouillé | ch34 |
| D-107 | Destinataire des alertes d’échec ETL | ETL issues are near-fatal; I remain available to deploy emergency fixes | verrouillé | ch23 |
| D-108 | Vue v_cultural_calendar dans le schéma D1 final | vestigial from initial research; drop completely | hors-périmètre | — |
| D-109 | Système de buffer Rouge/Jaune/Vert DDMRP | vestigial; drop | hors-périmètre | — |
| D-110 | Prévision de demande double-calendrier | vestigial; drop | hors-périmètre | — |
| D-111 | Réconciliation SPF MailerLite + Shopify/Oxatis | MailerLite fully unused; kill entirely; make self-hosted; Shopify is the company’s scope | verrouillé | ch34 |
| D-112 | Réutilisation de la réputation IP Halo | part of email transition; agreed re: warmup | ouvert | ch34 |
| D-113 | Pattern domaine séparé pour la prospection froide | decided NOT to do cold outreach; no cold outbound from the harness that carries the inbox | verrouillé | ch34 |
| D-114 | Implémentation de la boîte partagée (Dovecot ACL vs forwarder) | Postfix virtual aliases good enough; Dovecot ACL also fine; explain, don’t finalize | ouvert | ch34 |
| D-115 | Confirmation de l’ordre de traitement imapsync | gets done once, over the weekend; not a big problem | verrouillé | ch34 |
| D-116 | Stack de monitoring de délivrabilité | thinnest defensible stack | verrouillé | ch34 |
| D-117 | Runtime d’inférence locale principal | llama.cpp in a toolbox; final decision; no alternative runtime whatsoever | verrouillé | ch41 |
| D-118 | Périmètre de construction de l’ensemble MoA | dense vs MoA doesn’t matter; only constraint is best available model on our hardware | verrouillé | ch41 |
| D-119 | Mise en scène de l’écosystème vocal | drop voice ecosystem completely; WhatsApp gets a scoped bot with strong guardrails | verrouillé | ch54 |
| D-120 | 24 IDs de skills canoniques — découpage 15 production vs 9 stubs | leave that granularity for later; my job is infrastructure for skill sharing | hors-périmètre | ch43 |
| D-121 | Séquençage du modèle + exemples pour le skill de commentaire mensuel | just another skill; not important | hors-périmètre | — |
| D-122 | Couverture du validateur au niveau skill | drop; skills are not my responsibility until perhaps the final week | hors-périmètre | — |
| D-123 | Cadence des ensembles d’évaluation | evals are not something Sodimo must do itself; teach them to upgrade LLMs | hors-périmètre | — |
| D-124 | Nettoyage de la fuite « Claude par défaut » du mardi | heuristic to teach the team, not enforced at UI/UX level | ouvert | ch41 |
| D-125 | Périmètre du Kanban CRM | yes Kanban; spending a full week refining the final CRM version | verrouillé | ch53 |
| D-126 | Outil delta-alert Sodimo | yes, this is indeed needed | verrouillé | ch53 |
| D-127 | Seuil d’envoi automatique Recouvrement Niveau 1 | auto-send + escalation to management are CRM-side concerns | verrouillé | ch53 |
| D-128 | Sodiwin Kanban-dans-CRM — vues spécifiques du commercial | no sodiwin-in-CRM; clear layer of separation; sodiwin-as-blackbox matters here | verrouillé | ch53 |
| D-129 | Fonctionnalités Twenty CRM + Pipedrive à absorber | dedicated one-on-one with the sales lead; he is scoping his CRM of dreams; not a major blocker | ouvert | ch53 |
| D-130 | Triage des idées du corpus de recherche | ideas + admin feedback become a Sodimo SOUL.md; three-year plan for the principal; purge research | ouvert | — |
| D-131 | Détection de restaurant pré-ouverture | sales strategy to incorporate into the CRM | ouvert | ch53 |
| D-132 | Décision de certification halal | not my problem | hors-périmètre | — |
| D-133 | Sessions de mémoire institutionnelle de l’admin | needs doing before I leave; not crucial to my success | ouvert | — |
| D-134 | Passage mardi par dépôt sur les 28 dépôts | list of repos still being finalized; issues added to repos we created; list finalized today | verrouillé | ch51 |
| D-135 | Adoption de la définition formelle de « Déployé » | semantics; not sending energy on that | ouvert | ch28 |
| D-136 | Propriétaire du tableau de bord espace-hypothèses | I teach the team to build dashboards; I don’t build them | verrouillé | ch43 |
| D-137 | [posture politique] | [redacted — commercial] | hors-périmètre | — |
| D-138 | Digest hebdomadaire — existence + diffusion | this is what the changelog and manual are for | verrouillé | — |
| D-139 | Périmètre d’identité Paperclip (utilisateurs Claude.ai vs tous les authentifiés) | will explain clearly what I mean with paperclip | ouvert | ch44 |
| D-140 | Coexistence chemin de lecture vs chemin d’écriture Sodiwin | writing to Sodiwin may be explored later; for now keep the black-box concept | verrouillé | ch14, ch45 |
| D-141 | Modèle cloud vs local pour sodiwin-agent computer-use | deferred; nice to have, not the cornerstone | hors-périmètre | ch45 |
| D-142 | Mainteneur post-mission de sodiwin-agent | I build self-healing parts; tech choice (bootc + quadlets + backups + rollbacks) minimises risk | verrouillé | ch35, ch45 |
| D-143 | Harness de smoke-test quotidien sodiwin-agent | same as above — self-healing + robust tech minimises risk | verrouillé | ch45 |
| D-144 | Couche meta-bot Bot I1-I4 | resolve with paperclip | ouvert | ch44 |
| D-145 | Remappage du stockage par secret | to be determined later; leanest possible setup | ouvert | — |
| D-146 | Cadence de rampe DMARC | to be determined as we do the mail migration; add a note | ouvert | ch34 |
| D-147 | Rétention Strato post-bascule | Strato retention in place until I leave; detail; not thinking about 2 vs 4 weeks | verrouillé | ch34 |
| D-148 | Priorité de la notice CNIL (blocage chapitre 3 vs différé chapitre 6) | part of the email transition; easy | verrouillé | ch34 |
| D-149 | Messagerie vocale vers commande (J1) — livrer vs différer | extremely secondary; drop | hors-périmètre | — |
| D-150 | Agent vocal en direct (J2) — critère d’évaluation T+30 | drop never-ship; add as option for later | hors-périmètre | — |
| D-151 | Signature DKIM — rspamd vs OpenDKIM | taken as part of the investigation for mail setup | ouvert | ch34 |
| D-152 | Topologie MX actif/actif vs actif/passif | problem for when I build email; CF Routing as fallback when harness is down is good | ouvert | ch34 |
| D-181 | amd-strix-halo-toolboxes de kyuz0 adopté comme référence canonique du runtime llama.cpp sur Strix Halo | pin 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-182 | La 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 latents | verrouillé | ch38, ch41 |
| D-183 | La cible proxy: dans llama-swap.yaml utilise http://127.0.0.1:NNNN, jamais le DNS du conteneur | llama-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 fichier | verrouillé | ch38, ch41 |
| D-184 | Alias 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-185 | Posture de groupes rootless podman 5.8.2 : GroupAdd=video uniquement | suppression 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-186 | Les références d’images de conteneurs doivent être fully-qualified | twenty.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-187 | Les 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#12 | verrouillé | ch38, ch44 |
| D-188 | Le 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éfaut | discipline 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 kyuz0 | verrouillé | ch15, ch41 |
| D-189 | Le compteur d’usage IA locale est adossé au ledger via ledger_write Worker → run_ledger ; Prometheus/Grafana non activés en v1 | chaque 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 5a | verrouillé | 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.