PD-287 — Revue d’acceptabilité (post-correction)¶
1. Références¶
- Spécification : PD-287-specification.md
- Tests contractuels : PD-287-tests.md
- Acceptabilité existante : PD-287-acceptability.md
- Date de revue : 2026-04-19
- Reviewer : Codex (auditeur technique indépendant)
2. Suivi des écarts (append-only)¶
[2026-04-19] — Suivi E-01¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
createShareLinkpersisteproofIddepuis le DTO sans vérification explicite de propriété (proofId ∈ ownerUserId).- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/sharing.service.ts:130-134 - test contractuel concerné
TC-NOM-01: résultat d’exécution non fourni (pas de preuve PASS)
[2026-04-19] — Suivi E-02¶
- Statut précédent : OUVERT
- Statut actuel : PARTIELLEMENT RÉSOLU
- Justification factuelle :
- Le guard force bien
Resource not foundsur plusieurs branches. - Mais il relance les
NotFoundExceptioninternes telles quelles, etvalidateSession()émetSession not found, donc homogénéité anti-enum incomplète. - Preuve de vérification :
- commit
c02d1d1 - fichiers
src/proofs/guards/share-proof.guard.ts:69-73etsrc/sharing/recipient-session/recipient-session.service.ts:80-91 - tests contractuels concernés
TC-ERR-05,TC-INV-06,TC-NEG-02: résultats d’exécution non fournis
[2026-04-19] — Suivi E-03¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- L’append audit lit le dernier hash puis écrit sans verrou sérialisant la tête de chaîne.
- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/audit/audit-journal.service.ts:44-47puis:65-79 - tests contractuels concernés
TC-NOM-14,TC-INV-14: résultats d’exécution non fournis
[2026-04-19] — Suivi E-04¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Le contrôle
maxConsultationsest fait avant la transaction/verrou. - Incrémentation ensuite sous verrou seulement, donc fenêtre de course persistante.
- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/sharing.service.ts:495-499puis:501-509 - test contractuel concerné
TC-NOM-15: résultat d’exécution non fourni
[2026-04-19] — Suivi E-05¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Une clé idempotence expirée est traitée comme absente sans purge de l’enregistrement.
- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/sharing.service.ts:702-705 - tests contractuels concernés
TC-ERR-19,TC-NEG-13: résultats d’exécution non fournis
[2026-04-19] — Suivi E-06¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
activateLink()ouvre une transaction pour l’état, puis appellecreateSession()hors du même manager transactionnel.- Preuve de vérification :
- commit
c02d1d1 - fichiers
src/sharing/sharing.service.ts:346-359etsrc/sharing/recipient-session/recipient-session.service.ts:33-35 - tests contractuels concernés
TC-INV-04,TC-INV-05: résultats d’exécution non fournis
[2026-04-19] — Suivi E-07¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
purgeLink()enchaîne audit/suppressions/anonymisations sans transaction atomique unique.- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/retention/retention.service.ts:96-145 - tests contractuels concernés
TC-NOM-19,TC-INV-12: résultats d’exécution non fournis
[2026-04-19] — Suivi E-08¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
expireOrphanLinks()faitupdatepuis append audit hors transaction atomique commune.- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/reconciliation/reconciliation.service.ts:86-101 - test contractuel concerné
TC-NOM-16: résultat d’exécution non fourni
[2026-04-19] — Suivi E-09¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- En cas de blocage OTP,
blockedUntilest mis à jour mais passhareLink.state = OTP_BLOCKED. - Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/otp/otp.service.ts:217-233 - tests contractuels concernés
TC-NOM-03,TC-ERR-07: résultats d’exécution non fournis
[2026-04-19] — Suivi E-10¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
TrustStoreServiceinjecteTRUST_STORE_CONFIG, mais aucun provider explicite de ce token n’est visible dans les modules sharing.- Preuve de vérification :
- commit
c02d1d1 - fichiers
src/sharing/trust-store/trust-store.service.ts:39-40,src/sharing/trust-store/trust-store.module.ts:17-20,src/sharing/sharing.module.ts:21-37 - tests contractuels concernés
TC-ERR-16,TC-INV-07: résultats d’exécution non fournis
[2026-04-19] — Suivi E-11¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
archive.pipe()vers unReadableavec cast forcéas unknown as NodeJS.WritableStreamreste un contournement de type.- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/export/export-composer.service.ts:164-170 - tests contractuels concernés
TC-NOM-08,TC-ERR-17: résultats d’exécution non fournis
[2026-04-19] — Suivi E-12¶
- Statut précédent : OUVERT
- Statut actuel : OUVERT
- Justification factuelle :
- Les écarts
12-16sont groupés dans le document step 7 sans granularité individuelle exploitable dans cette revue. - Preuve de vérification :
- source
PD-287-acceptability.md:36 - tests contractuels associés non individualisables dans l’entrée fournie
[2026-04-19] — Suivi E-13¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- La validation de session ne lie pas le
recipientSessionIdaushareLinkIdcourant. - Preuve de vérification :
- commit
c02d1d1 - fichiers
src/sharing/recipient-session/recipient-session.service.ts:76-78etsrc/sharing/sharing.service.ts:481-491 - test contractuel concerné
TC-NEG-05: résultat d’exécution non fourni
[2026-04-19] — Suivi E-14¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
reEncrypt()vérifie seulementisReady()et n’appelle pasverifyCertificateChain().- Preuve de vérification :
- commit
c02d1d1 - fichiers
src/sharing/crypto/pre-crypto.service.ts:125-127etsrc/sharing/trust-store/trust-store.service.ts:70-104 - tests contractuels concernés
TC-INV-07,TC-ERR-16,TC-NEG-08: résultats d’exécution non fournis
[2026-04-19] — Suivi E-15¶
- Statut précédent : OUVERT (documenté STUB attendu)
- Statut actuel : OUVERT
- Justification factuelle :
- Le mode PRE STUB est toujours présent et explicitement journalisé comme tel.
- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/crypto/pre-crypto.service.ts:194-197et:221-223 - note historique
PD-287-acceptability.md:45(écart attendu/documenté)
[2026-04-19] — Suivi E-16¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Contrôle d’accessibilité (état) fait avant transaction d’écriture, sans revalidation canonique sous verrou au moment critique.
- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/sharing.service.ts:484-487puis:501-509 - tests contractuels concernés
TC-NOM-09,TC-ERR-10: résultats d’exécution non fournis
[2026-04-19] — Suivi E-17¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
maybeExpireLink()absorbe l’erreur parcatch+warn(fail-open).- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/sharing.service.ts:644-646 - tests contractuels concernés
TC-NOM-10,TC-ERR-11: résultats d’exécution non fournis
[2026-04-19] — Suivi E-18¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Worker Merkle explicitement
stub, no-op, ancrage non implémenté. - Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/audit/merkle-anchor.worker.ts:38-46 - tests contractuels concernés
TC-NOM-14,TC-ERR-14: résultats d’exécution non fournis
[2026-04-19] — Suivi E-19¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
- Risque de race append hash-chain identique à E-03 (lecture dernier event sans verrou de sérialisation).
- Preuve de vérification :
- commit
c02d1d1 - fichier
src/sharing/audit/audit-journal.service.ts:44-47 - tests contractuels concernés
TC-INV-14: résultats d’exécution non fournis
[2026-04-19] — Suivi E-20¶
- Statut précédent : OUVERT
- Statut actuel : NON RÉSOLU
- Justification factuelle :
recipientSessionIdest placé en metadata d’événements d’audit.- Preuve de vérification :
- commit
c02d1d1 - fichiers
src/sharing/recipient-session/recipient-session.service.ts:52,src/sharing/sharing.service.ts:444,:518,:572 - tests contractuels concernés : résultats d’exécution non fournis
[2026-04-19] — Suivi E-21¶
- Statut précédent : OUVERT
- Statut actuel : OUVERT
- Justification factuelle :
- Les 4 écarts de sévérité moyenne ne sont pas détaillés individuellement dans le step 7 fourni.
- Preuve de vérification :
- source
PD-287-acceptability.md:40 - absence de détail unitaire exploitable pour statuts individuels dans l’entrée
3. Verdict d’acceptabilité (courant)¶
Verdict actuel : ⛔ REFUSÉ
Date : 2026-04-19
Motif synthétique : Les écarts actionnables majeurs/critiques restent non résolus ou partiellement résolus, et aucun résultat d’exécution TC-* (PASS) n’a été fourni pour justifier des clôtures contractuelles.
4. Historique des verdicts¶
| Date | Verdict | Version / commit | Commentaire |
|---|---|---|---|
| 2026-04-19 | ⛔ REFUSÉ | c02d1d1 | Initialisation historique step 8 ; verdict inchangé vs step 7 (NON_CONFORME) |