Skip to main content
Jonathan Andrei
04 / Journaux de construction

Histoires de la construction.

Ce qui a été difficile, ce qui a cassé, ce qui a survécu à la coupe, un billet par projet. Trié selon la récence du projet, pas du jour où je l'ai écrit.

Still Here : tout le monde croit que les chiens noirs sont laissés pour compte. J'ai vérifié 99 916 dossiers de refuge. Ce n'est pas vrai.
Août 2026
10 min de lecture

Still Here : tout le monde croit que les chiens noirs sont laissés pour compte. J'ai vérifié 99 916 dossiers de refuge. Ce n'est pas vrai.

510 chiens ont un enregistrement d'entrée au refuge d'Austin et aucun enregistrement de sortie. Still Here est le tableau, ordonné selon la durée d'attente. Celui en tête est Pancho, 449 jours. Puis j'ai cherché la raison pour laquelle les chiens en tête sont ceux en tête, et la réponse m'a surpris : le syndrome du chien noir n'apparaît pas dans 99 916 séjours complétés — les couleurs qui attendent sont les pelages des chiens de type bully. À race constante, le pelage déplace la médiane d'au plus 7,5 jours ; changer la race et elle bouge de 20.

WeekendChallengeDogDaysSnowflake
Assay : un tracker soin de la peau avec une barre d'erreur. Recadrer la même photo déplace la texture de 5,81 points, alors un verdict ne s'affiche que si le changement dépasse ce plancher sur votre visage.
Août 2026
11 min de lecture

Assay : un tracker soin de la peau avec une barre d'erreur. Recadrer la même photo déplace la texture de 5,81 points, alors un verdict ne s'affiche que si le changement dépasse ce plancher sur votre visage.

La mesure existe : l'API YouCam Skin Analysis note seize résultats de peau depuis une photographie, et c'est un vrai bon instrument (entrée octet-identique donne sortie octet-identique). Le problème est qu'un score rapporté sans son erreur est un nombre avec lequel on ne peut pas prendre de décision. Sur mon propre visage avec une variable changée à la fois, la luminosité ±8 % déplace les boutons de 4,85 points et recadrer la même photo différemment déplace la texture de 5,81. Un effet de traitement réaliste sur quatre semaines est d'environ cinq. Assay mesure sa propre erreur d'abord, puis n'appelle un changement réel que quand il dépasse ce plancher.

YouCamHackathonYouCam Skin Analysis APIPerfect Corp
Unsay : un agent IA de sécurité médicamenteuse qui revient et défait ce qu'il a dit. Quand la FDA élève un rappel, il corrige chaque patient nommé qu'il avait déjà rassuré, en quelques secondes.
Août 2026
13 min de lecture

Unsay : un agent IA de sécurité médicamenteuse qui revient et défait ce qu'il a dit. Quand la FDA élève un rappel, il corrige chaque patient nommé qu'il avait déjà rassuré, en quelques secondes.

La mémoire d'agent a un mode d'échec que la qualité de récupération ne peut pas réparer : le contexte périmé. La similarité à une mémoire stockée ne prouve pas que la mémoire est encore vraie. Pour la plupart des agents c'est embarrassant. Dans une pharmacie c'est un rappel de Classe I. Le correctif d'Unsay est un schéma bitemporel sur CockroachDB (`valid_from`/`valid_to` pour le monde, `asserted_at`/`retracted_at` pour la croyance de ce système), et un join qu'aucune base vectorielle ne peut exprimer : chaque réponse encore debout qui s'appuyait sur une version d'affirmation qu'on ne croit plus. La relecture fonctionne encore au-delà de l'horizon AS OF SYSTEM TIME, et chaque correction est exactly-once à travers une panne de région.

CockroachDBHackathonCockroachDBBitemporal
Bloom : personne n'annule, on cesse simplement de venir. Bloom lit le rythme de visite propre à chaque client, signale ceux qui s'en écartent, et écrit une note personnelle à chacun. Les règles décident QUI, Gemini décide QUOI DIRE.
Juil.-août 2026
12 min de lecture

Bloom : personne n'annule, on cesse simplement de venir. Bloom lit le rythme de visite propre à chaque client, signale ceux qui s'en écartent, et écrit une note personnelle à chacun. Les règles décident QUI, Gemini décide QUOI DIRE.

Un salon typique perd environ 40 % de ses clients chaque année, un premier-timer qui ne re-réserve pas dans les 30 jours a environ une chance sur cinq de jamais revenir, et un habitué fidèle vaut plusieurs centaines de dollars par an. Le signal est invisible parce que c'est une absence, répartie sur des centaines de personnes qui ont chacune leur propre rythme. L'architecture de Bloom est l'idée : les règles décident QUI (moteur de risque déterministe sur l'écart de visite médian propre à chaque client), Gemini décide QUOI DIRE (une note courte dans la voix du propriétaire, référençant l'histoire réelle de cette personne). La démo de toute la thèse est deux clientes : Aisha et Jane sont toutes deux à 44 jours depuis leur dernière visite ; Aisha vient toutes les 8 semaines, Jane toutes les 4. Tout outil qui signale « pas de visite en 60 jours » se trompe sur l'une d'elles.

GeminiXPRIZEHackerFundGoogle Gemini 2.5 Flash
coldpath : le build Ollama Windows-on-Arm est expédié avec l'unité matricielle éteinte. Correctif d'une ligne déposé en amont, 5,75x sur le traitement de prompt.
Août 2026
12 min de lecture

coldpath : le build Ollama Windows-on-Arm est expédié avec l'unité matricielle éteinte. Correctif d'une ligne déposé en amont, 5,75x sur le traitement de prompt.

Je ne pouvais pas répondre à une question basique sur ma propre machine Arm : quand un LLM local tourne, utilise-t-il réellement l'unité matricielle de la puce, ou retombe-t-il silencieusement sur du code scalaire ? Alors j'ai écrit l'outil qui répond, l'ai pointé sur l'écosystème, et j'ai trouvé le runner LLM Windows-on-Arm le plus populaire froid. coldpath est un désassembleur AArch64 basé sur Capstone qui prouve qu'un binaire contient des instructions SME, i8mm et dotprod ; la trouvaille est que le build officiel win-arm64 d'Ollama en a zéro. Correctif d'une ligne déposé en amont (PR #17654), 5,75x récupéré sur le traitement de prompt mesuré en direct sur Azure Cobalt 100, gaté en CI comme GitHub Action réutilisable.

ArmCloudAIAArch64Neoverse N2
Culprit : une trace de pile pour la dérive de modèle. 90 322 $ d'erreur remontés à une seule colonne dont le max passe de 6 à 7.
Août 2026
13 min de lecture

Culprit : une trace de pile pour la dérive de modèle. 90 322 $ d'erreur remontés à une seule colonne dont le max passe de 6 à 7.

Fraîcheur, volume, taux de nuls et schéma étaient tous au vert. Le modèle se trompait discrètement depuis six mois. Culprit a remonté la lignée ML dans DataHub jusqu'à la colonne responsable, a déposé l'incident dans le graphe avec les dollars attachés, a écrit le correctif, a exécuté dbt build contre le vrai warehouse pour le vérifier, a rejeté son premier patch qui aurait supprimé 87 693 lignes, et seulement là a ouvert la PR. 90 322 $ d'erreur de modèle attribuable, chiffrés contre un contrôle contrefactuel sur 19,3 M de vrais enregistrements de taxi NYC.

BuildWithDataHubHackathonDataHubMCP
Overtone : description audio WCAG pour toute une archive vidéo à environ 0,03 $ la minute, générée sur place dans Backblaze B2
Juil. 2026
11 min de lecture

Overtone : description audio WCAG pour toute une archive vidéo à environ 0,03 $ la minute, générée sur place dans Backblaze B2

La WCAG exige une piste de description audio parlée sur les vidéos préenregistrées : un narrateur décrivant ce qui est à l'écran dans les pauses du dialogue. Les universités publiques doivent cela en vertu de la loi fédérale d'ici le 26 avril 2027, mais les descripteurs humains facturent 15 à 75 $ par minute finie, donc les archives restent sans description ou sont supprimées. Overtone lit chaque vidéo depuis un bucket Backblaze B2, génère la description sur place, et écrit le master décrit à côté de l'original. Mesuré sur un vrai cours MIT OpenCourseWare de 3 minutes : environ neuf cents pour décrire, soit environ trois cents la minute de bout en bout. Chaque étape générative passe par Genblaze, avec bascule automatique de fournisseur pour qu'un run à l'échelle d'une archive ne meure pas sur une seule erreur transitoire.

BackblazeGenblazeHackathonBackblaze B2Genblaze
Viva : 91 soumissions C notées au maximum sur 626 cachent un défaut que l'autograder n'a jamais testé
Juil. 2026
10 min de lecture

Viva : 91 soumissions C notées au maximum sur 626 cachent un défaut que l'autograder n'a jamais testé

Une suite de tests qui passe prouve qu'un programme a fonctionné sur les entrées que l'enseignant a pris la peine de vérifier. Elle ne prouve pas que l'étudiant peut expliquer ce que le programme fait. Viva comble cet écart : GPT-5.6 lit l'énoncé et propose une entrée que la suite n'a jamais essayée, Viva exécute le programme de l'étudiant et le corrigé dessus, et ne pose une question à l'étudiant que si les deux ne s'accordent pas. Sur 626 vraies soumissions C notées au maximum, 91 (14,5 %) cachent un défaut que l'autograder n'a jamais testé, et 83 d'entre elles (13,3 %) échouent sur une entrée aussi simple que `5 5 3`. Pas une prédiction, un rejeu : chaque constat porte une commande rejouable.

OpenAIBuildWeekGPT-5.6OpenAI Codex
LedgerPilot : même Qwen, même ledger, garde-fou désactivé poste 5 mauvaises écritures, activé en poste 0
Juil. 2026
12 min de lecture

LedgerPilot : même Qwen, même ledger, garde-fou désactivé poste 5 mauvaises écritures, activé en poste 0

La clôture mensuelle est le mauvais endroit pour donner un clavier à une IA qui hallucine. LedgerPilot est un agent de clôture où Qwen propose des écritures et un garde-fou déterministe est la seule voie vers une écriture. Le contrefactuel est toute la revendication : même planificateur qwen-flash, mêmes 39 tâches, même ledger Odoo en direct, garde-fou désactivé poste 5 mauvaises écritures (salaires payés depuis Comptes clients, coût des ventes vers Créances et Revenus, chacune équilibrée, chacune plausible), garde-fou activé poste 0. Le modèle ne s'est pas amélioré ; le ledger, oui. Tourne sur Alibaba Cloud ECS, pilote l'écriture via MCP.

QwenCloudHackathonQwenAlibaba Cloud
Clatterfall : une bille, un subreddit, une exécution partagée par jour, une machine que personne ne peut bâtir seul
Juil. 2026
11 min de lecture

Clatterfall : une bille, un subreddit, une exécution partagée par jour, une machine que personne ne peut bâtir seul

r/Clatterfall est une descente continue, bâtie par une foule, une pièce par personne par jour. Chaque matin, toute la machine engagée est ré-exécutée comme une simulation canonique unique que tout le monde regarde ensemble, et les pièces que la bille abandonne se dissolvent. Trois règles portent le poids : on ne peut bâtir que sur le chemin réel de la bille (la frontière), l'exécution quotidienne est simulée côté serveur une fois et rejouée identique au pixel partout, et les pièces que la bille cesse de toucher se dissolvent. Non-IA et fier de l'être : chaque pixel dessiné à partir de primitives Phaser Graphics à l'exécution.

RedditGamesHackathonReddit DevvitPhaser
Loose Ends : l'agent Slack qui refuse de fermer une boucle tant qu'il n'a pas vu la preuve
Juil. 2026
12 min de lecture

Loose Ends : l'agent Slack qui refuse de fermer une boucle tant qu'il n'a pas vu la preuve

Dans un Slack d'ONG ou d'entraide, un « quelqu'un peut faire un suivi avec la famille Diaz ? » lâché n'est pas un deck en retard, c'est une personne non servie. Chaque commitment bot du marché marque une boucle terminée quand une minuterie se déclenche ou quand quelqu'un clique « fait ». Loose Ends surveille le même canal pour un message ultérieur qui prouve que le travail a réellement eu lieu, et traite une échéance dépassée sans preuve comme BROKEN. Ancré dans un vrai chiffre : 93 % des dossiers de services sociaux ont été marqués fermés, seulement 38 % ont livré le service (JAMA Network Open, 2024). Fermé n'est pas fait.

SlackAgentHackSlack BoltSlack Real-Time Search
Pick Your Side : j'ai construit une machine qui vous fabrique une équipe de Coupe du monde, ancrée dans la vraie histoire
Juil. 2026
Lauréat
8 min de lecture

Pick Your Side : j'ai construit une machine qui vous fabrique une équipe de Coupe du monde, ancrée dans la vraie histoire

Toutes les apps Coupe du monde sont pour les gens qui suivent déjà. Celle-ci est pour tous les autres : on donne deux nations, elle lit leur vraie histoire, choisit le camp qu'on était censé aimer, et un annonceur de stade nous fait prêter serment. Toute l'architecture plie sur une règle : rien de l'histoire n'est inventé. Gemini fait la recherche avec le grounding Google Search actif, puis réécrit dans un responseSchema strict, puis ElevenLabs joue le tout sur une foule de stade qu'ElevenLabs a aussi générée.

weekendchallengedevchallengegoogleai
FlakeWarden : 90,7 % de précision et 0 % de faux positifs côté sécurité sur le triage des tests instables, sur UiPath Maestro
Juin 2026
Lauréat
11 min de lecture

FlakeWarden : 90,7 % de précision et 0 % de faux positifs côté sécurité sur le triage des tests instables, sur UiPath Maestro

Les tests instables sont le mode d'échec le plus corrosif en CI : un build rouge peut être une vraie régression ou juste du bruit, et les ingénieurs finissent par ignorer les builds rouges jusqu'à ce qu'un vrai bug parte en prod. FlakeWarden répond à la seule question qui compte (vrai défaut, instable, ou environnement) avec un scoreur d'instabilité déterministe pour les cas clairs et un classifieur UiPath Agent Builder ancré pour les cas ambigus, orchestré par Maestro avec un humain qui valide chaque changement. 90,7 % de précision sur un corpus de 150 cas, avec un taux de faux positifs côté sécurité de 0 % tenu par mécanisme.

AgentHackUiPathUiPath Maestro
LotZero : zéro ventes en trop et zéro doubles débits sur une enchère mondiale en direct, prouvé sur Aurora DSQL
Juin 2026
10 min de lecture

LotZero : zéro ventes en trop et zéro doubles débits sur une enchère mondiale en direct, prouvé sur Aurora DSQL

Le commerce mondial en direct imposait un choix : une base SQL mono-région (juste mais lente pour les enchérisseurs lointains) ou un stockage multi-régions à cohérence éventuelle (rapide mais dangereux pour l'argent). Aurora DSQL fait tomber ce compromis. LotZero pose le registre d'argent sur DSQL et le flux social sur DynamoDB, puis prouve l'invariant avec une console de contention qui déclenche des centaines de réclamations mondiales concurrentes et mesure : zéro ventes en trop, zéro doubles débits.

H0HackathonAmazon Aurora DSQLAmazon DynamoDB
OrbitOnboard : j'ai utilisé les quatre types de requêtes GitLab Orbit pour générer un kit de démarrage en 10 secondes
Juin 2026
11 min de lecture

OrbitOnboard : j'ai utilisé les quatre types de requêtes GitLab Orbit pour générer un kit de démarrage en 10 secondes

La moitié des nouveaux contributeurs abandonnent leur première tentative dans une base de code inconnue. Pas parce que le problème est trop dur, mais parce que la carte n'existe pas. OrbitOnboard produit cette carte en exploitant les quatre types de requêtes Orbit dans un seul flux coordonné : fichiers critiques, ordre de lecture, carte des experts, MR passées similaires, issues ouvertes liées, postés directement en commentaire d'issue.

GitLab OrbitKnowledge GraphDeveloper Experience
SWORN : j'ai bâti une passerelle DFIR qui signe cryptographiquement chaque finding
Juin 2026
13 min de lecture

SWORN : j'ai bâti une passerelle DFIR qui signe cryptographiquement chaque finding

Les concurrents loggent. SWORN prouve. Une passerelle MCP personnalisée pour Protocol SIFT où chaque finding DRAFT porte une signature Ed25519 sur les IDs d'invocation d'outil, les hash SHA-256 de stdout/stderr, les codes de sortie et les vecteurs d'arguments. La clé de signature est détenue par la passerelle, pas par le LLM. Un finding sans chaîne de signature valide ne peut pas quitter l'état DRAFT.

DFIRMCPSANS SIFT
AgentGate : j'ai construit la porte entre les agents IA et Splunk
Juin 2026
13 min de lecture

AgentGate : j'ai construit la porte entre les agents IA et Splunk

Splunk a livré six capacités agentic en douze mois. Chacune peut lire vos données, proposer des changements et, de plus en plus, les exécuter. Aucune ne répond à la question que pose la conformité : qui a approuvé cette action et quel était son rayon d'impact ? AgentGate est la porte pré-action qui produit un journal d'audit défendable pour chaque décision d'agent IA contre Splunk.

SplunkSplunk MCPFoundation-Sec
Warden : j'ai construit un agent qui gouverne vos autres agents
Juin 2026
12 min de lecture

Warden : j'ai construit un agent qui gouverne vos autres agents

Une fois qu'on a une flotte d'agents IA qui agissent sur de vrais systèmes (approbation de remboursements, changement de prix, déplacement d'inventaire), qui les surveille quand l'un d'eux dérape ? Warden est le superviseur que j'ai construit pour le Google Cloud Rapid Agent Hackathon : MCP Dynatrace pour les sens, Gemini 3 pour le jugement, une vraie porte d'approbation humaine et une comptabilité en dollars honnête pour chaque incident.

Gemini 3Vertex AIADK
Appetite for Noise : j'ai testé le récit Ozempic sur les données nationales
Mai 2026
10 min de lecture

Appetite for Noise : j'ai testé le récit Ozempic sur les données nationales

Le PDG de Walmart, Morgan Stanley et une série de notes d'analystes affirment que les GLP-1 font déjà plier les dépenses américaines en restaurants, alcool et épicerie. Le test naïf avant/après sur les données FRED donne une réponse confiante, significative, et fausse en direction. Voici ce qui survit à une inférence correcte et à un vrai contrôle de tendance, et la vraie taille de l'effet.

Difference-in-DifferencesEconometricsFRED
Cinq outils MCP qui voient une grossesse comme une seule unité clinique
Avr. 2026 à Mai 2026
Lauréat
10 min de lecture

Cinq outils MCP qui voient une grossesse comme une seule unité clinique

Lauréat d'Agents Assemble : The Healthcare AI Endgame de Prompt Opinion, parmi 4 335 participants. La mortalité maternelle aux États-Unis ne cesse d'augmenter et plus de 80 % des décès liés à la grossesse sont évitables, mais les signaux prédictifs vivent dans des parties complètement différentes du dossier. J'ai construit un serveur MCP qui les agrège, et un agent de triage qui lui délègue.

FHIRMCPHealthcare
Pourquoi j'ai bâti un classificateur d'exoplanètes qui dit « Je ne sais pas »
Oct. 2025
5 min de lecture

Pourquoi j'ai bâti un classificateur d'exoplanètes qui dit « Je ne sais pas »

Un classificateur XGBoost sur les données NASA Kepler, K2 et TESS, c'est un samedi après-midi. La partie intéressante, c'est tout ce qu'il y a autour : trois vraies classes (CONFIRMED, CANDIDATE, FALSE POSITIVE) plus un bac UNKNOWN d'abstention, téléversement de jeux de données, réentraînement dans le navigateur avec réglage des hyperparamètres, exploration 2D et vues 3D des systèmes.

XGBoostNASAThree.js