PD-274 — Expression de besoin¶
Contexte¶
L'audit formel PV-ANCHOR-001 a identifie 2 checks Prolog en statut PARTIEL (KO). Ces 2 checks doivent passer a OK pour atteindre la conformite formelle complete (24/24).
Probleme¶
Les checks Prolog de conformite PV-ANCHOR-001 echouent sur 2 points :
1. check_batch_status_enum (KO)¶
Le check Prolog attend entity_enum_values(anchor_batch, status, Values) avec FINALIZED et FAILED dans la liste. Le fait n'est jamais genere car extract-facts.py ne detecte que les colonnes @Column({ type: 'enum', enum: EnumClass }). Or l'entite anchor-batch.entity.ts utilise @Column({ type: 'varchar', ... }) avec un TypeScript enum AnchorBatchStatus comme type de la propriete.
Gap : extract-facts.py (ligne 182) ne detecte pas les colonnes varchar qui utilisent un TypeScript enum comme type de propriete. Le pattern @Column({ type: 'varchar' }) + status!: AnchorBatchStatus n'est pas reconnu.
Enum existant : anchor-batch-status.enum.ts definit correctement les 6 valeurs : PENDING, BUILDING, SUBMITTED, PENDING_FINALITY, FINALIZED, FAILED.
2. check_handle_reorg (KO)¶
Le check Prolog attend service_method(anchor_batch, handleReorg) ou service_method(anchor_batch, reorg). La methode handleReorg() n'existe pas dans AnchorBatchService. Elle est referencee dans confirmation.tracker.ts (module blockchain) mais pas implementee dans le service d'ancrage.
Gap : La methode handleReorg() n'est pas implementee dans AnchorBatchService. La gestion de reorg est conceptuellement dans le tracker de confirmations, pas dans le service de batch.
Solutions envisagees¶
Pour chaque gap, approche hybride (comme PD-272 et PD-273) :
Gap 1 : enum status¶
- Option A : Modifier
extract-facts.pypour detecter aussi le pattern@Column({ type: 'varchar' })+ propriete typee avec un enum importe - Option B : Ajouter une clause Prolog alternative acceptant les faits generes actuels
- Option C : Modifier l'entite pour utiliser
type: 'enum'au lieu detype: 'varchar'
Recommandation : Option A est la plus robuste — elle corrige le probleme a la racine et beneficiera a toutes les entites futures utilisant ce pattern.
Gap 2 : handleReorg¶
- Option A : Ajouter methode
handleReorg()dansAnchorBatchService(delegation versfailBatch()avec raison 'reorg') - Option B : Modifier la regle Prolog pour accepter un alias (ex: methode dans le tracker)
Recommandation : Option A — ajouter la methode dans le service (modification minimale, pattern identique a PD-273 sign() alias).
Criteres de succes¶
- Les 2 checks Prolog passent a OK (24/24 PV-ANCHOR conforme)
- Aucune regression sur les 22 autres checks PV-ANCHOR
- Aucune regression sur les tests existants du backend
extract-facts.pygenere correctemententity_enum_valuespour les colonnes varchar avec TypeScript enum