[ 17 ]LAB / PRODUIT 001

L’IA écrit. SPARDA prouve.

SPARDA compile les comportements déclarés d’un backend — routes, mutations, gardes, effets, contraintes — dans un seul graphe déterministe, puis évalue les obligations de vérification sur ce graphe.

[ 01 ]

LE PRODUIT

SPARDA

AI WRITES. SPARDA PROVES.
DETERMINISTIC VERIFICATION FOR AI-WRITTEN CODE.

Routes, requêtes de base de données, mutations d’état, gardes, effets de bord : tout est compilé dans un graphe unique, le Unified Behavior Graph. Les vérifications sont ensuite des passes sur ce graphe, pas des motifs cherchés dans le texte du code.

Cent pour cent local, déterministe, sans clé d’API, sans compte. L’outil signale bruyamment un risque réel, et lorsqu’il ne voit qu’une partie de l’application, il le déclare au lieu de conclure.

PAQUET

sparda-mcp — disponible publiquement sur npm

EXÉCUTION

Hors-ligne, sur votre machine. Aucune donnée ne sort.

DÉPENDANCES

Quatre, épinglées à la version exacte

TESTS

1 232 passés, 3 ignorés, sur 136 fichiers — en 31 secondes

LICENCE

Business Source License 1.1 — libre d’usage, production comprise

[ 02 ]

LE GRAPHE COMPILÉ

Le comportement déclaré devient une structure, et une structure s’inspecte. Chaque nœud est une chose que l’application dit faire ; chaque arête est un chemin qu’elle autorise.

Trois nœuds portent ici un anneau : ce sont ceux dont une obligation a été déchargée. Les autres restent des faits compilés, pas des faits prouvés — la distinction est tenue partout dans l’outil.

ROUTEGARDEMUTATIONTRANSACTIONCONTRAINTEEFFETENTRÉEAGRÉGATÉCRITURESORTIE
[ 03 ]

LE COIN ENFONCÉ

La seule chose qu’une relecture de diff et qu’un scanner de motifs ne peuvent structurellement pas faire : établir que cette modification précise a retiré une protection que la version précédente portait.

SPARDA compare le graphe de comportement avant et après l’édition, et bloque la régression. Déterministe, hors-ligne, sous la seconde.

1. référence posée sur le code gardé
   POST /admin/delete-user · requireAdmin
2. une édition d’IA « simplifie » requireAdmin
   le code compile toujours, la route répond toujours 200
$ sparda gate
✗ [critique] GUARD_REMOVED
  POST /admin/delete-user était gardée dans la référence
  et devient accessible sans aucune garde (src/app.js:11)
  ~40 ms · déterministe · hors-ligne · sans clé d’API
  sortie 2 — l’édition de l’agent est bloquée

BRANCHÉ EN UNE LIGNE DANS CLAUDE CODE VIA UN HOOK POSTTOOLUSE

Sortie de la commande gate : alerte critique GUARD_REMOVED, comparaison avant et après, édition bloquée.

$ sparda-mcp gate --hook

La même régression, telle que l’outil la rend

La garde disparue est nommée, le fichier et la ligne sont donnés, et les deux versions du graphe sont posées côte à côte. L’édition ne passe pas.

[ 04 ]

CE QU’IL REFUSE DE DIRE

Un outil de vérification qui annonce toujours « tout va bien » n’a aucune valeur. SPARDA distingue quatre verdicts, et le plus courant sur une vraie application n’est pas le premier.

C’est le point qui le sépare des analyseurs statiques : il ne prétend jamais avoir prouvé ce qu’il n’a pas regardé.

PROVEN

L’obligation est démontrée sur le périmètre observé.

PROVEN (PARTIAL)

Une partie seulement de l’application est visible. Jamais présenté comme un vert complet.

PREMISE NOT VERIFIED

SPARDA a prouvé qu’il ne regardait pas l’application entière. Il n’affirme alors rien du tout.

NOT_PROVEN

L’obligation n’est pas démontrée. C’est l’état vrai, pas un échec de l’outil.

LE PLUS FRÉQUENT SUR UNE APPLICATION RÉELLE

SEPT APPLICATIONS RÉELLES, LE VERDICT QU’ELLES REÇOIVENT

Le dépôt garde un instantané de son corpus, épinglé commit par commit, pour repérer ses propres régressions. Il donne aussi la réponse la plus honnête à la question « alors, ça passe ? ».

DÉPÔTROUTESVERDICTCOMMIT ÉPINGLÉ
dub593NON PROUVÉbbc533e · 2026-07-26
twenty579NON PROUVÉ590ae069 · 2026-07-27
nocodb566PRÉMISSE NON VÉRIFIÉE64bf196 · 2026-07-24
novu451NON PROUVÉ00e7b5c · 2026-07-27
immich281PARTIEL3606144 · 2026-07-26
cal.com177NON PROUVÉ3894f37 · 2026-07-22
ghostfolio115À RELIREce35588 · 2026-07-26

2 762 ROUTES COMPILÉES · 7 DÉPÔTS · 0 PLANTAGE
AUCUN VERDICT « PROUVÉ » — ET C’EST LE RÉSULTAT ATTENDU

ET CE SITE-CI, ANALYSÉ PAR LE PRODUIT QU’IL PRÉSENTE

PROUVÉ

VERDICT

5

ROUTES

35

OBLIGATIONS TENUES

0

ANGLE MORT

Cinq routes d’API, aucune garde déclarée : c’est une cible facile, et le vert n’est pas un trophée. Il ne dit pas que ce site est plus sûr que cal.com. Il dit que SPARDA a vu la totalité de ce qu’on lui a donné — et c’est précisément là que se joue la différence entre les deux blocs de cette section.

seal_c2a66e65bfe91811 · 2026-08-28 · SPARDA 0.71.3 · npx sparda-mcp prove

Structure conceptuelle d’une sortie SPARDA : compile, review, verify, unknowns, evidence.

$ structure de sortie

Aucun verdict de déploiement n’est émis

Ce que l’outil compile, ce qu’il évalue, et surtout ce qu’il ne sait pas — déclaré comme tel plutôt que passé sous silence. La décision de déployer reste au jugement d’ingénierie ; l’outil ne fournit que la matière.

[ 05 ]

LES OBLIGATIONS ÉVALUÉES

La commande apocalypse lit le graphe compilé, sans relire une ligne de code source, et décharge des obligations de correction formelles.

01

Mutation non gardée

Critique. Tout chemin de mutation qui ne traverse aucune garde de sécurité.

02

Écriture d’agrégat non atomique

Élevé. Une API qui écrit dans plusieurs tables d’un même domaine de cohérence hors d’une seule transaction.

03

Écriture contrainte non validée

Moyen. Écriture dans une colonne à invariant déclaré — CHECK, NOT NULL, UNIQUE — sans validation préalable.

04

Effet observable irréversible

Élevé. Une action hors processus, un paiement par exemple, aux côtés d’une écriture d’état sans chemin de compensation.

05

Analyse de flux teinté

Élevé. Suit les entrées non fiables à travers l’arbre syntaxique jusqu’aux points d’arrivée critiques.

06

Dominance des gardes

Moyen. Établit qu’une garde de haut niveau ne peut pas être contournée par une route imbriquée ou voisine.

07

Contournement de membre d’agrégat

Information. Mutation directe d’une table membre sans passer par la racine de l’agrégat.

[ 06 ]

LA PREUVE DE COMPILATION

SPARDA compile de véritables monstres open source vers leur graphe de comportement, sans plantage, en une à deux secondes chacun. Une seule commande les clone et refait la mesure sur votre machine.

Compiler une route est un résultat de parseur. Établir qu’elle tient une obligation est un verdict distinct, propre à chaque dépôt — la distinction est faite explicitement, elle n’est pas noyée dans un chiffre unique.

DUB

579 routes compilées en 2,05 s — Next.js

MEDUSAJS

477 routes compilées en 0,67 s

IMMICH

281 routes compilées en 1,15 s — NestJS

TOTAL

1 337 routes, 0 plantage, le plus lent à 2,05 s

BENCH/ROUTE-PROOF.JSON · 2026-07-17 · NODE v22.22.2 · SPARDA 0.71.3

[ 07 ]

LE REJEU

Un bogue qui ne se reproduit pas n’est pas un bogue résolu. Une requête de production est enregistrée avec ses effets — base, HTTP, horloge — puis rejouée hors ligne.

Sortie de la commande timeless : comparaison requête et réponse, empreintes comparées, rejeu identique.

$ sparda-mcp timeless replay

Un appel enregistré, rejoué à l’octet près

La comparaison porte sur les octets de la réponse, pas sur une ressemblance : soit les empreintes correspondent, soit elles ne correspondent pas. Le rejeu s’exporte ensuite en test.

[ 08 ]

LES COMMANDES

prove

Le verdict complet en un geste — vérification, couverture, contrôle de prémisse et sceau partageable

apocalypse

Évaluer les obligations avant déploiement : gardes, invariants, frontières transactionnelles. Sortie SARIF et blocage d’intégration continue.

gate

Comparer le graphe avant et après une édition, et bloquer la régression dans la boucle de l’agent

heal

Réparation vérifiée : un correctif ne passe que si le rejeu correspond, que le contrôle tient et qu’aucun risque nouveau n’apparaît

timeless

Enregistrer une requête de production, la rejouer à l’octet près, exporter le bogue en test

mirror

Exécuter le graphe — servir le comportement compilé en HTTP, sans framework et sans code source

ubg

Compiler la base de code vers son graphe de comportement

badge

Un badge SVG autonome pour le README — verdict, couverture, nombre de routes

dossier

Le rapport public : une page HTML autonome, risques et angles morts compris

[ 09 ]

CE QU’IL LIT, ET COMMENT

Un outil qui refuse le faux vert doit aussi refuser le faux « compatible ». Le périmètre est donc écrit ici au même rang que le reste, avec la profondeur de chaque extracteur mesurée sur le dépôt.

LU EN PROFONDEUR — LE CODE EST COMPILÉ

Routes, gardes, écritures, effets et frontières transactionnelles sont extraits du code lui-même. C’est le périmètre sur lequel un verdict veut dire quelque chose.

NESTJS

Injection de dépendances, contrôleurs externes, décorateurs

EXPRESS 4 ET 5

Routeurs imbriqués, fabriques, points d’entrée enfouis

NEXT.JS APP ROUTER 13 À 15

Gestionnaires de route et actions serveur

STRAPI

Types de contenu, contrôleurs cœur et routes personnalisées

MEDUSAJS

Bâti sur l’extracteur Express

LU PARTIELLEMENT

Le code est parcouru, la profondeur de la famille Node n’y est pas encore.

FASTAPI

Extraction Python séparée — le périmètre reste plus étroit que la famille Node

LU PAR DÉCLARATION

C’est la spécification qui est lue, pas l’implémentation. La surface est connue ; ce qui se passe derrière ne l’est pas, et rien ne prétendra le contraire.

OPENAPI 3

Go, Java, Rails, Laravel, .NET — la surface déclarée, pas l’implémentation

BASES DE DONNÉES

Prisma, TypeORM, Kysely, Drizzle, Knex, Sequelize, Mongoose et SQL brut

EFFETS EXTERNES

fetch, axios, Stripe, Twilio, SendGrid, Resend, nodemailer, AWS SDK v3

LE PLAFOND, EN CLAIR

La profondeur se tient aujourd’hui sur la famille Node — 3 982 lignes d’extraction, contre 70 pour FastAPI. Ailleurs, SPARDA lit une surface déclarée et le dit. Le moteur ne dépend pas du cadre ; les extracteurs, si — et ils s’écrivent un par un. C’est un travail, pas une limite de conception.

[ 10 ]

SOIXANTE SECONDES

Depuis votre application, sans rien configurer :

$ npx sparda-mcp apocalypse
  évaluer les obligations avant un déploiement
$ npx sparda-mcp prove
  le verdict complet : vérification, couverture, sceau
$ npx sparda-mcp badge
  un badge README : verdict · couverture · routes
METTRE UNE ÉTOILEVOIR SUR NPM [ SRC ] DÉPÔT GITHUB

Un backend à rendre inspectable ?

EN PARLER