Aller au contenu

PD-273 — Expression de besoin

Contexte

L'audit formel PV-AUDIT-001 a identifie 3 checks Prolog en statut PARTIEL (KO). Ces 3 checks doivent passer a OK pour atteindre la conformite formelle complete.

Probleme

Les checks Prolog de conformite PV-AUDIT-001 echouent sur 3 points :

1. check_audit_trigger_update_delete (PARTIEL)

Le trigger trg_audit_log_immutable EXISTE deja en base (migration 1733700000000). Le check Prolog echoue car il cherche table_trigger(audit_log, _, immutable) alors que le fait genere est table_trigger(audit_log, trg_audit_log_immutable, 'BEFORE UPDATE OR DELETE').

Gap : Le script extract-facts.py genere un string 'BEFORE UPDATE OR DELETE' au lieu d'un atome immutable ou prevent_update_delete.

2. check_audit_signature_sign (PARTIEL)

Le service AuditSignatureService a une methode signAuditEntry() mais le check Prolog cherche service_method(audit_signature, sign). Le fait genere est service_method(audit_signature, signAuditEntry).

Gap : Nommage de la methode ne correspond pas au nom attendu par le check Prolog.

3. check_destruction_sequence (PARTIEL)

La sequence PostgreSQL vault_secure.audit_destruction_seq existe (migration PD-250) et est utilisee par DestructionAuditService.logDestruction(). Le check Prolog cherche soit entity_column(audit_log, destruction_seq, _) soit entity(destruction_audit, _, _), mais aucun des deux n'existe dans les faits generes.

Gap : La sequence est un objet PostgreSQL brut, pas une entite TypeORM. extract-facts.py ne peut pas la detecter.

Solutions envisagees

Pour chaque gap, deux approches sont possibles : - A) Modifier le code backend pour matcher les attentes Prolog - B) Modifier les regles Prolog pour accepter la realite du code

L'approche hybride est recommandee : - Gap 1 : Modifier extract-facts.py pour generer l'atome correct OU modifier le Prolog - Gap 2 : Ajouter une methode alias sign() dans AuditSignatureService (modification minimale) - Gap 3 : Modifier le Prolog pour accepter service_method(destruction_audit, logDestruction)

Criteres de succes

  • Les 3 checks Prolog passent a OK
  • Aucune regression sur les 21 autres checks PV-AUDIT
  • Aucune regression sur les tests existants du backend