Prompt file imported from zekiriabd/SDD-Pro (
.codex/prompts/sdd-reverse-questions.md). Fill in{{arguments}}before use. Copyright stays with the author.
Arguments: {{arguments}}
/sdd-reverse-questions {LegacyProject} [--ingest] [--interactive] [--json]
Rôle
Fermer la boucle Tech Lead ↔ reverse : les gaps détectés par les reviewers
(aujourd'hui informationnels et dispersés dans .sys/modules/*/) deviennent
des questions structurées (Q-N, impact, evidence) dans un fichier unique ;
les réponses humaines sont ré-injectées dans les FEATs avec traçabilité
(<!-- human-validated: Q-N -->) — c'est la voie officielle pour faire monter
un item medium/low en high (unique exception au cap D1, tracée).
Args
| Arg | Type | Description |
|---|---|---|
{LegacyProject} |
requis | Sous-dossier workspace/old/ |
--ingest |
flag | Ré-injecte les blocs Réponse: remplis au lieu de générer |
--interactive |
flag | Clôture la boucle en un run (C3) : génère questions.md, pose les questions ouvertes dans la session, écrit les réponses, puis --ingest — sans double invocation manuelle. Dégrade en generate si la session n'est pas interactive. |
--json |
flag | Émet le résumé en JSON |
Pré-conditions
generate:inventory.json+ ≥ 1 FEAT reverse existent. Sinon → ERROR[REVERSE_NO_SOURCE]/[REVERSE_UNIT_NOT_FOUND].--ingest:workspace/old/{P}/.sys/questions.mdexiste avec ≥ 1Réponse:non vide. Sinon →[REVERSE_QUESTIONS_PENDING](informational, STOP propre).
Actions
- Spawn unique
Agent(reverse-clarifier)avec args ={P}[+--ingest]. generate: collecte déterministe (completeness-reviews, ladder-traceability re-run, items medium/low, parity-map## Non dérivables, curation HUMAN-DECISION) →questions.md(IDsQ-Nstables, blocs répondus préservés).--ingest: édition chirurgicale des items FEAT concernés, puis resynchronisation ordre strict — confidence FEAT + REVERSE-GATE ensemble,validate_reverse_feat.py, hash US en dernier (resolve_us_hash_sentinel.py --feat-number {n}, §10).
Mode --interactive (clôture en un run — C3, audit 2026-07-24)
Objectif : supprimer la double invocation manuelle (generate → édition humaine → ingest). En session interactive, l'orchestrateur :
- Génère
questions.md(étapegeneratenormale). - Liste les questions ouvertes déterministiquement (jamais de parsing LLM
du markdown) :
python .sdd/python/sdd_reverse_scripts/reverse_questions_io.py workspace/old/{P}/.sys/questions.md --list-open --json→[{id, title, question, impact}], triéescritical → moderate → minor. - Pose ces questions au Tech Lead via
AskUserQuestion(par lots ≤ 4,criticald'abord). Aucune réponse inventée ; « Autre » toujours possible. - Écrit chaque réponse atomiquement (jamais d'
EditLLM à la main) :... reverse_questions_io.py .../questions.md --set-answer Q-N --text "<réponse>" - Ingère :
/sdd-reverse-questions {P} --ingest(agentreverse-clarifier, resync confidence/REVERSE-GATE/hash US, ordre strict §10).
Dégradation gracieuse : si la session n'est pas interactive (run headless /
CI / AskUserQuestion indisponible), --interactive se comporte comme
generate et imprime la marche à suivre manuelle ([REVERSE_QUESTIONS_PENDING]
informational). Aucune réponse n'est jamais fabriquée — l'absence de réponse
laisse le bloc ouvert.
Sortie
workspace/old/{P}/.sys/questions.md (generate / --interactive)
workspace/feats/{n}-{FeatName}.md (édités, --ingest / --interactive) + US resynchronisées
Émission chat
[REVERSE] {Q} questions ouvertes ({C} critical) → workspace/old/{P}/.sys/questions.md. (PROGRESS%)
[REVERSE] Ingestion réponses : {I} item(s) clarifié(s), {R} question(s) restante(s). (PROGRESS%)
Anti-derive
- No-spawn d'agent autre que
reverse-clarifier - Jamais d'invention : ni gap, ni réponse — chaque question pointe une source citable
- IDs
Q-Nstables, jamais renumérotés --ingestest la SEULE voie d'édition d'une FEAT reverse post-3c (véhicule de la revue humaine Phase 5)- Jamais bloquant : questions ouvertes =
[REVERSE_QUESTIONS_PENDING]informational
Voir .sdd/rules/reverse-engineering.md §6 ([REVERSE_QUESTIONS_PENDING], [REVERSE_ANSWER_INGEST_FAILED]) + §10 + .sdd/agents/reverse-clarifier.md.
