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.
Files changed (71) hide show
  1. package/.agents/skills/design-to-code/SKILL.md +7 -1
  2. package/.agents/skills/design-to-code/references/visual-creation.md +37 -0
  3. package/.agents/skills/project-foundation/SKILL.md +1 -1
  4. package/.agents/skills/project-foundation/assets/PROJECT_PROFILE.md +1 -0
  5. package/.agents/skills/project-foundation/references/mission-context.md +10 -0
  6. package/.agents/skills/project-foundation/references/operating-commands.md +14 -2
  7. package/.agents/skills/scoped-delivery/SKILL.md +2 -0
  8. package/.agents/skills/scoped-delivery/assets/MISSION.md +18 -1
  9. package/COMPATIBILITY.md +1 -1
  10. package/README.md +31 -12
  11. package/docs/MISSIONS.md +2 -0
  12. package/docs/RELEASE-0.1.0.md +14 -3
  13. package/docs/RELEASE-0.2.0.md +37 -0
  14. package/docs/ROADMAP.md +2 -0
  15. package/docs/VISUAL-CREATION-PROPOSAL.md +21 -0
  16. package/docs/VISUAL-WORKFLOW.md +75 -0
  17. package/docs/images/devmethod-delivery.svg +10 -0
  18. package/docs/images/devmethod-flow.svg +13 -26
  19. package/docs/media/from-zero/README.md +17 -0
  20. package/docs/media/from-zero/devmethod-demo.fr.srt +59 -0
  21. package/docs/media/from-zero/scenes.json +50 -0
  22. package/docs/media/full-chain-4k/README.md +37 -0
  23. package/docs/media/full-chain-4k/devmethod-chaine-complete.fr.srt +435 -0
  24. package/docs/media/full-chain-4k/scenes.json +173 -0
  25. package/docs/media/full-chain-4k/transcripts.fr.md +315 -0
  26. package/docs/media/visual-chain/README.md +44 -0
  27. package/docs/media/visual-chain/assets/add-book-v1.png +0 -0
  28. package/docs/media/visual-chain/assets/completed-v1.png +0 -0
  29. package/docs/media/visual-chain/devmethod-du-besoin-au-produit.fr.srt +147 -0
  30. package/docs/media/visual-chain/execution.fr.md +30 -0
  31. package/docs/media/visual-chain/image-prompts.json +9 -0
  32. package/docs/media/visual-chain/reference-hashes.json +5 -0
  33. package/docs/media/visual-chain/scenes.json +232 -0
  34. package/docs/media/visual-chain/video-preview.jpg +0 -0
  35. package/docs/missions/visual-workflow.md +46 -0
  36. package/examples/clair-from-zero/AGENT-EVALUATION.md +15 -0
  37. package/examples/clair-from-zero/MISSION.md +41 -0
  38. package/examples/clair-from-zero/README.md +24 -0
  39. package/examples/clair-from-zero/app/app.mjs +69 -0
  40. package/examples/clair-from-zero/app/domain.mjs +30 -0
  41. package/examples/clair-from-zero/app/index.html +20 -0
  42. package/examples/clair-from-zero/app/storage.mjs +4 -0
  43. package/examples/clair-from-zero/app/styles.css +128 -0
  44. package/examples/clair-from-zero/browser-check.cjs +2 -0
  45. package/examples/clair-from-zero/tests/domain.test.mjs +37 -0
  46. package/examples/visual-pilot/README.md +11 -0
  47. package/examples/visual-pilot/app/app.js +10 -0
  48. package/examples/visual-pilot/app/index.html +1 -0
  49. package/examples/visual-pilot/app/reference.png +0 -0
  50. package/examples/visual-pilot/app/style.css +3 -0
  51. package/examples/visual-pilot/browser-check.cjs +3 -0
  52. package/examples/visual-pilot/desktop-actual.png +0 -0
  53. package/examples/visual-pilot/directions-prompt.txt +1 -0
  54. package/examples/visual-pilot/directions-v1.png +0 -0
  55. package/examples/visual-pilot/editorial-mockup-prompt.txt +1 -0
  56. package/examples/visual-pilot/editorial-mockup-v1.png +0 -0
  57. package/examples/visual-pilot/mismatch-probe.png +0 -0
  58. package/examples/visual-pilot/mobile-actual.png +0 -0
  59. package/examples/visual-pilot/quick-filter/AGENT-RESULT.md +25 -0
  60. package/examples/visual-pilot/quick-filter/baseline.log +42 -0
  61. package/examples/visual-pilot/quick-filter/filter.mjs +3 -0
  62. package/examples/visual-pilot/quick-filter/filter.test.mjs +9 -0
  63. package/package.json +2 -2
  64. package/scripts/media/demo-actions.cjs +16 -0
  65. package/scripts/media/encode-demo.py +22 -0
  66. package/scripts/media/record-demo.cjs +30 -0
  67. package/scripts/media/visual-short/check.cjs +1 -0
  68. package/scripts/media/visual-short/encode.py +16 -0
  69. package/scripts/media/visual-short/record.cjs +4 -0
  70. package/scripts/media/visual-short/story.py +34 -0
  71. package/scripts/package-smoke.mjs +2 -2
@@ -0,0 +1,173 @@
1
+ [
2
+ {
3
+ "kind": "title",
4
+ "title": "DevMethod, du projet vide au produit vérifié",
5
+ "voice": "Dans cette démonstration, nous allons suivre toute la chaîne de Dev Method. Vous verrez les commandes adressées à Codex, ses réponses réelles et la prochaine étape proposée. Nous prendrons aussi le temps de regarder la direction artistique, le master screen et l'application finale. Les transcriptions de Codex sont réelles. Leur mise en page est adaptée au film pour rester lisible en quatre K. Les temps d'attente sont retirés.",
6
+ "stage": null,
7
+ "image": null,
8
+ "speech": "Dans cette démonstration, nous allons suivre toute la chaîne de Dev Method. Vous verrez les commandes adressées à Codex, ses réponses réelles et la prochaine étape proposée. Nous prendrons aussi le temps de regarder la direction artistique, le master screen et l'application finale. Les transcriptions de Codex sont réelles. Leur mise en page est adaptée au film pour rester lisible en quatre K. Les temps d'attente sont retirés.",
9
+ "duration": 29.913469
10
+ },
11
+ {
12
+ "kind": "install",
13
+ "title": "Un dossier neuf, un kit installé",
14
+ "voice": "Nous commençons dans un dossier sans code d'application. L'installation y dépose les compétences de la méthode. Dev Method est le nom du produit, mais sa commande d'entrée actuelle s'appelle project foundation. Elle se saisit dans la conversation de l'agent, pas comme une commande du terminal. Pour ce film, nous utilisons Codex CLI. Un premier essai incompatible avec la version du modèle a été conservé dans les journaux, puis corrigé.",
15
+ "stage": null,
16
+ "image": null,
17
+ "speech": "Nous commençons dans un dossier sans code d'application. L'installation y dépose les compétences de la méthode. Dev Method est le nom du produit, mais sa commande d'entrée actuelle s'appelle project foundation. Elle se saisit dans la conversation de l'agent, pas comme une commande du terminal. Pour ce film, nous utilisons Codex CLI. Un premier essai incompatible avec la version du modèle a été conservé dans les journaux, puis corrigé.",
18
+ "duration": 31.643356
19
+ },
20
+ {
21
+ "kind": "terminal",
22
+ "title": "Explorer le besoin",
23
+ "voice": "La première commande est project foundation explore. Nous donnons le besoin : une bibliothèque personnelle pour suivre ses lectures. Codex examine le brief et les sources disponibles. À ce stade, il ne doit pas coder. Il distingue ce qui est décidé de ce qui reste à préciser. Regardez la fin de la réponse : elle indique la commande recommandée pour continuer. La méthode transmet ainsi le contexte d'une étape à la suivante.",
24
+ "stage": "01",
25
+ "image": null,
26
+ "speech": "La première commande est project foundation explore. Nous donnons le besoin : une bibliothèque personnelle pour suivre ses lectures. Codex examine le brief et les sources disponibles. À ce stade, il ne doit pas coder. Il distingue ce qui est décidé de ce qui reste à préciser. Regardez la fin de la réponse : elle indique la commande recommandée pour continuer. La méthode transmet ainsi le contexte d'une étape à la suivante.",
27
+ "duration": 31.411156
28
+ },
29
+ {
30
+ "kind": "terminal",
31
+ "title": "Cadrer une première livraison",
32
+ "voice": "Nous envoyons ensuite frame. Le cadrage transforme l'idée en un résultat limité et vérifiable. Ajouter un livre, filtrer la bibliothèque et changer son statut font partie du besoin. Un service de lecture de livres, des comptes ou un serveur ne sont pas inclus. Ces exclusions comptent : elles évitent que l'agent construise un produit plus vaste que celui demandé. Le cadrage prépare aussi les critères qui serviront aux tests.",
33
+ "stage": "02",
34
+ "image": null,
35
+ "speech": "Nous envoyons ensuite frame. Le cadrage transforme l'idée en un résultat limité et vérifiable. Ajouter un livre, filtrer la bibliothèque et changer son statut font partie du besoin. Un service de lecture de livres, des comptes ou un serveur ne sont pas inclus. Ces exclusions comptent : elles évitent que l'agent construise un produit plus vaste que celui demandé. Le cadrage prépare aussi les critères qui serviront aux tests.",
36
+ "duration": 30.935147
37
+ },
38
+ {
39
+ "kind": "directions",
40
+ "title": "Trois directions, un même produit",
41
+ "voice": "Avant de développer l'interface, nous comparons trois directions appliquées au même contenu. Éditorial privilégie la typographie et l'espace. Atelier mise sur une organisation compacte. Botanique apporte des illustrations et une ambiance plus douce. Cette planche a réellement été générée pendant la session préparatoire. Ce ne sont pas trois applications terminées, mais trois propositions visuelles. Les mettre côte à côte rend le choix concret, plutôt que de demander seulement une préférence abstraite.",
42
+ "stage": null,
43
+ "image": "directions-v1.png",
44
+ "speech": "Avant de développer l'interface, nous comparons trois directions appliquées au même contenu. Éditorial privilégie la typographie et l'espace. Atelier mise sur une organisation compacte. Botanique apporte des illustrations et une ambiance plus douce. Cette planche a réellement été générée pendant la session préparatoire. Ce ne sont pas trois applications terminées, mais trois propositions visuelles. Les mettre côte à côte rend le choix concret, plutôt que de demander seulement une préférence abstraite.",
45
+ "duration": 36.635646
46
+ },
47
+ {
48
+ "kind": "choice",
49
+ "title": "Le choix humain : A — Éditorial",
50
+ "voice": "L'utilisateur a répondu A. C'est le choix réel conservé de notre session précédente, pas une réponse inventée pour la vidéo. Nous retenons donc la direction éditoriale. Ce choix fixe une intention : fond ivoire, contraste encre, accents rouille et titres avec empattements. Il ne suffit pas encore à valider tous les détails d'un écran. L'étape suivante consiste à produire une référence plus précise, que l'on peut examiner avant de coder.",
51
+ "stage": null,
52
+ "image": "directions-v1.png",
53
+ "speech": "L'utilisateur a répondu A. C'est le choix réel conservé de notre session précédente, pas une réponse inventée pour la vidéo. Nous retenons donc la direction éditoriale. Ce choix fixe une intention : fond ivoire, contraste encre, accents rouille et titres avec empattements. Il ne suffit pas encore à valider tous les détails d'un écran. L'étape suivante consiste à produire une référence plus précise, que l'on peut examiner avant de coder.",
54
+ "duration": 32.339955
55
+ },
56
+ {
57
+ "kind": "master",
58
+ "title": "Le master screen devient la référence",
59
+ "voice": "Voici le master screen détaillé, sur ordinateur et sur mobile. Nous pouvons maintenant examiner la hiérarchie, les cartes, les espacements et les boutons. Le libellé Lire a été remplacé par Commencer ou Marquer terminé, car le produit suit la lecture sans fournir le texte des livres. L'utilisateur a ensuite validé cette maquette par un oui. Cette référence approuvée est réutilisée dans la nouvelle implémentation. Elle sera le point de comparaison à la fin, et non une simple image d'inspiration.",
60
+ "stage": null,
61
+ "image": "editorial-mockup-v1.png",
62
+ "speech": "Voici le master screen détaillé, sur ordinateur et sur mobile. Nous pouvons maintenant examiner la hiérarchie, les cartes, les espacements et les boutons. Le libellé Lire a été remplacé par Commencer ou Marquer terminé, car le produit suit la lecture sans fournir le texte des livres. L'utilisateur a ensuite validé cette maquette par un oui. Cette référence approuvée est réutilisée dans la nouvelle implémentation. Elle sera le point de comparaison à la fin, et non une simple image d'inspiration.",
63
+ "duration": 35.764898
64
+ },
65
+ {
66
+ "kind": "terminal",
67
+ "title": "Design : préciser ce que l’image ne dit pas",
68
+ "voice": "La commande design relie la référence aux comportements attendus. Une image ne décrit pas à elle seule la validation du formulaire, le clavier, un filtre vide ou un échec de sauvegarde. Codex doit préciser ces états, identifier la référence choisie et préserver les décisions existantes. La génération d'images dépend des outils disponibles dans l'environnement. Dev Method organise ce travail, mais son installation ne fournit pas un moteur d'image.",
69
+ "stage": "03",
70
+ "image": null,
71
+ "speech": "La commande design relie la référence aux comportements attendus. Une image ne décrit pas à elle seule la validation du formulaire, le clavier, un filtre vide ou un échec de sauvegarde. Codex doit préciser ces états, identifier la référence choisie et préserver les décisions existantes. La génération d'images dépend des outils disponibles dans l'environnement. Dev Method organise ce travail, mais son installation ne fournit pas un moteur d'image.",
72
+ "duration": 33.651882
73
+ },
74
+ {
75
+ "kind": "terminal",
76
+ "title": "Architecture : rester proportionné",
77
+ "voice": "L'architecture choisit le minimum nécessaire au besoin. Ici, une application statique et un stockage dans le navigateur suffisent. La logique peut être testée séparément des éléments visuels. Cette étape n'a pas pour objectif d'accumuler des technologies. Elle permet de clarifier les frontières et les limites avant l'implémentation. Une évolution ultérieure vers plusieurs utilisateurs demanderait d'autres décisions ; elle ne fait pas partie de ce film.",
78
+ "stage": "04",
79
+ "image": null,
80
+ "speech": "L'architecture choisit le minimum nécessaire au besoin. Ici, une application statique et un stockage dans le navigateur suffisent. La logique peut être testée séparément des éléments visuels. Cette étape n'a pas pour objectif d'accumuler des technologies. Elle permet de clarifier les frontières et les limites avant l'implémentation. Une évolution ultérieure vers plusieurs utilisateurs demanderait d'autres décisions ; elle ne fait pas partie de ce film.",
81
+ "duration": 32.084535
82
+ },
83
+ {
84
+ "kind": "terminal",
85
+ "title": "Plan : une tranche avec des critères",
86
+ "voice": "La commande plan découpe le périmètre en travail réalisable. Pour ce petit produit, une première tranche peut réunir le parcours utile de bout en bout. Le plan doit contenir un objectif, des critères d'acceptation, les dépendances et les vérifications prévues. Une ligne marquée prête n'est pas une preuve que le code existe. Les statuts doivent rester reliés aux faits et aux résultats réellement observés.",
87
+ "stage": "05",
88
+ "image": null,
89
+ "speech": "La commande plan découpe le périmètre en travail réalisable. Pour ce petit produit, une première tranche peut réunir le parcours utile de bout en bout. Le plan doit contenir un objectif, des critères d'acceptation, les dépendances et les vérifications prévues. Une ligne marquée prête n'est pas une preuve que le code existe. Les statuts doivent rester reliés aux faits et aux résultats réellement observés.",
90
+ "duration": 28.949841
91
+ },
92
+ {
93
+ "kind": "terminal",
94
+ "title": "Ready : vérifier avant de construire",
95
+ "voice": "Ready contrôle que la tranche est assez précise pour être implémentée. Les sources sont-elles disponibles ? Les comportements importants sont-ils décidés ? Les tests ont-ils un sens ? Dans le parcours filmé, nous montrons cette commande séparément pour l'expliquer. Pour une petite correction déjà claire, Dev Method permet aussi de regrouper cette préparation avec l'implémentation, sans imposer une conversation supplémentaire à chaque étape.",
96
+ "stage": "06",
97
+ "image": null,
98
+ "speech": "Ready contrôle que la tranche est assez précise pour être implémentée. Les sources sont-elles disponibles ? Les comportements importants sont-ils décidés ? Les tests ont-ils un sens ? Dans le parcours filmé, nous montrons cette commande séparément pour l'expliquer. Pour une petite correction déjà claire, Dev Method permet aussi de regrouper cette préparation avec l'implémentation, sans imposer une conversation supplémentaire à chaque étape.",
99
+ "duration": 31.562086
100
+ },
101
+ {
102
+ "kind": "terminal",
103
+ "title": "Implement : produire du code et des preuves",
104
+ "voice": "Nous autorisons maintenant implement. Codex réalise l'application à partir du brief et du master screen. Aucun code de la première démonstration ne lui a été fourni. Les attentes de calcul et d'écriture sont retirées du montage ; la réponse montrée provient de l'exécution réelle. Regardez ce que l'agent dit avoir vérifié, mais aussi ce qu'il laisse explicitement à vérifier. Un résultat local doit rester distinct d'un déploiement.",
105
+ "stage": "07",
106
+ "image": null,
107
+ "speech": "Nous autorisons maintenant implement. Codex réalise l'application à partir du brief et du master screen. Aucun code de la première démonstration ne lui a été fourni. Les attentes de calcul et d'écriture sont retirées du montage ; la réponse montrée provient de l'exécution réelle. Regardez ce que l'agent dit avoir vérifié, mais aussi ce qu'il laisse explicitement à vérifier. Un résultat local doit rester distinct d'un déploiement.",
108
+ "duration": 31.399546
109
+ },
110
+ {
111
+ "kind": "terminal",
112
+ "title": "Review : examiner la réalisation",
113
+ "voice": "La revue confronte les fichiers réalisés aux critères de la tranche. Elle cherche des défauts concrets, pas seulement une liste de bonnes pratiques. Nous conservons le résultat de cette revue, y compris ses limites. Si une correction est nécessaire, elle doit être effectuée puis revérifiée. Le fait que l'agent relise son travail ne permet pas de prétendre à une validation indépendante universelle.",
114
+ "stage": "08",
115
+ "image": null,
116
+ "speech": "La revue confronte les fichiers réalisés aux critères de la tranche. Elle cherche des défauts concrets, pas seulement une liste de bonnes pratiques. Nous conservons le résultat de cette revue, y compris ses limites. Si une correction est nécessaire, elle doit être effectuée puis revérifiée. Le fait que l'agent relise son travail ne permet pas de prétendre à une validation indépendante universelle.",
117
+ "duration": 28.299683
118
+ },
119
+ {
120
+ "kind": "terminal",
121
+ "title": "Corriger les défauts réellement trouvés",
122
+ "stage": "08b",
123
+ "image": null,
124
+ "voice": "La revue a trouvé des défauts concrets. Un ajout pouvait écraser des données qui n’avaient pas été chargées. Deux autres points concernaient la création des identifiants et les caractères Unicode. Nous envoyons donc une nouvelle commande implement avec ces constats. Nous demandons aussi de rétablir les couvertures de la référence approuvée. Cette boucle fait partie de la chaîne réelle : une première implémentation n’est pas automatiquement une livraison acceptée.",
125
+ "speech": "La revue a trouvé des défauts concrets. Un ajout pouvait écraser des données qui n’avaient pas été chargées. Deux autres points concernaient la création des identifiants et les caractères Unicode. Nous envoyons donc une nouvelle commande implement avec ces constats. Nous demandons aussi de rétablir les couvertures de la référence approuvée. Cette boucle fait partie de la chaîne réelle : une première implémentation n’est pas automatiquement une livraison acceptée.",
126
+ "duration": 30.842268
127
+ },
128
+ {
129
+ "kind": "browser",
130
+ "title": "Le prototype en action",
131
+ "voice": "Nous passons maintenant dans le vrai navigateur. L'application affiche la bibliothèque et ses contrôles. Le test parcourt les actions importantes : filtrer, ajouter un livre, commencer ou terminer une lecture, puis recharger la page. C'est cette interaction réelle qui distingue une interface utilisable d'une simple maquette. Les livres sont fictifs et les données restent locales. Aucun appel payant à un fournisseur d'intelligence artificielle n'est nécessaire pour utiliser ce prototype.",
132
+ "stage": null,
133
+ "image": null,
134
+ "speech": "Nous passons maintenant dans le vrai navigateur. L'application affiche la bibliothèque et ses contrôles. Le test parcourt les actions importantes : filtrer, ajouter un livre, commencer ou terminer une lecture, puis recharger la page. C'est cette interaction réelle qui distingue une interface utilisable d'une simple maquette. Les livres sont fictifs et les données restent locales. Aucun appel payant à un fournisseur d'intelligence artificielle n'est nécessaire pour utiliser ce prototype.",
135
+ "duration": 35.544308
136
+ },
137
+ {
138
+ "kind": "comparison",
139
+ "title": "Comparer au master screen",
140
+ "voice": "Nous revenons à la référence approuvée et la comparons à la capture réelle. La comparaison porte sur la composition, la hiérarchie, les couleurs, les couvertures et les actions. Les différences de police ou d'espacement doivent être nommées, pas cachées derrière un build réussi. Le comportement mobile est vérifié séparément. Une image séduisante n'est donc pas la fin du parcours : elle devient un contrat visuel que l'on confronte au produit.",
141
+ "stage": null,
142
+ "image": null,
143
+ "speech": "Nous revenons à la référence approuvée et la comparons à la capture réelle. La comparaison porte sur la composition, la hiérarchie, les couleurs, les couvertures et les actions. Les différences de police ou d'espacement doivent être nommées, pas cachées derrière un build réussi. Le comportement mobile est vérifié séparément. Une image séduisante n'est donc pas la fin du parcours : elle devient un contrat visuel que l'on confronte au produit.",
144
+ "duration": 31.527256
145
+ },
146
+ {
147
+ "kind": "terminal",
148
+ "title": "Verify : consolider les résultats",
149
+ "voice": "Verify rassemble les contrôles manquants et leurs résultats. Les tests de logique et les observations navigateur répondent à des questions différentes. Une commande réussie ne prouve que le périmètre qu'elle a réellement inspecté. Les sorties du film permettent de voir cette séparation. Nous ne prétendons ni à un audit complet d'accessibilité, ni à une compatibilité universelle, ni à une supériorité démontrée sur une autre méthode.",
150
+ "stage": "09b",
151
+ "image": null,
152
+ "speech": "Verify rassemble les contrôles manquants et leurs résultats. Les tests de logique et les observations navigateur répondent à des questions différentes. Une commande réussie ne prouve que le périmètre qu'elle a réellement inspecté. Les sorties du film permettent de voir cette séparation. Nous ne prétendons ni à un audit complet d'accessibilité, ni à une compatibilité universelle, ni à une supériorité démontrée sur une autre méthode.",
153
+ "duration": 31.237007
154
+ },
155
+ {
156
+ "kind": "terminal",
157
+ "title": "Terminer et préparer la reprise",
158
+ "voice": "Le dernier point de passage enregistre ce qui est livré, les limites et l'état de reprise. Pour cette démonstration, la livraison est locale. Une fusion sur le dépôt de la méthode et une publication du produit seraient des actions différentes. La commande suivante n'autorise pas automatiquement un nouveau périmètre. Cette discipline permet de retrouver le travail dans une autre session sans confondre une proposition, une réalisation et une preuve.",
159
+ "stage": "10",
160
+ "image": null,
161
+ "speech": "Le dernier point de passage enregistre ce qui est livré, les limites et l'état de reprise. Pour cette démonstration, la livraison est locale. Une fusion sur le dépôt de la méthode et une publication du produit seraient des actions différentes. La commande suivante n'autorise pas automatiquement un nouveau périmètre. Cette discipline permet de retrouver le travail dans une autre session sans confondre une proposition, une réalisation et une preuve.",
162
+ "duration": 32.049705
163
+ },
164
+ {
165
+ "kind": "end",
166
+ "title": "Essayez la chaîne sur votre projet",
167
+ "voice": "Vous avez vu le besoin, les commandes et leurs sorties, les directions artistiques, le master screen approuvé, le code et les vérifications. Dev Method sert à relier ces étapes en conservant les décisions utiles. Retrouvez le guide et les exemples sur GitHub. Pour cette évolution, utilisez la version source documentée : le paquet publié zéro point un n'inclut pas encore toutes ces nouveautés. Commencez par une petite livraison et jugez la méthode sur le résultat.",
168
+ "stage": null,
169
+ "image": null,
170
+ "speech": "Vous avez vu le besoin, les commandes et leurs sorties, les directions artistiques, le master screen approuvé, le code et les vérifications. Dev Method sert à relier ces étapes en conservant les décisions utiles. Retrouvez le guide et les exemples sur guit-hub. Pour cette évolution, utilisez la version source documentée : le paquet publié zéro point un n'inclut pas encore toutes ces nouveautés. Commencez par une petite livraison et jugez la méthode sur le résultat.",
171
+ "duration": 34.638729999999995
172
+ }
173
+ ]
@@ -0,0 +1,315 @@
1
+ # Exécution réelle — transcriptions Codex CLI
2
+
3
+ Les chemins temporaires sont remplacés par `<projet>`. Réponses enregistrées au moment de chaque étape, sans réécriture de leur contenu. Les prompts comprennent des contraintes de tournage en plus de la commande.
4
+
5
+ Modèle utilisé : `gpt-5.6-sol`, Codex CLI 0.147.0, sessions éphémères successives avec la même mission sur disque. Le premier essai avec le modèle configuré par défaut a échoué (modèle incompatible avec cette CLI); il ne fait pas partie des sorties réussies ci-dessous. Aucun réglage global modifié.
6
+
7
+ ## Étape 01
8
+
9
+ ### Entrée
10
+
11
+ ```text
12
+ $project-foundation explore
13
+ Lis BRIEF.md. Explore le besoin de Lisière à partir de ce dossier neuf. Enregistre le contexte utile en un seul document de mission, sans coder. Termine par la prochaine commande recommandée.
14
+ ```
15
+
16
+ ### Sortie réelle
17
+
18
+ Exploration terminée et consignée dans l’unique document canonique : [LIS-001-lisiere.md](<projet>/docs/missions/LIS-001-lisiere.md).
19
+
20
+ Le document rassemble besoin, utilisateurs, parcours, périmètre, critères observables, contraintes, référence visuelle approuvée, risques et décisions encore ouvertes. Aucun code ni test applicatif n’a été créé.
21
+
22
+ Incertitudes principales : état initial, règles d’ajout, comportement de « rouvrir », erreurs `localStorage` et états vides. `CONTRIBUTING.md`, `AGENTS.md`, dépôt Git et CI sont absents.
23
+
24
+ Prochaine commande recommandée : `$project-foundation frame LIS-001`
25
+
26
+ ## Étape 02
27
+
28
+ ### Entrée
29
+
30
+ ```text
31
+ $project-foundation frame
32
+ Cadre le périmètre et les critères de réussite de Lisière depuis BRIEF.md et la mission existante. Aucun code.
33
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
34
+ ```
35
+
36
+ ### Sortie réelle
37
+
38
+ Cadrage consigné dans la [mission canonique LIS-001](<projet>/docs/missions/LIS-001-lisiere.md).
39
+
40
+ - MVP : page locale, bibliothèque initialement vide, ajout titre/auteur, cycle **À lire → En cours → Terminé → En cours**, filtres et persistance.
41
+ - Règles précisées : ajout initial « À lire », espaces seuls refusés, doublons acceptés, livres récents en premier, ordre inchangé par les transitions.
42
+ - Exclus : modification, suppression, recherche, tri configurable, notes, dates, statistiques, backend, réseau et déploiement.
43
+ - Réussite : preuves pour C1–C9, couvrant parcours, panne de stockage, états vides, clavier, responsive, fidélité éditoriale et fonctionnement autonome.
44
+ - Restent à concevoir : formulaire, validations visibles, focus, états vides, alerte de stockage et adaptation responsive. La vérification navigateur demeure à la charge du parent.
45
+
46
+ Aucun code ni test n’a été créé ou exécuté.
47
+
48
+ Prochaine commande recommandée : `$project-foundation design LIS-001`
49
+
50
+ ## Étape 03
51
+
52
+ ### Entrée
53
+
54
+ ```text
55
+ $project-foundation design
56
+ Inspecte les images dans references. La direction A et le master screen ont été approuvés explicitement par le même utilisateur dans la session de préparation. Formalise les tokens, le master screen, le responsive et les interactions nécessaires dans la mission existante. Ne génère pas de fausse image ni de code. Mentionne cette réutilisation.
57
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
58
+ ```
59
+
60
+ ### Sortie réelle
61
+
62
+ Conception formalisée dans la [mission canonique LIS-001](<projet>/docs/missions/LIS-001-lisiere.md).
63
+
64
+ Ajouts réalisés :
65
+
66
+ - réutilisation explicite de la direction **A — Éditorial** et du master approuvés lors de la préparation ;
67
+ - tokens visuels et interactifs ;
68
+ - composition du master desktop ;
69
+ - adaptations tablette et mobile ;
70
+ - dialogue d’ajout, validation et gestion du focus ;
71
+ - filtres, cycle des statuts et navigation clavier ;
72
+ - états vides, stockage indisponible et données invalides ;
73
+ - matrice UX minimale et décisions restant à l’architecture.
74
+
75
+ La mission passe à l’étape « conception accomplie ». Aucune image, aucun code applicatif et aucun test n’ont été produits. La fidélité n’a pas été vérifiée dans un navigateur, conformément à la responsabilité laissée au parent. `CONTRIBUTING.md` et `AGENTS.md` restent absents.
76
+
77
+ Prochaine commande recommandée : `$project-foundation architecture LIS-001`.
78
+
79
+ ## Étape 04
80
+
81
+ ### Entrée
82
+
83
+ ```text
84
+ $project-foundation architecture
85
+ Définis les frontières minimales pour une application statique locale sans dépendances, avec logique testable et stockage. Mets à jour la mission existante, pas de nouveau dossier de specs.
86
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
87
+ ```
88
+
89
+ ### Sortie réelle
90
+
91
+ Architecture minimale définie dans la [mission canonique LIS-001](<projet>/docs/missions/LIS-001-lisiere.md).
92
+
93
+ - Frontières : domaine pur, adaptateur `localStorage`, application/vue, composition.
94
+ - Contrats fixés : modèle du livre, transitions, limites Unicode, identifiants, ordre et couvertures déterministes.
95
+ - Stockage versionné `v1`, validation stricte, récupération explicite et maintien en mémoire lors des échecs.
96
+ - Compatibilité navigateur et stratégie de tests sans dépendance cadrées.
97
+ - Mission passée à l’étape « architecture » sans créer de document ni dossier supplémentaire.
98
+
99
+ Reste incertain : le harnais de test exact, à choisir après constat des runtimes disponibles. La vérification réelle dans le navigateur demeure à la charge du parent. Aucun code ni test n’a été produit, conformément au périmètre de cette étape.
100
+
101
+ Prochaine commande recommandée : `$project-foundation plan LIS-001`
102
+
103
+ ## Étape 05
104
+
105
+ ### Entrée
106
+
107
+ ```text
108
+ $project-foundation plan
109
+ Découpe en une première tranche LISIERE-1 avec critères, tests, dépendances et preuve attendue. Reste dans le périmètre du brief.
110
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
111
+ ```
112
+
113
+ ### Sortie réelle
114
+
115
+ **Fait :** la mission canonique [LIS-001-lisiere.md](<projet>/docs/missions/LIS-001-lisiere.md) contient désormais la première tranche **LISIERE-1**.
116
+
117
+ Elle couvre strictement le MVP du brief :
118
+
119
+ - ajout et validation des livres ;
120
+ - filtres et cycle des statuts ;
121
+ - persistance `localStorage` et récupérations d’erreur ;
122
+ - états vides, clavier et accessibilité ;
123
+ - fidélité responsive à la référence éditoriale approuvée ;
124
+ - fonctionnement hors réseau, sans dépendance.
125
+
126
+ Le plan précise les critères C1–C9, l’ordre d’implémentation, les contrats à respecter, la définition de terminé et les preuves attendues. Node.js `v24.18.0` permettra des tests sans installation via `node:test`.
127
+
128
+ **Non fait :** aucun code applicatif ni test n’a été créé ou exécuté. Les contrôles dans un navigateur réel restent explicitement à la charge du parent et ne sont pas présentés comme acquis.
129
+
130
+ **Prochaine commande recommandée :** `$project-foundation ready LISIERE-1`
131
+
132
+ ## Étape 06
133
+
134
+ ### Entrée
135
+
136
+ ```text
137
+ $project-foundation ready LISIERE-1
138
+ Vérifie la préparation de cette tranche. Aucun code, pas de build par habitude.
139
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
140
+ ```
141
+
142
+ ### Sortie réelle
143
+
144
+ **Fait — LISIERE-1 est prête à implémenter.**
145
+
146
+ Le brief et la mission canonique `docs/missions/LIS-001-lisiere.md` concordent sur :
147
+
148
+ - objectif, périmètre et exclusions ;
149
+ - critères C1–C9 et définition de terminé ;
150
+ - frontières domaine / stockage / vue / composition ;
151
+ - stratégie de tests avec `node:test`, sans dépendance ;
152
+ - responsabilité distincte du parent pour la vérification navigateur.
153
+
154
+ Les prérequis sont disponibles : Node.js `v24.18.0`, références PNG en 1536 × 1024, empreintes du brief et du master conformes à la mission. Aucun manifeste, lockfile ou code applicatif n’existe, conformément à l’état annoncé.
155
+
156
+ **Limites :** `CONTRIBUTING.md` et `AGENTS.md` sont absents, mais ce n’est pas bloquant ici. `PROJECT_PROFILE.md` reste un gabarit vierge et non canonique. Aucun test, build ou contrôle navigateur n’a été exécuté.
157
+
158
+ **Prochaine commande recommandée :** `$project-foundation implement LISIERE-1`
159
+
160
+ ## Étape 07
161
+
162
+ ### Entrée
163
+
164
+ ```text
165
+ $project-foundation implement LISIERE-1
166
+ Implémente maintenant la tranche et ses tests purs. Vue desktop/mobile fidèle au master screen validé, vrais contrôles et stockage local. Ne copie aucun code externe : seuls les assets de référence et le kit sont fournis. Application dans app/, tests node --test dans tests/. Le parent fera les tests Chrome. Regroupe implémentation, tests et corrections locales. Pas de dépendances, réseau, navigateur ou nouvel agent. Termine avec preuves et commande suivante.
167
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
168
+ ```
169
+
170
+ ### Sortie réelle
171
+
172
+ LISIERE-1 est implémentée dans [app/](<projet>/app) :
173
+
174
+ - interface éditoriale responsive desktop/mobile fidèle au master ;
175
+ - ajout via dialogue accessible, validation et gestion du focus ;
176
+ - filtres, cycle des statuts et états vides ;
177
+ - persistance `localStorage`, erreurs explicites, nouvelle tentative et réinitialisation confirmée ;
178
+ - couvertures abstraites déterministes, sans réseau ni dépendance.
179
+
180
+ Les tests purs sont dans [tests/](<projet>/tests). Preuves locales :
181
+
182
+ - `node --test tests/*.test.js` : **22 réussis, 0 échec** ;
183
+ - `node --check` réussi sur tous les JavaScript ;
184
+ - aucune URL, dépendance applicative ou API réseau dans `app/`.
185
+
186
+ La revue a corrigé un risque d’écrasement après échec de lecture et sécurisé l’accès initial à `localStorage`. La mission canonique a été actualisée dans [LIS-001-lisiere.md](<projet>/docs/missions/LIS-001-lisiere.md).
187
+
188
+ Non vérifiés ici, conformément au partage des responsabilités : rendu Chrome réel, clavier, zoom, contraste, persistance et défaillances simulées.
189
+
190
+ Commande suivante recommandée au parent : **`$project-foundation verify LISIERE-1`**.
191
+
192
+ ## Étape 08
193
+
194
+ ### Entrée
195
+
196
+ ```text
197
+ $project-foundation review LISIERE-1
198
+ Relis les fichiers réalisés et les critères, sans réécrire le code. Identifie les défauts concrets ou indique absence de défaut détecté. Ne prétends pas avoir exécuté Chrome.
199
+ Lis BRIEF.md et la mission canonique. Réponse finale en français, concise (environ 180 mots maximum), honnête, avec prochaine commande qualifiée.
200
+ ```
201
+
202
+ ### Sortie réelle
203
+
204
+ Revue statique de LISIERE-1 terminée, sans modification du code.
205
+
206
+ Défauts concrets détectés :
207
+
208
+ - [application.js](<projet>/app/application.js:25) autorise l’ajout après une lecture `localStorage` impossible ou incompatible. L’appel à `save()` peut alors écraser les données non chargées sans la réinitialisation confirmée exigée.
209
+ - [view.js](<projet>/app/view.js:15) appelle directement `crypto.randomUUID()`. Son indisponibilité provoque une exception lors de l’ajout, sans avertissement explicite, contrairement au contrat de compatibilité.
210
+ - [index.html](<projet>/app/index.html:35) utilise `maxlength="120"`, compté en unités UTF-16 par le navigateur, tandis que le domaine autorise 120 points de code Unicode. Certains titres comportant des caractères hors BMP sont donc refusés prématurément.
211
+
212
+ C1–C3, C6 et C9 paraissent autrement correctement représentés dans les fichiers et tests. C4–C5 restent affectés par le premier défaut. C7–C8 ne peuvent pas être conclus par inspection seule.
213
+
214
+ Je n’ai exécuté ni Chrome ni les tests; les « 22 tests réussis » restent une preuve antérieure consignée dans la mission.
215
+
216
+ Prochaine commande recommandée : `$project-foundation implement LISIERE-1`.
217
+
218
+ ## Étape 08b
219
+
220
+ ### Entrée
221
+
222
+ ```text
223
+ $project-foundation implement LISIERE-1
224
+ Corrige les trois défauts de la revue précédente : ajout/retry ne doivent jamais écraser des données non chargées après échec de lecture ou données incompatibles sans reset confirmé, indisponibilité de crypto.randomUUID doit être gérée, limite Unicode doit suivre les points de code. Lis aussi BROWSER-PRELIMINARY.md : getter localStorage était cassé avant ta correction, le parent le retestera. Pour la fidélité, réutilise les couvertures de la référence approuvée pour les trois titres correspondants, via crops CSS de l'image disponible (ne copie aucun ancien code), garde des couvertures abstraites pour les autres. Ajoute les tests de régression pertinents, exécute-les, actualise la mission. Pas de navigateur ni réseau. Réponse française 180 mots environ, preuves précises et prochaine commande.
225
+ ```
226
+
227
+ ### Sortie réelle
228
+
229
+ LISIERE-1 est corrigée et la mission actualisée.
230
+
231
+ - La persistance est verrouillée après lecture échouée ou données incompatibles : ajout et retry restent en mémoire sans `setItem`; seul un reset confirmé et réussi la réactive ([application.js](<projet>/app/application.js:11)).
232
+ - Le getter `localStorage` levant est capturé dans l’adaptateur, avec régression dédiée ([storage.js](<projet>/app/storage.js:43)).
233
+ - `crypto.randomUUID` dispose d’un repli UUID v4 via `getRandomValues`, puis d’un dernier recours local ([domain.js](<projet>/app/domain.js:85)).
234
+ - La limite de 120 suit désormais strictement les points de code Unicode : les `maxlength` UTF-16 ont été retirés.
235
+ - Les trois couples titre/auteur approuvés utilisent des crops CSS de l’image maître; les autres gardent leurs couvertures abstraites ([styles.css](<projet>/app/styles.css:5)).
236
+ - Les preuves et réserves sont consignées dans [LIS-001-lisiere.md](<projet>/docs/missions/LIS-001-lisiere.md:260).
237
+
238
+ Vérification exécutée : `node --test tests/*.test.js` — **27 réussis, 0 échec**. Tous les JS passent `node --check`; aucun appel/import réseau détecté. Aucun navigateur n’a été lancé, conformément à la consigne.
239
+
240
+ Prochaine commande :
241
+
242
+ ```text
243
+ $project-foundation verify LISIERE-1
244
+ ```
245
+
246
+ ## Étape 09
247
+
248
+ ### Entrée
249
+
250
+ ```text
251
+ $project-foundation verify LISIERE-1
252
+ Lis la mission et BROWSER-EVIDENCE.md, preuves réelles Chrome du parent après correction08b. Consolide les critères sans prétendre avoir lancé le navigateur toi-même. Réutilise les27 tests déjà passés si leurs fichiers sont inchangés, exécute seulement un contrôle encore nécessaire. Signale toute vraie limite. Réponse française180 mots environ et prochaine commande qualifiée. Pas de nouveau code, réseau, publication ou agent.
253
+ ```
254
+
255
+ ### Sortie réelle
256
+
257
+ **Vérification LISIERE-1 consolidée**
258
+
259
+ C1 à C6 sont étayés par les 27 tests locaux déjà réussis et par les observations Chrome réelles du parent après correction08b : ajout, filtres, cycle complet, rechargement, validation, états vides et défaillances de stockage. C9 est également établi : fonctionnement local, sans dépendance, requête distante, fournisseur payant ni déploiement.
260
+
261
+ C7 est partiellement confirmé : formulaire, fermeture par Échap et parcours interactifs ont été observés, mais la preuve ne détaille pas un parcours clavier intégral par tabulation puis activation des filtres et statuts. C8 est raisonnablement étayé par l’inspection parent des captures desktop/mobile : composition éditoriale, palette, couvertures et absence de débordement mobile sont préservées, sans identité pixel à pixel.
262
+
263
+ Je n’ai lancé aucun navigateur. Le seul contrôle exécuté ici est la comparaison des dates de modification : tous les fichiers `app/` et `tests/` précèdent `BROWSER-EVIDENCE.md`. Les résultats 27/27 restent donc réutilisables et n’ont pas été relancés.
264
+
265
+ Limites réelles : zoom 200 %, contraste mesuré, audit d’accessibilité complet et autres navigateurs non vérifiés. La mission n’est pas totalement clôturable au sens maximal du contrat.
266
+
267
+ Prochaine commande recommandée : `$project-foundation verify LISIERE-1` avec Chrome réel, ciblée uniquement sur clavier complet, zoom 200 % et contraste.
268
+
269
+ ## Étape 09b
270
+
271
+ ### Entrée
272
+
273
+ ```text
274
+ $project-foundation verify LISIERE-1
275
+ Les preuves supplémentaires du parent sont enregistrées dans BROWSER-EVIDENCE.md : parcours clavier intégral réussi, contrastes mesurés >4.5, reflow720 et320px réussi. Le zoom natif navigateur n'est pas observé, seulement le reflow à largeur CSS divisée par deux : conserve cette limite sans la présenter comme un succès. Consolide l'acceptation locale au périmètre observé; l'utilisateur demande ce prototype pédagogique local, pas une certification tous navigateurs. Si un critère indispensable reste réellement bloqué, indique-le. Réutilise les27 tests inchangés. Réponse française180 mots environ et prochaine commande qualifiée. Pas de code ou publication.
276
+ ```
277
+
278
+ ### Sortie réelle
279
+
280
+ **Fait.** LISIERE-1 est accepté localement dans le périmètre du prototype pédagogique observé. Les preuves navigateur couvrent C1 à C9 : ajout, filtres, cycle complet, persistance après rechargement, défaillances de stockage, états vides, parcours intégral au clavier, rendu desktop/mobile et autonomie hors réseau. Les régressions `localStorage`, données incompatibles, Unicode et repli UUID réussissent également.
281
+
282
+ La suite existante a été réutilisée sans modification : `node --test tests/*.test.js` donne **27 tests réussis, 0 échec**. Les contrôles syntaxiques JavaScript réussissent. Aucun code, test ou document n’a été modifié, et rien n’a été publié.
283
+
284
+ **Limites conservées.** Les contrastes mesurés sur les couples CSS sélectionnés sont tous supérieurs à 4,5, sans constituer une analyse de chaque pixel rendu. Le reflow réussit à 720 et 320 px sans débordement horizontal. En revanche, le zoom navigateur natif à 200 % n’a pas été manipulé : il demeure **non vérifié** et n’est pas déclaré réussi. Firefox, Safari, Edge et une certification exhaustive d’accessibilité restent hors du périmètre observé.
285
+
286
+ Aucun critère indispensable au prototype local n’est réellement bloqué.
287
+
288
+ **Prochaine commande recommandée :** `$project-foundation integrate LISIERE-1` — pour préparer l’intégration locale seulement, sans fusion, déploiement ni publication implicite.
289
+
290
+ ## Étape 10
291
+
292
+ ### Entrée
293
+
294
+ ```text
295
+ $project-foundation integrate LISIERE-1
296
+ La vérification finale09b a accepté le prototype local avec les limites documentées dans BROWSER-EVIDENCE.md. Enregistre la livraison locale et la reprise exacte dans la mission canonique. Le dossier n'est pas un dépôt Git : aucune fusion, PR ou publication à inventer. Aucun nouveau périmètre, aucun réseau, aucun code à modifier ou test à relancer sans cause. Réponse française180 mots environ, résultat concret, limites, prochaine commande qualifiée.
297
+ ```
298
+
299
+ ### Sortie réelle
300
+
301
+ L’intégration locale de **LISIERE-1** est enregistrée dans la [mission canonique](<projet>/docs/missions/LIS-001-lisiere.md).
302
+
303
+ La mission indique désormais :
304
+
305
+ - la vérification finale09b acceptée ;
306
+ - le prototype livré uniquement sous forme de fichiers locaux ;
307
+ - les contrôles Chrome, clavier, persistance, stockage défaillant, contraste et reflow reliés à [BROWSER-EVIDENCE.md](<projet>/BROWSER-EVIDENCE.md) ;
308
+ - la clôture de LISIERE-1 dans ce mode de livraison ;
309
+ - l’absence explicite de dépôt Git, fusion, PR, publication ou déploiement.
310
+
311
+ Les limites acceptées sont conservées sans sur-promesse : pas d’identité pixel, de métrique perceptuelle automatisée, de panel humain distinct, d’audit complet d’accessibilité ou inter-navigateurs. Le reflow à 720 et 320 px ne constitue pas une preuve du zoom Chrome natif à 200 %, qui reste non vérifié.
312
+
313
+ Aucun code n’a été modifié, aucun test ou contrôle navigateur n’a été relancé, et aucun accès réseau n’a été effectué. Seule la cohérence documentaire de la mission a été vérifiée.
314
+
315
+ Prochaine commande qualifiée : `$project-foundation next LISIERE-1`, pour constater la clôture et sélectionner uniquement une éventuelle suite expressément autorisée.
@@ -0,0 +1,44 @@
1
+ # DevMethod — du besoin au produit vérifié
2
+
3
+ [Voir le film 4K](https://github.com/montassarkhalloufi/DevMethod/raw/refs/heads/main/docs/media/visual-chain/devmethod-du-besoin-au-produit-4k.fr.mp4) · [Sous-titres](devmethod-du-besoin-au-produit.fr.srt) · [Prototype source](https://github.com/montassarkhalloufi/DevMethod/raw/refs/heads/main/docs/media/visual-chain/lisiere-visual-source.zip)
4
+
5
+ **2 min 58 s · 3840 × 2160 · 23 séquences · voix française.**
6
+
7
+ Le film remplace le long documentaire comme démonstration principale : un seul projet, Lisière, une commande et son résultat visuel, puis l'étape suivante. Narration française courte, commandes tapées, apparitions successives, mouvements doux et interaction réelle. Le cadrage, les choix techniques, les responsabilités du code, la préparation, la revue et la reprise complètent le parcours des maquettes. GitHub garde la prononciation « guit-hub » demandée.
8
+
9
+ ## Ce qui est effectivement vérifié
10
+
11
+ | Passage | Preuve et portée |
12
+ | --- | --- |
13
+ | Trois directions → choix A → master approuvé | Assets et choix réels conservés du pilote Lisière antérieur ; pas une nouvelle décision utilisateur inventée |
14
+ | Master → images des écrans | Deux appels image_gen avec le master en référence : ajout et terminés ; une correction image du fond de la modale |
15
+ | Images → nouvelle application | Nouveau dossier contenant seulement le kit, le brief et les références ; Codex CLI implémente ensuite sans recevoir l'ancien code |
16
+ | Architecture | Stack HTML/CSS/JavaScript et stockage local réellement présents ; règles testables dans domain.mjs, validation des données sauvegardées ; ce choix de prototype ne vaut pas recommandation universelle |
17
+ | Application → vérification | 6 tests Node ; parcours Chrome avec filtres, ajout, statut, focus après transition, sauvegarde, mobile et préservation de données illisibles |
18
+ | Livraison | Prototype local archivé, sans déploiement ni publication npm |
19
+
20
+ Les commandes visibles sont des formulations types réutilisables, pas une transcription littérale d'un unique chat ni une capture continue de Codex Desktop. Les résultats visuels et interactions sont réels. La préparation de la petite tranche neuve a été regroupée dans `implement` ; le film présente `frame`, `architecture`, `plan`, `ready`, `review` et `handoff` séparément pour expliquer leurs rôles. Ces étapes ne sont pas présentées comme des exécutions séparées réellement enregistrées.
21
+
22
+ Le parent a corrigé deux défauts de la réalisation neuve avant la vérification finale : la règle CSS `hidden` de l'alerte et le maintien du focus après changement de statut. Les images dérivées ajoutent seulement des états déjà prévus ; aucune nouvelle approbation utilisateur de ces images n'est revendiquée. Le master A conserve son approbation antérieure. Écarts restants : police système, dimensions adaptées et détails raster ; aucune identité pixel à pixel ni certification complète d'accessibilité.
23
+
24
+ ## Parcours expliqué
25
+
26
+ `explore` → `frame` → `design` → `architecture` → `plan` → `ready` → `implement` → `review` → `verify` → `integrate` → `handoff` / `next`.
27
+
28
+ Dans Codex, chaque étape utilise le préfixe `$project-foundation`. Le niveau de détail dépend du projet ; une petite tranche peut regrouper plusieurs étapes dans une même exécution.
29
+
30
+ Le skill [design-to-code](../../../.agents/skills/design-to-code/SKILL.md) guide les alternatives, le master approuvé, les images dérivées et la comparaison au navigateur. [decision-architecture](../../../.agents/skills/decision-architecture/SKILL.md) compare les technologies et leurs compromis, définit les frontières et consigne les décisions structurantes. Ces capacités se complètent ; le design ne remplace pas les choix techniques.
31
+
32
+ ## Revalidation du contenu
33
+
34
+ Le film précédent était trop détaillé et ne prouvait pas le passage master → pages : sa commande design réutilisait surtout une référence existante. Le skill explicite désormais les trois points de passage et recommande de rester dans design lorsque des visuels demandés manquent. Il ne crée aucune commande autonome « master » ou « pages ».
35
+
36
+ La génération d'images dépend toujours d'un outil disponible dans l'agent. Une instruction documentée ne suffit pas à prouver son exécution : le test présent conserve les prompts, les références, les images générées et la réalisation postérieure. Le [guide](../../VISUAL-WORKFLOW.md) contient les commandes correspondantes. Clair et Lisière ne sont plus mélangés dans la narration.
37
+
38
+ ## Sources de montage
39
+
40
+ Les scripts sont dans [scripts/media/visual-short](../../../scripts/media/visual-short). Ils utilisent macOS Thomas, ffmpeg/ffprobe, Chrome et Playwright (PLAYWRIGHT_MODULE si nécessaire). Depuis la racine du dépôt : extraire le prototype dans /private/tmp/devmethod-shortfilm/project et le servir sur localhost:8768 ; exécuter check.cjs, story.py, record.cjs, puis encode.py. Les maquettes raster sont les assets générés déjà conservés, pas régénérées par ces scripts.
41
+
42
+ Le montage est en 4K ; les images source générées sont en 1536×1024. Le texte et les transitions sont rendus dans Chrome à 3840×2160.
43
+
44
+ Vérifications du média : MP4 H.264, AAC, sous-titres français mov_text ; 177.509 secondes. Plans explicatifs de 6 à 10 secondes environ, transitions et apparitions animées ; séquence navigateur de 20 secondes avec plusieurs actions. Images du master, des déclinaisons, de la comparaison et de la persistance encodée inspectées. Les sous-titres ont un timing proportionnel par phrase. Pas de revendication d’écoute humaine complète.