devmethod-ai 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/design-to-code/SKILL.md +7 -1
- package/.agents/skills/design-to-code/references/visual-creation.md +37 -0
- package/.agents/skills/project-foundation/SKILL.md +1 -1
- package/.agents/skills/project-foundation/assets/PROJECT_PROFILE.md +1 -0
- package/.agents/skills/project-foundation/references/mission-context.md +10 -0
- package/.agents/skills/project-foundation/references/operating-commands.md +14 -2
- package/.agents/skills/scoped-delivery/SKILL.md +2 -0
- package/.agents/skills/scoped-delivery/assets/MISSION.md +18 -1
- package/COMPATIBILITY.md +1 -1
- package/README.md +31 -12
- package/docs/MISSIONS.md +2 -0
- package/docs/RELEASE-0.1.0.md +14 -3
- package/docs/RELEASE-0.2.0.md +37 -0
- package/docs/ROADMAP.md +2 -0
- package/docs/VISUAL-CREATION-PROPOSAL.md +21 -0
- package/docs/VISUAL-WORKFLOW.md +75 -0
- package/docs/images/devmethod-delivery.svg +10 -0
- package/docs/images/devmethod-flow.svg +13 -26
- package/docs/media/from-zero/README.md +17 -0
- package/docs/media/from-zero/devmethod-demo.fr.srt +59 -0
- package/docs/media/from-zero/scenes.json +50 -0
- package/docs/media/full-chain-4k/README.md +37 -0
- package/docs/media/full-chain-4k/devmethod-chaine-complete.fr.srt +435 -0
- package/docs/media/full-chain-4k/scenes.json +173 -0
- package/docs/media/full-chain-4k/transcripts.fr.md +315 -0
- package/docs/media/visual-chain/README.md +44 -0
- package/docs/media/visual-chain/assets/add-book-v1.png +0 -0
- package/docs/media/visual-chain/assets/completed-v1.png +0 -0
- package/docs/media/visual-chain/devmethod-du-besoin-au-produit.fr.srt +147 -0
- package/docs/media/visual-chain/execution.fr.md +30 -0
- package/docs/media/visual-chain/image-prompts.json +9 -0
- package/docs/media/visual-chain/reference-hashes.json +5 -0
- package/docs/media/visual-chain/scenes.json +232 -0
- package/docs/media/visual-chain/video-preview.jpg +0 -0
- package/docs/missions/visual-workflow.md +46 -0
- package/examples/clair-from-zero/AGENT-EVALUATION.md +15 -0
- package/examples/clair-from-zero/MISSION.md +41 -0
- package/examples/clair-from-zero/README.md +24 -0
- package/examples/clair-from-zero/app/app.mjs +69 -0
- package/examples/clair-from-zero/app/domain.mjs +30 -0
- package/examples/clair-from-zero/app/index.html +20 -0
- package/examples/clair-from-zero/app/storage.mjs +4 -0
- package/examples/clair-from-zero/app/styles.css +128 -0
- package/examples/clair-from-zero/browser-check.cjs +2 -0
- package/examples/clair-from-zero/tests/domain.test.mjs +37 -0
- package/examples/visual-pilot/README.md +11 -0
- package/examples/visual-pilot/app/app.js +10 -0
- package/examples/visual-pilot/app/index.html +1 -0
- package/examples/visual-pilot/app/reference.png +0 -0
- package/examples/visual-pilot/app/style.css +3 -0
- package/examples/visual-pilot/browser-check.cjs +3 -0
- package/examples/visual-pilot/desktop-actual.png +0 -0
- package/examples/visual-pilot/directions-prompt.txt +1 -0
- package/examples/visual-pilot/directions-v1.png +0 -0
- package/examples/visual-pilot/editorial-mockup-prompt.txt +1 -0
- package/examples/visual-pilot/editorial-mockup-v1.png +0 -0
- package/examples/visual-pilot/mismatch-probe.png +0 -0
- package/examples/visual-pilot/mobile-actual.png +0 -0
- package/examples/visual-pilot/quick-filter/AGENT-RESULT.md +25 -0
- package/examples/visual-pilot/quick-filter/baseline.log +42 -0
- package/examples/visual-pilot/quick-filter/filter.mjs +3 -0
- package/examples/visual-pilot/quick-filter/filter.test.mjs +9 -0
- package/package.json +2 -2
- package/scripts/media/demo-actions.cjs +16 -0
- package/scripts/media/encode-demo.py +22 -0
- package/scripts/media/record-demo.cjs +30 -0
- package/scripts/media/visual-short/check.cjs +1 -0
- package/scripts/media/visual-short/encode.py +16 -0
- package/scripts/media/visual-short/record.cjs +4 -0
- package/scripts/media/visual-short/story.py +34 -0
- package/scripts/package-smoke.mjs +2 -2
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
1
|
|
2
|
+
00:00:00,000 --> 00:00:03,789
|
|
3
|
+
Du besoin au design, des choix techniques au produit vérifié.
|
|
4
|
+
|
|
5
|
+
2
|
|
6
|
+
00:00:03,789 --> 00:00:06,211
|
|
7
|
+
Voici Dev Method sur un projet concret.
|
|
8
|
+
|
|
9
|
+
3
|
|
10
|
+
00:00:06,917 --> 00:00:11,573
|
|
11
|
+
D’abord, décrivez le produit et ce que son utilisateur doit pouvoir faire.
|
|
12
|
+
|
|
13
|
+
4
|
|
14
|
+
00:00:12,924 --> 00:00:19,739
|
|
15
|
+
Frame fixe le périmètre : une bibliothèque personnelle, trois statuts, et une sauvegarde sur cet appareil.
|
|
16
|
+
|
|
17
|
+
5
|
|
18
|
+
00:00:20,596 --> 00:00:24,253
|
|
19
|
+
Avec design, demandez trois directions pour le même écran.
|
|
20
|
+
|
|
21
|
+
6
|
|
22
|
+
00:00:26,712 --> 00:00:29,024
|
|
23
|
+
Éditorial, Atelier ou Botanique.
|
|
24
|
+
|
|
25
|
+
7
|
|
26
|
+
00:00:29,024 --> 00:00:32,204
|
|
27
|
+
Même contenu, trois personnalités visuelles.
|
|
28
|
+
|
|
29
|
+
8
|
|
30
|
+
00:00:33,056 --> 00:00:34,278
|
|
31
|
+
Ici, le choix est A.
|
|
32
|
+
|
|
33
|
+
9
|
|
34
|
+
00:00:34,278 --> 00:00:37,270
|
|
35
|
+
Codex développe cette direction en master screen.
|
|
36
|
+
|
|
37
|
+
10
|
|
38
|
+
00:00:40,166 --> 00:00:44,773
|
|
39
|
+
Le master précise la typographie, les couleurs, les cartes et les boutons.
|
|
40
|
+
|
|
41
|
+
11
|
|
42
|
+
00:00:44,773 --> 00:00:46,702
|
|
43
|
+
Il est approuvé avant la suite.
|
|
44
|
+
|
|
45
|
+
12
|
|
46
|
+
00:00:48,594 --> 00:00:53,610
|
|
47
|
+
La commande suivante reste design : génère les écrans à partir de ce master.
|
|
48
|
+
|
|
49
|
+
13
|
|
50
|
+
00:00:56,045 --> 00:01:00,852
|
|
51
|
+
Voici le formulaire d’ajout, généré avec le master comme référence visuelle.
|
|
52
|
+
|
|
53
|
+
14
|
|
54
|
+
00:01:02,182 --> 00:01:04,090
|
|
55
|
+
Puis la vue des lectures terminées.
|
|
56
|
+
|
|
57
|
+
15
|
|
58
|
+
00:01:04,090 --> 00:01:07,035
|
|
59
|
+
La même direction accompagne un autre état du produit.
|
|
60
|
+
|
|
61
|
+
16
|
|
62
|
+
00:01:09,191 --> 00:01:14,650
|
|
63
|
+
Architecture compare les options selon les besoins, le coût et la maintenance.
|
|
64
|
+
|
|
65
|
+
17
|
|
66
|
+
00:01:14,650 --> 00:01:19,199
|
|
67
|
+
Pour ce petit prototype local, HTML, CSS et JavaScript suffisent.
|
|
68
|
+
|
|
69
|
+
18
|
|
70
|
+
00:01:20,165 --> 00:01:23,065
|
|
71
|
+
Les règles des livres restent séparées de l’interface.
|
|
72
|
+
|
|
73
|
+
19
|
|
74
|
+
00:01:23,065 --> 00:01:25,160
|
|
75
|
+
Les données sauvegardées sont validées.
|
|
76
|
+
|
|
77
|
+
20
|
|
78
|
+
00:01:25,160 --> 00:01:28,919
|
|
79
|
+
Une synchronisation entre appareils demanderait une nouvelle décision.
|
|
80
|
+
|
|
81
|
+
21
|
|
82
|
+
00:01:30,028 --> 00:01:34,242
|
|
83
|
+
Le plan relie ces écrans aux actions à réaliser et aux vérifications attendues.
|
|
84
|
+
|
|
85
|
+
22
|
|
86
|
+
00:01:36,041 --> 00:01:40,848
|
|
87
|
+
Ready vérifie le périmètre, les dépendances et les critères de réussite avant de coder.
|
|
88
|
+
|
|
89
|
+
23
|
|
90
|
+
00:01:42,046 --> 00:01:46,678
|
|
91
|
+
Implement construit l’interface et ses vrais comportements à partir des références.
|
|
92
|
+
|
|
93
|
+
24
|
|
94
|
+
00:01:48,086 --> 00:01:49,361
|
|
95
|
+
Passons au résultat.
|
|
96
|
+
|
|
97
|
+
25
|
|
98
|
+
00:01:49,361 --> 00:01:51,019
|
|
99
|
+
On filtre la bibliothèque.
|
|
100
|
+
|
|
101
|
+
26
|
|
102
|
+
00:01:51,019 --> 00:01:52,230
|
|
103
|
+
On ajoute un livre.
|
|
104
|
+
|
|
105
|
+
27
|
|
106
|
+
00:01:52,230 --> 00:01:55,418
|
|
107
|
+
On commence sa lecture, puis on le marque terminé.
|
|
108
|
+
|
|
109
|
+
28
|
|
110
|
+
00:01:55,418 --> 00:01:58,988
|
|
111
|
+
Après rechargement, les données sont toujours présentes.
|
|
112
|
+
|
|
113
|
+
29
|
|
114
|
+
00:02:08,202 --> 00:02:12,927
|
|
115
|
+
Sur mobile, les mêmes actions restent accessibles dans une disposition adaptée.
|
|
116
|
+
|
|
117
|
+
30
|
|
118
|
+
00:02:14,208 --> 00:02:16,536
|
|
119
|
+
Review examine le code et les risques.
|
|
120
|
+
|
|
121
|
+
31
|
|
122
|
+
00:02:16,536 --> 00:02:21,313
|
|
123
|
+
Ici, la revue a conduit à corriger une alerte masquée et le maintien du focus.
|
|
124
|
+
|
|
125
|
+
32
|
|
126
|
+
00:02:22,443 --> 00:02:25,926
|
|
127
|
+
Verify contrôle les parcours utiles et les résultats des tests.
|
|
128
|
+
|
|
129
|
+
33
|
|
130
|
+
00:02:28,639 --> 00:02:33,596
|
|
131
|
+
On compare ensuite le navigateur aux références, puis on corrige les écarts importants.
|
|
132
|
+
|
|
133
|
+
34
|
|
134
|
+
00:02:36,378 --> 00:02:40,128
|
|
135
|
+
La livraison locale conserve le résultat et son état de reprise.
|
|
136
|
+
|
|
137
|
+
35
|
|
138
|
+
00:02:42,393 --> 00:02:45,861
|
|
139
|
+
Handoff conserve les décisions, les preuves et les limites.
|
|
140
|
+
|
|
141
|
+
36
|
|
142
|
+
00:02:45,861 --> 00:02:50,799
|
|
143
|
+
Next retrouve ensuite la suite pertinente, ou constate que le périmètre est terminé.
|
|
144
|
+
|
|
145
|
+
37
|
|
146
|
+
00:02:51,507 --> 00:02:55,280
|
|
147
|
+
Découvrez Dev Method sur GitHub et essayez cette chaîne sur votre projet.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Exécution réelle après génération des images
|
|
2
|
+
|
|
3
|
+
Le master approuvé et les deux images dérivées étaient présents avant le code. Le dossier neuf ne contenait pas l’ancien prototype. Les étapes d’architecture, plan et préparation sont regroupées dans cette instruction.
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
$project-foundation implement VISUAL-1
|
|
7
|
+
Lis BRIEF.md et inspecte réellement les trois images de references/. Réalise le prototype décrit à partir de ces images, sans ancien code fourni. Fais la préparation et le plan proportionnés inline, implémente, teste puis relis et corrige les défauts locaux. Pas de navigateur : le parent le vérifie. Garde une mission compacte, pas un document par étape. Respecte la typographie légère et le master approuvé. Réponse finale française150 mots maximum avec preuves et prochaine commande.
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Sortie Codex CLI
|
|
11
|
+
|
|
12
|
+
VISUAL-1 est implémenté dans [app/](<projet>/app) avec :
|
|
13
|
+
|
|
14
|
+
- bibliothèque responsive fidèle au master ;
|
|
15
|
+
- couvertures recadrées depuis `master.png` ;
|
|
16
|
+
- filtres, transitions d’état et ajout par dialogue accessible ;
|
|
17
|
+
- persistance `localStorage` protégeant les données invalides ;
|
|
18
|
+
- état vide et erreurs visibles.
|
|
19
|
+
|
|
20
|
+
Preuves : 6/6 tests Node réussis dans [domain.test.mjs](<projet>/tests/domain.test.mjs), contrôles syntaxiques réussis, aucune requête externe. Relecture effectuée et recadrage responsive corrigé. `CONTRIBUTING.md` est absent, sans blocage. Le rendu navigateur reste volontairement non vérifié par cette mission.
|
|
21
|
+
|
|
22
|
+
Prochaine commande : `$project-foundation verify VISUAL-1`
|
|
23
|
+
|
|
24
|
+
## Vérification parent postérieure
|
|
25
|
+
|
|
26
|
+
Après correction CSS de hidden et conservation du focus lors des transitions : 6 tests Node réussis. Chrome confirme 3 livres initiaux, alerte masquée normalement, filtre terminé, rouvrir et état vide, dialogue, ajout, persistance après reload, mobile390px sans débordement, données locales illisibles non écrasées. Aucun pageerror dans le parcours normal. Captures inspected desktop/mobile/modal.
|
|
27
|
+
|
|
28
|
+
Livraison locale seulement. La scène integrate est une commande type associée à cette livraison, pas une preuve de déploiement.
|
|
29
|
+
|
|
30
|
+
Le CLI a omis le document de mission demandé. Le parent a créé le checkpoint MISSION.md après vérification ; ce test supervisé ne prouve pas une tenue autonome parfaite du contexte.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tool": "image_gen",
|
|
3
|
+
"master": "../../../examples/visual-pilot/editorial-mockup-v1.png",
|
|
4
|
+
"prompts": [
|
|
5
|
+
"Use case: ui-mockup. Generate a high fidelity French Lisière desktop screen derived from the attached APPROVED MASTER, not a new artistic direction. Output a single flat browser UI canvas, landscape 1536x1024, no device frame, no headings outside UI. Exact same ivory background, elegant regular-weight serif typography, thin rules, rust red primary button, book cover artwork and library header as master. Show the ADD BOOK state: center an elegant compact modal titled 'Ajouter un livre' over the dimmed existing library. Fields labeled 'Titre' and 'Auteur', filled 'Les heures claires' and 'Camille Laurent'. Footer actions 'Annuler' outlined and 'Ajouter' solid rust. Close × upper right. Main library stays subtly visible behind, no new navigation or functionality. Match reference identity and practical interface geometry. Crisp legible French text, consistent controls, no invented product features.",
|
|
6
|
+
"Use case: ui-mockup. Generate a high fidelity French Lisière desktop screen derived from the attached APPROVED MASTER, not a new artistic direction. Output single flat UI canvas landscape1536x1024 no devices or external titles. Preserve ivory, regular serif type, rust accents, thin separators, header 'Lisière' and 'Bibliothèque personnelle', heading 'Mes lectures', subtitle, upper right '+ Ajouter un livre', exact filters 'Tous', 'À lire', 'En cours', 'Terminés'. Show TERMINÉS selected with rust underline. A single completed book card uses the same 'Les jours tranquilles' cover artwork, title 'Les jours tranquilles', author 'Élise Martin', status pill 'Terminé', outlined action 'Rouvrir'. Spacious editorial layout aligned to master desktop grid, no new navigation or other content. Footer 'Lire, c’est habiter un peu plus grand.' and 'Démonstration · Livres fictifs'. Make this an obvious consistent derivative screen of the reference."
|
|
7
|
+
],
|
|
8
|
+
"correction": "Add-book initial result duplicated the mobile panel; corrected with image_gen to retain a single desktop background. Final add-book-v1.png was visually inspected."
|
|
9
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"kind": "intro",
|
|
4
|
+
"title": "De l’idée à l’application",
|
|
5
|
+
"voice": "Du besoin au design, des choix techniques au produit vérifié. Voici Dev Method sur un projet concret.",
|
|
6
|
+
"duration": 6.911338,
|
|
7
|
+
"command": "",
|
|
8
|
+
"request": "",
|
|
9
|
+
"asset": "",
|
|
10
|
+
"output": ""
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"kind": "text",
|
|
14
|
+
"title": "Décrire le produit",
|
|
15
|
+
"voice": "D’abord, décrivez le produit et ce que son utilisateur doit pouvoir faire.",
|
|
16
|
+
"duration": 6,
|
|
17
|
+
"command": "$project-foundation explore",
|
|
18
|
+
"request": "Une bibliothèque personnelle pour suivre mes lectures.",
|
|
19
|
+
"asset": "",
|
|
20
|
+
"output": "Ajouter un livre · Suivre sa lecture · Retrouver ses données"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"kind": "text",
|
|
24
|
+
"title": "Cadrer une première version",
|
|
25
|
+
"voice": "Frame fixe le périmètre : une bibliothèque personnelle, trois statuts, et une sauvegarde sur cet appareil.",
|
|
26
|
+
"duration": 7.5150570000000005,
|
|
27
|
+
"command": "$project-foundation frame",
|
|
28
|
+
"request": "Définis une première version utile et ses limites.",
|
|
29
|
+
"asset": "",
|
|
30
|
+
"output": "Ajouter · Filtrer · Changer de statut · Conserver les livres localement"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"kind": "image",
|
|
34
|
+
"title": "Demander trois directions",
|
|
35
|
+
"voice": "Avec design, demandez trois directions pour le même écran.",
|
|
36
|
+
"duration": 6,
|
|
37
|
+
"command": "$project-foundation design",
|
|
38
|
+
"request": "Propose trois directions visuelles comparables.",
|
|
39
|
+
"asset": "directions",
|
|
40
|
+
"output": ""
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"kind": "options",
|
|
44
|
+
"title": "Comparer, puis choisir",
|
|
45
|
+
"voice": "Éditorial, Atelier ou Botanique. Même contenu, trois personnalités visuelles.",
|
|
46
|
+
"duration": 6.191519,
|
|
47
|
+
"command": "",
|
|
48
|
+
"request": "",
|
|
49
|
+
"asset": "directions",
|
|
50
|
+
"output": ""
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"kind": "choice",
|
|
54
|
+
"title": "Choisir A — Éditorial",
|
|
55
|
+
"voice": "Ici, le choix est A. Codex développe cette direction en master screen.",
|
|
56
|
+
"duration": 7,
|
|
57
|
+
"command": "$project-foundation design",
|
|
58
|
+
"request": "Je choisis A. Finalise le master screen.",
|
|
59
|
+
"asset": "master",
|
|
60
|
+
"output": ""
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"kind": "image",
|
|
64
|
+
"title": "Le master fixe la référence",
|
|
65
|
+
"voice": "Le master précise la typographie, les couleurs, les cartes et les boutons. Il est approuvé avant la suite.",
|
|
66
|
+
"duration": 8,
|
|
67
|
+
"command": "",
|
|
68
|
+
"request": "",
|
|
69
|
+
"asset": "master",
|
|
70
|
+
"output": ""
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"kind": "derive",
|
|
74
|
+
"title": "Décliner le master",
|
|
75
|
+
"voice": "La commande suivante reste design : génère les écrans à partir de ce master.",
|
|
76
|
+
"duration": 7,
|
|
77
|
+
"command": "$project-foundation design",
|
|
78
|
+
"request": "Décline ce master : bibliothèque, ajout et lectures terminées.",
|
|
79
|
+
"asset": "master",
|
|
80
|
+
"output": ""
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"kind": "image",
|
|
84
|
+
"title": "Écran 02 — Ajouter un livre",
|
|
85
|
+
"voice": "Voici le formulaire d’ajout, généré avec le master comme référence visuelle.",
|
|
86
|
+
"duration": 6,
|
|
87
|
+
"command": "",
|
|
88
|
+
"request": "",
|
|
89
|
+
"asset": "add",
|
|
90
|
+
"output": ""
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"kind": "image",
|
|
94
|
+
"title": "Écran 03 — Lectures terminées",
|
|
95
|
+
"voice": "Puis la vue des lectures terminées. La même direction accompagne un autre état du produit.",
|
|
96
|
+
"duration": 7,
|
|
97
|
+
"command": "",
|
|
98
|
+
"request": "",
|
|
99
|
+
"asset": "completed",
|
|
100
|
+
"output": ""
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"kind": "text",
|
|
104
|
+
"title": "Choisir les technologies",
|
|
105
|
+
"voice": "Architecture compare les options selon les besoins, le coût et la maintenance. Pour ce petit prototype local, HTML, CSS et JavaScript suffisent.",
|
|
106
|
+
"duration": 10.707799999999999,
|
|
107
|
+
"command": "$project-foundation architecture",
|
|
108
|
+
"request": "Compare les options techniques adaptées à ce périmètre.",
|
|
109
|
+
"asset": "",
|
|
110
|
+
"output": "Prototype retenu : HTML + CSS + JavaScript · Stockage local au navigateur"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"kind": "text",
|
|
114
|
+
"title": "Organiser le code",
|
|
115
|
+
"voice": "Les règles des livres restent séparées de l’interface. Les données sauvegardées sont validées. Une synchronisation entre appareils demanderait une nouvelle décision.",
|
|
116
|
+
"duration": 9.453923,
|
|
117
|
+
"command": "$project-foundation architecture",
|
|
118
|
+
"request": "Définis les responsabilités, les risques et les compromis.",
|
|
119
|
+
"asset": "",
|
|
120
|
+
"output": "Interface ↔ Règles métier ↔ Sauvegarde locale · Limite : un appareil"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"kind": "text",
|
|
124
|
+
"title": "Préparer la réalisation",
|
|
125
|
+
"voice": "Le plan relie ces écrans aux actions à réaliser et aux vérifications attendues.",
|
|
126
|
+
"duration": 6,
|
|
127
|
+
"command": "$project-foundation plan",
|
|
128
|
+
"request": "Prépare une première tranche à partir des écrans.",
|
|
129
|
+
"asset": "",
|
|
130
|
+
"output": "Bibliothèque + filtres → Formulaire → Statuts + sauvegarde"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"kind": "text",
|
|
134
|
+
"title": "Vérifier que la tranche est prête",
|
|
135
|
+
"voice": "Ready vérifie le périmètre, les dépendances et les critères de réussite avant de coder.",
|
|
136
|
+
"duration": 6,
|
|
137
|
+
"command": "$project-foundation ready VISUAL-1",
|
|
138
|
+
"request": "Vérifie que cette tranche est prête.",
|
|
139
|
+
"asset": "",
|
|
140
|
+
"output": "Références disponibles · Interactions définies · Tests attendus"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"kind": "text",
|
|
144
|
+
"title": "Transformer les images en code",
|
|
145
|
+
"voice": "Implement construit l’interface et ses vrais comportements à partir des références.",
|
|
146
|
+
"duration": 6,
|
|
147
|
+
"command": "$project-foundation implement VISUAL-1",
|
|
148
|
+
"request": "Implémente les écrans et leurs interactions.",
|
|
149
|
+
"asset": "",
|
|
150
|
+
"output": "Nouvelle implémentation à partir du master et des images dérivées"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"kind": "app",
|
|
154
|
+
"title": "L’application fonctionne",
|
|
155
|
+
"voice": "Passons au résultat. On filtre la bibliothèque. On ajoute un livre. On commence sa lecture, puis on le marque terminé. Après rechargement, les données sont toujours présentes.",
|
|
156
|
+
"duration": 20,
|
|
157
|
+
"command": "",
|
|
158
|
+
"request": "",
|
|
159
|
+
"asset": "",
|
|
160
|
+
"output": ""
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"kind": "image",
|
|
164
|
+
"title": "Aussi sur mobile",
|
|
165
|
+
"voice": "Sur mobile, les mêmes actions restent accessibles dans une disposition adaptée.",
|
|
166
|
+
"duration": 6,
|
|
167
|
+
"command": "",
|
|
168
|
+
"request": "",
|
|
169
|
+
"asset": "mobile",
|
|
170
|
+
"output": ""
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"kind": "text",
|
|
174
|
+
"title": "Relire et corriger",
|
|
175
|
+
"voice": "Review examine le code et les risques. Ici, la revue a conduit à corriger une alerte masquée et le maintien du focus.",
|
|
176
|
+
"duration": 8,
|
|
177
|
+
"command": "$project-foundation review VISUAL-1",
|
|
178
|
+
"request": "Relis la tranche et signale les défauts à corriger.",
|
|
179
|
+
"asset": "",
|
|
180
|
+
"output": "Corrections réelles : affichage de l’alerte · Focus après changement de statut"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"kind": "text",
|
|
184
|
+
"title": "Vérifier le résultat",
|
|
185
|
+
"voice": "Verify contrôle les parcours utiles et les résultats des tests.",
|
|
186
|
+
"duration": 6,
|
|
187
|
+
"command": "$project-foundation verify VISUAL-1",
|
|
188
|
+
"request": "Vérifie les parcours, les erreurs et le rendu.",
|
|
189
|
+
"asset": "",
|
|
190
|
+
"output": "6 tests Node réussis · Parcours Chrome · Sauvegarde · Mobile"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"kind": "compare",
|
|
194
|
+
"title": "Comparer au design",
|
|
195
|
+
"voice": "On compare ensuite le navigateur aux références, puis on corrige les écarts importants.",
|
|
196
|
+
"duration": 7,
|
|
197
|
+
"command": "",
|
|
198
|
+
"request": "",
|
|
199
|
+
"asset": "desktop",
|
|
200
|
+
"output": ""
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"kind": "text",
|
|
204
|
+
"title": "Livrer une tranche terminée",
|
|
205
|
+
"voice": "La livraison locale conserve le résultat et son état de reprise.",
|
|
206
|
+
"duration": 6,
|
|
207
|
+
"command": "$project-foundation integrate VISUAL-1",
|
|
208
|
+
"request": "Consigne la livraison locale et la reprise.",
|
|
209
|
+
"asset": "",
|
|
210
|
+
"output": "Prototype local · Parcours vérifiés · Références conservées"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"kind": "text",
|
|
214
|
+
"title": "Reprendre sans repartir de zéro",
|
|
215
|
+
"voice": "Handoff conserve les décisions, les preuves et les limites. Next retrouve ensuite la suite pertinente, ou constate que le périmètre est terminé.",
|
|
216
|
+
"duration": 9.105623999999999,
|
|
217
|
+
"command": "$project-foundation handoff",
|
|
218
|
+
"request": "Prépare un point de reprise fidèle à la livraison.",
|
|
219
|
+
"asset": "",
|
|
220
|
+
"output": "Décisions + résultat + limites → $project-foundation next"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"kind": "end",
|
|
224
|
+
"title": "Votre idée. Une chaîne visible.",
|
|
225
|
+
"voice": "Découvrez Dev Method sur GitHub et essayez cette chaîne sur votre projet.",
|
|
226
|
+
"duration": 6,
|
|
227
|
+
"command": "",
|
|
228
|
+
"request": "",
|
|
229
|
+
"asset": "",
|
|
230
|
+
"output": ""
|
|
231
|
+
}
|
|
232
|
+
]
|
|
Binary file
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Visual workflow and proportionate delivery pilot
|
|
2
|
+
|
|
3
|
+
Canonical local mission record. Scope: incorporate the previously reviewed mission-tracking change; implement the reusable visual-creation procedure; forward-test a small change with an agent; demonstrate visual direction through implementation with a user-selected reference. No Rolevidence changes, merge, deployment or npm publication.
|
|
4
|
+
|
|
5
|
+
## Criteria and evidence
|
|
6
|
+
|
|
7
|
+
| ID | Criterion | Current evidence | Status |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| V1 | Existing design command routes new directions and preserves approved references | design-to-code/references/visual-creation.md; project-foundation routing | Implemented; linked resources resolve and installation includes procedure |
|
|
10
|
+
| V2 | Visible comparable directions and actual user selection | examples/visual-pilot/directions-v1.png generated with built-in image tool | A selected explicitly by user |
|
|
11
|
+
| V3 | Selected image mockup with approval/version | examples/visual-pilot/editorial-mockup-v1.png generated and inspected | Approved explicitly by user |
|
|
12
|
+
| V4 | Interactive implementation, desktop/mobile captures and mismatch detection | app/ implemented; browser-check.cjs passed in Chrome; desktop-actual.png and mobile-actual.png inspected; color mismatch detected and restored | Passed with disclosed fidelity limits |
|
|
13
|
+
| P1 | Agent completes a small fix without per-stage documents or redundant checks | Actual subagent fixed one predicate; 2/2 tests pass in one run; only requested report created, no stage documents. See examples/visual-pilot/quick-filter/AGENT-RESULT.md | Passed for this case |
|
|
14
|
+
| P2 | Updated kit installs with valid resources and regression checks pass | npm ci (cached), npm test 72/72, check:docs, pack --dry-run; fresh Codex install 44 files, doctor ok | Passed |
|
|
15
|
+
|
|
16
|
+
## Visual brief
|
|
17
|
+
|
|
18
|
+
Fictional Lisière personal reading library, for readers tracking books and next reading actions. No accounts, backend, purchases or external data. One main library screen with status filters, adding a book and changing reading status. Desktop and mobile. The visible board proposes A editorial ivory/ink/rust with serif hierarchy, B compact cobalt utilitarian geometry, C airy sage/forest botanical illustration. A was selected explicitly by the user.
|
|
19
|
+
|
|
20
|
+
Generated board v1 contains presentation additions (navigation, author names, decorative copy) that are proposals, not approved scope. Its “Lire” label must be resolved in the final contract: the demo tracks reading and does not supply book content. Final controls will use truthful tracking actions unless scope is changed. Book metadata is fictional.
|
|
21
|
+
|
|
22
|
+
## Asset provenance
|
|
23
|
+
|
|
24
|
+
Direction board: built-in image generation, 2026-09-13. No supplied visual reference. Prompt asked for three equal panels of the same French library screen and mobile previews, titled Éditorial, Atelier and Botanique; same three fictional books, status filters and add action; different typography, density and imagery. Saved asset: ../../examples/visual-pilot/directions-v1.png. This is a selection board, not an approved implementation reference. Detailed prompt is stored beside the asset.
|
|
25
|
+
|
|
26
|
+
## Resume
|
|
27
|
+
|
|
28
|
+
The user selected A and approved detailed mockup v1. The supervised pilot is complete locally. A future independent visual test must use a fresh agent/session; this pilot does not establish autonomous or cross-host reliability. GitHub branch push is now authorized; merge and npm publication are not.
|
|
29
|
+
|
|
30
|
+
## Verification limits
|
|
31
|
+
|
|
32
|
+
The generic skill-creator Python validator could not run because PyYAML is absent in both available Python runtimes. Repository installation/regression tests and Markdown link checks passed; these are not equivalent to behavioral validation of the entire visual procedure. The first npm ci attempt could not complete with the isolated cache/network constraints; retry using the existing npm cache offline succeeded without changing the lockfile. No npm publication, merge or new product deployment. Current evidence applies to this local change set with the approved editorial mockup.
|
|
33
|
+
|
|
34
|
+
## Selected mockup v1
|
|
35
|
+
|
|
36
|
+
Built-in image tool, reference directions-v1.png panel A. Preserves ivory/ink/rust and serif hierarchy. Removes speculative navigation and changes Lire to Commencer / Marquer terminé. Desktop three columns; mobile stacked cover/detail rows. Image inspected: controls and labels are present; mobile font sizing and header spacing require browser checks, not inferred accessibility. Generated cover lettering has minor raster artifacts and is not authoritative metadata. Final text comes from semantic HTML. The user subsequently approved this exact mockup before implementation.
|
|
37
|
+
|
|
38
|
+
## Completed browser pilot
|
|
39
|
+
|
|
40
|
+
The user explicitly approved editorial-mockup-v1.png. Vanilla HTML/CSS/JS prototype implemented under examples/visual-pilot/app, no added runtime dependencies. Real localStorage persistence, add dialog, status transitions and filters. No loading spinner: synchronous local operation; storage failure has a visible warning; empty filters have recovery guidance. No book reading content is implied.
|
|
41
|
+
|
|
42
|
+
Chrome headless test passed: initial three books, empty completed filter, starting then completing a book, adding, persistence across reload, Escape and focus return, no mobile overflow at 390px, no JS page errors. Intentional rust-to-blue mismatch detected by a targeted color assertion then removed by reload. This is a bounded mismatch probe, not an independent general visual reviewer. Desktop 1100x1000 and mobile 390x844 captures inspected against the approved board. Three-column/stacked hierarchy, rust/ivory palette and approved covers retained; cover images render from the approved image as CSS sprites. System Georgia rendering, heading size and spacing differ from the raster; no pixel-perfect claim. Full-page mobile capture scrolls beyond 844px as expected. Keyboard test covers dialog close/focus, not a full accessibility audit.
|
|
43
|
+
|
|
44
|
+
Prototype and implementation are one artifact. To run: python3 -m http.server 8765 --bind 127.0.0.1 --directory examples/visual-pilot/app. Tests require an externally available Playwright and Chrome; run node examples/visual-pilot/browser-check.cjs with PLAYWRIGHT_MODULE if necessary. No package dependency or host configuration was changed. Development server remains on loopback for user preview.
|
|
45
|
+
|
|
46
|
+
Scope complete locally: procedure, simple agent test, actual image generation, user choice, approved detailed mockup, interactive browser prototype and comparison. No publication or merge. This one supervised Codex pilot does not prove cross-host operation, general quality improvement or BMAD superiority.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Relevé de l’essai Clair
|
|
2
|
+
|
|
3
|
+
Date : 2026-09-13. Dossier initial : kit fraîchement installé, aucune application. Source du produit : brief transmis par l’agent parent, dont la sélection détaillée des écrans est déléguée. Le relevé est une observation de cette exécution, pas une comparaison de méthodes.
|
|
4
|
+
|
|
5
|
+
Les lectures initiales et décisions ont précédé le code. Exploration/cadrage/design/architecture/plan/readiness ont été groupés en une tranche standard CLAIR-1, puis implémentation, tests et revue locale. Le seul enregistrement courant est `docs/missions/clair.md`. Ce rapport est un instantané ; aucun document par étape. Aucun imagegen, réseau, dépendance ou sous-agent utilisé. Le kit est resté intact ; le profil adopté est dans la mission pour respecter cette contrainte.
|
|
6
|
+
|
|
7
|
+
Fichiers lus : START_HERE.md, AGENTS.foundation.md, PROJECT_PROFILE.md, ENGINEERING_POLICY.template.md ; SKILL.md de project-foundation, design-to-code, scoped-delivery et decision-architecture ; références work-sizing, operating-commands, mission-context, visual-creation, ux-contract, verification-and-cost ; modèle scoped-delivery/assets/MISSION.md ; kit-manifest.json. CONTRIBUTING.md et AGENTS.md étaient absents. Les autres modules ont été découverts par inventaire, sans être chargés.
|
|
8
|
+
|
|
9
|
+
Fichiers créés : app/index.html, app/styles.css, app/app.mjs, app/domain.mjs, app/storage.mjs, tests/domain.test.mjs, docs/missions/clair.md et ce rapport. Livré : page française responsive ivoire/encre/rouille, ajout titre/note, validation, toggle, trois filtres, suppression/annulation, localStorage versionné et validé, alerte d’échec persistante/réessai, réinitialisation explicite après erreur de lecture, départ vide et ajout de trois tâches de démonstration marquées fictives.
|
|
10
|
+
|
|
11
|
+
Exécuté : `node --test tests/*.test.mjs` — 6 tests passés, 0 échec ; `node --check app/app.mjs` — passé. Vérification des hashes SHA-256 des fichiers du manifeste installé — aucune différence. Revue locale du code et des limites ; aucune installation ni ressource distante.
|
|
12
|
+
|
|
13
|
+
Limites : cet agent n’a pas lancé de navigateur, capturé d’écran, testé l’interaction réelle ou vérifié le rendu mobile. Le parent en est chargé indépendamment. Les vérifications DOM/CSS effectuées sont des inspections du source. Aucune preuve d’intégration, de déploiement ou d’usage production. L’application conserve les priorités jusqu’à suppression ; aucune remise à zéro quotidienne ni synchronisation entre onglets. L’annulation porte sur la dernière suppression et disparaît après rechargement. La démo peut être ajoutée plusieurs fois volontairement.
|
|
14
|
+
|
|
15
|
+
Lancer : `python3 -m http.server 8766 --bind 127.0.0.1 --directory app`. Prochaine commande méthode : `$project-foundation verify CLAIR-1`.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Clair — mission canonique
|
|
2
|
+
|
|
3
|
+
2026-09-13, livraison standard, propriétaire : agent de réalisation.
|
|
4
|
+
|
|
5
|
+
## Sources et profil adopté
|
|
6
|
+
Le brief transmis par le parent fait autorité : application française locale, HTML/CSS/JS sans dépendances ni comptes, direction ivoire/encre/rouille et sérif ; choix détaillés délégués. Les fichiers du kit restent intacts, notamment PROJECT_PROFILE.md : ce paragraphe porte le profil adopté conformément à la contrainte de préservation. CONTRIBUTING.md et AGENTS.md sont absents. ENGINEERING_POLICY.template.md est un modèle ; le JavaScript demandé prend priorité sur sa recommandation TypeScript.
|
|
7
|
+
|
|
8
|
+
Stack : modules JavaScript natifs, CSS, HTML ; Node pour les tests purs ; Python pour le serveur local. Commandes : `node --test tests/*.test.mjs` ; `python3 -m http.server 8766 --bind 127.0.0.1 --directory app`. Aucun déploiement, réseau, installation ou génération d’images autorisé. Données : titres, notes et état d’achèvement stockés sous clair.tasks.v1 dans localStorage, conservés jusqu’à suppression ou effacement du navigateur ; aucune synchronisation ni télémétrie.
|
|
9
|
+
|
|
10
|
+
## Framing, design et architecture — décisions avant code
|
|
11
|
+
Valeur : choisir et suivre les priorités du jour sans configuration. Direction existante explicite, choix d’écran délégué ; aucune image ou maquette séparée nécessaire. Prototype HTML final choisi comme support. Grand titre éditorial, date, compteur, liste principale et formulaire latéral ; mobile en une colonne avec formulaire avant la liste. Palette #f7f3eb, #292923, #97472f ; Georgia système et sans-sérif système. États : vide, filtres vides, tâches actives/terminées, validation, suppression/annulation, stockage indisponible/corrompu.
|
|
12
|
+
|
|
13
|
+
Choix structurel dans le cadre délégué : module pur pour validation/transitions/schéma, adaptateur localStorage, contrôleur DOM. Une page monolithique serait plus courte mais rendrait les invariants difficiles à tester isolément. Aucun framework utile au périmètre. Les titres/notes ne deviennent jamais du HTML. Échec d’écriture : garder la session en mémoire et afficher une alerte persistante avec réessai ; erreur de lecture : ne pas écraser les données sans action explicite de réinitialisation. Suppression réversible de la dernière tâche, sans expiration temporelle. Pas de réinitialisation automatique à minuit.
|
|
14
|
+
|
|
15
|
+
## Plan et readiness (avant implémentation)
|
|
16
|
+
Une tranche CLAIR-1 couvre AC1 ajout titre/note et validation ; AC2 toggle/filtres ; AC3 suppression/annulation ; AC4 persistance/schema/erreurs ; AC5 vide + démo explicitement fictive ; AC6 responsive/clavier/focus. Contrats prêts, dépendances résolues. Tests prévus sur invariants et stockage ; vérification navigateur déléguée au parent et non revendiquée par cet agent. Limites de titre 160 caractères et note 500, données versionnées et validées à la lecture. Fin de périmètre après réalisation locale et tests ; pas de fonctionnalités hors brief.
|
|
17
|
+
|
|
18
|
+
## Evidence et état
|
|
19
|
+
État courant après vérification parent : CLAIR-1 réalisé et vérifié dans Chrome desktop/mobile. Les étapes explorations/cadrage/design/architecture/plan/readiness ont été groupées, pas de document par étape.
|
|
20
|
+
|
|
21
|
+
## Résultat local et evidence — 2026-09-13
|
|
22
|
+
CLAIR-1 réalisé dans `app/`. État lors du retour de l’agent : implémentation locale terminée, acceptation navigateur alors en attente. Aucun commit, PR ou déploiement.
|
|
23
|
+
|
|
24
|
+
| Critère | Preuve exécutée | Résultat |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| AC1 | `node --test tests/*.test.mjs`, cas validation | passé : blanc, trim, bornes titre/note |
|
|
27
|
+
| AC2 | même commande, toggle/filtres | passé : immutabilité et ordre |
|
|
28
|
+
| AC3 | même commande, suppression/annulation | passé : position, ajout intermédiaire, absence et doublon |
|
|
29
|
+
| AC4 | même commande, schéma/adapter | passé : round-trip Unicode, JSON invalide, version, types, IDs dupliqués, exceptions lecture/écriture |
|
|
30
|
+
| AC5 | revue du contrôleur et HTML | démarrage vide sans données ; bouton de démo explicitement fictif, notes marquées ; navigateur non exécuté |
|
|
31
|
+
| AC6 | revue CSS/DOM | labels, focus visible, annonces, règles 700/1000 px et réduction de mouvement présentes ; comportement/rendu navigateur non vérifiés |
|
|
32
|
+
|
|
33
|
+
Commande `node --check app/app.mjs` passée. Six tests, zéro échec. Revue locale de ses propres fichiers : contenu utilisateur inséré via textContent, stockage traité au bord, aucune ressource distante, aucun secret, actions couvertes dans le contrôleur. Cette inspection ne démontre pas l'accessibilité complète. Vérification SHA-256 des fichiers installés contre kit-manifest.json : aucun changement. Aucun test navigateur réalisé par cet agent, aucune comparaison pixel ou audit automatique revendiqué.
|
|
34
|
+
|
|
35
|
+
Prochaine action exacte : parent, exécuter la vérification desktop/mobile et des parcours de CLAIR-1 sur le serveur local. Commande méthode recommandée : `$project-foundation verify CLAIR-1`.
|
|
36
|
+
|
|
37
|
+
## Vérification indépendante du parent
|
|
38
|
+
|
|
39
|
+
Interactions Chrome vérifiées : vide, validation, ajout/note, toggle/filtres, rechargement, suppression/annulation, démo, saisie clavier, absence de débordement à 390px, échec de stockage avec conservation en mémoire et alerte. Captures desktop/mobile inspectées. Les animations sont désactivées pour les captures afin de ne pas photographier une barre de progression en transition. Aucun audit complet d’accessibilité.
|
|
40
|
+
|
|
41
|
+
Constat méthode : l’agent avait conservé une ancienne ligne « implémentation en cours » avant son résultat final. Le parent l’a réconciliée ici ; ce besoin de correction empêche de présenter la tenue du statut comme entièrement autonome. Le rapport agent est un instantané historique. Prochaine action : aucune implémentation restante dans ce périmètre ; intégration et vidéo suivies dans le dépôt DevMethod.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Clair — an actual from-zero DevMethod pilot
|
|
2
|
+
|
|
3
|
+
Clair is a fictional French personal-priorities app created by a separate Codex subagent in a new directory containing only the installed DevMethod kit. The parent provided a bounded brief and delegated the detailed editorial visual choices. No application code or previous implementation was supplied. This is a same-host subagent test, not a fresh standalone Codex/Claude session or a comparative benchmark.
|
|
4
|
+
|
|
5
|
+
## Run
|
|
6
|
+
|
|
7
|
+
From this directory:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
python3 -m http.server 8766 --bind 127.0.0.1 --directory app
|
|
11
|
+
node --test tests/*.test.mjs
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Open http://127.0.0.1:8766. Stop the server with Ctrl-C. No npm dependencies, backend, external fonts, account or provider key. Browser storage uses `clair.tasks.v1`. The application starts empty; its demo button explicitly adds fictional tasks. Delete/undo covers the last deletion and does not survive reload. There is no cross-tab synchronization or daily reset.
|
|
15
|
+
|
|
16
|
+
## What was observed
|
|
17
|
+
|
|
18
|
+
The implementing agent grouped framing, design, architecture, planning and readiness in one mission. It created five app files, a test file, one mission and the requested evaluation snapshot; all installed kit files retained their hashes. Six logic/storage tests passed. The parent then exercised the actual Chrome UI: blank validation, add/note, completion/filters, persistence, delete/undo, demo, keyboard submission, 390px overflow and write-failure recovery.
|
|
19
|
+
|
|
20
|
+
[Agent report](AGENT-EVALUATION.md) is a historical observation. [Mission](MISSION.md) includes parent checks and disclosed limitations. A stale status sentence left by the implementing agent was reconciled by the parent; this was not perfect autonomous bookkeeping. The design was delegated, so this test does not repeat the user-choice/image steps of the separate [Lisière pilot](../visual-pilot/README.md).
|
|
21
|
+
|
|
22
|
+
Browser check from the DevMethod repository root: `node examples/clair-from-zero/browser-check.cjs`, with Playwright and Chrome available. Set PLAYWRIGHT_MODULE to an installed Playwright module path when needed. It writes captures under docs/media/from-zero/captures and uses a temporary browser profile.
|
|
23
|
+
|
|
24
|
+
[French video and transcript](../../docs/media/from-zero/README.md) show this app's actual interactions and separately identify the Lisière visual pilot. Neither demonstration establishes general code quality, production readiness, lower costs or superiority over BMAD.
|