Prompt file imported from zekiriabd/SDD-Pro (
.codex/prompts/sdd-reverse-synth.md). Fill in{{arguments}}before use. Copyright stays with the author.
Arguments: {{arguments}}
/sdd-reverse-synth {LegacyProject} [--doc-level essentiel|complet|detaille] [--only c4,erd,soul] [--json]
Rôle
Produire la vue système que l'escalier 3a→3b→3c ne produit pas : diagrammes
C4, ERD complet et soul.md (synthèse exécutive). C'est un nouvel
étage au-dessus de 3c : un consommateur en lecture seule des artefacts
déterministes déjà présents, qui ne touche ni à l'escalier, ni au contrat
FEAT.
Pare-feu (non-cassant) : tous les artefacts sont écrits sous
workspace/old/{P}/.sys/synthesis/— jamais sousworkspace/feats/./sdd-fullne voit donc jamais un C4/ERD comme une FEAT à coder.
Args
| Arg | Type | Description |
|---|---|---|
{LegacyProject} |
string requis | Sous-dossier de workspace/old/ |
--doc-level |
essentiel|complet|detaille (défaut complet) |
Bouton d'économie de contexte. essentiel = C4-contexte + ERD + soul. complet = + C4 conteneurs/composants. detaille = + table de détail par composant. |
--only |
liste parmi c4,erd,soul |
Régénère seulement les catégories listées (les autres ne sont pas touchées) |
--json |
flag | Rapport JSON sur stdout |
Pré-conditions
workspace/old/{P}/.sys/inventory.jsonprésent etschemaVersion == 1(sinon → STOP[REVERSE_NO_SOURCE]/[REVERSE_INVENTORY_SCHEMA_STALE]).- Recommandé :
/sdd-reverse-auditexécuté avant (produitdeps-graph.json→ C4 plus riche, etdb-schema.merged.json→ ERD enrichi). Dégradation gracieuse si absents : le C4 se limite au contexte, l'ERD à la base.
Actions (no-spawn — script déterministe)
Invoque le script déterministe, aucun agent :
python .sdd/python/sdd_reverse_scripts/reverse_synth.py --project workspace/old/{LegacyProject} [--doc-level ...] [--only ...] [--json]
Le script :
- Charge
inventory.json(requis),deps-graph.jsonetdb-schema.merged.json(oudb-schema.json) si présents. - Nettoie les sorties gérées de chaque catégorie régénérée (idempotence :
repasser à un
--doc-levelinférieur n'y laisse pas d'artefact périmé). - Rend, sous
.sys/synthesis/, selon le doc-level :c4-context.md,c4-containers.md,c4-components.md,erd-complete.md,soul.md. - Écrit
manifest.json(enregistrement d'observabilité dérivé — quels artefacts, depuis quelles sources, répartition de confiance). - Émet la ligne chat finale :
[REVERSE] Synthèse ({doc-level}) : {fichiers} [confiance high=.. medium=.. low=..]. (100%)
Sortie
workspace/old/{LegacyProject}/.sys/synthesis/
├── c4-context.md # toujours (Mermaid graph TB)
├── c4-containers.md # complet|detaille
├── c4-components.md # complet|detaille
├── erd-complete.md # si un schéma DB existe (Mermaid erDiagram)
├── soul.md # toujours (synthèse exécutive)
└── manifest.json # observabilité (dérivé, non SSoT)
Discipline confiance / traçabilité
Chaque énoncé porte sa confiance dans l'enum reverse strict {high, medium, low} :
- C4 : relations issues des arêtes parsées de
deps-graph.json→high. - ERD : entités/relations du DDL →
high; déduites du code (deduced) →medium. - soul.md : objectif inféré →
medium; entités centrales rankées par degré entrant de FK ; contraintes (EOL, cycles) = faits observés. Aucun git-mining, aucune décision « fondatrice » inventée (lacune assumée).
Anti-derive
- No-spawn : aucun agent (déterministe pur, 0 token).
- Lecture seule sur les artefacts ; aucune lecture du code legacy (l'isolation d'altitude de l'escalier est préservée — seul 3a lit le code).
- Écriture confinée à
.sys/synthesis/; jamaisfeats/. - N'altère jamais l'escalier
3a/3b/3cni les FEAT existantes.
Idempotence
Re-lancer écrase les sorties (atomic write) et nettoie les artefacts périmés de chaque catégorie régénérée. Les U-N et les FEAT ne sont pas touchés.
Option ultérieure (hors cœur déterministe) : un agent narratif
reverse-soul/reverse-architectpourra enrichirsoul.mdet le C4 d'un texte explicatif. Volontairement non inclus ici pour préserver la reproductibilité et le coût zéro-token.
Voir .sdd/docs/reverse-engineering-workflow.md (couche de synthèse, Phase 3.7).
