@atlashub/smartstack-cli 2.6.3 → 2.7.1

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 (39) hide show
  1. package/.documentation/agents.html +1 -1
  2. package/.documentation/apex.html +1 -1
  3. package/.documentation/business-analyse.html +749 -1419
  4. package/.documentation/cli-commands.html +1 -1
  5. package/.documentation/commands.html +1 -1
  6. package/.documentation/css/styles.css +160 -0
  7. package/.documentation/efcore.html +1 -1
  8. package/.documentation/gitflow.html +3 -453
  9. package/.documentation/hooks.html +1 -1
  10. package/.documentation/index.html +177 -68
  11. package/.documentation/init.html +747 -290
  12. package/.documentation/installation.html +63 -8
  13. package/.documentation/ralph-loop.html +1 -1
  14. package/.documentation/test-web.html +1 -1
  15. package/dist/index.js +552 -304
  16. package/dist/index.js.map +1 -1
  17. package/dist/mcp-entry.mjs +12 -10
  18. package/dist/mcp-entry.mjs.map +1 -1
  19. package/package.json +2 -2
  20. package/templates/agents/ba-reader.md +23 -0
  21. package/templates/agents/ba-writer.md +63 -4
  22. package/templates/skills/business-analyse/questionnaire/00-application.md +1 -1
  23. package/templates/skills/business-analyse/questionnaire/03-scope.md +2 -2
  24. package/templates/skills/business-analyse/questionnaire.md +1 -1
  25. package/templates/skills/business-analyse/react/application-viewer.md +1 -1
  26. package/templates/skills/business-analyse/react/schema.md +88 -1
  27. package/templates/skills/business-analyse/schemas/application-schema.json +16 -1
  28. package/templates/skills/business-analyse/schemas/feature-schema.json +19 -986
  29. package/templates/skills/business-analyse/schemas/sections/analysis-schema.json +157 -0
  30. package/templates/skills/business-analyse/schemas/sections/discovery-schema.json +82 -0
  31. package/templates/skills/business-analyse/schemas/sections/handoff-schema.json +80 -0
  32. package/templates/skills/business-analyse/schemas/sections/metadata-schema.json +69 -0
  33. package/templates/skills/business-analyse/schemas/sections/specification-schema.json +445 -0
  34. package/templates/skills/business-analyse/schemas/sections/validation-schema.json +93 -0
  35. package/templates/skills/business-analyse/schemas/shared/common-defs.json +133 -0
  36. package/templates/skills/business-analyse/steps/step-01-cadrage.md +22 -3
  37. package/templates/skills/business-analyse/steps/step-03-specify.md +129 -0
  38. package/templates/skills/business-analyse/steps/step-04-consolidation.md +38 -5
  39. package/templates/skills/business-analyse/steps/step-05-handoff.md +94 -218
@@ -12,7 +12,7 @@
12
12
  <header class="global-header">
13
13
  <div class="logo">SS</div>
14
14
  <span class="site-title">SmartStack CLI</span>
15
- <span class="version-badge">v2.0.0</span>
15
+ <span class="version-badge">v5.0.0</span>
16
16
  <div class="header-divider"></div>
17
17
  <span class="page-title">Business Analyse</span>
18
18
  <nav class="breadcrumb">
@@ -24,7 +24,7 @@
24
24
  <span data-lang="fr">Workflows</span>
25
25
  <span data-lang="en">Workflows</span>
26
26
  <span class="breadcrumb-separator">&#8250;</span>
27
- <span class="breadcrumb-current">Business Analyse</span>
27
+ <span class="breadcrumb-current">Business Analyse v5.0</span>
28
28
  </nav>
29
29
  <!-- Language Select -->
30
30
  <select class="lang-select" id="lang-select" onchange="setLanguage(this.value); localStorage.setItem('doc-language', this.value);">
@@ -67,7 +67,7 @@
67
67
  </a>
68
68
  <a href="init.html" class="nav-item">
69
69
  <span class="icon">&#128640;</span>
70
- <span class="nav-text">Project Init</span>
70
+ <span class="nav-text">Projet Client</span>
71
71
  </a>
72
72
  </div>
73
73
 
@@ -98,8 +98,8 @@
98
98
  <nav class="sidebar-toc">
99
99
  <a href="#introduction" class="sidebar-toc-link">Introduction</a>
100
100
  <a href="#architecture" class="sidebar-toc-link">
101
- <span data-lang="fr">Architecture JSON-First</span>
102
- <span data-lang="en">JSON-First Architecture</span>
101
+ <span data-lang="fr">Architecture (5-Niveaux)</span>
102
+ <span data-lang="en">Architecture (5-Level Hierarchy)</span>
103
103
  </a>
104
104
  <a href="#quick-start" class="sidebar-toc-link">Quick Start</a>
105
105
  <a href="#use-cases" class="sidebar-toc-link">
@@ -112,21 +112,22 @@
112
112
  </a>
113
113
  <a href="#workflow" class="sidebar-toc-link">Workflow</a>
114
114
  <a href="#step-00" class="sidebar-toc-link">00. Init</a>
115
- <a href="#step-01" class="sidebar-toc-link">01. Analyse</a>
116
- <a href="#step-02" class="sidebar-toc-link">02. Specify</a>
117
- <a href="#step-03" class="sidebar-toc-link">03. Validate</a>
118
- <a href="#step-04" class="sidebar-toc-link">04. Handoff</a>
119
- <a href="#questionnaire" class="sidebar-toc-link">Questionnaire</a>
120
- <a href="#versioning" class="sidebar-toc-link">Versioning</a>
115
+ <a href="#step-01" class="sidebar-toc-link">01. Cadrage</a>
116
+ <a href="#step-02" class="sidebar-toc-link">02. Decomposition</a>
117
+ <a href="#step-03" class="sidebar-toc-link">03. Specify (Per-Module)</a>
118
+ <a href="#step-04" class="sidebar-toc-link">04. Consolidation</a>
119
+ <a href="#step-05" class="sidebar-toc-link">05. Handoff</a>
120
+ <a href="#schemas" class="sidebar-toc-link">Schemas</a>
121
121
  <a href="#agents" class="sidebar-toc-link">Agents</a>
122
+ <a href="#ids-refs" class="sidebar-toc-link">
123
+ <span data-lang="fr">IDs &amp; Refs</span>
124
+ <span data-lang="en">IDs &amp; Cross-References</span>
125
+ </a>
122
126
  <a href="#output" class="sidebar-toc-link">
123
127
  <span data-lang="fr">Sorties</span>
124
128
  <span data-lang="en">Output</span>
125
129
  </a>
126
- <a href="#example" class="sidebar-toc-link">
127
- <span data-lang="fr">Exemple</span>
128
- <span data-lang="en">Example</span>
129
- </a>
130
+ <a href="#versioning" class="sidebar-toc-link">Versioning</a>
130
131
  </nav>
131
132
  </div>
132
133
  </div>
@@ -172,187 +173,207 @@
172
173
  <section id="introduction">
173
174
  <h2>Introduction</h2>
174
175
  <p data-lang="fr">
175
- Le skill <strong>Business Analyse v3.0</strong> est un workflow VibeCoding en <strong>5 etapes</strong> qui transforme un besoin utilisateur en specification fonctionnelle complete, prete pour l'implementation. Il repose sur une <strong>architecture JSON-First</strong> ou un unique fichier <code>feature.json</code> est enrichi progressivement a chaque etape.
176
+ Le skill <strong>Business Analyse v5.0</strong> est un workflow en <strong>6 etapes</strong> qui transforme un besoin utilisateur en specification fonctionnelle complete avec support iteratif multi-module. Chaque application est composee de modules interdependants, analyzes et specifies dans un ordre logique.
176
177
  </p>
177
178
  <p data-lang="en">
178
- The <strong>Business Analyse v3.0</strong> skill is a VibeCoding workflow in <strong>5 steps</strong> that transforms a user need into a complete functional specification, ready for implementation. It relies on a <strong>JSON-First architecture</strong> where a single <code>feature.json</code> file is progressively enriched at each step.
179
+ The <strong>Business Analyse v5.0</strong> skill is a <strong>6-step</strong> workflow that transforms a user need into a complete functional specification with iterative multi-module support. Each application consists of interdependent modules, analyzed and specified in logical order.
179
180
  </p>
180
181
 
182
+ <h4 data-lang="fr">6 Etapes du workflow</h4>
183
+ <h4 data-lang="en">6 Workflow Steps</h4>
184
+ <ol class="steps-list">
185
+ <li>
186
+ <strong>Init</strong> - Detecte le mode (application vs module), cree feature.json initial
187
+ </li>
188
+ <li>
189
+ <strong>Cadrage</strong> - Analyse applicative : probleme, stakeholders, scope, roles (applicationRoles)
190
+ </li>
191
+ <li>
192
+ <strong>Decomposition</strong> - Decompose l'application en modules, dependances, graphe topologique
193
+ </li>
194
+ <li>
195
+ <strong>Specify (Per-Module)</strong> - Specification iterative de chaque module en ordre de dependance
196
+ </li>
197
+ <li>
198
+ <strong>Consolidation</strong> - Validation cross-module, coherence des permissions et entites partagees
199
+ </li>
200
+ <li>
201
+ <strong>Handoff</strong> - Mapping des fichiers par module, extraction programmatique prd.json via <code>ss derive-prd</code>
202
+ </li>
203
+ </ol>
204
+
205
+ <h4 data-lang="fr">Navigation hierarchique (5 niveaux)</h4>
206
+ <h4 data-lang="en">Hierarchical Navigation (5 Levels)</h4>
207
+ <div class="code-block">
208
+ <button class="copy-btn">Copy</button>
209
+ <pre><code>Context → Application → Module → Section → Resource
210
+
211
+ Exemple:
212
+ - Context: "ecommerce"
213
+ - Application: "OrderManagement"
214
+ - Module: "Checkout"
215
+ - Section: "ShoppingCart" (page React)
216
+ - Resource: "CartItem" (composant React)</code></pre>
217
+ </div>
218
+
181
219
  <div class="alert alert-warning">
182
220
  <span class="alert-icon">&#9888;</span>
183
221
  <div class="alert-content">
184
- <h5 data-lang="fr">Principe fondamental</h5>
185
- <h5 data-lang="en">Core Principle</h5>
222
+ <h5 data-lang="fr">Architecture multi-niveaux</h5>
223
+ <h5 data-lang="en">Multi-level Architecture</h5>
186
224
  <p data-lang="fr">
187
- <strong>Comprendre avant de specifier.</strong> Les etapes 00-01 se concentrent sur la DECOUVERTE (langage utilisateur), les etapes 02-04 sur la SPECIFICATION et le HANDOFF (langage technique).
225
+ Deux fichiers de schema : <strong>application-schema.json</strong> (master, cadrage et modules) et <strong>feature-schema.json</strong> (par module, specification).
188
226
  </p>
189
227
  <p data-lang="en">
190
- <strong>Understand before specifying.</strong> Steps 00-01 focus on DISCOVERY (user language), steps 02-04 on SPECIFICATION and HANDOFF (technical language).
228
+ Two schema files: <strong>application-schema.json</strong> (master, framing and modules) and <strong>feature-schema.json</strong> (per-module, specification).
191
229
  </p>
192
230
  </div>
193
231
  </div>
194
232
 
195
- <div class="alert alert-success">
196
- <span class="alert-icon">&#129504;</span>
233
+ <div class="alert alert-info">
234
+ <span class="alert-icon">&#128202;</span>
197
235
  <div class="alert-content">
198
- <h5>ULTRATHINK</h5>
236
+ <h5 data-lang="fr">2 Agents specialises</h5>
237
+ <h5 data-lang="en">2 Specialized Agents</h5>
199
238
  <p data-lang="fr">
200
- Les etapes critiques (01 Analyse, 02 Specify, 04 Handoff) utilisent <strong>ULTRATHINK</strong> avec le modele Opus pour une reflexion approfondie. Les etapes simples (00 Init, 03 Validate) utilisent Haiku pour la rapidite.
239
+ <strong>ba-reader</strong> : lecture, recherche de features, validation des references croisees.
240
+ <strong>ba-writer</strong> : creation, enrichissement, validation du schema, verification post-ecriture.
201
241
  </p>
202
242
  <p data-lang="en">
203
- Critical steps (01 Analyse, 02 Specify, 04 Handoff) use <strong>ULTRATHINK</strong> with the Opus model for deep reasoning. Simple steps (00 Init, 03 Validate) use Haiku for speed.
243
+ <strong>ba-reader</strong>: read, search features, validate cross-references.
244
+ <strong>ba-writer</strong>: create, enrich, schema validation, post-write verification.
204
245
  </p>
205
246
  </div>
206
247
  </div>
207
248
 
208
- <div class="alert alert-info">
249
+ <div class="alert alert-success">
209
250
  <span class="alert-icon">&#128202;</span>
210
251
  <div class="alert-content">
211
- <h5 data-lang="fr">4 cas d'usage</h5>
212
- <h5 data-lang="en">4 Use Cases</h5>
252
+ <h5 data-lang="fr">prd.json programmatique</h5>
253
+ <h5 data-lang="en">Programmatic prd.json</h5>
213
254
  <p data-lang="fr">
214
- Le skill supporte 4 modes : <strong>Nouvelle feature</strong> (workflow complet), <strong>Question</strong> (interroger une feature existante), <strong>Refactoring</strong> (creer une version delta), <strong>Micro-feature</strong> (analyse minimale).
255
+ Le fichier <code>prd.json</code> n'est JAMAIS genere par l'LLM. Il est extrait programmatiquement par <code>ss derive-prd</code> a partir du feature.json final, garantissant coherence et tracabilite.
215
256
  </p>
216
257
  <p data-lang="en">
217
- The skill supports 4 modes: <strong>New feature</strong> (full workflow), <strong>Question</strong> (query an existing feature), <strong>Refactoring</strong> (create a delta version), <strong>Micro-feature</strong> (minimal analysis).
258
+ The <code>prd.json</code> file is NEVER generated by the LLM. It is extracted programmatically by <code>ss derive-prd</code> from the final feature.json, ensuring consistency and traceability.
218
259
  </p>
219
260
  </div>
220
261
  </div>
221
262
  </section>
222
263
 
223
264
  <!-- ============================================ -->
224
- <!-- ARCHITECTURE JSON-FIRST -->
265
+ <!-- ARCHITECTURE (5-LEVEL HIERARCHY) -->
225
266
  <!-- ============================================ -->
226
267
  <section id="architecture">
227
268
  <h2>
228
- <span data-lang="fr">Architecture JSON-First</span>
229
- <span data-lang="en">JSON-First Architecture</span>
269
+ <span data-lang="fr">Architecture (Hierarchie 5-Niveaux)</span>
270
+ <span data-lang="en">Architecture (5-Level Hierarchy)</span>
230
271
  </h2>
231
272
 
232
273
  <p data-lang="fr">
233
- Contrairement a l'ancienne approche multi-fichiers markdown, la v3.0 utilise un <strong>unique fichier <code>feature.json</code></strong> enrichi progressivement par chaque etape. Cela reduit le contexte de ~70% par phase et elimine les fichiers intermediaires.
274
+ La v5.0 utilise une hierarchie 5 niveaux pour naviguer les applications multi-modules. Deux fichiers JSON (master application + per-module) garantissent la tracabilite et la coherence cross-module.
234
275
  </p>
235
276
  <p data-lang="en">
236
- Unlike the previous multi-file markdown approach, v3.0 uses a <strong>single <code>feature.json</code> file</strong> progressively enriched by each step. This reduces context by ~70% per phase and eliminates intermediate files.
277
+ v5.0 uses a 5-level hierarchy to navigate multi-module applications. Two JSON files (master application + per-module) ensure traceability and cross-module coherence.
237
278
  </p>
238
279
 
280
+ <h4 data-lang="fr">Structure de repertoires</h4>
281
+ <h4 data-lang="en">Directory Structure</h4>
282
+
239
283
  <div class="code-block">
240
284
  <button class="copy-btn">Copy</button>
241
- <pre><code>docs/business/{app}/{module}/business-analyse/
285
+ <pre><code>docs/business/{app}/business-analyse/
242
286
  ├── v1.0/
243
- └── feature.json Single enriched JSON (progressively filled)
244
- ├── v1.1/
245
- │ └── feature.json Delta version (refactoring)
246
- └── v2.0/
247
- └── feature.json ← Major revision
248
-
249
- .ralph/
250
- ├── prd.json ← Task breakdown (generated by step-04)
251
- └── progress.txt ← Progress tracker</code></pre>
287
+ ├── feature.json MASTER (application-level)
288
+ │ │ includes: cadrage, moduleRegistry, dependencyGraph
289
+ │ └── README.md Overview
290
+
291
+ ├── {module-name}/
292
+ │ └── v1.0/
293
+ │ ├── feature.json ← PER-MODULE (feature-schema.json)
294
+ │ │ includes: specification, validation, handoff
295
+ └── README.md
296
+
297
+ └── .ralph/
298
+ ├── prd.json ← Extracted programmatically
299
+ ├── progress.txt ← Tracker
300
+ └── per-module/
301
+ ├── checkout-handoff.json
302
+ ├── payment-handoff.json
303
+ └── ...</code></pre>
252
304
  </div>
253
305
 
254
- <h4 data-lang="fr">Enrichissement progressif</h4>
255
- <h4 data-lang="en">Progressive enrichment</h4>
306
+ <h4 data-lang="fr">Deux schemas JSON</h4>
307
+ <h4 data-lang="en">Two JSON Schemas</h4>
256
308
 
257
309
  <div class="table-container">
258
310
  <table class="reference-table">
259
311
  <thead>
260
312
  <tr>
313
+ <th>Fichier</th>
261
314
  <th>
262
- <span data-lang="fr">Etape</span>
263
- <span data-lang="en">Step</span>
315
+ <span data-lang="fr">Niveau</span>
316
+ <span data-lang="en">Level</span>
264
317
  </th>
265
318
  <th>
266
- <span data-lang="fr">Sections enrichies</span>
267
- <span data-lang="en">Enriched sections</span>
319
+ <span data-lang="fr">Contenu principal</span>
320
+ <span data-lang="en">Main Content</span>
268
321
  </th>
269
- <th>Status</th>
270
322
  <th>
271
- <span data-lang="fr">Modele</span>
272
- <span data-lang="en">Model</span>
323
+ <span data-lang="fr">Ecriture par</span>
324
+ <span data-lang="en">Written by</span>
273
325
  </th>
274
326
  </tr>
275
327
  </thead>
276
328
  <tbody>
277
329
  <tr>
278
- <td><strong>00 - Init</strong></td>
279
- <td><code>metadata</code></td>
280
- <td><span class="badge badge-blue">draft</span></td>
281
- <td>Haiku</td>
282
- </tr>
283
- <tr>
284
- <td><strong>01 - Analyse</strong></td>
285
- <td><code>discovery</code>, <code>analysis</code>, <code>suggestions</code></td>
286
- <td><span class="badge badge-purple">analysed</span></td>
287
- <td>Opus</td>
288
- </tr>
289
- <tr>
290
- <td><strong>02 - Specify</strong></td>
291
- <td><code>specification</code></td>
292
- <td><span class="badge badge-teal">specified</span></td>
293
- <td>Sonnet</td>
294
- </tr>
295
- <tr>
296
- <td><strong>03 - Validate</strong></td>
297
- <td><code>validation</code></td>
298
- <td><span class="badge badge-green">approved</span></td>
299
- <td>Haiku</td>
330
+ <td><code>application-schema.json</code></td>
331
+ <td>Master</td>
332
+ <td>
333
+ <span data-lang="fr">cadrage, applicationRoles, moduleRegistry[], dependencyGraph</span>
334
+ <span data-lang="en">framing, applicationRoles, moduleRegistry[], dependencyGraph</span>
335
+ </td>
336
+ <td>Step 01-02</td>
300
337
  </tr>
301
338
  <tr>
302
- <td><strong>04 - Handoff</strong></td>
303
- <td><code>handoff</code></td>
304
- <td><span class="badge badge-orange">handed-off</span></td>
305
- <td>Opus</td>
339
+ <td><code>feature-schema.json</code></td>
340
+ <td>Per-Module</td>
341
+ <td>
342
+ <span data-lang="fr">specification, validation, handoff (entites, UC, BR, FR, wireframes)</span>
343
+ <span data-lang="en">specification, validation, handoff (entities, UC, BR, FR, wireframes)</span>
344
+ </td>
345
+ <td>Step 03-05</td>
306
346
  </tr>
307
347
  </tbody>
308
348
  </table>
309
349
  </div>
310
350
 
311
- <h4 data-lang="fr">Structure du feature.json</h4>
312
- <h4 data-lang="en">feature.json structure</h4>
351
+ <h4 data-lang="fr">Coverage Matrix (tracabilite)</h4>
352
+ <h4 data-lang="en">Coverage Matrix (Traceability)</h4>
353
+
354
+ <p data-lang="fr">
355
+ Chaque requirement original du cadrage doit etre trace a au moins 1 use case (UC), business rule (BR), ou functional requirement (FR).
356
+ </p>
357
+ <p data-lang="en">
358
+ Each original requirement from framing must be traced to at least 1 use case (UC), business rule (BR), or functional requirement (FR).
359
+ </p>
313
360
 
314
361
  <div class="code-block">
315
362
  <button class="copy-btn">Copy</button>
316
- <pre><code>{
317
- "id": "FEAT-001",
318
- "version": "1.0",
319
- "status": "draft | analysed | specified | approved | handed-off",
320
- "metadata": {
321
- "title": "...",
322
- "application": "...",
323
- "module": "...",
324
- "language": "fr",
325
- "featureType": "data-centric | integration | ui-centric | workflow | reporting | full-module | micro",
326
- "steps": {
327
- "init": { "status": "completed", "startedAt": "...", "completedAt": "..." },
328
- "analyse": { "status": "in-progress" },
329
- "specify": { "status": "pending" },
330
- "validate": { "status": "pending" },
331
- "handoff": { "status": "pending" }
363
+ <pre><code>"coverageMatrix": {
364
+ "mustHave": [
365
+ {
366
+ "id": "REQ-001",
367
+ "description": "Users can view their order history",
368
+ "category": "core_feature",
369
+ "tracedTo": ["UC-HIST-001", "FR-HIST-001"],
370
+ "covered": true
332
371
  }
333
- },
334
- "discovery": { "codebaseContext": {}, "questionnaire": {} },
335
- "analysis": { "businessRules": [], "entities": [], "objectives": [], "risks": [] },
336
- "specification": { "actors": [], "useCases": [], "requirements": [], "permissions": {} },
337
- "validation": { "completeness": {}, "consistency": {}, "decision": "APPROVED" },
338
- "handoff": { "fileMapping": {}, "apiEndpoints": [], "testPlan": {} },
339
- "suggestions": [],
340
- "changelog": []
372
+ ],
373
+ "shouldHave": [...],
374
+ "couldHave": [...]
341
375
  }</code></pre>
342
376
  </div>
343
-
344
- <div class="alert alert-info">
345
- <span class="alert-icon">&#128218;</span>
346
- <div class="alert-content">
347
- <h5>Schema JSON</h5>
348
- <p data-lang="fr">
349
- Le schema complet est defini dans <code>schemas/feature-schema.json</code> (JSON Schema 2020-12). Toutes les ecritures sont validees par le <code>ba-writer</code> agent.
350
- </p>
351
- <p data-lang="en">
352
- The complete schema is defined in <code>schemas/feature-schema.json</code> (JSON Schema 2020-12). All writes are validated by the <code>ba-writer</code> agent.
353
- </p>
354
- </div>
355
- </div>
356
377
  </section>
357
378
 
358
379
  <!-- ============================================ -->
@@ -368,10 +389,10 @@
368
389
  </div>
369
390
  <div class="command-body">
370
391
  <p data-lang="fr">
371
- Lancez l'analyse metier complete ou choisissez un mode specifique selon votre besoin.
392
+ Lancez l'analyse metier complete avec le nouveau workflow 6 etapes.
372
393
  </p>
373
394
  <p data-lang="en">
374
- Launch the complete business analysis or choose a specific mode based on your need.
395
+ Launch the complete business analysis with the new 6-step workflow.
375
396
  </p>
376
397
 
377
398
  <div class="code-block">
@@ -380,18 +401,18 @@
380
401
  </div>
381
402
 
382
403
  <h4 data-lang="fr">Exemples rapides</h4>
383
- <h4 data-lang="en">Quick examples</h4>
404
+ <h4 data-lang="en">Quick Examples</h4>
384
405
 
385
406
  <div class="code-block">
386
407
  <button class="copy-btn">Copy</button>
387
- <pre><code># Nouvelle feature (workflow complet 5 etapes)
388
- /business-analyse Order management module
408
+ <pre><code># Nouvelle application (workflow complet 6 etapes)
409
+ /business-analyse Order management system
389
410
 
390
- # Question sur une feature existante
391
- /business-analyse -q FEAT-001 "What permissions does the manager have?"
411
+ # Question sur une application ou module
412
+ /business-analyse -q FEAT-001 "What are the permission hierarchy?"
392
413
 
393
- # Refactoring (delta sur feature existante)
394
- /business-analyse -r FEAT-001 "Add export PDF functionality"
414
+ # Refactoring (delta sur application existante)
415
+ /business-analyse -r FEAT-001 "Add return management module"
395
416
 
396
417
  # Micro-feature (analyse minimale)
397
418
  /business-analyse -m Add a status field to orders</code></pre>
@@ -419,65 +440,43 @@
419
440
  </th>
420
441
  <th>Flag</th>
421
442
  <th>
422
- <span data-lang="fr">Commande</span>
423
- <span data-lang="en">Command</span>
443
+ <span data-lang="fr">Mode</span>
444
+ <span data-lang="en">Mode</span>
424
445
  </th>
425
446
  <th>
426
447
  <span data-lang="fr">Parcours</span>
427
448
  <span data-lang="en">Flow</span>
428
449
  </th>
429
- <th>
430
- <span data-lang="fr">Sortie</span>
431
- <span data-lang="en">Output</span>
432
- </th>
433
450
  </tr>
434
451
  </thead>
435
452
  <tbody>
436
453
  <tr>
437
- <td><strong data-lang="fr">Nouvelle feature</strong><strong data-lang="en">New feature</strong></td>
454
+ <td><strong data-lang="fr">Nouvelle application</strong><strong data-lang="en">New application</strong></td>
438
455
  <td><span data-lang="fr">(aucun)</span><span data-lang="en">(none)</span></td>
439
- <td><code>/business-analyse Order module</code></td>
440
- <td>00 &rarr; 01 &rarr; 02 &rarr; 03 &rarr; 04</td>
441
- <td><code>feature.json</code> v1.0 + <code>prd.json</code></td>
456
+ <td><span data-lang="fr">application</span><span data-lang="en">application</span></td>
457
+ <td>00 01 02 03[*N modules] 04 → 05</td>
442
458
  </tr>
443
459
  <tr>
444
460
  <td><strong>Question</strong></td>
445
461
  <td><code>-q</code></td>
446
- <td><code>/business-analyse -q FEAT-001 "..."</code></td>
447
- <td>00 &rarr; ba-reader &rarr; EXIT</td>
448
- <td>
449
- <span data-lang="fr">Reponse textuelle</span>
450
- <span data-lang="en">Text answer</span>
451
- </td>
462
+ <td><span data-lang="fr">lecture seule</span><span data-lang="en">read-only</span></td>
463
+ <td>ba-reader.findFeature() ba-reader.readSection() EXIT</td>
452
464
  </tr>
453
465
  <tr>
454
466
  <td><strong>Refactoring</strong></td>
455
467
  <td><code>-r</code></td>
456
- <td><code>/business-analyse -r FEAT-001 "Add PDF"</code></td>
457
- <td>00 (delta) &rarr; 01 &rarr; 02 &rarr; 03 &rarr; 04</td>
458
- <td><code>feature.json</code> v1.1 + <code>prd.json</code></td>
468
+ <td><span data-lang="fr">delta application</span><span data-lang="en">delta application</span></td>
469
+ <td>00 (delta) 01 02 03[*N modules] 04 → 05</td>
459
470
  </tr>
460
471
  <tr>
461
472
  <td><strong>Micro-feature</strong></td>
462
473
  <td><code>-m</code></td>
463
- <td><code>/business-analyse -m Add status field</code></td>
464
- <td>00 &rarr; 01 (4 Q) &rarr; 02 (min) &rarr; 03 (auto) &rarr; 04</td>
465
- <td><code>feature.json</code> v1.0 (micro)</td>
474
+ <td><span data-lang="fr">module simple</span><span data-lang="en">simple module</span></td>
475
+ <td>00 (micro) 01 (lite) 02 (skip) 03 (minimal) → 04 (auto) 05</td>
466
476
  </tr>
467
477
  </tbody>
468
478
  </table>
469
479
  </div>
470
-
471
- <h4 data-lang="fr">Routage des cas d'usage</h4>
472
- <h4 data-lang="en">Use case routing</h4>
473
-
474
- <div class="code-block">
475
- <button class="copy-btn">Copy</button>
476
- <pre><code>question (-q) &rarr; ba-reader.answerQuestion() &rarr; EXIT
477
- refactor (-r) &rarr; ba-writer.createVersion() &rarr; step-01 (delta) &rarr; ... &rarr; step-04
478
- micro (-m) &rarr; step-00 (minimal) &rarr; step-01 (micro) &rarr; ... &rarr; step-04
479
- default &rarr; step-00 &rarr; step-01 (full) &rarr; ... &rarr; step-04</code></pre>
480
- </div>
481
480
  </section>
482
481
 
483
482
  <!-- ============================================ -->
@@ -491,61 +490,56 @@ default &rarr; step-00 &rarr; step-01 (full) &rarr;
491
490
  <thead>
492
491
  <tr>
493
492
  <th>Flag</th>
494
- <th>Long</th>
495
493
  <th>
496
494
  <span data-lang="fr">Effet</span>
497
495
  <span data-lang="en">Effect</span>
498
496
  </th>
497
+ <th>
498
+ <span data-lang="fr">Par defaut</span>
499
+ <span data-lang="en">Default</span>
500
+ </th>
499
501
  </tr>
500
502
  </thead>
501
503
  <tbody>
502
504
  <tr>
503
- <td><code>-a</code></td>
504
- <td><code>--auto</code></td>
505
+ <td><code>-q, --question</code></td>
505
506
  <td>
506
- <span data-lang="fr">Mode autonome : saute les confirmations utilisateur</span>
507
- <span data-lang="en">Autonomous mode: skip user confirmations</span>
507
+ <span data-lang="fr">Mode lecture seule (ba-reader)</span>
508
+ <span data-lang="en">Read-only mode (ba-reader)</span>
508
509
  </td>
510
+ <td>false</td>
509
511
  </tr>
510
512
  <tr>
511
- <td><code>-e</code></td>
512
- <td><code>--economy</code></td>
513
+ <td><code>-r, --refactor</code></td>
513
514
  <td>
514
- <span data-lang="fr">Mode economique : pas de sous-agents, utilise Glob/Grep directement</span>
515
- <span data-lang="en">Economy mode: no subagents, uses Glob/Grep directly</span>
515
+ <span data-lang="fr">Creer version delta (v1.1)</span>
516
+ <span data-lang="en">Create delta version (v1.1)</span>
516
517
  </td>
518
+ <td>false</td>
517
519
  </tr>
518
520
  <tr>
519
- <td><code>-q FEAT-ID "text"</code></td>
520
- <td><code>--question</code></td>
521
+ <td><code>-m, --micro</code></td>
521
522
  <td>
522
- <span data-lang="fr">Mode question : interroge une feature existante (lecture seule, EXIT)</span>
523
- <span data-lang="en">Question mode: query an existing feature (read-only, EXIT)</span>
523
+ <span data-lang="fr">Analyse minimale pour micro-feature</span>
524
+ <span data-lang="en">Minimal analysis for micro-feature</span>
524
525
  </td>
526
+ <td>false</td>
525
527
  </tr>
526
528
  <tr>
527
- <td><code>-r FEAT-ID "text"</code></td>
528
- <td><code>--refactor</code></td>
529
+ <td><code>--economy-mode</code></td>
529
530
  <td>
530
- <span data-lang="fr">Mode refactoring : cree une version delta (v1.0 &rarr; v1.1)</span>
531
- <span data-lang="en">Refactoring mode: creates a delta version (v1.0 &rarr; v1.1)</span>
531
+ <span data-lang="fr">Haiku partout, moins de context</span>
532
+ <span data-lang="en">Haiku everywhere, less context</span>
532
533
  </td>
534
+ <td>false</td>
533
535
  </tr>
534
536
  <tr>
535
- <td><code>-m</code></td>
536
- <td><code>--micro</code></td>
537
+ <td><code>--mcp-available</code></td>
537
538
  <td>
538
- <span data-lang="fr">Micro-feature : analyse minimale (4 questions max)</span>
539
- <span data-lang="en">Micro-feature: minimal analysis (4 questions max)</span>
540
- </td>
541
- </tr>
542
- <tr>
543
- <td><code>-i</code></td>
544
- <td><code>--interactive</code></td>
545
- <td>
546
- <span data-lang="fr">Mode interactif : configuration guidee des flags</span>
547
- <span data-lang="en">Interactive mode: guided flag configuration</span>
539
+ <span data-lang="fr">Valider avec SmartStack.mcp</span>
540
+ <span data-lang="en">Validate with SmartStack.mcp</span>
548
541
  </td>
542
+ <td>false</td>
549
543
  </tr>
550
544
  </tbody>
551
545
  </table>
@@ -553,1403 +547,739 @@ default &rarr; step-00 &rarr; step-01 (full) &rarr;
553
547
  </section>
554
548
 
555
549
  <!-- ============================================ -->
556
- <!-- WORKFLOW -->
550
+ <!-- WORKFLOW (6 STEPS) -->
557
551
  <!-- ============================================ -->
558
552
  <section id="workflow">
559
- <h2>Workflow</h2>
560
-
561
- <div class="svg-diagram">
562
- <svg viewBox="0 0 800 350" xmlns="http://www.w3.org/2000/svg" style="font-family: 'Inter', system-ui, sans-serif;">
563
- <defs>
564
- <linearGradient id="initGrad" x1="0%" y1="0%" x2="100%" y2="100%">
565
- <stop offset="0%" style="stop-color:#64748b"/>
566
- <stop offset="100%" style="stop-color:#475569"/>
567
- </linearGradient>
568
- <linearGradient id="analyseGrad" x1="0%" y1="0%" x2="100%" y2="100%">
569
- <stop offset="0%" style="stop-color:#3b82f6"/>
570
- <stop offset="100%" style="stop-color:#1d4ed8"/>
571
- </linearGradient>
572
- <linearGradient id="specifyGrad" x1="0%" y1="0%" x2="100%" y2="100%">
573
- <stop offset="0%" style="stop-color:#8b5cf6"/>
574
- <stop offset="100%" style="stop-color:#6d28d9"/>
575
- </linearGradient>
576
- <linearGradient id="validateGrad" x1="0%" y1="0%" x2="100%" y2="100%">
577
- <stop offset="0%" style="stop-color:#22c55e"/>
578
- <stop offset="100%" style="stop-color:#15803d"/>
579
- </linearGradient>
580
- <linearGradient id="handoffGrad" x1="0%" y1="0%" x2="100%" y2="100%">
581
- <stop offset="0%" style="stop-color:#f97316"/>
582
- <stop offset="100%" style="stop-color:#c2410c"/>
583
- </linearGradient>
584
- <linearGradient id="jsonGrad" x1="0%" y1="0%" x2="100%" y2="100%">
585
- <stop offset="0%" style="stop-color:#0d9488"/>
586
- <stop offset="100%" style="stop-color:#0f766e"/>
587
- </linearGradient>
588
- <filter id="glow3" x="-20%" y="-20%" width="140%" height="140%">
589
- <feGaussianBlur stdDeviation="2" result="coloredBlur"/>
590
- <feMerge>
591
- <feMergeNode in="coloredBlur"/>
592
- <feMergeNode in="SourceGraphic"/>
593
- </feMerge>
594
- </filter>
595
- </defs>
596
-
597
- <!-- Background label: DISCOVERY -->
598
- <rect x="30" y="15" width="290" height="25" rx="4" fill="rgba(59,130,246,0.15)" stroke="rgba(59,130,246,0.3)" stroke-width="1"/>
599
- <text x="175" y="32" text-anchor="middle" fill="#60a5fa" font-size="11" font-weight="600">DISCOVERY</text>
600
-
601
- <!-- Background label: SPECIFICATION -->
602
- <rect x="345" y="15" width="430" height="25" rx="4" fill="rgba(139,92,246,0.15)" stroke="rgba(139,92,246,0.3)" stroke-width="1"/>
603
- <text x="560" y="32" text-anchor="middle" fill="#a78bfa" font-size="11" font-weight="600">SPECIFICATION &amp; HANDOFF</text>
604
-
605
- <!-- Step 00: Init -->
606
- <g transform="translate(30, 60)" filter="url(#glow3)">
607
- <rect x="0" y="0" width="130" height="80" rx="10" fill="url(#initGrad)"/>
608
- <text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 00</text>
609
- <text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Init</text>
610
- <text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Parse flags</text>
611
- <text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Create feature.json</text>
612
- </g>
613
-
614
- <!-- Arrow 00 → 01 -->
615
- <line x1="165" y1="100" x2="190" y2="100" stroke="#94a3b8" stroke-width="2"/>
616
- <polygon points="190,95 200,100 190,105" fill="#94a3b8"/>
617
-
618
- <!-- Step 01: Analyse -->
619
- <g transform="translate(200, 60)" filter="url(#glow3)">
620
- <rect x="0" y="0" width="130" height="80" rx="10" fill="url(#analyseGrad)"/>
621
- <text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 01</text>
622
- <text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Analyse</text>
623
- <text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Questionnaire</text>
624
- <text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Business rules</text>
625
- </g>
626
-
627
- <!-- Arrow 01 → 02 -->
628
- <line x1="335" y1="100" x2="360" y2="100" stroke="#94a3b8" stroke-width="2"/>
629
- <polygon points="360,95 370,100 360,105" fill="#94a3b8"/>
630
-
631
- <!-- Step 02: Specify -->
632
- <g transform="translate(370, 60)" filter="url(#glow3)">
633
- <rect x="0" y="0" width="130" height="80" rx="10" fill="url(#specifyGrad)"/>
634
- <text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 02</text>
635
- <text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Specify</text>
636
- <text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Use cases, Specs</text>
637
- <text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Permissions, Gherkin</text>
638
- </g>
639
-
640
- <!-- Arrow 02 → 03 -->
641
- <line x1="505" y1="100" x2="530" y2="100" stroke="#94a3b8" stroke-width="2"/>
642
- <polygon points="530,95 540,100 530,105" fill="#94a3b8"/>
643
-
644
- <!-- Step 03: Validate -->
645
- <g transform="translate(540, 60)" filter="url(#glow3)">
646
- <rect x="0" y="0" width="130" height="80" rx="10" fill="url(#validateGrad)"/>
647
- <text x="65" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 03</text>
648
- <text x="65" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Validate</text>
649
- <text x="65" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Quality gate</text>
650
- <text x="65" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">APPROVED / REJECTED</text>
651
- </g>
652
-
653
- <!-- Arrow 03 → 04 -->
654
- <line x1="675" y1="100" x2="700" y2="100" stroke="#94a3b8" stroke-width="2"/>
655
- <polygon points="700,95 710,100 700,105" fill="#94a3b8"/>
656
-
657
- <!-- Step 04: Handoff -->
658
- <g transform="translate(640, 60)" filter="url(#glow3)">
659
- <rect x="65" y="0" width="130" height="80" rx="10" fill="url(#handoffGrad)"/>
660
- <text x="130" y="25" text-anchor="middle" fill="white" font-size="10" font-weight="700">STEP 04</text>
661
- <text x="130" y="42" text-anchor="middle" fill="white" font-size="13" font-weight="600">Handoff</text>
662
- <text x="130" y="60" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">Dev brief</text>
663
- <text x="130" y="72" text-anchor="middle" fill="rgba(255,255,255,0.6)" font-size="9">prd.json + progress</text>
664
- </g>
665
-
666
- <!-- Central: feature.json -->
667
- <g transform="translate(260, 190)">
668
- <rect x="0" y="0" width="280" height="60" rx="10" fill="url(#jsonGrad)" stroke="#2dd4bf" stroke-width="2"/>
669
- <text x="140" y="25" text-anchor="middle" fill="white" font-size="14" font-weight="700">feature.json</text>
670
- <text x="140" y="42" text-anchor="middle" fill="rgba(255,255,255,0.7)" font-size="10">Single source of truth - progressively enriched</text>
671
- </g>
672
-
673
- <!-- Arrows from steps to feature.json -->
674
- <line x1="95" y1="145" x2="300" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
675
- <line x1="265" y1="145" x2="370" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
676
- <line x1="435" y1="145" x2="430" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
677
- <line x1="605" y1="145" x2="490" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
678
- <line x1="770" y1="145" x2="530" y2="190" stroke="#2dd4bf" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.6"/>
679
-
680
- <!-- Rejection loop from Validate back to Specify -->
681
- <path d="M 570 145 Q 570 170 500 170 Q 435 170 435 145" fill="none" stroke="#ef4444" stroke-width="1.5" stroke-dasharray="5,3"/>
682
- <polygon points="432,150 435,140 438,150" fill="#ef4444"/>
683
- <text x="505" y="166" text-anchor="middle" fill="#ef4444" font-size="9" font-weight="500">REJECTED</text>
684
-
685
- <!-- Legend -->
686
- <g transform="translate(30, 280)">
687
- <rect x="0" y="0" width="760" height="55" rx="8" fill="rgba(30,41,59,0.8)" stroke="#334155" stroke-width="1"/>
688
- <text x="20" y="18" fill="#94a3b8" font-size="10" font-weight="600">LEGEND:</text>
689
-
690
- <rect x="20" y="28" width="12" height="12" rx="3" fill="url(#initGrad)"/>
691
- <text x="38" y="39" fill="#94a3b8" font-size="9">Haiku (fast)</text>
692
-
693
- <rect x="130" y="28" width="12" height="12" rx="3" fill="url(#analyseGrad)"/>
694
- <text x="148" y="39" fill="#94a3b8" font-size="9">Opus (ULTRATHINK)</text>
695
-
696
- <rect x="280" y="28" width="12" height="12" rx="3" fill="url(#specifyGrad)"/>
697
- <text x="298" y="39" fill="#94a3b8" font-size="9">Sonnet (detail)</text>
698
-
699
- <rect x="410" y="28" width="12" height="12" rx="3" fill="url(#validateGrad)"/>
700
- <text x="428" y="39" fill="#94a3b8" font-size="9">Haiku (binary gate)</text>
701
-
702
- <rect x="560" y="28" width="12" height="12" rx="3" fill="url(#handoffGrad)"/>
703
- <text x="578" y="39" fill="#94a3b8" font-size="9">Opus (zero-ambiguity)</text>
704
- </g>
705
- </svg>
706
- </div>
553
+ <h2>Workflow (6 Etapes)</h2>
554
+
555
+ <p data-lang="fr">
556
+ Le workflow v5.0 combine decouverte, decomposition, specification iterative et consolidation cross-module. Chaque etape enrichit progressivement le feature.json.
557
+ </p>
558
+ <p data-lang="en">
559
+ The v5.0 workflow combines discovery, decomposition, iterative specification and cross-module consolidation. Each step progressively enriches the feature.json.
560
+ </p>
707
561
  </section>
708
562
 
709
563
  <!-- ============================================ -->
710
- <!-- STEP 00: INIT -->
564
+ <!-- STEP 00 - INIT -->
711
565
  <!-- ============================================ -->
712
566
  <section id="step-00">
713
- <h2>Step 00 &mdash; Init</h2>
714
-
715
- <div class="command-card">
716
- <div class="command-header">
717
- <code class="command-name">step-00-init</code>
718
- <span class="badge badge-blue">Haiku</span>
719
- <span class="badge badge-teal">
720
- <span data-lang="fr">Rapide</span>
721
- <span data-lang="en">Fast</span>
722
- </span>
723
- </div>
724
- <div class="command-body">
725
- <p data-lang="fr">
726
- <strong>Mission :</strong> Parser les flags, router vers le bon cas d'usage, creer le <code>feature.json</code> initial.
727
- </p>
728
- <p data-lang="en">
729
- <strong>Mission:</strong> Parse flags, route to the correct use case, create the initial <code>feature.json</code>.
730
- </p>
567
+ <h3>00. Init</h3>
731
568
 
732
- <h4 data-lang="fr">Actions principales</h4>
733
- <h4 data-lang="en">Main actions</h4>
734
- <ol>
735
- <li data-lang="fr">Parser les flags de commande (<code>-a</code>, <code>-e</code>, <code>-q</code>, <code>-r</code>, <code>-m</code>, <code>-i</code>)</li>
736
- <li data-lang="en">Parse command flags (<code>-a</code>, <code>-e</code>, <code>-q</code>, <code>-r</code>, <code>-m</code>, <code>-i</code>)</li>
737
-
738
- <li data-lang="fr">Router vers le handler (question / refactor / micro / new)</li>
739
- <li data-lang="en">Route to handler (question / refactor / micro / new)</li>
740
-
741
- <li data-lang="fr">Health check MCP (non-bloquant)</li>
742
- <li data-lang="en">MCP health check (non-blocking)</li>
743
-
744
- <li data-lang="fr">Determiner application et module cible</li>
745
- <li data-lang="en">Determine target application and module</li>
746
-
747
- <li data-lang="fr">Generer l'ID feature (<code>FEAT-NNN</code>)</li>
748
- <li data-lang="en">Generate feature ID (<code>FEAT-NNN</code>)</li>
749
-
750
- <li data-lang="fr">Creer le dossier de sortie et le <code>feature.json</code> initial via <code>ba-writer</code></li>
751
- <li data-lang="en">Create output directory and initial <code>feature.json</code> via <code>ba-writer</code></li>
752
-
753
- <li data-lang="fr">Mettre a jour <code>.business-analyse/config.json</code></li>
754
- <li data-lang="en">Update <code>.business-analyse/config.json</code></li>
755
- </ol>
756
-
757
- <div class="alert alert-info">
758
- <span class="alert-icon">&#128260;</span>
759
- <div class="alert-content">
760
- <h5 data-lang="fr">Mode Question (-q)</h5>
761
- <h5 data-lang="en">Question Mode (-q)</h5>
762
- <p data-lang="fr">
763
- Le mode question charge le <code>ba-reader</code>, repond a la question depuis le <code>feature.json</code> existant, puis termine immediatement (EXIT). Aucun fichier n'est modifie.
764
- </p>
765
- <p data-lang="en">
766
- Question mode loads the <code>ba-reader</code>, answers the question from the existing <code>feature.json</code>, then exits immediately (EXIT). No files are modified.
767
- </p>
768
- </div>
769
- </div>
569
+ <p data-lang="fr">
570
+ Detecte le mode d'execution (application vs module), cree le fichier feature.json initial avec metadata et configuration.
571
+ </p>
572
+ <p data-lang="en">
573
+ Detects execution mode (application vs module), creates initial feature.json with metadata and configuration.
574
+ </p>
770
575
 
771
- <p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> (status: <code>draft</code>)</p>
772
- <p data-lang="en"><strong>Output:</strong> <code>feature.json</code> (status: <code>draft</code>)</p>
773
- </div>
774
- </div>
576
+ <h4 data-lang="fr">Actions</h4>
577
+ <h4 data-lang="en">Actions</h4>
578
+ <ul>
579
+ <li data-lang="fr">Lire config de projet + detecter contexte</li>
580
+ <li data-lang="en">Read project config + detect context</li>
581
+ <li data-lang="fr">Mode application : creer master feature.json avec schema application-schema.json</li>
582
+ <li data-lang="en">Application mode: create master feature.json with application-schema.json</li>
583
+ <li data-lang="fr">Mode module : creer feature.json single avec schema feature-schema.json</li>
584
+ <li data-lang="en">Module mode: create single feature.json with feature-schema.json</li>
585
+ <li data-lang="fr">Initialiser metadata et premiere section</li>
586
+ <li data-lang="en">Initialize metadata and first section</li>
587
+ </ul>
775
588
  </section>
776
589
 
777
590
  <!-- ============================================ -->
778
- <!-- STEP 01: ANALYSE -->
591
+ <!-- STEP 01 - CADRAGE -->
779
592
  <!-- ============================================ -->
780
593
  <section id="step-01">
781
- <h2>Step 01 &mdash; Analyse</h2>
594
+ <h3>01. Cadrage</h3>
782
595
 
783
- <div class="command-card">
784
- <div class="command-header">
785
- <code class="command-name">step-01-analyse</code>
786
- <span class="badge badge-purple">Opus</span>
787
- <span class="badge badge-orange">ULTRATHINK</span>
788
- </div>
789
- <div class="command-body">
596
+ <p data-lang="fr">
597
+ Analyse applicative au niveau master : probleme, stakeholders, scope, roles, risques. Definit les <code>applicationRoles</code> (admin, manager, contributor, viewer).
598
+ </p>
599
+ <p data-lang="en">
600
+ Application-level framing: problem, stakeholders, scope, roles, risks. Defines <code>applicationRoles</code> (admin, manager, contributor, viewer).
601
+ </p>
602
+
603
+ <h4 data-lang="fr">Actions</h4>
604
+ <h4 data-lang="en">Actions</h4>
605
+ <ul>
606
+ <li data-lang="fr">AskUserQuestion (max 4 par batch) pour decouvrir besoin metier</li>
607
+ <li data-lang="en">AskUserQuestion (max 4 per batch) to discover business need</li>
608
+ <li data-lang="fr">Definir 4-tier applicationRoles : admin, manager, contributor, viewer</li>
609
+ <li data-lang="en">Define 4-tier applicationRoles: admin, manager, contributor, viewer</li>
610
+ <li data-lang="fr">Suggestions proactives depuis catalog</li>
611
+ <li data-lang="en">Proactive suggestions from catalog</li>
612
+ <li data-lang="fr">Analyse des risques (securite, performance, complexite)</li>
613
+ <li data-lang="en">Risk analysis (security, performance, complexity)</li>
614
+ <li data-lang="fr">Creer COVERAGE MATRIX (obligatoire) : trace chaque requirement a une UC/BR/FR</li>
615
+ <li data-lang="en">Create COVERAGE MATRIX (mandatory): trace each requirement to a UC/BR/FR</li>
616
+ </ul>
617
+
618
+ <div class="alert alert-warning">
619
+ <span class="alert-icon">&#9888;</span>
620
+ <div class="alert-content">
621
+ <h5 data-lang="fr">Coverage Matrix obligatoire</h5>
622
+ <h5 data-lang="en">Coverage Matrix Mandatory</h5>
790
623
  <p data-lang="fr">
791
- <strong>Mission :</strong> Decouverte fusionnee + analyse metier. Exploration du codebase, questionnaire progressif, regles metier, entites, suggestions proactives.
624
+ Chaque requirement doit avoir at least une trace cross-reference. La matrice est validee a l'etape 04 (Consolidation).
792
625
  </p>
793
626
  <p data-lang="en">
794
- <strong>Mission:</strong> Merged discovery + business analysis. Codebase exploration, progressive questionnaire, business rules, entities, proactive suggestions.
627
+ Each requirement must have at least one trace cross-reference. Matrix is validated in step 04 (Consolidation).
795
628
  </p>
796
-
797
- <h4 data-lang="fr">Detection du type de feature</h4>
798
- <h4 data-lang="en">Feature type detection</h4>
799
-
800
- <div class="table-container">
801
- <table class="reference-table">
802
- <thead>
803
- <tr>
804
- <th>Type</th>
805
- <th>
806
- <span data-lang="fr">Mots-cles</span>
807
- <span data-lang="en">Keywords</span>
808
- </th>
809
- <th>
810
- <span data-lang="fr">Categories questionnaire</span>
811
- <span data-lang="en">Questionnaire categories</span>
812
- </th>
813
- </tr>
814
- </thead>
815
- <tbody>
816
- <tr>
817
- <td><strong>Data-centric</strong></td>
818
- <td>management, CRUD, entity</td>
819
- <td>01, 02, 03, 04, 06, 11</td>
820
- </tr>
821
- <tr>
822
- <td><strong>Integration</strong></td>
823
- <td>API, sync, import/export</td>
824
- <td>01, 02, 03, 05, 06</td>
825
- </tr>
826
- <tr>
827
- <td><strong>UI-centric</strong></td>
828
- <td>screen, form, dashboard</td>
829
- <td>01, 02, 03, 06, 07</td>
830
- </tr>
831
- <tr>
832
- <td><strong>Workflow</strong></td>
833
- <td>process, validation, steps</td>
834
- <td>01, 02, 03, 06, 09</td>
835
- </tr>
836
- <tr>
837
- <td><strong>Reporting</strong></td>
838
- <td>report, export, KPI</td>
839
- <td>01, 02, 03, 04, 08</td>
840
- </tr>
841
- <tr>
842
- <td><strong>Full-module</strong></td>
843
- <td>
844
- <span data-lang="fr">(complet)</span>
845
- <span data-lang="en">(comprehensive)</span>
846
- </td>
847
- <td>
848
- <span data-lang="fr">Toutes (01-13)</span>
849
- <span data-lang="en">All (01-13)</span>
850
- </td>
851
- </tr>
852
- <tr>
853
- <td><strong>Micro</strong></td>
854
- <td><code>-m</code> flag</td>
855
- <td>01, 02, 03, 06</td>
856
- </tr>
857
- </tbody>
858
- </table>
859
- </div>
860
-
861
- <h4 data-lang="fr">Pre-recherche codebase (3 phases)</h4>
862
- <h4 data-lang="en">Codebase pre-research (3 phases)</h4>
863
-
864
- <ol>
865
- <li data-lang="fr"><strong>Phase 3a :</strong> Appels MCP (<code>analyze_extension_points</code>, <code>api_docs</code>, <code>validate_conventions</code>)</li>
866
- <li data-lang="en"><strong>Phase 3a:</strong> MCP calls (<code>analyze_extension_points</code>, <code>api_docs</code>, <code>validate_conventions</code>)</li>
867
-
868
- <li data-lang="fr"><strong>Phase 3b :</strong> Agents paralleles (entites, integrations, patterns UI) &mdash; desactive en mode <code>-e</code></li>
869
- <li data-lang="en"><strong>Phase 3b:</strong> Parallel agents (entities, integrations, UI patterns) &mdash; disabled in <code>-e</code> mode</li>
870
-
871
- <li data-lang="fr"><strong>Phase 3c :</strong> Mode economique (<code>-e</code>) &mdash; Glob/Grep directement</li>
872
- <li data-lang="en"><strong>Phase 3c:</strong> Economy mode (<code>-e</code>) &mdash; Glob/Grep directly</li>
873
- </ol>
874
-
875
- <h4 data-lang="fr">5 techniques d'elicitation</h4>
876
- <h4 data-lang="en">5 elicitation techniques</h4>
877
-
878
- <div class="table-container">
879
- <table class="reference-table">
880
- <thead>
881
- <tr>
882
- <th>#</th>
883
- <th>Technique</th>
884
- <th>
885
- <span data-lang="fr">Objectif</span>
886
- <span data-lang="en">Purpose</span>
887
- </th>
888
- </tr>
889
- </thead>
890
- <tbody>
891
- <tr>
892
- <td>1</td>
893
- <td>Solution &rarr; Problem</td>
894
- <td>
895
- <span data-lang="fr">Recadrer si l'utilisateur decrit une solution</span>
896
- <span data-lang="en">Reframe if user describes a solution</span>
897
- </td>
898
- </tr>
899
- <tr>
900
- <td>2</td>
901
- <td>5 Whys</td>
902
- <td>
903
- <span data-lang="fr">Analyse de cause racine</span>
904
- <span data-lang="en">Root cause analysis</span>
905
- </td>
906
- </tr>
907
- <tr>
908
- <td>3</td>
909
- <td>
910
- <span data-lang="fr">Scenario concret</span>
911
- <span data-lang="en">Concrete scenario</span>
912
- </td>
913
- <td>
914
- <span data-lang="fr">Extraire un exemple reel</span>
915
- <span data-lang="en">Extract a real-world example</span>
916
- </td>
917
- </tr>
918
- <tr>
919
- <td>4</td>
920
- <td>
921
- <span data-lang="fr">Test d'absence</span>
922
- <span data-lang="en">Absence test</span>
923
- </td>
924
- <td>
925
- <span data-lang="fr">Que se passe-t-il sans cette feature ?</span>
926
- <span data-lang="en">What happens without this feature?</span>
927
- </td>
928
- </tr>
929
- <tr>
930
- <td>5</td>
931
- <td>
932
- <span data-lang="fr">Sondage de completude</span>
933
- <span data-lang="en">Completeness probing</span>
934
- </td>
935
- <td>
936
- <span data-lang="fr">Challenger chaque reponse de type liste</span>
937
- <span data-lang="en">Challenge every list-type answer</span>
938
- </td>
939
- </tr>
940
- </tbody>
941
- </table>
942
- </div>
943
-
944
- <h4 data-lang="fr">Sorties produites</h4>
945
- <h4 data-lang="en">Produced outputs</h4>
946
-
947
- <ul>
948
- <li data-lang="fr"><strong>Regles metier</strong> (BR-{category}-NNN) avec priorite MUST/SHOULD/COULD</li>
949
- <li data-lang="en"><strong>Business rules</strong> (BR-{category}-NNN) with MUST/SHOULD/COULD priority</li>
950
-
951
- <li data-lang="fr"><strong>Entites</strong> (vue metier uniquement, pas de champs techniques)</li>
952
- <li data-lang="en"><strong>Entities</strong> (business view only, no technical fields)</li>
953
-
954
- <li data-lang="fr"><strong>Objectifs mesurables</strong> (OBJ-NNN)</li>
955
- <li data-lang="en"><strong>Measurable objectives</strong> (OBJ-NNN)</li>
956
-
957
- <li data-lang="fr"><strong>Flux de processus</strong> (points d'entree, decisions, actions)</li>
958
- <li data-lang="en"><strong>Process flows</strong> (entry points, decisions, actions)</li>
959
-
960
- <li data-lang="fr"><strong>Suggestions proactives</strong> depuis le catalogue de patterns</li>
961
- <li data-lang="en"><strong>Proactive suggestions</strong> from the pattern catalog</li>
962
-
963
- <li data-lang="fr"><strong>Analyse de risques</strong> (probabilite x impact)</li>
964
- <li data-lang="en"><strong>Risk analysis</strong> (probability x impact)</li>
965
- </ul>
966
-
967
- <p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>discovery</code>, <code>analysis</code>, <code>suggestions</code> (status: <code>analysed</code>)</p>
968
- <p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>discovery</code>, <code>analysis</code>, <code>suggestions</code> (status: <code>analysed</code>)</p>
969
629
  </div>
970
630
  </div>
971
631
  </section>
972
632
 
973
633
  <!-- ============================================ -->
974
- <!-- STEP 02: SPECIFY -->
634
+ <!-- STEP 02 - DECOMPOSITION -->
975
635
  <!-- ============================================ -->
976
636
  <section id="step-02">
977
- <h2>Step 02 &mdash; Specify</h2>
637
+ <h3>02. Decomposition</h3>
978
638
 
979
- <div class="command-card">
980
- <div class="command-header">
981
- <code class="command-name">step-02-specify</code>
982
- <span class="badge badge-purple">Sonnet</span>
983
- <span class="badge badge-teal">Spec</span>
984
- </div>
985
- <div class="command-body">
986
- <p data-lang="fr">
987
- <strong>Mission :</strong> Specification detaillee &mdash; cas d'usage (UC), exigences fonctionnelles (FR), acteurs, permissions, wireframes, scenarios Gherkin, validations, cycle de vie, SeedData.
988
- </p>
989
- <p data-lang="en">
990
- <strong>Mission:</strong> Detailed specification &mdash; use cases (UC), functional requirements (FR), actors, permissions, wireframes, Gherkin scenarios, validations, lifecycle, SeedData.
991
- </p>
992
-
993
- <h4 data-lang="fr">Sections specifiees</h4>
994
- <h4 data-lang="en">Specified sections</h4>
995
-
996
- <div class="table-container">
997
- <table class="reference-table">
998
- <thead>
999
- <tr>
1000
- <th>Section</th>
1001
- <th>
1002
- <span data-lang="fr">Contenu</span>
1003
- <span data-lang="en">Content</span>
1004
- </th>
1005
- <th>Format</th>
1006
- </tr>
1007
- </thead>
1008
- <tbody>
1009
- <tr>
1010
- <td>
1011
- <span data-lang="fr">Acteurs &amp; Permissions</span>
1012
- <span data-lang="en">Actors &amp; Permissions</span>
1013
- </td>
1014
- <td>
1015
- <span data-lang="fr">Matrice acteurs x ressources x operations</span>
1016
- <span data-lang="en">Actors x resources x operations matrix</span>
1017
- </td>
1018
- <td>Read, Create, Update, Delete, Approve, Delegate, Execute</td>
1019
- </tr>
1020
- <tr>
1021
- <td>
1022
- <span data-lang="fr">Cas d'usage</span>
1023
- <span data-lang="en">Use Cases</span>
1024
- </td>
1025
- <td>UC-001, UC-002...</td>
1026
- <td>
1027
- <span data-lang="fr">Lies aux BR, categories CRUD/Workflow/Reports</span>
1028
- <span data-lang="en">Linked to BRs, CRUD/Workflow/Reports categories</span>
1029
- </td>
1030
- </tr>
1031
- <tr>
1032
- <td>
1033
- <span data-lang="fr">Exigences fonctionnelles</span>
1034
- <span data-lang="en">Functional Requirements</span>
1035
- </td>
1036
- <td>FR-001, FR-002...</td>
1037
- <td>
1038
- <span data-lang="fr">Priorite MoSCoW, lies aux UC et BR</span>
1039
- <span data-lang="en">MoSCoW priority, linked to UCs and BRs</span>
1040
- </td>
1041
- </tr>
1042
- <tr>
1043
- <td>SeedData</td>
1044
- <td>
1045
- <span data-lang="fr">5 tables obligatoires par module</span>
1046
- <span data-lang="en">5 mandatory tables per module</span>
1047
- </td>
1048
- <td>Status, Priority, Category, Type, Department</td>
1049
- </tr>
1050
- <tr>
1051
- <td>Navigation</td>
1052
- <td>
1053
- <span data-lang="fr">Hierarchie 3 niveaux</span>
1054
- <span data-lang="en">3-level hierarchy</span>
1055
- </td>
1056
- <td>Level 1 &rarr; Level 2 &rarr; Level 3</td>
1057
- </tr>
1058
- <tr>
1059
- <td>Wireframes</td>
1060
- <td>
1061
- <span data-lang="fr">Ecrans cles (List, Create, Detail)</span>
1062
- <span data-lang="en">Key screens (List, Create, Detail)</span>
1063
- </td>
1064
- <td>Layout, components, actions</td>
1065
- </tr>
1066
- <tr>
1067
- <td>
1068
- <span data-lang="fr">Scenarios Gherkin</span>
1069
- <span data-lang="en">Gherkin Scenarios</span>
1070
- </td>
1071
- <td>Given / When / Then</td>
1072
- <td>
1073
- <span data-lang="fr">Happy path, alternatives, erreurs</span>
1074
- <span data-lang="en">Happy path, alternatives, errors</span>
1075
- </td>
1076
- </tr>
1077
- <tr>
1078
- <td>
1079
- <span data-lang="fr">Cycle de vie</span>
1080
- <span data-lang="en">Data Lifecycle</span>
1081
- </td>
1082
- <td>
1083
- <span data-lang="fr">Machine a etats par entite</span>
1084
- <span data-lang="en">State machine per entity</span>
1085
- </td>
1086
- <td>
1087
- <span data-lang="fr">Transitions, visibilite, permissions par etat</span>
1088
- <span data-lang="en">Transitions, visibility, permissions per state</span>
1089
- </td>
1090
- </tr>
1091
- </tbody>
1092
- </table>
1093
- </div>
639
+ <p data-lang="fr">
640
+ Decompose l'application en modules interdependants. Construit le graphe de dependances avec tri topologique. Assigne priorite et complexite.
641
+ </p>
642
+ <p data-lang="en">
643
+ Decomposes application into interdependent modules. Builds dependency graph with topological sort. Assigns priority and complexity.
644
+ </p>
1094
645
 
1095
- <div class="alert alert-warning">
1096
- <span class="alert-icon">&#9888;</span>
1097
- <div class="alert-content">
1098
- <h5 data-lang="fr">5 SeedData obligatoires</h5>
1099
- <h5 data-lang="en">5 Mandatory SeedData</h5>
1100
- <p data-lang="fr">
1101
- Sans ces 5 fichiers, le module est invisible et retourne 403 :
1102
- <code>NavigationModuleConfiguration</code>,
1103
- <code>NavigationTranslationConfiguration</code>,
1104
- <code>PermissionConfiguration</code>,
1105
- <code>Permissions.cs</code>,
1106
- <code>RolePermissionConfiguration</code>.
1107
- </p>
1108
- <p data-lang="en">
1109
- Without these 5 files, the module is invisible and returns 403:
1110
- <code>NavigationModuleConfiguration</code>,
1111
- <code>NavigationTranslationConfiguration</code>,
1112
- <code>PermissionConfiguration</code>,
1113
- <code>Permissions.cs</code>,
1114
- <code>RolePermissionConfiguration</code>.
1115
- </p>
1116
- </div>
1117
- </div>
646
+ <h4 data-lang="fr">Actions</h4>
647
+ <h4 data-lang="en">Actions</h4>
648
+ <ul>
649
+ <li data-lang="fr">Splitter l'application en modules logiques</li>
650
+ <li data-lang="en">Split application into logical modules</li>
651
+ <li data-lang="fr">Determiner dependances inter-modules</li>
652
+ <li data-lang="en">Determine inter-module dependencies</li>
653
+ <li data-lang="fr">Construire dependencyGraph (tri topologique obligatoire)</li>
654
+ <li data-lang="en">Build dependencyGraph (topological sort mandatory)</li>
655
+ <li data-lang="fr">Assigner priorite (must/should/could) et complexite estimee</li>
656
+ <li data-lang="en">Assign priority (must/should/could) and estimated complexity</li>
657
+ <li data-lang="fr">Ecrire moduleRegistry dans master feature.json</li>
658
+ <li data-lang="en">Write moduleRegistry in master feature.json</li>
659
+ </ul>
1118
660
 
1119
- <p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>specification</code> (status: <code>specified</code>)</p>
1120
- <p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>specification</code> (status: <code>specified</code>)</p>
1121
- </div>
661
+ <div class="code-block">
662
+ <button class="copy-btn">Copy</button>
663
+ <pre><code>"dependencyGraph": {
664
+ "modules": ["Checkout", "Payment", "Inventory", "Shipping"],
665
+ "edges": [
666
+ { "from": "Checkout", "to": "Payment", "type": "requires" },
667
+ { "from": "Checkout", "to": "Inventory", "type": "requires" }
668
+ ],
669
+ "topologicalOrder": ["Inventory", "Checkout", "Payment", "Shipping"],
670
+ "priorities": {
671
+ "Inventory": "must",
672
+ "Checkout": "must",
673
+ "Payment": "must",
674
+ "Shipping": "should"
675
+ }
676
+ }</code></pre>
1122
677
  </div>
1123
678
  </section>
1124
679
 
1125
680
  <!-- ============================================ -->
1126
- <!-- STEP 03: VALIDATE -->
681
+ <!-- STEP 03 - SPECIFY (PER-MODULE) -->
1127
682
  <!-- ============================================ -->
1128
683
  <section id="step-03">
1129
- <h2>Step 03 &mdash; Validate</h2>
1130
-
1131
- <div class="command-card">
1132
- <div class="command-header">
1133
- <code class="command-name">step-03-validate</code>
1134
- <span class="badge badge-green">Haiku</span>
1135
- <span class="badge badge-blue">
1136
- <span data-lang="fr">Porte qualite</span>
1137
- <span data-lang="en">Quality gate</span>
1138
- </span>
1139
- </div>
1140
- <div class="command-body">
1141
- <p data-lang="fr">
1142
- <strong>Mission :</strong> Porte qualite avant le handoff &mdash; decision binaire APPROVED / REJECTED.
1143
- </p>
1144
- <p data-lang="en">
1145
- <strong>Mission:</strong> Quality gate before handoff &mdash; binary decision APPROVED / REJECTED.
1146
- </p>
684
+ <h3>03. Specify (Per-Module Loop)</h3>
1147
685
 
1148
- <h4 data-lang="fr">Controles effectues</h4>
1149
- <h4 data-lang="en">Checks performed</h4>
1150
-
1151
- <div class="table-container">
1152
- <table class="reference-table">
1153
- <thead>
1154
- <tr>
1155
- <th>
1156
- <span data-lang="fr">Controle</span>
1157
- <span data-lang="en">Check</span>
1158
- </th>
1159
- <th>
1160
- <span data-lang="fr">Verification</span>
1161
- <span data-lang="en">Verification</span>
1162
- </th>
1163
- <th>
1164
- <span data-lang="fr">Impact si echec</span>
1165
- <span data-lang="en">Impact on failure</span>
1166
- </th>
1167
- </tr>
1168
- </thead>
1169
- <tbody>
1170
- <tr>
1171
- <td>
1172
- <span data-lang="fr">Completude</span>
1173
- <span data-lang="en">Completeness</span>
1174
- </td>
1175
- <td>
1176
- <span data-lang="fr">Toutes sections requises presentes</span>
1177
- <span data-lang="en">All required sections present</span>
1178
- </td>
1179
- <td><span class="badge badge-red">REJECT</span></td>
1180
- </tr>
1181
- <tr>
1182
- <td>
1183
- <span data-lang="fr">Coherence</span>
1184
- <span data-lang="en">Consistency</span>
1185
- </td>
1186
- <td>UC &harr; FR, FR &harr; BR, Actor &harr; Permission</td>
1187
- <td>
1188
- <span class="badge badge-red">REJECT</span> (error) /
1189
- <span class="badge badge-orange">WARN</span> (warning)
1190
- </td>
1191
- </tr>
1192
- <tr>
1193
- <td>
1194
- <span data-lang="fr">Conventions SmartStack</span>
1195
- <span data-lang="en">SmartStack conventions</span>
1196
- </td>
1197
- <td>
1198
- <span data-lang="fr">Nommage PascalCase, UC-NNN, FR-NNN, BR-NNN</span>
1199
- <span data-lang="en">Naming PascalCase, UC-NNN, FR-NNN, BR-NNN</span>
1200
- </td>
1201
- <td><span class="badge badge-red">REJECT</span></td>
1202
- </tr>
1203
- <tr>
1204
- <td>
1205
- <span data-lang="fr">Risques</span>
1206
- <span data-lang="en">Risks</span>
1207
- </td>
1208
- <td>
1209
- <span data-lang="fr">Scope creep, securite, complexite</span>
1210
- <span data-lang="en">Scope creep, security, complexity</span>
1211
- </td>
1212
- <td>
1213
- <span class="badge badge-red">REJECT</span> (critical) /
1214
- <span class="badge badge-orange">USER</span> (high)
1215
- </td>
1216
- </tr>
1217
- <tr>
1218
- <td>RBAC</td>
1219
- <td>
1220
- <span data-lang="fr">Guest &sub; User &sub; Manager &sub; Admin</span>
1221
- <span data-lang="en">Guest &sub; User &sub; Manager &sub; Admin</span>
1222
- </td>
1223
- <td><span class="badge badge-red">REJECT</span></td>
1224
- </tr>
1225
- </tbody>
1226
- </table>
1227
- </div>
686
+ <p data-lang="fr">
687
+ Specification iterative de chaque module dans l'ordre topologique. Pour chaque module : sections, entites, regles metier, UC, FR, permissions, wireframes.
688
+ </p>
689
+ <p data-lang="en">
690
+ Iterative specification of each module in topological order. For each module: sections, entities, business rules, UC, FR, permissions, wireframes.
691
+ </p>
1228
692
 
1229
- <h4 data-lang="fr">En cas de rejet</h4>
1230
- <h4 data-lang="en">On rejection</h4>
1231
-
1232
- <ul>
1233
- <li data-lang="fr"><strong>Auto-revision :</strong> corrections automatiques (orphelins, nommage, references invalides)</li>
1234
- <li data-lang="en"><strong>Auto-revise:</strong> automatic corrections (orphans, naming, invalid references)</li>
1235
-
1236
- <li data-lang="fr"><strong>Revision manuelle :</strong> retour a step-02</li>
1237
- <li data-lang="en"><strong>Manual revision:</strong> return to step-02</li>
1238
-
1239
- <li data-lang="fr"><strong>Force-approve :</strong> override avec avertissement</li>
1240
- <li data-lang="en"><strong>Force-approve:</strong> override with warning</li>
1241
- </ul>
1242
-
1243
- <div class="alert alert-info">
1244
- <span class="alert-icon">&#9889;</span>
1245
- <div class="alert-content">
1246
- <h5 data-lang="fr">Mode Micro</h5>
1247
- <h5 data-lang="en">Micro Mode</h5>
1248
- <p data-lang="fr">
1249
- En mode micro (<code>-m</code>), la validation est automatique &mdash; auto-approve sans interaction utilisateur.
1250
- </p>
1251
- <p data-lang="en">
1252
- In micro mode (<code>-m</code>), validation is automatic &mdash; auto-approve without user interaction.
1253
- </p>
1254
- </div>
1255
- </div>
693
+ <h4 data-lang="fr">Actions par module</h4>
694
+ <h4 data-lang="en">Actions per module</h4>
695
+ <ul>
696
+ <li data-lang="fr"><strong>Sections &amp; Resources</strong> (Niveaux 4-5) : Section = page React, Resource = composant</li>
697
+ <li data-lang="en"><strong>Sections &amp; Resources</strong> (Levels 4-5): Section = React page, Resource = component</li>
698
+ <li data-lang="fr"><strong>Entites</strong> : tables metier, FK, indexes</li>
699
+ <li data-lang="en"><strong>Entities</strong>: business tables, FK, indexes</li>
700
+ <li data-lang="fr"><strong>Regles metier (BR)</strong> : format id BR-{CATEGORY}-{PREFIX}-{NNN}</li>
701
+ <li data-lang="en"><strong>Business Rules (BR)</strong>: format id BR-{CATEGORY}-{PREFIX}-{NNN}</li>
702
+ <li data-lang="fr"><strong>Cas d'usage (UC)</strong> : format id UC-{PREFIX}-{NNN}</li>
703
+ <li data-lang="en"><strong>Use Cases (UC)</strong>: format id UC-{PREFIX}-{NNN}</li>
704
+ <li data-lang="fr"><strong>Exigences fonctionnelles (FR)</strong> : format id FR-{PREFIX}-{NNN}</li>
705
+ <li data-lang="en"><strong>Functional Requirements (FR)</strong>: format id FR-{PREFIX}-{NNN}</li>
706
+ <li data-lang="fr"><strong>Wireframes structurels</strong> : ASCII mockup + JSON layout</li>
707
+ <li data-lang="en"><strong>Structural Wireframes</strong>: ASCII mockup + JSON layout</li>
708
+ </ul>
709
+
710
+ <h4 data-lang="fr">Verification de couverture</h4>
711
+ <h4 data-lang="en">Coverage Verification</h4>
1256
712
 
1257
- <p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>validation</code> (status: <code>approved</code>)</p>
1258
- <p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>validation</code> (status: <code>approved</code>)</p>
1259
- </div>
1260
- </div>
713
+ <p data-lang="fr">
714
+ Chaque requirement "mustHave" de la coverageMatrix doit avoir at least 1 UC qui la reference.
715
+ </p>
716
+ <p data-lang="en">
717
+ Each "mustHave" requirement in coverageMatrix must have at least 1 UC that references it.
718
+ </p>
1261
719
  </section>
1262
720
 
1263
721
  <!-- ============================================ -->
1264
- <!-- STEP 04: HANDOFF -->
722
+ <!-- STEP 04 - CONSOLIDATION -->
1265
723
  <!-- ============================================ -->
1266
724
  <section id="step-04">
1267
- <h2>Step 04 &mdash; Handoff</h2>
1268
-
1269
- <div class="command-card">
1270
- <div class="command-header">
1271
- <code class="command-name">step-04-handoff</code>
1272
- <span class="badge badge-orange">Opus</span>
1273
- <span class="badge badge-purple">ULTRATHINK</span>
1274
- </div>
1275
- <div class="command-body">
1276
- <p data-lang="fr">
1277
- <strong>Mission :</strong> Generer le package de handoff pour le developpement &mdash; mapping fichiers, endpoints API, plan de tests, i18n, et generation du <code>prd.json</code> pour Ralph Loop.
1278
- </p>
1279
- <p data-lang="en">
1280
- <strong>Mission:</strong> Generate the development handoff package &mdash; file mapping, API endpoints, test plan, i18n, and <code>prd.json</code> generation for Ralph Loop.
1281
- </p>
1282
-
1283
- <h4 data-lang="fr">Contenu du handoff</h4>
1284
- <h4 data-lang="en">Handoff content</h4>
1285
-
1286
- <div class="table-container">
1287
- <table class="reference-table">
1288
- <thead>
1289
- <tr>
1290
- <th>Section</th>
1291
- <th>
1292
- <span data-lang="fr">Contenu</span>
1293
- <span data-lang="en">Content</span>
1294
- </th>
1295
- </tr>
1296
- </thead>
1297
- <tbody>
1298
- <tr>
1299
- <td>
1300
- <span data-lang="fr">Mapping fichiers</span>
1301
- <span data-lang="en">File mapping</span>
1302
- </td>
1303
- <td>
1304
- <span data-lang="fr">Backend (Entity, Service, Controller, Repository, Migration, Tests) + Frontend (Pages, Components, API Client, Redux)</span>
1305
- <span data-lang="en">Backend (Entity, Service, Controller, Repository, Migration, Tests) + Frontend (Pages, Components, API Client, Redux)</span>
1306
- </td>
1307
- </tr>
1308
- <tr>
1309
- <td>
1310
- <span data-lang="fr">Sequence d'implementation</span>
1311
- <span data-lang="en">Implementation sequence</span>
1312
- </td>
1313
- <td>Domain &rarr; SeedData &rarr; Application &rarr; Infrastructure &rarr; API &rarr; Frontend</td>
1314
- </tr>
1315
- <tr>
1316
- <td>
1317
- <span data-lang="fr">Endpoints API</span>
1318
- <span data-lang="en">API endpoints</span>
1319
- </td>
1320
- <td>
1321
- <span data-lang="fr">Routes RESTful pour tous les UC, parametres, corps de reponse, codes d'erreur</span>
1322
- <span data-lang="en">RESTful routes for all UCs, parameters, response bodies, error codes</span>
1323
- </td>
1324
- </tr>
1325
- <tr>
1326
- <td>
1327
- <span data-lang="fr">Plan de tests</span>
1328
- <span data-lang="en">Test plan</span>
1329
- </td>
1330
- <td>
1331
- <span data-lang="fr">Tests unitaires, integration, E2E</span>
1332
- <span data-lang="en">Unit, integration, E2E tests</span>
1333
- </td>
1334
- </tr>
1335
- <tr>
1336
- <td>i18n</td>
1337
- <td>
1338
- <span data-lang="fr">Cles de traduction (en, fr, it, de) pour menus, titres, champs, validations, messages</span>
1339
- <span data-lang="en">Translation keys (en, fr, it, de) for menus, titles, fields, validations, messages</span>
1340
- </td>
1341
- </tr>
1342
- <tr>
1343
- <td>
1344
- <span data-lang="fr">Regles metier &rarr; Code</span>
1345
- <span data-lang="en">Business rules &rarr; Code</span>
1346
- </td>
1347
- <td>
1348
- <span data-lang="fr">Points d'implementation par BR (Domain, Infrastructure, API, Frontend)</span>
1349
- <span data-lang="en">Implementation points per BR (Domain, Infrastructure, API, Frontend)</span>
1350
- </td>
1351
- </tr>
1352
- </tbody>
1353
- </table>
1354
- </div>
1355
-
1356
- <h4 data-lang="fr">Fichiers generes</h4>
1357
- <h4 data-lang="en">Generated files</h4>
725
+ <h3>04. Consolidation</h3>
1358
726
 
1359
- <div class="code-block">
1360
- <button class="copy-btn">Copy</button>
1361
- <pre><code>.ralph/
1362
- ├── prd.json # v2.0.0 schema, 15 tasks across 9 layers
1363
- └── progress.txt # Progress tracker with daily update template</code></pre>
1364
- </div>
727
+ <p data-lang="fr">
728
+ Validation cross-module (10 verifications semantiques). Coherence des permissions, entites partagees, mappage UC-FR.
729
+ </p>
730
+ <p data-lang="en">
731
+ Cross-module validation (10 semantic checks). Permission coherence, shared entities, UC-FR mapping.
732
+ </p>
1365
733
 
1366
- <h4 data-lang="fr">Choix utilisateur au final</h4>
1367
- <h4 data-lang="en">User choices at the end</h4>
1368
-
1369
- <ul>
1370
- <li><strong>Feature Full</strong> &mdash;
1371
- <span data-lang="fr">Scaffolding rapide (~70-80% couverture)</span>
1372
- <span data-lang="en">Fast scaffolding (~70-80% coverage)</span>
1373
- </li>
1374
- <li><strong>Ralph Loop</strong> &mdash;
1375
- <span data-lang="fr">Developpement iteratif (~95-100% couverture)</span>
1376
- <span data-lang="en">Iterative development (~95-100% coverage)</span>
1377
- </li>
1378
- <li><strong>End BA</strong> &mdash;
1379
- <span data-lang="fr">Developpement manuel</span>
1380
- <span data-lang="en">Manual development</span>
1381
- </li>
1382
- </ul>
1383
-
1384
- <p data-lang="fr"><strong>Sortie :</strong> <code>feature.json</code> enrichi avec <code>handoff</code> (status: <code>handed-off</code>) + <code>.ralph/prd.json</code> + <code>.ralph/progress.txt</code></p>
1385
- <p data-lang="en"><strong>Output:</strong> <code>feature.json</code> enriched with <code>handoff</code> (status: <code>handed-off</code>) + <code>.ralph/prd.json</code> + <code>.ralph/progress.txt</code></p>
1386
- </div>
1387
- </div>
734
+ <h4 data-lang="fr">10 Verifications semantiques</h4>
735
+ <h4 data-lang="en">10 Semantic Checks</h4>
736
+
737
+ <ol>
738
+ <li data-lang="fr">Permission orphans : roles utilises mais non definis dans applicationRoles</li>
739
+ <li data-lang="en">Permission orphans: roles used but not defined in applicationRoles</li>
740
+ <li data-lang="fr">UC-FR links : chaque UC doit avoir at least 1 FR</li>
741
+ <li data-lang="en">UC-FR links: each UC must have at least 1 FR</li>
742
+ <li data-lang="fr">Entity-endpoint mapping : chaque entite doit avoir CRUD endpoints</li>
743
+ <li data-lang="en">Entity-endpoint mapping: each entity must have CRUD endpoints</li>
744
+ <li data-lang="fr">BR consistency : chaque BR doit etre test dans un UC</li>
745
+ <li data-lang="en">BR consistency: each BR must be tested in a UC</li>
746
+ <li data-lang="fr">Cross-module entity refs : shared entities coherentes</li>
747
+ <li data-lang="en">Cross-module entity refs: shared entities coherent</li>
748
+ <li data-lang="fr">Permission hierarchy : no conflicts ou contraintes</li>
749
+ <li data-lang="en">Permission hierarchy: no conflicts or constraints</li>
750
+ <li data-lang="fr">E2E flows : workflows complets tracables</li>
751
+ <li data-lang="en">E2E flows: complete workflows traceable</li>
752
+ <li data-lang="fr">Coverage matrix completion : toutes requirements couverts</li>
753
+ <li data-lang="en">Coverage matrix completion: all requirements covered</li>
754
+ <li data-lang="fr">ID uniqueness : pas de collisions dans modules</li>
755
+ <li data-lang="en">ID uniqueness: no collisions across modules</li>
756
+ <li data-lang="fr">Schema validation : JSON Schema 2020-12 compliance</li>
757
+ <li data-lang="en">Schema validation: JSON Schema 2020-12 compliance</li>
758
+ </ol>
1388
759
  </section>
1389
760
 
1390
761
  <!-- ============================================ -->
1391
- <!-- QUESTIONNAIRE -->
762
+ <!-- STEP 05 - HANDOFF -->
1392
763
  <!-- ============================================ -->
1393
- <section id="questionnaire">
1394
- <h2>Questionnaire</h2>
764
+ <section id="step-05">
765
+ <h3>05. Handoff</h3>
1395
766
 
1396
767
  <p data-lang="fr">
1397
- Le questionnaire est compose de <strong>13 categories</strong> chargees progressivement selon le type de feature detecte. Le chargement intelligent reduit le nombre de questions posees tout en garantissant la couverture.
768
+ Handoff final par module avec mapping de fichiers (7 categories). Extraction programmatique du prd.json via <code>ss derive-prd</code>.
1398
769
  </p>
1399
770
  <p data-lang="en">
1400
- The questionnaire consists of <strong>13 categories</strong> loaded progressively based on the detected feature type. Smart loading reduces the number of questions asked while ensuring coverage.
771
+ Final per-module handoff with file mapping (7 categories). Programmatic extraction of prd.json via <code>ss derive-prd</code>.
1401
772
  </p>
1402
773
 
774
+ <h4 data-lang="fr">Actions</h4>
775
+ <h4 data-lang="en">Actions</h4>
776
+
1403
777
  <div class="table-container">
1404
778
  <table class="reference-table">
1405
779
  <thead>
1406
780
  <tr>
1407
- <th>#</th>
1408
781
  <th>
1409
782
  <span data-lang="fr">Categorie</span>
1410
783
  <span data-lang="en">Category</span>
1411
784
  </th>
1412
785
  <th>
1413
- <span data-lang="fr">Questions</span>
1414
- <span data-lang="en">Questions</span>
1415
- </th>
1416
- <th>
1417
- <span data-lang="fr">Charge quand</span>
1418
- <span data-lang="en">Loaded when</span>
786
+ <span data-lang="fr">Fichiers</span>
787
+ <span data-lang="en">Files</span>
1419
788
  </th>
1420
789
  </tr>
1421
790
  </thead>
1422
791
  <tbody>
1423
792
  <tr>
1424
- <td>01</td>
1425
- <td>Context</td>
1426
- <td>4</td>
1427
- <td><span class="badge badge-green">
1428
- <span data-lang="fr">Toujours</span>
1429
- <span data-lang="en">Always</span>
1430
- </span></td>
1431
- </tr>
1432
- <tr>
1433
- <td>02</td>
1434
- <td>Stakeholders</td>
1435
- <td>8</td>
1436
- <td><span class="badge badge-green">
1437
- <span data-lang="fr">Toujours</span>
1438
- <span data-lang="en">Always</span>
1439
- </span></td>
1440
- </tr>
1441
- <tr>
1442
- <td>03</td>
1443
- <td>Scope</td>
1444
- <td>8</td>
1445
- <td><span class="badge badge-green">
1446
- <span data-lang="fr">Toujours</span>
1447
- <span data-lang="en">Always</span>
1448
- </span></td>
1449
- </tr>
1450
- <tr>
1451
- <td>04</td>
1452
- <td>Data</td>
1453
- <td>8</td>
1454
- <td><span class="badge badge-blue">Data-centric / Full</span></td>
1455
- </tr>
1456
- <tr>
1457
- <td>05</td>
1458
- <td>Integrations</td>
1459
- <td>8</td>
1460
- <td><span class="badge badge-blue">Integration / Full</span></td>
1461
- </tr>
1462
- <tr>
1463
- <td>06</td>
1464
- <td>Security</td>
1465
- <td>8</td>
1466
- <td><span class="badge badge-green">
1467
- <span data-lang="fr">Toujours (minimal)</span>
1468
- <span data-lang="en">Always (minimal)</span>
1469
- </span></td>
1470
- </tr>
1471
- <tr>
1472
- <td>07</td>
1473
- <td>UI</td>
1474
- <td>8</td>
1475
- <td><span class="badge badge-blue">UI-centric / Full</span></td>
793
+ <td><strong>Domain</strong></td>
794
+ <td>entities/, aggregates/, valueObjects/</td>
1476
795
  </tr>
1477
796
  <tr>
1478
- <td>08</td>
1479
- <td>Performance</td>
1480
- <td>4</td>
1481
- <td><span class="badge badge-blue">Reporting / Critical</span></td>
797
+ <td><strong>Application</strong></td>
798
+ <td>services/, handlers/, DTOs/</td>
1482
799
  </tr>
1483
800
  <tr>
1484
- <td>09</td>
1485
- <td>Constraints</td>
1486
- <td>4</td>
1487
- <td><span class="badge badge-teal">
1488
- <span data-lang="fr">Si contraintes</span>
1489
- <span data-lang="en">If constraints</span>
1490
- </span></td>
801
+ <td><strong>Infrastructure</strong></td>
802
+ <td>repositories/, context/, migrations/</td>
1491
803
  </tr>
1492
804
  <tr>
1493
- <td>10</td>
1494
- <td>Documentation</td>
1495
- <td>4</td>
1496
- <td><span class="badge badge-teal">
1497
- <span data-lang="fr">Si doc requise</span>
1498
- <span data-lang="en">If doc required</span>
1499
- </span></td>
805
+ <td><strong>API</strong></td>
806
+ <td>controllers/, endpoints/, auth/</td>
1500
807
  </tr>
1501
808
  <tr>
1502
- <td>11</td>
1503
- <td>Data Lifecycle</td>
1504
- <td>8</td>
1505
- <td><span class="badge badge-teal">
1506
- <span data-lang="fr">Conditionnel</span>
1507
- <span data-lang="en">Conditional</span>
1508
- </span></td>
809
+ <td><strong>Frontend</strong></td>
810
+ <td>pages/, components/, hooks/</td>
1509
811
  </tr>
1510
812
  <tr>
1511
- <td>12</td>
1512
- <td>Migration</td>
1513
- <td>8</td>
1514
- <td><span class="badge badge-teal">
1515
- <span data-lang="fr">Conditionnel</span>
1516
- <span data-lang="en">Conditional</span>
1517
- </span></td>
813
+ <td><strong>SeedData</strong></td>
814
+ <td>Seeding/Data/{module}/</td>
1518
815
  </tr>
1519
816
  <tr>
1520
- <td>13</td>
1521
- <td>Cross-Module</td>
1522
- <td>8</td>
1523
- <td><span class="badge badge-teal">
1524
- <span data-lang="fr">Conditionnel</span>
1525
- <span data-lang="en">Conditional</span>
1526
- </span></td>
817
+ <td><strong>Tests</strong></td>
818
+ <td>Tests/{module}/, Unit/, Integration/</td>
1527
819
  </tr>
1528
820
  </tbody>
1529
821
  </table>
1530
822
  </div>
1531
823
 
1532
- <div class="alert alert-info">
1533
- <span class="alert-icon">&#128172;</span>
1534
- <div class="alert-content">
1535
- <h5 data-lang="fr">Protocole d'elicitation</h5>
1536
- <h5 data-lang="en">Elicitation protocol</h5>
1537
- <p data-lang="fr">
1538
- Les questions sont posees par lots de <strong>max 4</strong> via <code>AskUserQuestion</code>. Apres chaque categorie, un resume est affiche pour validation. Les reponses vagues declenchent des questions de suivi ciblees.
1539
- </p>
1540
- <p data-lang="en">
1541
- Questions are asked in batches of <strong>max 4</strong> via <code>AskUserQuestion</code>. After each category, a summary is displayed for validation. Vague answers trigger targeted follow-up questions.
1542
- </p>
1543
- </div>
1544
- </div>
824
+ <h4 data-lang="fr">prd.json (extraction programmatique)</h4>
825
+ <h4 data-lang="en">prd.json (Programmatic Extraction)</h4>
1545
826
 
1546
- <div class="alert alert-warning">
1547
- <span class="alert-icon">&#9889;</span>
1548
- <div class="alert-content">
1549
- <h5 data-lang="fr">Mode Micro</h5>
1550
- <h5 data-lang="en">Micro Mode</h5>
1551
- <p data-lang="fr">
1552
- En mode micro (<code>-m</code>), seule la categorie 01 (Context) est chargee avec <strong>4 questions maximum</strong>.
1553
- </p>
1554
- <p data-lang="en">
1555
- In micro mode (<code>-m</code>), only category 01 (Context) is loaded with <strong>4 questions maximum</strong>.
1556
- </p>
1557
- </div>
827
+ <p data-lang="fr">
828
+ Le fichier <code>.ralph/prd.json</code> est genere par <code>ss derive-prd feature.json</code> (NOT par l'LLM). Il contient le resume technique pour implementation.
829
+ </p>
830
+ <p data-lang="en">
831
+ The <code>.ralph/prd.json</code> file is generated by <code>ss derive-prd feature.json</code> (NOT by LLM). It contains technical summary for implementation.
832
+ </p>
833
+
834
+ <div class="code-block">
835
+ <button class="copy-btn">Copy</button>
836
+ <pre><code>{
837
+ "application": "OrderManagement",
838
+ "version": "1.0",
839
+ "modules": [
840
+ {
841
+ "name": "Checkout",
842
+ "priority": "must",
843
+ "entities": ["Order", "OrderLine", "Customer"],
844
+ "useCases": ["UC-CHK-001", "UC-CHK-002"],
845
+ "apiEndpoints": [
846
+ "POST /api/orders",
847
+ "GET /api/orders/{id}",
848
+ "PUT /api/orders/{id}/confirm"
849
+ ],
850
+ "permissions": ["viewer", "contributor"]
851
+ }
852
+ ]
853
+ }</code></pre>
1558
854
  </div>
855
+
856
+ <h4 data-lang="fr">Verification post-handoff</h4>
857
+ <h4 data-lang="en">Post-Handoff Verification</h4>
858
+
859
+ <ul>
860
+ <li data-lang="fr">Valider ba-reader.readApplicationContext() = tous modules presents</li>
861
+ <li data-lang="en">Validate ba-reader.readApplicationContext() = all modules present</li>
862
+ <li data-lang="fr">Verifier ba-writer.enrichModuleHandoff() completude</li>
863
+ <li data-lang="en">Verify ba-writer.enrichModuleHandoff() completeness</li>
864
+ <li data-lang="fr">Extraction prd.json via <code>ss derive-prd</code></li>
865
+ <li data-lang="en">Extract prd.json via <code>ss derive-prd</code></li>
866
+ <li data-lang="fr">Generer progress.txt tracker</li>
867
+ <li data-lang="en">Generate progress.txt tracker</li>
868
+ </ul>
1559
869
  </section>
1560
870
 
1561
871
  <!-- ============================================ -->
1562
- <!-- VERSIONING -->
872
+ <!-- SCHEMAS -->
1563
873
  <!-- ============================================ -->
1564
- <section id="versioning">
1565
- <h2>Versioning</h2>
874
+ <section id="schemas">
875
+ <h2>Schemas</h2>
1566
876
 
1567
877
  <p data-lang="fr">
1568
- Chaque feature suit un systeme de versioning semantique. Les versions sont stockees dans des dossiers separes pour permettre le suivi de l'evolution.
878
+ Deux schemas JSON Schema 2020-12 : <strong>application-schema.json</strong> (master) et <strong>feature-schema.json</strong> (per-module).
1569
879
  </p>
1570
880
  <p data-lang="en">
1571
- Each feature follows a semantic versioning system. Versions are stored in separate folders to track evolution.
881
+ Two JSON Schema 2020-12 files: <strong>application-schema.json</strong> (master) and <strong>feature-schema.json</strong> (per-module).
1572
882
  </p>
1573
883
 
1574
- <div class="table-container">
1575
- <table class="reference-table">
1576
- <thead>
1577
- <tr>
1578
- <th>
1579
- <span data-lang="fr">Cas</span>
1580
- <span data-lang="en">Case</span>
1581
- </th>
1582
- <th>Version</th>
1583
- <th>
1584
- <span data-lang="fr">Declencheur</span>
1585
- <span data-lang="en">Trigger</span>
1586
- </th>
1587
- </tr>
1588
- </thead>
1589
- <tbody>
1590
- <tr>
1591
- <td>
1592
- <span data-lang="fr">Nouvelle feature</span>
1593
- <span data-lang="en">New feature</span>
1594
- </td>
1595
- <td><code>v1.0</code></td>
1596
- <td><code>/business-analyse Order module</code></td>
1597
- </tr>
1598
- <tr>
1599
- <td>
1600
- <span data-lang="fr">Refactoring mineur</span>
1601
- <span data-lang="en">Minor refactoring</span>
1602
- </td>
1603
- <td><code>v1.1</code>, <code>v1.2</code>...</td>
1604
- <td><code>/business-analyse -r FEAT-001 "Add PDF export"</code></td>
1605
- </tr>
1606
- <tr>
1607
- <td>
1608
- <span data-lang="fr">Revision majeure</span>
1609
- <span data-lang="en">Major revision</span>
1610
- </td>
1611
- <td><code>v2.0</code></td>
1612
- <td>
1613
- <span data-lang="fr">Changement d'architecture ou de perimetre</span>
1614
- <span data-lang="en">Architecture or scope change</span>
1615
- </td>
1616
- </tr>
1617
- </tbody>
1618
- </table>
1619
- </div>
1620
-
1621
- <div class="code-block">
1622
- <button class="copy-btn">Copy</button>
1623
- <pre><code>docs/business/{app}/{module}/business-analyse/
1624
- ├── v1.0/feature.json # Initial version
1625
- ├── v1.1/feature.json # Delta: "Add PDF export" (previousVersion: v1.0)
1626
- ├── v1.2/feature.json # Delta: "Add bulk import" (previousVersion: v1.1)
1627
- └── v2.0/feature.json # Major revision</code></pre>
1628
- </div>
884
+ <h4><code>application-schema.json</code> (Master Level)</h4>
885
+ <ul>
886
+ <li data-lang="fr">Metadata : titre, contexte, version</li>
887
+ <li data-lang="en">Metadata: title, context, version</li>
888
+ <li data-lang="fr">Cadrage : problem, stakeholders, scope, applicationRoles, risks</li>
889
+ <li data-lang="en">Framing: problem, stakeholders, scope, applicationRoles, risks</li>
890
+ <li data-lang="fr">moduleRegistry[] : list des modules avec dependencies</li>
891
+ <li data-lang="en">moduleRegistry[]: list of modules with dependencies</li>
892
+ <li data-lang="fr">dependencyGraph : edges, topologicalOrder, priorities</li>
893
+ <li data-lang="en">dependencyGraph: edges, topologicalOrder, priorities</li>
894
+ <li data-lang="fr">coverageMatrix : mustHave/shouldHave/couldHave requirements</li>
895
+ <li data-lang="en">coverageMatrix: mustHave/shouldHave/couldHave requirements</li>
896
+ </ul>
897
+
898
+ <h4><code>feature-schema.json</code> (Per-Module Level)</h4>
899
+ <ul>
900
+ <li data-lang="fr">Metadata : module, version, featureType</li>
901
+ <li data-lang="en">Metadata: module, version, featureType</li>
902
+ <li data-lang="fr">Sections &amp; Resources : 5-level navigation</li>
903
+ <li data-lang="en">Sections &amp; Resources: 5-level navigation</li>
904
+ <li data-lang="fr">Entities : domaine, attributs, constraints</li>
905
+ <li data-lang="en">Entities: domain, attributes, constraints</li>
906
+ <li data-lang="fr">Business Rules (BR-{CAT}-{PREFIX}-{NNN}) : validations metier</li>
907
+ <li data-lang="en">Business Rules (BR-{CAT}-{PREFIX}-{NNN}): business validations</li>
908
+ <li data-lang="fr">Use Cases (UC-{PREFIX}-{NNN}) : workflows, actors, flows</li>
909
+ <li data-lang="en">Use Cases (UC-{PREFIX}-{NNN}): workflows, actors, flows</li>
910
+ <li data-lang="fr">Functional Requirements (FR-{PREFIX}-{NNN}) : exigences techniques</li>
911
+ <li data-lang="en">Functional Requirements (FR-{PREFIX}-{NNN}): technical requirements</li>
912
+ <li data-lang="fr">Wireframes : ASCII + JSON layout</li>
913
+ <li data-lang="en">Wireframes: ASCII + JSON layout</li>
914
+ <li data-lang="fr">Permissions : roles et access control</li>
915
+ <li data-lang="en">Permissions: roles and access control</li>
916
+ <li data-lang="fr">Handoff : mapping de fichiers, API endpoints, tests</li>
917
+ <li data-lang="en">Handoff: file mapping, API endpoints, tests</li>
918
+ </ul>
919
+
920
+ <h4 data-lang="fr">Module-Prefixed IDs</h4>
921
+ <h4 data-lang="en">Module-Prefixed IDs</h4>
1629
922
 
1630
923
  <p data-lang="fr">
1631
- En mode refactoring (<code>-r</code>), le <code>feature.json</code> de la version delta contient un champ <code>previousVersion</code> et un <code>changeReason</code> pour tracer l'evolution.
924
+ Chaque ID inclut le prefixe du module pour eviter les collisions cross-module.
1632
925
  </p>
1633
926
  <p data-lang="en">
1634
- In refactoring mode (<code>-r</code>), the delta version's <code>feature.json</code> contains a <code>previousVersion</code> and <code>changeReason</code> field to track evolution.
927
+ Each ID includes module prefix to avoid cross-module collisions.
1635
928
  </p>
929
+
930
+ <div class="code-block">
931
+ <button class="copy-btn">Copy</button>
932
+ <pre><code>UC-{PREFIX}-{NNN} # UseCase
933
+ BR-{CAT}-{PREFIX}-{NNN} # BusinessRule
934
+ FR-{PREFIX}-{NNN} # FunctionalRequirement
935
+
936
+ Exemple (module "checkout"):
937
+ UC-CHK-001 # Add item to cart
938
+ BR-VAL-CHK-001 # Order total must be positive
939
+ FR-CHK-001 # Shopping cart API</code></pre>
940
+ </div>
1636
941
  </section>
1637
942
 
1638
943
  <!-- ============================================ -->
1639
944
  <!-- AGENTS -->
1640
945
  <!-- ============================================ -->
1641
946
  <section id="agents">
1642
- <h2>Agents</h2>
947
+ <h2>Agents (ba-reader / ba-writer)</h2>
1643
948
 
949
+ <h4><code>ba-reader</code></h4>
1644
950
  <p data-lang="fr">
1645
- Le skill Business Analyse utilise des agents specialises pour la gestion du <code>feature.json</code>.
951
+ Agent de lecture specialise dans la decouverte et validation. Toutes operations sont read-only et deterministes.
1646
952
  </p>
1647
953
  <p data-lang="en">
1648
- The Business Analyse skill uses specialized agents for <code>feature.json</code> management.
954
+ Read-only agent specialized in discovery and validation. All operations are read-only and deterministic.
1649
955
  </p>
1650
956
 
1651
- <div class="table-container">
1652
- <table class="reference-table">
1653
- <thead>
1654
- <tr>
1655
- <th>Agent</th>
1656
- <th>
1657
- <span data-lang="fr">Role</span>
1658
- <span data-lang="en">Role</span>
1659
- </th>
1660
- <th>
1661
- <span data-lang="fr">Methodes principales</span>
1662
- <span data-lang="en">Key methods</span>
1663
- </th>
1664
- <th>
1665
- <span data-lang="fr">Utilise dans</span>
1666
- <span data-lang="en">Used in</span>
1667
- </th>
1668
- </tr>
1669
- </thead>
1670
- <tbody>
1671
- <tr>
1672
- <td><strong>ba-writer</strong></td>
1673
- <td>
1674
- <span data-lang="fr">Ecrit et met a jour le feature.json</span>
1675
- <span data-lang="en">Writes and updates feature.json</span>
1676
- </td>
1677
- <td><code>createFeature</code>, <code>enrichSection</code>, <code>updateStatus</code>, <code>createVersion</code></td>
1678
- <td>
1679
- <span data-lang="fr">Toutes les etapes (00-04)</span>
1680
- <span data-lang="en">All steps (00-04)</span>
1681
- </td>
1682
- </tr>
1683
- <tr>
1684
- <td><strong>ba-reader</strong></td>
1685
- <td>
1686
- <span data-lang="fr">Lit le feature.json pour le contexte</span>
1687
- <span data-lang="en">Reads feature.json for context</span>
1688
- </td>
1689
- <td><code>findFeature</code>, <code>readSection</code>, <code>answerQuestion</code>, <code>getSummaryForSkill</code></td>
1690
- <td>
1691
- <span data-lang="fr">Toutes les etapes (00-04) + mode -q</span>
1692
- <span data-lang="en">All steps (00-04) + -q mode</span>
1693
- </td>
1694
- </tr>
1695
- </tbody>
1696
- </table>
1697
- </div>
957
+ <ul>
958
+ <li><code>findFeature(featureId)</code> - Localiser feature par ID</li>
959
+ <li><code>readSection(moduleId, sectionPath)</code> - Lire section specifique</li>
960
+ <li><code>readApplicationContext()</code> - Charger contexte complet application</li>
961
+ <li><code>listAllModuleIds()</code> - Lister tous modules (ID collision detection)</li>
962
+ <li><code>answerQuestion(question)</code> - Repondre a question sur feature</li>
963
+ </ul>
1698
964
 
1699
- <div class="alert alert-info">
1700
- <span class="alert-icon">&#129302;</span>
965
+ <h4><code>ba-writer</code></h4>
966
+ <p data-lang="fr">
967
+ Agent d'ecriture avec validation schema obligatoire et verification post-ecriture.
968
+ </p>
969
+ <p data-lang="en">
970
+ Write agent with mandatory schema validation and post-write verification.
971
+ </p>
972
+
973
+ <ul>
974
+ <li><code>create(spec)</code> - Creer nouveau feature.json (validate schema)</li>
975
+ <li><code>createApplicationFeature(appSpec)</code> - Creer master application feature</li>
976
+ <li><code>enrichSection(moduleId, sectionPath, content)</code> - Enrichir section existante</li>
977
+ <li><code>enrichModuleHandoff(moduleId, handoffData)</code> - Enrichir handoff (verify completeness)</li>
978
+ <li><code>updateStatus(featureId, newStatus)</code> - Mettre a jour statut step</li>
979
+ <li><code>enrichModuleRegistry(moduleRegistry)</code> - Enrichir registry modules</li>
980
+ <li><code>advanceModuleLoop(nextModuleId)</code> - Avancer au prochain module</li>
981
+ </ul>
982
+
983
+ <div class="alert alert-warning">
984
+ <span class="alert-icon">&#9888;</span>
1701
985
  <div class="alert-content">
1702
- <h5 data-lang="fr">Mode economique</h5>
1703
- <h5 data-lang="en">Economy mode</h5>
986
+ <h5 data-lang="fr">Validation schema OBLIGATOIRE</h5>
987
+ <h5 data-lang="en">Schema Validation MANDATORY</h5>
1704
988
  <p data-lang="fr">
1705
- En mode <code>-e</code>, les sous-agents d'exploration (recherche codebase) sont desactives. Seuls <code>ba-writer</code> et <code>ba-reader</code> restent actifs. Les recherches utilisent directement Glob/Grep.
989
+ Chaque write doit passer par JSON Schema 2020-12 validation AVANT persistance. Les erreurs sont rejetes avec messages clairs.
1706
990
  </p>
1707
991
  <p data-lang="en">
1708
- In <code>-e</code> mode, exploration subagents (codebase search) are disabled. Only <code>ba-writer</code> and <code>ba-reader</code> remain active. Searches use Glob/Grep directly.
992
+ Each write must pass JSON Schema 2020-12 validation BEFORE persistence. Errors are rejected with clear messages.
1709
993
  </p>
1710
994
  </div>
1711
995
  </div>
1712
996
  </section>
1713
997
 
1714
998
  <!-- ============================================ -->
1715
- <!-- OUTPUT -->
999
+ <!-- IDS & CROSS-REFERENCES -->
1716
1000
  <!-- ============================================ -->
1717
- <section id="output">
1001
+ <section id="ids-refs">
1718
1002
  <h2>
1719
- <span data-lang="fr">Sorties</span>
1720
- <span data-lang="en">Output</span>
1003
+ <span data-lang="fr">IDs &amp; References croisees</span>
1004
+ <span data-lang="en">IDs &amp; Cross-References</span>
1721
1005
  </h2>
1722
1006
 
1723
- <h4 data-lang="fr">Fichiers produits</h4>
1724
- <h4 data-lang="en">Produced files</h4>
1007
+ <h4 data-lang="fr">Patterns de nommage</h4>
1008
+ <h4 data-lang="en">Naming Patterns</h4>
1725
1009
 
1726
- <div class="table-container">
1727
- <table class="reference-table">
1728
- <thead>
1729
- <tr>
1730
- <th>
1731
- <span data-lang="fr">Fichier</span>
1732
- <span data-lang="en">File</span>
1733
- </th>
1734
- <th>
1735
- <span data-lang="fr">Emplacement</span>
1736
- <span data-lang="en">Location</span>
1737
- </th>
1738
- <th>
1739
- <span data-lang="fr">Genere par</span>
1740
- <span data-lang="en">Generated by</span>
1741
- </th>
1742
- <th>
1743
- <span data-lang="fr">Contenu</span>
1744
- <span data-lang="en">Content</span>
1745
- </th>
1746
- </tr>
1747
- </thead>
1748
- <tbody>
1749
- <tr>
1750
- <td><strong>feature.json</strong></td>
1751
- <td><code>docs/business/{app}/{module}/business-analyse/v{X.Y}/</code></td>
1752
- <td>
1753
- <span data-lang="fr">Toutes les etapes</span>
1754
- <span data-lang="en">All steps</span>
1755
- </td>
1756
- <td>
1757
- <span data-lang="fr">Source unique de verite &mdash; enrichi progressivement</span>
1758
- <span data-lang="en">Single source of truth &mdash; progressively enriched</span>
1759
- </td>
1760
- </tr>
1761
- <tr>
1762
- <td><strong>prd.json</strong></td>
1763
- <td><code>.ralph/prd.json</code></td>
1764
- <td>Step 04</td>
1765
- <td>
1766
- <span data-lang="fr">Decomposition en 15 taches sur 9 couches (schema v2.0.0)</span>
1767
- <span data-lang="en">Breakdown into 15 tasks across 9 layers (v2.0.0 schema)</span>
1768
- </td>
1769
- </tr>
1770
- <tr>
1771
- <td><strong>progress.txt</strong></td>
1772
- <td><code>.ralph/progress.txt</code></td>
1773
- <td>Step 04</td>
1774
- <td>
1775
- <span data-lang="fr">Suivi de progression avec template de mise a jour quotidienne</span>
1776
- <span data-lang="en">Progress tracker with daily update template</span>
1777
- </td>
1778
- </tr>
1779
- </tbody>
1780
- </table>
1010
+ <div class="code-block">
1011
+ <button class="copy-btn">Copy</button>
1012
+ <pre><code>Module Prefix Format:
1013
+ - 3-4 characters (e.g., CHK, PAY, INV)
1014
+ - Derived from module name
1015
+ - Stored in moduleRegistry
1016
+
1017
+ ID Formats:
1018
+ UC-{PREFIX}-{NNN} # Use Case (sequential)
1019
+ BR-{CAT}-{PREFIX}-{NNN} # Business Rule with category
1020
+ FR-{PREFIX}-{NNN} # Functional Requirement
1021
+
1022
+ Example:
1023
+ Module: "Checkout"
1024
+ Prefix: "CHK"
1025
+ UC-CHK-001: Add item to cart
1026
+ BR-VAL-CHK-001: Order total validation
1027
+ FR-CHK-001: Cart API endpoint</code></pre>
1781
1028
  </div>
1782
1029
 
1783
- <h4 data-lang="fr">Templates et schemas</h4>
1784
- <h4 data-lang="en">Templates and schemas</h4>
1030
+ <h4 data-lang="fr">Detection des collisions</h4>
1031
+ <h4 data-lang="en">Collision Detection</h4>
1785
1032
 
1786
- <div class="table-container">
1787
- <table class="reference-table">
1788
- <thead>
1789
- <tr>
1790
- <th>
1791
- <span data-lang="fr">Fichier</span>
1792
- <span data-lang="en">File</span>
1793
- </th>
1794
- <th>
1795
- <span data-lang="fr">Objectif</span>
1796
- <span data-lang="en">Purpose</span>
1797
- </th>
1798
- <th>
1799
- <span data-lang="fr">Utilise dans</span>
1800
- <span data-lang="en">Used in</span>
1801
- </th>
1802
- </tr>
1803
- </thead>
1804
- <tbody>
1805
- <tr>
1806
- <td><code>schemas/feature-schema.json</code></td>
1807
- <td>
1808
- <span data-lang="fr">Schema de validation JSON (JSON Schema 2020-12)</span>
1809
- <span data-lang="en">JSON validation schema (JSON Schema 2020-12)</span>
1810
- </td>
1811
- <td>
1812
- <span data-lang="fr">Toutes les etapes</span>
1813
- <span data-lang="en">All steps</span>
1814
- </td>
1815
- </tr>
1816
- <tr>
1817
- <td><code>templates/tpl-frd.md</code></td>
1818
- <td>
1819
- <span data-lang="fr">Template de specification fonctionnelle (reference)</span>
1820
- <span data-lang="en">Functional requirements document template (reference)</span>
1821
- </td>
1822
- <td>Step 02</td>
1823
- </tr>
1824
- <tr>
1825
- <td><code>templates/tpl-handoff.md</code></td>
1826
- <td>
1827
- <span data-lang="fr">Template de handoff developpement (reference)</span>
1828
- <span data-lang="en">Development handoff template (reference)</span>
1829
- </td>
1830
- <td>Step 04</td>
1831
- </tr>
1832
- <tr>
1833
- <td><code>patterns/suggestion-catalog.md</code></td>
1834
- <td>
1835
- <span data-lang="fr">Catalogue de suggestions proactives</span>
1836
- <span data-lang="en">Proactive suggestions catalog</span>
1837
- </td>
1838
- <td>Step 01</td>
1839
- </tr>
1840
- <tr>
1841
- <td><code>questionnaire/*.md</code></td>
1842
- <td>
1843
- <span data-lang="fr">13 categories de questionnaire</span>
1844
- <span data-lang="en">13 questionnaire categories</span>
1845
- </td>
1846
- <td>Step 01</td>
1847
- </tr>
1848
- </tbody>
1849
- </table>
1850
- </div>
1033
+ <p data-lang="fr">
1034
+ L'agent <code>ba-reader.listAllModuleIds()</code> detecte les collisions cross-module et rapporte les IDs dupliques.
1035
+ </p>
1036
+ <p data-lang="en">
1037
+ The <code>ba-reader.listAllModuleIds()</code> agent detects cross-module collisions and reports duplicate IDs.
1038
+ </p>
1039
+
1040
+ <h4 data-lang="fr">Regles de validation des references croisees</h4>
1041
+ <h4 data-lang="en">Cross-Reference Validation Rules</h4>
1042
+
1043
+ <ul>
1044
+ <li data-lang="fr">Chaque UC doit referencer at least 1 FR</li>
1045
+ <li data-lang="en">Each UC must reference at least 1 FR</li>
1046
+ <li data-lang="fr">Chaque BR doit etre teste dans at least 1 UC</li>
1047
+ <li data-lang="en">Each BR must be tested in at least 1 UC</li>
1048
+ <li data-lang="fr">Chaque requirement (mustHave) doit etre couverte par coverage matrix</li>
1049
+ <li data-lang="en">Each requirement (mustHave) must be covered by coverage matrix</li>
1050
+ <li data-lang="fr">Les references croisees (xref) doivent utiliser module prefix correct</li>
1051
+ <li data-lang="en">Cross-references (xref) must use correct module prefix</li>
1052
+ </ul>
1851
1053
  </section>
1852
1054
 
1853
1055
  <!-- ============================================ -->
1854
- <!-- EXAMPLE -->
1056
+ <!-- OUTPUT -->
1855
1057
  <!-- ============================================ -->
1856
- <section id="example">
1058
+ <section id="output">
1857
1059
  <h2>
1858
- <span data-lang="fr">Exemple complet</span>
1859
- <span data-lang="en">Complete example</span>
1060
+ <span data-lang="fr">Sorties</span>
1061
+ <span data-lang="en">Output</span>
1860
1062
  </h2>
1861
1063
 
1862
- <h4 data-lang="fr">Nouvelle feature : Module Commandes</h4>
1863
- <h4 data-lang="en">New feature: Orders Module</h4>
1064
+ <h4 data-lang="fr">Structure des fichiers generes</h4>
1065
+ <h4 data-lang="en">Generated Files Structure</h4>
1864
1066
 
1865
1067
  <div class="code-block">
1866
1068
  <button class="copy-btn">Copy</button>
1867
- <pre><code>/business-analyse Order management module</code></pre>
1868
- </div>
1069
+ <pre><code>docs/business/{app}/business-analyse/
1070
+ ├── v1.0/
1071
+ │ ├── feature.json ← Master application spec
1072
+ │ └── README.md ← Overview
1073
+ ├── checkout/v1.0/
1074
+ │ ├── feature.json ← Module spec
1075
+ │ └── README.md
1076
+ ├── payment/v1.0/
1077
+ │ ├── feature.json
1078
+ │ └── README.md
1079
+ └── shipping/v1.0/
1080
+ ├── feature.json
1081
+ └── README.md
1869
1082
 
1870
- <div class="steps-list">
1871
- <div class="step-item">
1872
- <div class="step-number">00</div>
1873
- <div class="step-content">
1874
- <strong>Init</strong> &mdash;
1875
- <span data-lang="fr">Parse flags, cree <code>FEAT-001</code>, initialise <code>feature.json</code> (v1.0, status: draft)</span>
1876
- <span data-lang="en">Parse flags, create <code>FEAT-001</code>, initialize <code>feature.json</code> (v1.0, status: draft)</span>
1877
- </div>
1878
- </div>
1879
- <div class="step-item">
1880
- <div class="step-number">01</div>
1881
- <div class="step-content">
1882
- <strong>Analyse</strong> &mdash;
1883
- <span data-lang="fr">Type detecte: <code>data-centric</code>. Questionnaire categories 01, 02, 03, 04, 06, 11. Extraction de 12 regles metier, 3 entites, 2 risques. 4 suggestions proactives presentees.</span>
1884
- <span data-lang="en">Type detected: <code>data-centric</code>. Questionnaire categories 01, 02, 03, 04, 06, 11. Extraction of 12 business rules, 3 entities, 2 risks. 4 proactive suggestions presented.</span>
1885
- </div>
1886
- </div>
1887
- <div class="step-item">
1888
- <div class="step-number">02</div>
1889
- <div class="step-content">
1890
- <strong>Specify</strong> &mdash;
1891
- <span data-lang="fr">8 UC, 15 FR, matrice permissions 4 roles, 5 SeedData, wireframes List/Create/Detail, 12 scenarios Gherkin, machine a etats (Draft &rarr; Confirmed &rarr; Shipped &rarr; Delivered).</span>
1892
- <span data-lang="en">8 UCs, 15 FRs, 4-role permission matrix, 5 SeedData, List/Create/Detail wireframes, 12 Gherkin scenarios, state machine (Draft &rarr; Confirmed &rarr; Shipped &rarr; Delivered).</span>
1893
- </div>
1894
- </div>
1895
- <div class="step-item">
1896
- <div class="step-number">03</div>
1897
- <div class="step-content">
1898
- <strong>Validate</strong> &mdash;
1899
- <span data-lang="fr">Completude OK, coherence OK (8 UC &harr; 15 FR &harr; 12 BR), conventions OK. Decision: <strong>APPROVED</strong>.</span>
1900
- <span data-lang="en">Completeness OK, consistency OK (8 UCs &harr; 15 FRs &harr; 12 BRs), conventions OK. Decision: <strong>APPROVED</strong>.</span>
1901
- </div>
1902
- </div>
1903
- <div class="step-item">
1904
- <div class="step-number">04</div>
1905
- <div class="step-content">
1906
- <strong>Handoff</strong> &mdash;
1907
- <span data-lang="fr">Mapping de 25 fichiers (backend + frontend), 8 endpoints API, plan de tests (18 unit, 8 integration, 4 E2E), cles i18n (4 langues). Generation de <code>prd.json</code> (15 taches, ~28h).</span>
1908
- <span data-lang="en">25 files mapped (backend + frontend), 8 API endpoints, test plan (18 unit, 8 integration, 4 E2E), i18n keys (4 languages). Generated <code>prd.json</code> (15 tasks, ~28h).</span>
1909
- </div>
1910
- </div>
1083
+ .ralph/
1084
+ ├── prd.json ← Extracted (programmatic)
1085
+ ├── progress.txt ← Tracking
1086
+ └── per-module/
1087
+ ├── checkout-handoff.json
1088
+ ├── payment-handoff.json
1089
+ └── shipping-handoff.json</code></pre>
1911
1090
  </div>
1912
1091
 
1913
- <h4 data-lang="fr">Resultat final</h4>
1914
- <h4 data-lang="en">Final result</h4>
1092
+ <h4>Master <code>feature.json</code></h4>
1093
+ <div class="code-block">
1094
+ <button class="copy-btn">Copy</button>
1095
+ <pre><code>{
1096
+ "id": "APP-ORDERS-001",
1097
+ "version": "1.0.0",
1098
+ "application": "OrderManagement",
1099
+ "status": "handed-off",
1100
+ "metadata": {
1101
+ "context": "ecommerce",
1102
+ "title": "Order Management System",
1103
+ "createdAt": "2026-02-04",
1104
+ "language": "fr"
1105
+ },
1106
+ "cadrage": {
1107
+ "problem": "...",
1108
+ "stakeholders": [...],
1109
+ "scope": {...},
1110
+ "applicationRoles": ["admin", "manager", "contributor", "viewer"]
1111
+ },
1112
+ "coverageMatrix": {...},
1113
+ "moduleRegistry": [...],
1114
+ "dependencyGraph": {...},
1115
+ "changelog": [...]
1116
+ }</code></pre>
1117
+ </div>
1915
1118
 
1119
+ <h4>Per-Module <code>feature.json</code></h4>
1916
1120
  <div class="code-block">
1917
1121
  <button class="copy-btn">Copy</button>
1918
- <pre><code>docs/business/MyApp/Orders/business-analyse/v1.0/feature.json # Complete BA
1919
- .ralph/prd.json # 15 tasks for Ralph Loop
1920
- .ralph/progress.txt # Progress tracker</code></pre>
1122
+ <pre><code>{
1123
+ "id": "FEAT-CHK-001",
1124
+ "module": "Checkout",
1125
+ "version": "1.0.0",
1126
+ "status": "handed-off",
1127
+ "metadata": {...},
1128
+ "specification": {
1129
+ "sections": [...],
1130
+ "entities": [...],
1131
+ "businessRules": [...],
1132
+ "useCases": [...],
1133
+ "requirements": [...]
1134
+ },
1135
+ "validation": {...},
1136
+ "handoff": {
1137
+ "fileMapping": {...},
1138
+ "apiEndpoints": [...],
1139
+ "wireframes": [...],
1140
+ "testPlan": {...}
1141
+ }
1142
+ }</code></pre>
1921
1143
  </div>
1922
1144
 
1923
- <h4 data-lang="fr">Ensuite : Refactoring</h4>
1924
- <h4 data-lang="en">Next: Refactoring</h4>
1145
+ <h4><code>prd.json</code> (Programmatic)</h4>
1146
+ <p data-lang="fr">
1147
+ Genere par <code>ss derive-prd feature.json</code>, contient resume technique pour implementation.
1148
+ </p>
1149
+ <p data-lang="en">
1150
+ Generated by <code>ss derive-prd feature.json</code>, contains technical summary for implementation.
1151
+ </p>
1925
1152
 
1926
1153
  <div class="code-block">
1927
1154
  <button class="copy-btn">Copy</button>
1928
- <pre><code># Ajouter l'export PDF (cree v1.1)
1929
- /business-analyse -r FEAT-001 "Add PDF export functionality"
1930
-
1931
- # Resultat :
1932
- docs/business/MyApp/Orders/business-analyse/v1.1/feature.json # Delta version
1933
- # previousVersion: "1.0", changeReason: "Add PDF export functionality"</code></pre>
1155
+ <pre><code>{
1156
+ "application": "OrderManagement",
1157
+ "version": "1.0.0",
1158
+ "generatedAt": "2026-02-04",
1159
+ "modules": [
1160
+ {
1161
+ "name": "Checkout",
1162
+ "priority": "must",
1163
+ "complexity": "high",
1164
+ "entities": ["Order", "OrderLine", "Customer"],
1165
+ "apiEndpoints": [
1166
+ { "method": "POST", "path": "/api/orders", "auth": "contributor" }
1167
+ ],
1168
+ "permissions": ["viewer", "contributor"],
1169
+ "dependencies": ["Inventory"]
1170
+ }
1171
+ ]
1172
+ }</code></pre>
1934
1173
  </div>
1935
1174
 
1936
- <h4 data-lang="fr">Ensuite : Question</h4>
1937
- <h4 data-lang="en">Next: Question</h4>
1175
+ <h4><code>progress.txt</code></h4>
1176
+ <p data-lang="fr">
1177
+ Tracker textuel de progression, genere a chaque etape.
1178
+ </p>
1179
+ <p data-lang="en">
1180
+ Text progress tracker, generated at each step.
1181
+ </p>
1938
1182
 
1939
1183
  <div class="code-block">
1940
1184
  <button class="copy-btn">Copy</button>
1941
- <pre><code># Interroger la feature existante
1942
- /business-analyse -q FEAT-001 "What permissions does the manager have?"
1185
+ <pre><code># Business Analyse Progress - OrderManagement v1.0
1186
+
1187
+ [✓] Step 00 - Init (completed 2026-02-04 10:00)
1188
+ [✓] Step 01 - Cadrage (completed 2026-02-04 10:15)
1189
+ - 4 applicationRoles defined
1190
+ - 5 mustHave requirements in coverage matrix
1191
+
1192
+ [✓] Step 02 - Decomposition (completed 2026-02-04 10:30)
1193
+ - 3 modules identified: Checkout, Payment, Shipping
1194
+ - Topological order: [Inventory, Checkout, Payment, Shipping]
1195
+
1196
+ [→] Step 03 - Specify (in progress)
1197
+ - Current module: Checkout (1/4)
1198
+ - Entities: 3/5 done
1199
+ - Use Cases: 2/8 done
1200
+
1201
+ [ ] Step 04 - Consolidation (pending)
1202
+ [ ] Step 05 - Handoff (pending)</code></pre>
1203
+ </div>
1204
+ </section>
1205
+
1206
+ <!-- ============================================ -->
1207
+ <!-- VERSIONING -->
1208
+ <!-- ============================================ -->
1209
+ <section id="versioning">
1210
+ <h2>Versioning</h2>
1211
+
1212
+ <p data-lang="fr">
1213
+ Les versions suivent SemVer. Les workflows complets incrementent MAJOR ou MINOR. Les deltas (refactoring) incrementent PATCH.
1214
+ </p>
1215
+ <p data-lang="en">
1216
+ Versions follow SemVer. Complete workflows increment MAJOR or MINOR. Deltas (refactoring) increment PATCH.
1217
+ </p>
1943
1218
 
1944
- # Reponse textuelle depuis feature.json → EXIT (aucun fichier modifie)</code></pre>
1219
+ <div class="table-container">
1220
+ <table class="reference-table">
1221
+ <thead>
1222
+ <tr>
1223
+ <th>
1224
+ <span data-lang="fr">Scenario</span>
1225
+ <span data-lang="en">Scenario</span>
1226
+ </th>
1227
+ <th>
1228
+ <span data-lang="fr">Version</span>
1229
+ <span data-lang="en">Version</span>
1230
+ </th>
1231
+ <th>Flag</th>
1232
+ </tr>
1233
+ </thead>
1234
+ <tbody>
1235
+ <tr>
1236
+ <td data-lang="fr">Nouvelle application</td>
1237
+ <td data-lang="en">New application</td>
1238
+ <td>1.0.0</td>
1239
+ <td>-</td>
1240
+ </tr>
1241
+ <tr>
1242
+ <td data-lang="fr">Ajout module majeur</td>
1243
+ <td data-lang="en">Add major module</td>
1244
+ <td>2.0.0</td>
1245
+ <td>-</td>
1246
+ </tr>
1247
+ <tr>
1248
+ <td data-lang="fr">Refactoring delta</td>
1249
+ <td data-lang="en">Refactoring delta</td>
1250
+ <td>1.1.0</td>
1251
+ <td>-r</td>
1252
+ </tr>
1253
+ <tr>
1254
+ <td data-lang="fr">Micro-feature</td>
1255
+ <td data-lang="en">Micro-feature</td>
1256
+ <td>1.0.1</td>
1257
+ <td>-m</td>
1258
+ </tr>
1259
+ </tbody>
1260
+ </table>
1945
1261
  </div>
1946
1262
  </section>
1947
1263
 
1948
1264
  </div>
1265
+
1266
+ <!-- Footer -->
1267
+ <div style="margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--border); text-align: center; color: var(--text-muted); font-size: 0.85rem;">
1268
+ <span data-lang="fr">Developpe par</span>
1269
+ <span data-lang="en">Developed by</span>
1270
+ <a href="https://www.atlashub.ch" style="color: var(--primary-light);">AtlasHub</a> &bull;
1271
+ <a href="mailto:support@atlashub.ch" style="color: var(--primary-light);">support@atlashub.ch</a> &bull;
1272
+ MIT License
1273
+ </div>
1274
+
1949
1275
  </main>
1950
1276
  </div>
1951
1277
  </div>
1952
1278
 
1279
+ <!-- Mobile Menu Button -->
1280
+ <button class="mobile-menu-btn">☰</button>
1281
+ <div class="overlay"></div>
1282
+
1953
1283
  <script src="js/app.js"></script>
1954
1284
  </body>
1955
1285
  </html>