Aller au contenu

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.py pour 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 de type: '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() dans AnchorBatchService (delegation vers failBatch() 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.py genere correctement entity_enum_values pour les colonnes varchar avec TypeScript enum