Aller au contenu

PD-282 — Plan d’implémentation : Revue

1. Références

  • Spécification : PD-282-specification.md
  • Tests contractuels : PD-282-tests.md
  • Plan d’implémentation : PD-282-plan.md
  • Date de revue : 2026-03-02
  • Reviewer : OpenCode (auditeur technique indépendant)

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Non-conformité Spec Spec §5.6 / Plan §4.1 (DA-01, migration PD282-AddEnvelopeSealColumn.ts) La spécification contractualise « Aucune stratégie de migration DDL applicable », alors que le plan introduit explicitement une migration DDL et une nouvelle colonne envelope_seal. Rupture de conformité contractuelle directe sur le périmètre de persistance. BLOQUANT
Test irréalisable Spec §5.4, INV-282-09, INV-282-10 / Tests TC-NOM-06, TC-INV-09, TC-INV-10 / Plan DA-02 Le plan impose un INSERT atomique directement en SEALED sans état persistant UNSEALED, tout en se référant à une machine d’états UNSEALED/SEALED. Les transitions contractuelles incluant UNSEALED -> UNSEALED et la démonstration de UNSEALED -> SEALED ne disposent pas d’un mécanisme observable explicite dans le design décrit. Les tests d’états contractuels ne sont pas démontrables de manière auditée et reproductible. BLOQUANT
Non-conformité Spec Spec §6 (ERR-*), §5.1.2 (status) / Plan §3 (Reserve ECT-02, « rejette si status=revoked », « spec sera amendée ») Le plan introduit une règle de rejet OCSP_CERT_REVOKED non contractualisée dans la spécification actuelle et fondée sur un amendement futur. Introduction d’un comportement de rejet non spécifié à date, contraire à l’exigence d’absence d’interprétation libre. MAJEUR
Hypothèse implicite Plan §3 « Mode B constitutive (non optionnelle) » / Plan §4.4 étape 8 « verification OCSP en ligne optionnelle » Deux formulations incompatibles coexistent sur la nature de la vérification Mode B (constitutive vs optionnelle). Ambiguïté d’implémentation et de validation, avec risque de résultats divergents en audit tiers. MAJEUR
Couverture manquante INV-282-07 / Test TC-INV-07 / Plan §3 (Adressage INV-282-07) Le plan remplace la vérification d’un invariant de chiffrement au repos par un audit statique « absence de persistance ». Aucun mécanisme opérationnel n’est décrit pour contrôler le chiffrement au repos si des artefacts temporaires existent effectivement (DB/blobs/fichiers temporaires) dans des chemins d’exécution réels. Invariant non négociable partiellement couvert et contournement possible non détecté. MAJEUR
Code Contract — Invariant Code contracts: envelope-seal-pipeline.invariants_techniques, offline-verification.invariants_techniques, hash-extension.invariants / Spec INV-282-* Plusieurs invariants techniques de code contract ne sont pas un sous-ensemble explicite des invariants contractuels de la spec (ex. contraintes d’implémentation bas niveau et comportements techniques non normatifs). Glissement du périmètre contractuel et difficulté d’audit de conformité stricte. MAJEUR
Code Contract — Forbidden Code contracts: envelope-seal-pipeline.forbidden (« Utiliser Math.random() ... crypto.randomUUID() obligatoire ») / Spec PD-282 Pattern interdit ajouté sans ancrage explicite dans la spec PD-282 ni dans une exigence sécurité formalisée dans les invariants de la story. Ajout de contrainte normative non contractualisée pour cette story. MINEUR
Contrainte technique non documentée Plan §6 Dépendances externes Les dépendances inter-PD sont listées avec statuts Disponible/A ajouter, mais pas avec les statuts contractuels attendus DONE / TODO / STUB acceptable. Traçabilité de readiness inter-PD partiellement ambiguë pour audit formel. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : BLOQUANT=2, MAJEUR=4, MINEUR=2.
  • Points critiques : contradiction DDL vs spec (§5.6), démontrabilité insuffisante de la machine d’états contractuelle, et ambiguïté interne sur Mode B.

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : le plan n’est pas strictement conforme à la spécification contractuelle en l’état et présente des écarts bloquants de testabilité/traçabilité sur des invariants non négociables.