Aller au contenu

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

1. Références

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

2. Constatations (écarts)

Type Référence (Spec/Test/Plan) Description Impact Gravité (BLOQUANT/MAJEUR/MINEUR)
Test irréalisable Spec CA-05 / TC-NOM-06, TC-NOM-07 / Plan §2 FT4 Le contrôle signer (SELECT ... FOR UPDATE + refus) intervient dans submitBatch() après createBatch(...) et buildBatch(...) dans le flux FT4. Les attendus “aucun batch créé” et “aucun effet de bord de soumission” en cas signer REVOKED/inconnu ne sont pas démontrables avec ce séquencement. BLOQUANT
Non-conformité Spec INV-275-11 / Plan C8 SignerActiveGuard + C6 Le plan introduit une garde SignerActiveGuard sur routes de soumission, donc une décision de statut potentielle hors transaction métier submitBatch() alors que l’invariant contractualise lecture/décision/écriture sous transaction avec verrou pessimiste. Risque de divergence de comportement (TOCTOU) entre pré-contrôle route et contrôle transactionnel; sérialisation contractuelle fragilisée. MAJEUR
Hypothèse implicite INV-275-09 / Plan C4, C7 L’autorisation revokeSigner() est portée par le contrôleur (@Roles), sans exigence explicitée d’un contrôle d’autorisation au niveau service. Le plan suppose implicitement que SignerRegistryService.revokeSigner() n’est jamais invoqué hors endpoint protégé. Un appel interne/service-to-service non couvert par RolesGuard peut violer la contrainte d’autorisation contractuelle. MAJEUR
Code Contract — Complétude Code Contracts (modules) / Plan C8 Le composant planifié signer-active-guard (C8) n’a pas de code contract dédié dans PD-275-code-contracts.yaml. Frontière de responsabilité non contractualisée sur un composant de sécurité introduit par le plan. MAJEUR
Contrainte technique non documentée Plan (absence section “Contraintes techniques” formalisée) / Dépendances PD-177, PD-52, PD-264 Les dépendances inter-PD sont citées, mais sans statut explicite normalisé (DONE/TODO/STUB acceptable) demandé. Traçabilité de readiness incomplète pour exécution/gate. MINEUR
Contrainte technique non documentée Plan (tests d’intégration concurrence/migration) Variables CI nécessaires aux tests d’intégration DB (ex. DATABASE_URL, CI=true) non documentées dans une section dédiée. Reproductibilité CI partielle, risque d’écarts entre local et pipeline. MINEUR

3. Synthèse

  • Nombre d’écarts par gravité : 1 BLOQUANT, 3 MAJEURS, 2 MINEURS.
  • Points critiques :
  • Incompatibilité séquentielle FT4 vs attendus CA-05/TC-NOM-06/07 (batch/effets de bord).
  • Décision de sécurité potentiellement hors transaction via SignerActiveGuard au regard d’INV-275-11.
  • Complétude contractuelle incomplète sur composant de sécurité (C8 sans code contract).

4. Verdict de la revue

  • Statut : ⛔ Rejeté
  • Motif synthétique : présence d’un écart BLOQUANT de réalisabilité tests/spec (CA-05, TC-NOM-06/07) et de plusieurs écarts MAJEURS sur contractualisation sécurité/concurrence et complétude des code contracts.