Back to flin
flin

93 sessions auditées en un seul passage

La méthodologie derrière l'audit de 93 sessions de développement en un seul passage -- comment nous avons organisé la revue et ce que l'archéologie des sessions a révélé.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 5 min flin
EN/ FR/ ES
flinauditmethodologysessionsreview

FLIN a été construit en 301 sessions. L'audit a couvert le code de 93 de ces sessions en un seul passage analytique. Pas 93 sessions d'audit -- 93 sessions de développement, revues en un effort concentré. La distinction compte. Construire une fonctionnalité dans une session prend des heures d'exploration, d'expérimentation, de débogage et d'affinage. Auditer le résultat de cette session prend des minutes, parce qu'on ne construit pas -- on vérifie. La friction créative a disparu. Ce qui reste est une lecture systématique.

Mais la lecture systématique de code écrit au fil de 93 sessions, par un CTO IA dont le contexte se réinitialise entre les conversations, présente ses propres défis. Chaque session avait ses propres objectifs, ses propres contraintes et sa propre compréhension du codebase. Les changements faits à la Session 200 pourraient contredire les hypothèses de la Session 50. Une fonction ajoutée à la Session 130 pourrait être supplantée par une approche différente à la Session 180 mais jamais supprimée. L'audit n'était pas juste une revue de code -- c'était une expédition archéologique à travers 42 jours de construction incrémentale.

La piste des sessions

Chaque session a laissé des traces dans le code. Les annotations de commentaires indiquaient quelle session avait introduit quelle fonctionnalité. L'audit a utilisé ces annotations pour reconstruire la chronologie du développement et vérifier que les sessions ultérieures ne cassaient pas les invariants antérieurs.

rust// Traces from FLIN's session history, found during the audit:

// Session 103: Modules (Import, From, As, Export)
// token.rs lines 325-334
Import, From, As, Export,

// Session 112: String interpolation
// scanner.rs lines 1038-1119

// Session 115: Switch, Watch, Context, Impl
// token.rs lines 157-159, 299-301, 315-316

// Session 118: Lazy, Hash, Fragment <>
// token.rs lines 305-306, 828-830

// Session 119: DocComment token
// token.rs lines 924-925, scanner.rs lines 676-706

// Session 133: Trait keyword
// token.rs lines 317-318

// Session 147: Static, Generic type handling
// token.rs lines 319-320, scanner.rs lines 576-582

// Session 150: Pipeline operator |>
// token.rs lines 807-808, scanner.rs lines 632-634

// Session 155: Loop labels
// token.rs lines 909-911, scanner.rs lines 656-658

// Session 195: WebSocket keywords
// token.rs lines 173-184, 386-390, 517-522

// Session 240: About keyword for RAG
// token.rs lines 201-202

// Session 252: URL pass-through (HTML compliance)
// scanner.rs lines 4056-4246

Le modèle de couverture de l'audit

Le modèle de couverture avait trois niveaux :

Tier 1: Line-by-line reading (5 files, 66,889 lines)
  vm/vm.rs           27,257 lines  -- Every line, every opcode
  parser/parser.rs   16,544 lines  -- Every parse function
  database/zerocore.rs 15,098 lines -- Every database operation
  codegen/emitter.rs   8,837 lines  -- Every emit function
  vm/renderer.rs       7,540 lines  -- Every render path

Tier 2: Function-level review (8 files, 49,563 lines)
  parser/ast.rs        5,162 lines  -- Type definitions
  typechecker/checker.rs 7,715 lines -- Type checking logic
  server/http.rs       3,870 lines  -- HTTP routing
  server/websocket.rs  3,200 lines  -- WebSocket handling
  lexer/scanner.rs     4,248 lines  -- Token scanning
  lexer/token.rs       1,606 lines  -- Token definitions
  database/storage.rs  5,800 lines  -- Storage backends
  vm/builtins/*       15,967 lines  -- Built-in functions

Tier 3: Spot checking (92 files, 69,800 lines)
  Remaining modules, tests, configuration

Les fichiers du niveau 1 étaient lus ligne par ligne car ils avaient la plus haute densité de défauts et le plus fort impact. Les fichiers du niveau 2 étaient revus au niveau des fonctions. Les fichiers du niveau 3 étaient vérifiés ponctuellement pour les patterns courants : commentaires TODO, appels panic, code mort et anti-patterns de sécurité.

Ce que l'archéologie des sessions a révélé

Les découvertes d'audit les plus intéressantes n'étaient pas des bugs -- c'étaient des patterns dans la façon dont le codebase a évolué au fil des sessions.

Accrétion de fonctionnalités. Le vocabulaire de tokens est passé d'environ 30 tokens dans les premières sessions à 80+ à la Session 252. Chaque session qui ajoutait une fonctionnalité du langage ajoutait aussi des tokens, des mots-clés et des nœuds AST.

Couches défensives. Les sessions tardives avaient tendance à ajouter des vérifications défensives autour du code des sessions antérieures plutôt que de le refactoriser. C'est naturel -- réécrire le code d'une session précédente risque de casser les fonctionnalités qui dépendent de son comportement actuel. Mais cela produit un codebase avec des couches de validation redondantes.

Dérive de spécification. Certaines fonctionnalités ont évolué loin de leur spécification originale au fur et à mesure que la réalité de l'implémentation s'imposait. L'audit a trouvé plusieurs cas où le comportement du code différait de la description d'intention des journaux de session.

La valeur de l'exhaustivité

Lire chaque ligne d'un codebase de 186 252 lignes est un investissement. Mais le retour sur cet investissement était disproportionné par rapport à l'effort.

Avant l'audit, nous savions que FLIN fonctionnait pour les cas que nous avions testés. Après l'audit, nous connaissions chaque cas où il ne fonctionnait pas. Avant l'audit, les bugs étaient découverts par des rapports d'utilisateurs et des sessions de débogage -- réactifs, coûteux, imprévisibles. Après l'audit, chaque défaut connu était catalogué avec son emplacement exact et une correction proposée -- proactif, systématique, planifiable.

Les 93 sessions auditées en un seul passage représentaient le travail accumulé de 42 jours. L'audit a distillé ce travail en une image unique et cohérente : ce que FLIN est, où il est fort, où il est faible, et exactement ce qui doit se passer pour le rendre prêt pour le monde.


Ceci est la partie 155 de la série « Comment nous avons construit FLIN », documentant comment un CEO à Abidjan et un CTO IA ont conçu et construit un langage de programmation à partir de zéro.

Navigation de la série : - [154] Appels panic en production : suivi et élimination - [155] 93 sessions auditées en un seul passage (vous êtes ici) - Arc suivant : le chemin de FLIN vers la bêta

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le Step Zero ne suffisait pas : comment valider un constructeur sans valider le runtime a fait tomber toutes les sessions vocales de Déblo l’heure où nous avons livré le streaming caméra temps réel

La phase 14 a livré Déblo Eyes — streaming caméra temps réel via LiveKit vers Gemini Live native audio. Le premier deploy a fait tomber toutes les sessions vocales en production en quatre-vingt-dix secondes parce que notre Step 0 avait validé le constructeur sans exercer le runtime. Le build log de comment Déblo a eu des yeux, ce qu’un pré-vol incomplet a coûté, et quels points de polish ont été livrés ou reportés.

33 min May 20, 2026
debloclaude-opus-4.7claude-codegemini-live +25
Thales & Claude deblo

Le tiret cadratin qui a tué la production : comment un slogan marketing dans un header HTTP a fait tomber le chat de Déblo pendant 24 heures

Deux jours avant la soumission App Store, tout le produit chat de Déblo s’est cassé silencieusement. Pas de spinner, pas de toast, aucune erreur dans l’UI — juste un silence radio. L’incident de 24 heures se résumait à un seul « é » dans la valeur d’un header HTTP qui levait une UnicodeEncodeError avant qu’aucune requête vers OpenRouter ne quitte le backend. Post-mortem d’une fausse hypothèse, d’une trace Sentry, et d’un fix de six lignes qui a débloqué le lancement.

30 min May 19, 2026
debloclaude-opus-4.7claude-codeincident +19
Thales & Claude deblo

Six heures, d’une page blanche à la review Apple — Comment nous avons soumis Déblo à l’App Store, en direct

Marche à marche en direct de la soumission de Déblo à l’App Store iOS en six heures : ce que les validateurs d’Apple ont rejeté (un superscript Unicode), ce que nous avons corrigé (un Promotional Text gaspillé sur des marques tierces), et les rouages de l’ASO iOS que presque tout le monde rate.

30 min May 13, 2026
debloclaude-opus-4.7claude-codeapp-store +16