@@ -245,6 +245,125 @@ sequenceDiagram
245245
246246---
247247
248+ ## Team split — qui fait quoi en parallèle
249+
250+ Équipe de 2 : ** Backend (zestones)** + ** Frontend (vgtray)** . Le contrat WS
251+ (` EventBusMap ` / ` ChatMap ` dans [ ` ALIGNMENT.md ` ] ( ./ALIGNMENT.md ) ) est figé dès
252+ M1 → les deux peuvent coder en parallèle sans se bloquer mutuellement.
253+
254+ ### Ownership par milestone
255+
256+ ``` mermaid
257+ gantt
258+ title Parallèle Backend (zestones) / Frontend (vgtray)
259+ dateFormat YYYY-MM-DD
260+ axisFormat %a %d
261+ excludes weekends
262+
263+ section zestones (backend)
264+ M1 Data Layer :done, 2026-04-22, 1d
265+ M2 MCP Server : 2026-04-23, 1d
266+ M3 KB Builder : 2026-04-23, 1d
267+ M4 Sentinel + Investig. :crit, 2026-04-24, 1d
268+ M5 WO Gen + Q&A :crit, 2026-04-25, 1d
269+
270+ section vgtray (frontend)
271+ M6 Foundation : 2026-04-23, 1d
272+ M7 Control Room : 2026-04-24, 1d
273+ M8 Agentic Workspace :crit, 2026-04-25, 1d
274+
275+ section Ensemble (sync)
276+ M9 Polish + E2E rehearse :crit, 2026-04-26, 12h
277+ M10 Vidéo + submission :milestone, 2026-04-26, 0d
278+ ```
279+
280+ ### Répartition concrète
281+
282+ | Lane | Owner | Issues | Démarre quand |
283+ | --------------------------------------------------------| ----------| ---------------| ----------------------------------------------|
284+ | Migrations + Pydantic | zestones | M1 (#2 -#7 ) | maintenant (Wed AM) |
285+ | FastMCP + 14 tools + MCPClient | zestones | M2 (#8 -#16 ) | dès M1 mergé (Wed PM) |
286+ | KB Builder agent + onboarding | zestones | M3 (#17 -#22 ) | en parallèle de M2 (peut commencer dès M1.4) |
287+ | Sentinel + Investigator + WSManager | zestones | M4 (#23 -#29 ) | dès M2 mergé (Thu) |
288+ | WO Gen + Q&A WS + Managed Agents | zestones | M5 (#30 -#33 ) | dès M4 mergé (Fri PM/Sat) |
289+ | Vite shell + design tokens + WS client typé | vgtray | M6 (#34 -#39 ) | ** maintenant** (pas de dep backend) |
290+ | P&ID + KPI bar + anomaly banner + ChatPanel + registry | vgtray | M7 (#40 -#44 ) | dès M6.4 prêt (Thu PM) |
291+ | Tous les artifacts + Inspector + onboarding wizard | vgtray | M8 (#45 -#50 ) | dès M7.5 prêt (Fri PM) |
292+ | WO console + motion + démo rehearse | les deux | M9 (#51 -#54 ) | Sun matin |
293+ | README + DEMO.md + vidéo + submission | les deux | M10 (#55 -#57 ) | Sun aprem |
294+
295+ ### Comment travailler en parallèle sans se bloquer
296+
297+ > [ !IMPORTANT]
298+ > ** Le contrat WS est la seule interface partagée.** Tant que les types
299+ > ` EventBusMap ` et ` ChatMap ` ([ ` ALIGNMENT.md ` ] ( ./ALIGNMENT.md ) §3) ne bougent pas,
300+ > chacun avance sans toucher au code de l'autre.
301+
302+ ``` mermaid
303+ flowchart LR
304+ subgraph contract["Contrat figé Day 1"]
305+ WS["EventBusMap + ChatMap\n(ALIGNMENT.md)"]
306+ REST["OpenAPI auto-gen FastAPI"]
307+ end
308+ subgraph zestones["Backend (zestones)"]
309+ BE["FastAPI + agents + MCP"]
310+ end
311+ subgraph vgtray["Frontend (vgtray)"]
312+ Mock["WS mock (M6.5)\nfixtures JSON par event type"]
313+ FE["React UI"]
314+ end
315+ BE -- "émet" --> WS
316+ Mock -- "émet (avant que BE soit prêt)" --> WS
317+ WS --> FE
318+ BE -- "schemas Pydantic" --> REST
319+ REST -- "openapi-typescript" --> FE
320+ ```
321+
322+ ** Mécaniques de parallélisation :**
323+
324+ 1 . ** Mock-first frontend.** vgtray code M6/M7/M8 contre le mock WS de M6.5 (un
325+ ` ws.mock.ts ` qui rejoue des fixtures JSON). Ne dépend pas que zestones ait
326+ fini M4. Branchement réel = remplacer ` createMockWs ` par ` createWsClient ` en
327+ 1 ligne.
328+ 2 . ** OpenAPI auto-generated types.** zestones lance FastAPI dès M1 → vgtray
329+ lance ` npx openapi-typescript http://localhost:8000/openapi.json -o src/lib/api.types.ts `
330+ pour avoir les types REST sans attendre.
331+ 3 . ** Une fixture par event type.** Pour chaque entry de ` EventBusMap ` (10) et
332+ ` ChatMap ` (7), créer ` frontend/src/lib/ws.fixtures.ts ` avec un exemple de
333+ payload. C'est la spec exécutable du contrat.
334+ 4 . ** Branche par milestone.** ` feat/m4-investigator ` (zestones), ` feat/m6-shell `
335+ (vgtray). PR dès qu'un milestone est démontrable, merge sur ` main ` derrière
336+ un tag ` vX.Y ` .
337+
338+ ### Points de synchronisation obligatoires
339+
340+ | Quand | Quoi | Durée |
341+ | ---------------| -------------------------------------------------------------------| --------|
342+ | ** Wed soir** | M1 mergé + M6 démarré + WS contract review ensemble | 15 min |
343+ | ** Thu soir** | M2 + M6 mergés, vgtray peut tester contre vrai backend (mock OFF) | 15 min |
344+ | ** Fri soir** | M4 mergé → vgtray rebranche M7.4 sur vrai ` WS /api/v1/agent/chat ` | 30 min |
345+ | ** Sat soir** | E2E P-02 testé bout en bout (Scene 1 à 5) | 1h |
346+ | ** Sun matin** | Démo rehearsal en duo, M9.4 | 1h |
347+ | ** Sun 18h** | Lock code, vidéo + soumission | 2h |
348+
349+ > [ !TIP]
350+ > ** Daily 5 min stand-up async sur Discord** : ce que j'ai mergé, ce que je
351+ > bloque, ce dont j'ai besoin. Pas plus.
352+
353+ ### Règles de no-conflit
354+
355+ - zestones ne touche ** jamais** à ` frontend/ ` . vgtray ne touche ** jamais** à
356+ ` backend/ ` . La doc partagée (` docs/ ` ) → toujours en PR séparée.
357+ - Tout changement au contrat WS (ajout d'event, rename de field) =
358+ ping immédiat sur Discord + update ` ALIGNMENT.md ` dans la même PR.
359+ - Les types TypeScript de ` EventBusMap ` /` ChatMap ` vivent côté frontend
360+ ([ ` frontend/src/lib/ws.types.ts ` ] ( ../../frontend/src/lib/ws.types.ts ) ). Côté
361+ backend, ils existent en commentaire dans ` WSManager.broadcast() ` . Si
362+ divergence → frontend gagne (c'est lui qui les voit en runtime).
363+ - ** Pas de force-push sur ` main ` .** Seulement sur les branches ` feat/* ` .
364+
365+ ---
366+
248367## Prize alignment
249368
250369> [ !NOTE]
0 commit comments