Prompt file imported from zekiriabd/SDD-Pro (
.codex/prompts/sdd-reverse-feat.md). Fill in{{arguments}}before use. Copyright stays with the author.
Arguments: {{arguments}}
/sdd-reverse-feat {U-N} [--json]
Rôle
Lancer la Phase 3c (barreau du haut) : composer la FEAT métier propre à
partir des User Stories 3b, plomberie démotée, evidence résolue
transitivement. C'est le pont vers /sdd-full (Intent A→B).
us/{n}-{m}-{Name}.md --[3c /sdd-reverse-feat]--> feats/{n}-{FeatName}.md
Remplace l'ex-/sdd-reverse mono-saut (extracteur décommissionné, ADR reverse-spec-ladder).
Args
| Arg | Type | Description |
|---|---|---|
{U-N} |
string requis | Identifiant U-N stable (ex. U-3) |
--json |
flag | Émet le rapport en JSON |
Pré-conditions
(n, FeatName)résolu viainventory.json._featAllocations[{U-N}](3a a tourné). Absent → ERROR[REVERSE_UNIT_NOT_FOUND].- ≥ 1 US
workspace/us/{n}-{m}-{Name}.md(3b a tourné). Aucune → ERROR[REVERSE_UNIT_NOT_FOUND]+ suggérer/sdd-reverse-stories {U-N}. workspace/plans/{n}-{FeatName}.analysis.md(3a — résolution evidence). Absente → ERROR[REVERSE_UNIT_NOT_FOUND]..sdd/python/sdd_reverse/feat.reverse.template.mdprésent (ADV-9). Sinon → ERROR[REVERSE_TEMPLATE_MISSING].
Actions
- Résoudre le projet legacy via
inventory.json._featAllocations. 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 :
→python .sdd/python/sdd_reverse/code_unit_complexity.py \ --project workspace/old/{P} --unit {U-N} --rung 3cbalancedsisimple,deepsicomplex(même classifieur que 3a → la classe est stable sur tout l'escalier ; rubriquedocs/rubrics/reverse-complexity-routing.md). Fail-safe câblé : toute erreur imprimedeepsur stdout + la raison sur stderr, exit 0 — jamais de traceback à la place d'un tier. - Spawn unique
Agent(reverse-feat-composer)avec args ={U-N}ETmodel_tier= le tier routé en 2 (override au spawn, borné partier_floor/tier_ceilingde l'agent — agent inchangé, no-spawn préservé). - L'agent suit STEP 0 à 6 de
.sdd/agents/reverse-feat-composer.md(composition + validate_reverse_feat max 3 + check_feat_completeness). - Émission ligne chat finale
[REVERSE] {U-N} → FEAT {n}-{FeatName} ({modèle}, ...). (PROGRESS%).
Sortie
workspace/feats/{n}-{FeatName}.md (FEAT SDD_Pro métier conforme)
workspace/old/{P}/.sys/modules/{FeatName}/feat-3c.md (log composition)
Confidence ≠ high
Si confidence: medium|low (min-monotone depuis 3a/3b, ou validate 3 itérations
échouée), la FEAT est écrite avec bannière + REVERSE-GATE allow-sdd-full=false.
Pour la consommer malgré tout : check_reverse_feat_for_full.py --allow-reverse-low.
Anti-derive
- Une seule unité par invocation.
- L'agent ne lit PAS le code legacy — uniquement les US 3b + l'analyse 3a.
- Démotion plomberie : connstring/timeout/mécaniques jamais en
## Business Rules. - No-spawn d'agent autre que
reverse-feat-composer. - Idempotence : re-lancer réécrit la même FEAT.
Voir .sdd/docs/reverse-engineering-workflow.md §Phase 3 + ADR governance-major-reverse-spec-ladder.
