grimoire-kit et AWS AI-DLC : ce qui se vérifie¶
Cette page compare grimoire-kit et AWS AI-DLC sur ce qu'on peut vérifier en lisant le code et en lançant des commandes, sans exécuter de modèle. Elle s'adresse à quelqu'un qui choisit un outil.
En bref¶
- Résultat. Aucune supériorité de résultat n'est démontrée, ni d'un côté ni de l'autre. Les tâches dont on dispose sont résolues par Claude seul : le banc ne sépare pas les outils sur le succès.
- Ce qui est démontré porte sur les garanties, le coût et l'outillage :
- une garde du kit qui ne sait pas lire refuse, là où les hooks d'AI-DLC laissent passer ;
- un coût inconnu n'y vaut jamais zéro ;
- le kit apporte un cockpit, un kanban de tâches, un serveur MCP et une autonomie bornée par octroi.
- Ce qu'AI-DLC couvre et que le kit ne couvre pas est réel : un cycle de vie complet (33 stages, 14 rôles), le travail en équipe et la rétro-ingénierie d'un existant. Voir Ce qu'AI-DLC fait et que le kit ne fait pas.
Versions et méthode¶
| Version | Où vérifier | |
|---|---|---|
| grimoire-kit | 3.64.0, branche main |
src/grimoire/__version__.py:1 |
| AI-DLC | 2.11.0, tag v2.11.0, commit 6a378b53c0a4fe0641ed7d8de8dfff94264d5b6a |
dépôt awslabs/aidlc-workflows, CHANGELOG.md:4 |
Règles de lecture :
- un chemin
src/…,rust/…,docs/…ou.github/…cité côté kit désigne un fichier de ce dépôt, surmain; - un chemin cité côté AI-DLC désigne un fichier du dépôt
aidlc-workflowsau tagv2.11.0; - les numéros de ligne valent pour ces deux états ; ils bougeront avec les versions suivantes ;
- « non vérifié » signifie que la page ne l'a ni lu ni mesuré. Ce n'est pas une estimation.
Gouvernance¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| Une garde qui bloque | Le hook rend permissionDecision avant un outil et decision: block sur Stop (src/grimoire/hosts/runtime.py:202-217), sur les hôtes capables de refuser. |
Gardes de plan et de gel de revue en PreToolUse (core/hooks/aidlc-plan-approval-guard.ts, core/hooks/aidlc-review-freeze.ts). |
| Garde en panne | Un gate de preuve illisible bloque en profil governed et production (src/grimoire/hosts/decisions/evidence_gate.py:151-154, :524-530). Un drapeau de pause illisible vaut drain (src/grimoire/missions/pause.py:14). |
Laisse passer : « Fail-open everywhere: malformed stdin, no audit ledger, unreadable state […] or any throw allows the call » (core/hooks/aidlc-review-freeze.ts:39-41). La garde de plan laisse passer hors Code Generation (core/hooks/aidlc-plan-approval-guard.ts:36-40). |
| Interrupteur | La variable GRIMOIRE_DONE_GATE peut armer le refus répété du Stop, jamais le désarmer (src/grimoire/hosts/decisions/done_gate.py:40, :502-504). Le plafond de blocages du Stop n'est pas réglable par l'agent (:799-801). |
AIDLC_DISABLE_PLAN_APPROVAL_GUARD=1 et AIDLC_DISABLE_REVIEW_FREEZE_HOOK=1 coupent les gardes (core/hooks/aidlc-plan-approval-guard.ts:2148-2149, core/hooks/aidlc-review-freeze.ts:237). La coupure de la garde de plan écrit une ligne GUARD_DISABLED (:41-44). |
| Stop répété | Le premier Stop sans preuve bloque. Les suivants ne bloquent qu'en mode enforce, que le projet doit activer. Par défaut, ils sont journalisés stop.would_block et passent (src/grimoire/hosts/decisions/evidence_gate.py:340-355, done_gate.py:146). |
Plafond de 2 blocages en interactif, 8 en autonome, avec signature de progrès (core/hooks/aidlc-continue-workflow.ts:244-245). |
| Règles apprises | Couches organization, team, project, agent (src/grimoire/core/layered_rules.py:1-40). Grammaire fermée ALWAYS\|NEVER <verbe> <objet> [@portée] : le code, pas un modèle, décide des conflits, et la couche extérieure l'emporte. Candidates tirées de faits observés, les refus de gate de tâche du TraceLedger, avec un seuil de 2 tâches distinctes ; acceptation par un humain, puis effet mesuré avant/après par un test exact de Fisher (src/grimoire/core/learned_rules.py:1-48 ; grimoire memory rules propose, accept, effect). Limite écrite : la seule source de candidats est le refus de gate de tâche, et avant/après n'est pas une expérience contrôlée. |
Couches organisation, équipe et projet (docs/guide/09-rules-and-the-learning-loop.md:38). Le candidat est un journal que le modèle rédige, trié par un humain à chaque porte (:57-73). RULE_LEARNED enregistre l'écriture de la règle, pas son effet (core/knowledge/aidlc-shared/audit-format.md:403). Le conflit avec une règle d'organisation est jugé par le modèle, « not an enforcement boundary » (:90). |
| Autorité humaine | Une décision est attested ou unattested (src/grimoire/flows/attestation.py:101-102). Écrire le journal des tours humains depuis un outil est refusé (src/grimoire/hosts/decisions/tool_policy.py:310-313). |
HUMAN_TURN enregistré sur UserPromptSubmit, « it does not authenticate who launched the dispatcher » (core/hooks/aidlc-record-human-turn.ts:6-7). Les événements HUMAN_TURN ne s'écrivent pas par la CLI (core/tools/aidlc-audit.ts:477-479). |
| Limite écrite | « L'attestation rend la falsification plus coûteuse et visible, pas impossible » (src/grimoire/hosts/decisions/human_turns.py:24-26). |
« Audit shards are operational evidence, not a tamper-proof human-authorship boundary » (core/knowledge/aidlc-shared/audit-format.md:94-95). |
| Approbation | Liée à l'empreinte de l'action : approuver une commande n'en approuve pas une autre (src/grimoire/policies/temporal.py:532-539). |
Commande de vérification autorisée par empreinte SHA-256 (core/tools/aidlc-swarm.ts:319-320). |
| Contournement journalisé | Override Gate <tâche>: <raison> et Lower Profile <profil>: <raison>, tapés par l'humain, écrits avant tout effet, à usage unique et bornés dans le temps (src/grimoire/hosts/decisions/gate_override.py:1-37, profile_floor.py:19-30). Ces journaux ne s'écrivent pas par un outil (gate_override.py:29-31). |
Ligne GUARD_DISABLED à la coupure de la garde de plan (core/hooks/aidlc-plan-approval-guard.ts:41-44). Pour le gel de revue : non vérifié. |
Lecture : les deux outils disent que leur preuve de présence humaine n'est pas une authentification. La différence porte sur la panne : le kit refuse, AI-DLC laisse passer et le documente.
Preuve¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| Journal chaîné | Le journal de preuve est chaîné par SHA-256, avec une ancre de fin (src/grimoire/core/standard_checks/evidence_chain.py:187-191). Limite écrite : qui réécrit le journal et l'ancre obtient une chaîne cohérente (:27-32). Le TraceLedger et le Mission Ledger ne sont pas chaînés. |
Journal d'audit en ajout seul, 115 types d'événements (core/knowledge/aidlc-shared/audit-format.md:45). Aucun chaînage trouvé. |
| Preuve rattachée aux commits | grimoire evidence resolve <base>..<head> juge chaque preuve contre les objets git de head : seule une preuve resolved compte (src/grimoire/core/standard_checks/evidence_resolve.py). |
aidlc attest resolve classe chaque chemin modifié en vérifié, dérivé ou non attesté (docs/reference/20-commit-provenance.md:15-19). |
| Reçu de revue | Lié à l'empreinte de l'arbre et du pack de preuve : un arbre modifié rend le reçu périmé (src/grimoire/missions/review_receipt.py:308-314). Limite écrite : un agent peut écrire lui-même un reçu frais (:22-26). |
Lié au condensat de l'enregistrement de revue (core/aidlc-common/protocols/stage-protocol-reviewer.md:188). Même limite écrite (docs/reference/20-commit-provenance.md:18). |
| Tests du gate | Le gate exécute la commande de test et lie le résultat à l'empreinte de l'arbre (src/grimoire/core/standard_checks/gate_test_run.py:181). |
Capteurs consultatifs : une erreur d'outil, un code 127 ou une sortie illisible donnent PASSED (core/tools/aidlc-sensor.ts:24-30). |
| Preuve déclarative | Marquée comme telle : verdict skipped, jamais passed, et elle ne ferme pas une tâche (src/grimoire/missions/declarative_evidence.py:12-15, src/grimoire/missions/gates.py:247-248). |
Les champs --user-input, --feedback et --details sont de la prose fournie par l'appelant (core/knowledge/aidlc-shared/audit-format.md:89-90). |
Coût¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| Coût inconnu | Trois états, exact, lower_bound et unknown. Le montant vaut None quand rien n'est chiffré, jamais 0.0, en Python (src/grimoire/costs.py:94-103) comme en Rust (rust/grimoire-traces-core/src/lib.rs:653-670). |
Coût null pour un modèle inconnu (core/tools/aidlc-usage.ts:19-20), mais le total additionne les seules lignes chiffrées, sans signaler que c'est une borne basse (:983). |
| Plafond et coût inconnu | Par défaut, un coût inconnu face à un plafond arrête (src/grimoire/costs.py:36-37, :149-155). |
Non vérifié. |
| Mesure réelle | Tokens repliés depuis le journal de session de Claude Code, un appel par message.id (src/grimoire/traces/transcript_usage.py). Le coût d'un appel avec tokens de cache reste inconnu : la table de tarifs ne modélise pas le cache. Le repli est manuel (grimoire task fold-usage). Les autres hôtes sont déclarés unavailable. |
Lecteur de transcription pour Claude Code seul. Sur les autres harnais, le journal n'est jamais écrit et l'outil « degrades silently to no-data » (core/tools/aidlc-usage.ts:9-13). |
Orchestration¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| File de tâches | Tableau, vagues, file et tick : grimoire task board, grimoire task waves, grimoire queue plan, grimoire orchestrate tick. |
Pas de kanban ni de file de tâches trouvés. /aidlc team-board est une vue en lecture seule des unités de Construction (docs/guide/12-cli-commands.md:318-320). |
| Limite de travail en cours | WIP global et par rôle, appliqués à la réservation. Une limite illisible refuse (src/grimoire/missions/admission.py:619-629). |
Non trouvé. |
| Pause et reprise | drain et hold, par tâche, par projet ou pour toute la machine (src/grimoire/missions/pause.py:1-23) : grimoire orchestrate pause, grimoire orchestrate resume. Reprise de flow idempotente (src/grimoire/flows/engine.py:966-986). |
/aidlc park, puis /aidlc --resume (docs/guide/12-cli-commands.md:302-312). next est idempotent à état inchangé (core/tools/aidlc-orchestrate.ts:6683). |
| Questions structurées | grimoire task ask, grimoire task answer. Une réponse qui ne vient pas du canal humain est refusée (src/grimoire/missions/service.py:775-777). |
DECISION_RECORDED avant toute question structurée (core/knowledge/aidlc-shared/audit-format.md:143). |
| Cadrage vers tâches | Oui, à partir de la version qui inclura #851 : grimoire cadrage plan crée une tâche du ledger par exigence REQ-NNN et pose les ambiguïtés en questions (src/grimoire/missions/cadrage_plan.py). Avant, grimoire cadrage décrit et vérifie le cadrage sans créer de tâches. |
Oui, par les stages d'Inception (exigences, user stories, planification de livraison) dans core/aidlc-common/stages/inception/. |
| Autonomie | Octroi borné par périmètre, coût et échéance, révoqué au premier coût inconnu ou au premier gate rouge (src/grimoire/flows/autonomy.py:1-34) : grimoire autonomy grant. |
Mode autonomous ou gated (AUTONOMY_MODE_SET, core/knowledge/aidlc-shared/audit-format.md:332), limité aux checkpoints de Construction. |
Hôtes¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| Hôtes | 6 : Claude Code, GitHub Copilot, Codex, Cursor, Gemini CLI, opencode (src/grimoire/hosts/emitters/__init__.py:25-32). Claude Code, Copilot et opencode peuvent refuser. Codex, Cursor et Gemini CLI ne le peuvent pas : ils reçoivent la raison sans blocage (src/grimoire/hosts/capabilities.py:120-190). |
7 harnais : Claude Code, Codex, Copilot, Cursor, Kiro CLI, Kiro IDE, opencode (harness/, CHANGELOG.md:129). Ce que chaque hook bloque sur chaque harnais : non vérifié. |
| Matrice règle × hôte | Calculée depuis ce que chaque émetteur écrit, sans cellule écrite à la main (src/grimoire/hosts/matrix.py:1-19) : grimoire host matrix. |
Non trouvée. |
| Sonde sur disque | Confronte la matrice aux fichiers présents : applied, missing, stale, conflict, disabled… (src/grimoire/hosts/probe.py:1-20) : grimoire host probe. |
aidlc doctor (core/tools/aidlc.ts:181-188). Son contenu n'a pas été comparé. |
| Synchronisation | Transactionnelle pour tous les hôtes à la fois : une panne défait ce qui a été écrit (src/grimoire/hosts/emitters/base.py:457-471). Limite écrite : un processus tué laisse les fichiers déjà remplacés (:491-494). |
Non vérifié. |
Distribution¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| Attestation de release | Provenance Sigstore sur chaque fichier, vérifiée par gh attestation verify avant toute publication (.github/workflows/publish.yml:179-226). |
Attestation in-toto vérifiée à l'installation (scripts/install.sh:389-396). Sans gh, l'installation continue sur les seules sommes SHA-256 et ne le dit qu'en mode interactif (:382-384). |
| Vérifier une installation | grimoire verify-install : empreinte PyPI, SHA256SUMS de la release, puis RECORD (src/grimoire/tools/install_trust.py:1-29). |
Sommes vérifiées à l'installation (scripts/install.sh:447). |
| Hors ligne | Installation d'un bundle avec grimoire update --from <dossier>, niveau de confiance bundle, jamais verified (src/grimoire/tools/update_bundle.py:1-23). grimoire self bundle <dossier> construit ce bundle en ligne : wheel vérifiée contre PyPI et le SHA256SUMS de la release, dépendances en wheels seulement, SHA256SUMS et PROVENANCE.json, relus par le lecteur de l'installation avant d'être rendus (src/grimoire/tools/update_bundle_build.py, src/grimoire/cli/cmd_self_bundle.py). Limite écrite : les dépendances viennent d'un index sans empreinte publiée par le kit. |
--from <dossier> et --offline (scripts/install.sh:110-111). |
| Canaux | stable et preview (grimoire update --channel). |
Stable et preview (scripts/install.sh:17-20). |
| Script d'installation | install.sh installe par pipx, sans somme de contrôle. |
Sommes vérifiées. |
Expérience¶
| Point | grimoire-kit | AI-DLC 2.11.0 |
|---|---|---|
| Tableau de bord | Cockpit web local : projets, activité, mises à jour (grimoire cockpit serve, grimoire cockpit open). |
Aucune interface web trouvée. Ligne d'état du terminal (core/hooks/aidlc-statusline.ts) et team-board en lecture seule. |
| CLI | grimoire --help met cinq commandes en avant pour commencer, et grimoire --help --all les affiche toutes. |
aidlc pour l'humain, aidlc engine <nom> <verbe> pour le moteur (core/tools/aidlc.ts:181-212), et les commandes /aidlc dans la session. |
| MCP | Serveur MCP livré, 26 outils : contexte, mémoire, standard, tâches, hôtes (src/grimoire/mcp/server.py). |
Aucun serveur MCP livré. AI-DLC configure des serveurs externes. |
Résultats mesurés¶
Les chiffres ci-dessous sont les seuls qui viennent d'une mesure. Ils portent sur un modèle (claude-opus-5-5), un hôte (Claude Code) et des exercices du banc polyglotte d'Aider.
AI-DLC face à Claude seul, 20 tâches¶
Source : Banc à trois bras (docs/_archive/bench-three-arms.md, dépôt), §15.5 à §15.7.
Configuration : scope express, une personne simulée qui répond Approved. à chaque gate.
| Claude seul (lot L, k=3) | AI-DLC (palier 1, k=1) | |
|---|---|---|
| Tâches résolues | 20/20 | 20/20 |
| Coût médian par run | 0,159 $ | 4,592 $ |
| Rapport de coût par tâche (médiane) | 1 | environ 28 |
| Temps mur médian par run | 22 s | 494 s |
| Tours médians | 3 | 76 |
Limites, écrites dans la source :
- le succès ne départage rien : à 20 tâches, l'écart minimal détectable est de 44 points ;
- k=1 côté AI-DLC : la variance par tâche n'est pas mesurée ;
- dans 18 runs sur 20, l'agent principal écrit la solution avant le stage Code Generation : le succès mesure surtout le modèle, et le coût mesure la cérémonie d'AI-DLC (
docs/_archive/bench-three-arms.md, §15.7) ; - AI-DLC reçoit une personne qui approuve tout, ce qu'aucun autre bras ne reçoit ;
- les coûts sont des tarifs « list » de Claude Code sous abonnement, pas une facture.
Tamis du lot M : Claude seul, 141 runs¶
Mesuré le 2026-10-20, bras nu seul, k=1, Claude Code 2.1.304.
Données brutes hors dépôt : results.jsonl du workspace du banc et journal de budget de la passe.
| Valeur | |
|---|---|
| Runs écrits | 141 sur 148 tâches tirées |
| Réussis | 140 sur 141. Seul échec : python/tree-building |
| Exercices polyglottes | 131 sur 132 |
| Bloc K (défauts réels du kit) | 9 sur 9 (k01 à k09) |
| Coût | 21,68 $ connus au journal, dont 0,38 $ de sondes et de contrôle d'isolation |
Limites :
- la passe s'est arrêtée avant les tâches
k10àk17; - l'appel de
k10est ouvert au journal sans ligne de fin : son coût est inconnu, il n'est pas compté pour zéro ; - 4 transcriptions sont signalées
invalidpar le contrôle de transcription (go/two-bucket,k01,k06,k09) et n'ont pas été relues ; les taux ci-dessus comptent tous les runs ; - aucun autre bras n'a tourné sur ce lot.
Ce qu'on en conclut¶
Aucune supériorité de résultat n'est démontrée. Les tâches disponibles, y compris des défauts réels du kit, sont résolues par Claude seul. La différence démontrée porte sur les garanties, le coût et l'outillage.
Les bancs payants sont suspendus depuis le 2026-10-20, par décision du mainteneur : ils coûtent en quota pour un rendement faible. Cette page ne propose pas de nouvelle campagne.
Ce qu'AI-DLC fait et que le kit ne fait pas¶
- Un cycle de vie complet. 5 phases et 33 stages (
docs/guide/04-phases-and-stages.md:3) : étude de marché, exigences, user stories, conception, infrastructure, déploiement, réponse à incident (core/aidlc-common/stages/). - 11 scopes, du correctif à l'entreprise (
docs/guide/05-scopes-and-depth.md:13), et un compositeur qui choisit les stages (/aidlc compose). - 14 rôles d'agent : produit, architecte, design, qualité, DevSecOps, conformité, exploitation… (
core/agents/). - Le travail en équipe. Construction partagée en unités, avec réservation, adoption et publication (
docs/guide/12-cli-commands.md:499-653), et un mode atelier multi-équipes (docs/guide/workshop-mode.md). - La rétro-ingénierie d'un existant, avec une base de connaissance du code (
core/aidlc-common/stages/inception/reverse-engineering.md:5). - Kiro CLI et Kiro IDE parmi les harnais.
- Une installation hors ligne depuis un dossier de release publié (
scripts/install.sh:110-111). - Une ingénierie de test visible : 779 fichiers
*.test.ts, une couverture qui ne peut que croître (.github/workflows/ci.yml:542) et une suite complète exigée avant une release stable (.github/workflows/release.yml:56-58).
Ce qui n'est pas vérifié ici¶
- La qualité du code produit par chacun des deux outils sur des tâches où Claude seul échoue : aucune tâche de ce genre n'est disponible.
- Le comportement des hooks d'AI-DLC sur chaque harnais autre que Claude Code.
- Le coût d'AI-DLC dans ses autres scopes que
express. - L'effort humain réel : la personne simulée approuve sans lire.