A propos Compétences Expérience Services Blog Contact

Donne des preuves à fournir à tes agents, pas des instructions Give your coding agents proof obligations, not instructions

Six agents IA ont écrit un écran complet de mon cockpit en deux heures. Ce n'est pas la partie intéressante.

TL;DR : la génération de code n'est plus le goulot d'étranglement. La preuve, si. Un workflow multi-agents ne vaut que par son harnais de vérification. Le mien exige quatre preuves : parité visuelle avec le design, parcours cliqués au navigateur, tests verts, punch-list vide. Donne à tes agents des obligations de preuve. Pas des instructions plus longues.

Cet article est pour les devs qui utilisent des agents de code et veulent livrer avec, pas juste faire des démos.

Le contexte

Mon cockpit de prospection est une app perso en Go. Du SSR avec html/template, du htmx, un PostgreSQL derrière.

Il me fallait un écran entier de plus : liste, vue détail, ajout, édition de statut. La maquette existait. Un écran voisin servait de modèle de code.

J'ai orchestré un workflow multi-agents : des agents IA spécialisés qui s'enchaînent, chacun avec un rôle. Backend, design, vérification, tests. Six agents au total, environ deux heures.

À la fin : le store, la migration, les handlers, le template, la navigation et les tests, mergés. Mais le mérite n'est pas où on le met d'habitude.

Une instruction ne se vérifie pas. Une preuve, si

« Fais l'écran » est une instruction. Un agent répond toujours la même chose à une instruction : « c'est fait ».

Parfois c'est vrai. Parfois c'est plausible. Et le plausible est le vrai danger, parce qu'il passe la relecture rapide.

La solution n'est pas d'écrire des prompts plus longs. C'est de changer la nature de la demande : chaque agent reçoit une obligation de preuve, binaire, vérifiable sans lui.

Pour cet écran, il y en avait quatre. L'écran est identique au design, en thème clair et en thème sombre. Les quatre parcours passent dans un vrai navigateur. La suite de tests est verte. La punch-list est vide.

Une punch-list est la liste des écarts restants, héritée du bâtiment. Tant qu'elle n'est pas vide, ce n'est pas livré.

Preuve n°1 : la parité visuelle se mesure, elle ne se déclare pas

Le piège classique : l'agent affirme que l'interface est conforme. Personne ne compare vraiment.

Chez moi, un inspecteur de design tourne sur un port dédié. Il affiche la maquette de référence, à côté du rendu réel de l'app.

L'agent de vérification compare les deux, écran par écran, dans les deux thèmes. Chaque écart part dans la punch-list : un espacement, une couleur, une ombre, un état vide.

Le verdict de ce run : approuvé, punch-list vide, en clair et en sombre. Ce verdict est un fait, pas une opinion d'agent.

Preuve n°2 : les parcours se cliquent dans un vrai navigateur

La semaine dernière, j'écrivais qu'une suite E2E verte peut mentir quand elle asserte du JSON au lieu du DOM. La règle vaut double pour du code écrit par un agent.

Donc les quatre parcours de l'écran ont été joués dans un vrai navigateur, sur l'app réelle. Ajouter une cible. Ajouter une personne. Changer un statut. Promouvoir un dossier.

Pas de simulation, pas d'appel d'API direct. Le formulaire, le clic, le rendu. Ce que verra l'utilisateur, vérifié comme l'utilisateur.

Preuve n°3 : les tests restent le sol

Le classique garde sa place, en barrière de sortie : go build, go vet, et la suite complète. Ce run s'est terminé à 167 tests verts.

Détail qui compte : les tests du store PostgreSQL sont gardés par une variable d'environnement. Sans base de test, ils se skippent proprement. La suite reste rejouable partout, par un humain comme par un agent.

Preuve n°4 : l'environnement est une règle écrite

Le premier lancement du workflow a fait n'importe quoi. Binaire local lancé à la main, tentative de pkill sur des process qui tournaient.

Je l'ai corrigé en cours de run, et la correction est devenue une règle écrite du harnais. Jamais de pkill. Toujours reconstruire et relancer par docker compose. Le jeu de données de démo est idempotent, derrière une variable d'environnement.

C'est le vrai cycle d'apprentissage : chaque erreur d'agent devient une règle du harnais. Pas un meilleur prompt. Une règle, écrite, que le prochain run ne pourra pas contourner.

Ce que ça change, et ce que ça ne change pas

Le temps humain ne disparaît pas. Il se déplace. Je passe moins de temps à écrire du code, et plus de temps à définir des preuves, arbitrer une punch-list, relire un diff.

C'est le bon échange. La génération est rapide partout. La confiance, elle, ne vient que du harnais.

Et les limites sont réelles. Ce workflow a marché parce qu'une maquette de référence existait, et qu'un écran voisin donnait le modèle de code. Sans référence exigible, le harnais n'a rien à comparer, et l'agent retombe dans le plausible.

La checklist avant de lancer un workflow d'agents

Avant de confier une feature à des agents, passe cette liste. C'est elle qui sépare l'outil de production du générateur de démos.

  • Une référence exigible existe : maquette, écran modèle, contrat d'API
  • Chaque agent a une obligation de preuve binaire, pas un objectif flou
  • La vérification visuelle compare au design, dans les deux thèmes
  • Les parcours critiques se jouent dans un vrai navigateur, assertions sur le DOM
  • build, vet et tests sont des barrières, pas des suggestions
  • L'environnement est réglé par des règles écrites : docker, seed idempotent, ports
  • Chaque erreur d'agent devient une règle du harnais, pas un meilleur prompt

Ce qu'il faut retenir

Les agents n'ont pas besoin de meilleures instructions. Ils ont besoin d'obligations de preuve.

Un écran livré en deux heures n'a de valeur que si tu peux dire pourquoi tu lui fais confiance. Chez moi, la réponse tient en quatre preuves, toutes vérifiables sans demander son avis à l'agent.

Construis le harnais une fois. Il resservira à chaque feature, et il vieillit mieux que n'importe quel prompt.

Tu veux industrialiser des agents de code sans livrer du plausible ? Parlons-en.

Six AI agents wrote a complete screen of my cockpit in two hours. That is not the interesting part.

TL;DR: code generation is no longer the bottleneck. Proof is. A multi-agent workflow is only worth its verification harness. Mine demands four proofs: visual parity with the design, flows clicked in a real browser, green tests, an empty punch-list. Give your agents proof obligations. Not longer instructions.

This article is for developers who use coding agents and want to ship with them, not just demo them.

The setup

My prospecting cockpit is a personal Go app. Server-side rendering with html/template, htmx, PostgreSQL behind it.

I needed one more full screen: list, detail view, creation, status edition. The mockup existed. A neighboring screen served as the code model.

I orchestrated a multi-agent workflow: specialized AI agents chained together, each with one role. Backend, design, verification, tests. Six agents in total, about two hours.

At the end: the store, the migration, the handlers, the template, the navigation and the tests, merged. But the credit does not go where people usually put it.

An instruction cannot be verified. A proof can

"Build the screen" is an instruction. An agent always answers an instruction the same way: "done".

Sometimes it is true. Sometimes it is plausible. And plausible is the real danger, because plausible survives a quick review.

The fix is not writing longer prompts. It is changing the nature of the request: every agent gets a proof obligation, binary, checkable without asking the agent.

For this screen there were four. The screen matches the design, in light and in dark theme. The four flows pass in a real browser. The test suite is green. The punch-list is empty.

A punch-list is the list of remaining gaps, a term borrowed from construction. As long as it is not empty, it is not delivered.

Proof 1: visual parity is measured, not declared

The classic trap: the agent states the UI matches. Nobody actually compares.

In my setup, a design inspector runs on a dedicated port. It shows the reference mockup next to the app's real rendering.

The verification agent compares both, screen by screen, in both themes. Every gap goes into the punch-list: a spacing, a color, a shadow, an empty state.

This run's verdict: approved, empty punch-list, light and dark. That verdict is a fact, not an agent's opinion.

Proof 2: flows are clicked in a real browser

Last week I wrote that a green E2E suite can lie when it asserts JSON instead of the DOM. The rule counts double for agent-written code.

So the four flows of this screen were played in a real browser, against the real app. Add a target. Add a person. Change a status. Promote a record.

No simulation, no direct API call. The form, the click, the render. What the user will see, checked the way the user sees it.

Proof 3: tests remain the floor

The classics keep their place, as an exit gate: go build, go vet, and the full suite. This run ended at 167 green tests.

One detail that matters: the PostgreSQL store tests are gated behind an environment variable. Without a test database, they skip cleanly. The suite stays runnable everywhere, by a human or by an agent.

Proof 4: the environment is a written rule

The workflow's first run did whatever it wanted. Launched a local binary by hand, tried to pkill running processes.

I corrected it mid-run, and the correction became a written rule of the harness. Never pkill. Always rebuild and restart through docker compose. The demo dataset is idempotent, behind an environment variable.

That is the real learning loop: every agent mistake becomes a harness rule. Not a better prompt. A written rule the next run cannot bypass.

What it changes, and what it does not

Human time does not disappear. It moves. I spend less time writing code, and more time defining proofs, arbitrating a punch-list, reviewing a diff.

That is the right trade. Generation is fast everywhere now. Trust only comes from the harness.

And the limits are real. This workflow worked because a reference mockup existed, and a neighboring screen provided the code model. Without an enforceable reference, the harness has nothing to compare, and the agent falls back to plausible.

The checklist before you launch an agent workflow

Before handing a feature to agents, run this list. It is what separates a production tool from a demo generator.

  • An enforceable reference exists: mockup, model screen, API contract
  • Every agent has a binary proof obligation, not a vague goal
  • Visual verification compares against the design, in both themes
  • Critical flows are played in a real browser, with DOM assertions
  • build, vet and tests are gates, not suggestions
  • The environment is set by written rules: docker, idempotent seed, ports
  • Every agent mistake becomes a harness rule, not a better prompt

What to remember

Agents do not need better instructions. They need proof obligations.

A screen shipped in two hours only has value if you can say why you trust it. In my case, the answer is four proofs, all checkable without asking the agent.

Build the harness once. It serves every next feature, and it ages better than any prompt.

Want to industrialize coding agents without shipping plausible? Let's talk.