Prompt file imported from zekiriabd/SDD-Pro (
.codex/prompts/sdd-reverse-analyze.md). Fill in{{arguments}}before use. Copyright stays with the author.
Arguments: {{arguments}}
/sdd-reverse-analyze {U-N} [--json]
Rôle
Lancer la Phase 3a (premier barreau de l'escalier reverse) : transformer une unité fonctionnelle (Phase 1) en analyse technique legacy — photo fidèle du code, sans interprétation métier. Une seule unité par invocation.
code source --[3a /sdd-reverse-analyze]--> plans/{n}-{FeatName}.analysis.md
--[3b /sdd-reverse-stories]--> us/{n}-{m}-{Name}.md
--[3c /sdd-reverse-feat]------> feats/{n}-{FeatName}.md
En mode pré-alloué (L5, preallocate_feats exécuté), plusieurs invocations
peuvent tourner en parallèle borné (§8.2 rules/reverse-engineering.md) ;
sans pré-allocation, séquentiel strict (ADV-2 §8.1). 3a possède l'allocation
(n, FeatName) que 3b/3c réutilisent.
Args
| Arg | Type | Description |
|---|---|---|
{U-N} |
string requis | Identifiant U-N stable (ex. U-3) — résolu via inventory.json.units[] |
--json |
flag | Émet le rapport d'analyse en JSON |
Pré-conditions
workspace/old/{P}/.sys/inventory.jsonexiste ET passe gate ADV-23 (schemaVersion == 1,_allocatedNames+_featAllocationsprésents). Sinon → ERROR[REVERSE_INVENTORY_SCHEMA_STALE]+ suggérer/sdd-reverse-inventory --refresh.units[id="{U-N}"]existe. Sinon → ERROR[REVERSE_UNIT_NOT_FOUND]..sdd/python/sdd_reverse/analysis.reverse.template.mdprésent (ADV-9). Sinon → ERROR[REVERSE_TEMPLATE_MISSING].- (Mode legacy uniquement) Lock
workspace/feats/.alloc.locklibre OU stale > 30 min (TTL 1800s). Sinon → ERROR[REVERSE_LOCK_HELD]. En mode pré-alloué, aucun lock (C5).
Actions
- Résoudre le projet legacy : lire
workspace/old/*/.sys/inventory.jsonpour trouver lequel contientunits[id={U-N}]. Plusieurs matchs → ERROR ambiguïté, demander--project {P}. Le nom retenu est{P}— toutes les étapes suivantes l'utilisent, jamais un re-glob. - Routage de tier (déterministe, ADR
governance-reverse-complexity-ladder) — sur le projet{P}résolu en 1 :
→ imprimepython .sdd/python/sdd_reverse/code_unit_complexity.py \ --project workspace/old/{P} --unit {U-N} --rung 3abalancedsi l'unité estsimple,deepsicomplex(rubriquedocs/rubrics/reverse-complexity-routing.md). Fail-safe câblé : toute erreur (inventory absent/illisible,{U-N}inconnu) imprimedeepsur stdout ET la raison sur stderr, exit 0 — le doute coûte une passedeep, jamais un traceback ni une sous-analyse. - Spawn unique
Agent(reverse-tech-analyst)avec args ={U-N}ETmodel_tier= le tier routé en 2 (override au spawn, borné partier_floor/tier_ceilingde l'agent — l'agent est inchangé, seul son tier d'exécution varie ; no-spawn préservé). - L'agent suit STEP 0 à 7 de
.sdd/agents/reverse-tech-analyst.md. - Émission ligne chat finale
[REVERSE] {U-N} → analyse 3a {n}-{FeatName} ({modèle}, ...). (PROGRESS%).
Sortie
workspace/plans/{n}-{FeatName}.analysis.md (analyse technique legacy)
workspace/old/{P}/.sys/modules/{FeatName}/extraction.md (log décision)
workspace/old/{P}/.sys/inventory.json (update _featAllocations + _allocatedNames — mode legacy)
Voie d'usage standard (escalier complet)
/sdd-reverse-inventory MyLegacy(Phase 1)/sdd-reverse-analyze U-1(3a) → analyse technique/sdd-reverse-stories U-1(3b) → user stories/sdd-reverse-feat U-1(3c) → FEAT métier- (ou
/sdd-reverse U-1qui séquence 3a→3b→3c, ou/sdd-reverse-fullpour tout le pipeline)
Anti-derive
- Une seule unité par invocation — jamais batch.
- 3a décrit le mécanique observé, jamais l'intention métier (réservée 3b/3c).
- Plomberie (connstring, timeouts) démotée dans
## Accès données, jamais en règle métier. - No-spawn d'agent autre que
reverse-tech-analyst. - Idempotence : re-lancer réécrit la même analyse (mêmes
n/Namevia_featAllocations).
Voir .sdd/docs/reverse-engineering-workflow.md §Phase 3 + ADR governance-major-reverse-spec-ladder.
