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