PD-39 — Acceptabilité¶
Objectif¶
Vérifier que l’implémentation est conforme à la spécification, respecte l’ensemble des invariants ProbatioVault et ne présente aucune incohérence ou oubli critique.
Périmètre de vérification¶
La revue d’acceptabilité vérifie explicitement :
- la conformité stricte à la spécification fonctionnelle
- le respect de tous les invariants applicables
- la couverture des scénarios de test définis
- l’absence d’incohérences, oublis ou régressions
Écarts identifiés¶
Chaque écart constaté doit être documenté et classé selon sa gravité.
Classification des écarts¶
| Niveau | Définition |
|---|---|
| BLOQUANT | Violation d’un invariant, faille de sécurité, non-conformité majeure à la spec |
| MAJEUR | Fonction incomplète, comportement non conforme mais sans rupture de sécurité |
| MINEUR | Détail, dette acceptable, amélioration non critique |
Détail des écarts¶
| ID | Description | Référence | Gravité |
|---|---|---|---|
| E-01 | Clôture/immutabilité du batch non probatoire : le statut CLOSED et le guard API n’empêchent pas l’ajout/modification via accès DB/DDL ; aucun mécanisme WORM/scellement ou verrouillage post-clôture. L’invariant “ensemble fini et non extensible” et “aucune modification après conservation” ne sont pas garantis. | Spec §4.4/§4.5/§4.9 ; Plan §3 (BatchClosedGuard) ; code batch.service.ts, guards/batch-closed.guard.ts, migration 1733900000000-CreateTsaTables.ts | BLOQUANT |
| E-02 | Horloge de référence NTS dépendante d’un démon externe non contrôlé : ReferenceClockService lit ntpd-rs observe.json sans garantie d’authentification NTS ou fallback. Si le service NTS est absent/non synchronisé, les invariants “pas d’heure locale” et “validations via horloge de référence sécurisée” ne sont pas assurés. | Spec §4.8/§4.9 ; Plan §3 (ReferenceClockService NTS) ; code services/reference-clock.service.ts | BLOQUANT |
[2025-12-23] — Suivi E-01¶
- Statut précédent : BLOQUANT
- Statut actuel : RÉSOLU
- Justification factuelle :
- WORM complet via triggers INSERT/UPDATE/DELETE sur
batch_items(blocage post-scèlement) ettimestamp_batches(SEALED/TIMESTAMPED/FAILED non modifiables). - Append-only renforcé sur
batch_seals,timestamp_tokens,clock_attestations+ event triggerevt_worm_protect_tsabloquant DDL/Drop trigger ; fonctions en SECURITY DEFINER et révocation TRUNCATE/TRIGGER. - Référence vérification :
- src/database/migrations/1733900001000-AddWormProtection.ts
[2025-12-23] — Suivi E-02¶
- Statut précédent : BLOQUANT
- Statut actuel : RÉSOLU
- Justification factuelle :
- Mode fail-closed par défaut :
ReferenceClockService.getAuthenticatedTimeStrict()vérifie intégrité du fichierobserve.json(UID/GID/permissions) et exige ≥ NTS_MIN_AUTHENTICATED_SOURCES avecnts_ke_established=true. ClockAttestationServiceforce le mode strict (TSA_NTS_STRICT_MODE=true par défaut) et renvoie une erreur NTS_FAIL_CLOSED si synchronisation insuffisante ; nouveaux codes d’erreur et seuils constants.- Tests TSA mis à jour couvrant les cas fail-closed (reference-clock.service.spec.ts).
- Référence vérification :
- src/modules/tsa/services/reference-clock.service.ts ; src/modules/tsa/constants/tsa.constants.ts ; src/modules/tsa/services/clock-attestation.service.ts ; src/modules/tsa/services/reference-clock.service.spec.ts
Conclusion d’acceptabilité¶
✅ ACCEPTÉ
Motif : E-01 (WORM probatoire) et E-02 (NTS fail-closed) résolus et vérifiés.
Historique des verdicts¶
| Date | Verdict | Version | Commentaire |
|---|---|---|---|
| 2025-12-23 | ⛔ REFUSÉ | n/a | E-01 (clôture/immutabilité non probatoire), E-02 (horloge NTS non garantie) |
| 2025-12-23 | ✅ ACCEPTÉ | n/a | E-01 WORM DB + DDL protégé, E-02 NTS fail-closed (authentifié) |