Aller au contenu

PD-284 — Revue d'acceptabilité (post-correction)

1. Références

  • Spécification : PD-284-specification.md (v3)
  • Tests contractuels : PD-284-tests.md (v3)
  • Acceptabilité existante : PD-284-acceptability.md
  • Date de revue : 2026-03-13
  • Reviewer : Claude (auditeur technique indépendant, post-correction)

2. Suivi des écarts (append-only)

[2026-03-13] — Suivi E-01

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • E-01 signalait que les composants C8 (UrgentSealButton) et C9 (SealProgressCard) n'étaient pas injectés dans le contexte d'audit LLM. L'écart est un artefact d'injection de prompt, pas un écart de code.
  • src/components/seal/UrgentSealButton.tsx (200 lignes) existe, implémente INV-284-01/02/03/04, avec computed eligibility, branded types, tooltips contractuels.
  • src/components/seal/SealProgressCard.tsx (495 lignes) existe, implémente INV-284-05/06/08/09 avec dérivation pure des flags serveur.
  • src/__tests__/seal/urgent-button.test.tsx (199 lignes) couvre TC-NOM-01/02/03, TC-ERR-05 et le scénario actif (INV-284-04).
  • Phase 1 : UrgentSealButton.tsx 100% coverage (RNTL).
  • Preuve de vérification :
  • fichier src/components/seal/UrgentSealButton.tsx (présent, 200 lignes)
  • fichier src/components/seal/SealProgressCard.tsx (présent, 495 lignes)
  • fichier src/__tests__/seal/urgent-button.test.tsx (présent, 199 lignes, TC-NOM-01/02/03 PASS)

[2026-03-13] — Suivi E-02

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • E-02 signalait que C14 (SealDetailScreen) n'était pas exporté dans le contexte d'audit. Artefact d'injection, pas écart de code.
  • src/screens/vault/SealDetailScreen.tsx (427 lignes) existe, intègre C8/C9/C10, gère l'orchestrateur (C7), le toast (erreur contrôlée §3), le lifecycle cleanup, les sélecteurs Zustand granulaires (CA-284-14).
  • Preuve de vérification :
  • fichier src/screens/vault/SealDetailScreen.tsx (présent, 427 lignes)
  • intégration confirmée : imports UrgentSealButton, SealProgressCard, SealExpertPanel

[2026-03-13] — Suivi E-03

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Coquille documentaire ("6 fichiers tests" vs 7 réels). Aucune correction observée dans le document d'acceptabilité.
  • Impact mineur : la coquille n'affecte pas la conformité fonctionnelle.

[2026-03-13] — Suivi E-04

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Le mapping regex §5.8 reste non auditable ligne-à-ligne. Limitation structurelle du format de la spécification.
  • Les validations Zod dans src/types/seal.ts implémentent les regex contractuelles, mais la correspondance 1:1 avec le tableau §5.6 n'est pas vérifiable sans mapping explicite.
  • Impact mineur : les tests de validation (types-validation.test.ts) couvrent les cas nominaux et invalides.

[2026-03-13] — Suivi T-01

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle :
  • src/__tests__/seal/urgent-button.test.tsx (199 lignes) couvre :
    • TC-NOM-01 : minor ne voit pas le bouton (INV-284-02) — queryByTestId("urgent-seal-button") retourne null
    • TC-NOM-02 : bouton visible et actif pour standard avec quota > 0 (INV-284-01)
    • TC-NOM-03 : quota épuisé désactive le bouton (CA-284-03) — disabled + raison explicite "Quota"
    • TC-NOM-15 (équivalent) : has_active_urgent_seal=true désactive le bouton + tooltip "cours"
    • TC-ERR-05 : account_type invalide traité comme non-éligible
  • Phase 1 reporte 173/173 tests PASS, UrgentSealButton.tsx à 100% coverage.
  • Preuve de vérification :
  • fichier src/__tests__/seal/urgent-button.test.tsx (présent, 199 lignes)
  • Phase 1 : 173 tests PASS, 8 suites

[2026-03-13] — Suivi T-02

  • Statut précédent : OUVERT
  • Statut actuel : NON RÉSOLU
  • Justification factuelle :
  • Aucun fichier de test pour SealProgressCard (C9) n'a été créé.
  • TC-NOM-14 (badge Hors ligne en perte réseau) reste non couvert par test automatisé.
  • Le composant existe et est fonctionnel (495 lignes), mais l'absence de tests unitaires composant est confirmée.
  • Preuve de vérification :
  • ls src/__tests__/seal/ ne contient aucun fichier *progress* ou *card*
  • TC-NOM-14 absent de la suite de tests

[2026-03-13] — Suivi T-03

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Aucun fichier de test dédié pour SealExpertPanel (C10).
  • TC-NOM-11/12 restent couverts indirectement via la logique store.
  • Impact mineur : la couverture indirecte reste acceptable pour ce composant de présentation.

[2026-03-13] — Suivi T-04

  • Statut précédent : OUVERT
  • Statut actuel : NON RÉSOLU
  • Justification factuelle :
  • Aucun fichier sse-client.test.ts n'a été créé dans src/__tests__/seal/.
  • TC-NOM-08 (backoff 1s/2s/4s puis polling) et TC-NOM-09 (retour SSE depuis polling) restent non couverts par test automatisé.
  • Le module src/seal/sse-client.ts (429 lignes) implémente le backoff exponentiel, failover polling, et reprise SSE parallèle, mais sans tests unitaires.
  • Preuve de vérification :
  • ls src/__tests__/seal/ ne contient aucun fichier *sse*
  • TC-NOM-08/09 absents de la suite de tests

[2026-03-13] — Suivi T-05

  • Statut précédent : OUVERT
  • Statut actuel : NON RÉSOLU
  • Justification factuelle :
  • Aucun fichier orchestrator.test.ts n'a été créé dans src/__tests__/seal/.
  • La séquence POST→GET→SSE (CA-284-05) reste non testée unitairement.
  • Le module src/seal/orchestrator.ts (452 lignes) implémente la séquence complète avec debounce, fallback R-02, cleanup lifecycle.
  • Note : un fichier src/export/__tests__/orchestrator.test.ts existe mais concerne l'export, pas le seal orchestrator.
  • Preuve de vérification :
  • ls src/__tests__/seal/ ne contient aucun fichier *orchestrator*
  • TC-NOM-04/05 (séquence POST→GET→SSE) absents de la suite seal

[2026-03-13] — Suivi T-06

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Labels TC dans urgent-button.test.tsx sont cohérents (TC-NOM-01/02/03, TC-ERR-05).
  • Mismatch dans seal-store.test.ts non vérifié comme corrigé.
  • Impact mineur.

[2026-03-13] — Suivi T-07

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • TC-NOM-18 (validation payload SSE par état) reste partiel.
  • Impact mineur : la validation Zod est systématique dans le code.

[2026-03-13] — Suivi T-08

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Labels TC dans notifications.test.ts non vérifiés comme corrigés.
  • Impact mineur.

[2026-03-13] — Suivi T-09

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Suite TC-NR non formalisée en fichier de test dédié.
  • Impact mineur : les tests de non-régression sont couverts implicitement par les tests existants.

[2026-03-13] — Suivi S-01

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Regex UUID /^[0-9a-fA-F-]{36}$/ reste permissive (accepte 36 tirets).
  • Atténuation confirmée : validation serveur en amont, branded types côté client.
  • Impact mineur.

[2026-03-13] — Suivi S-02

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Non-null assertions ! confirmées dans orchestrator.ts lignes 377-426 (fonction statusResponseToSealEvent).
  • Exemple : response.hash_document!, response.tsa_token_ref!, response.merkle_root!.
  • Atténuation : la fonction est appelée après validation du status (switch exhaustif), les champs optionnels Zod sont définis par état.
  • Impact mineur.

[2026-03-13] — Suivi S-03

  • Statut précédent : OUVERT
  • Statut actuel : OUVERT
  • Justification factuelle :
  • Regex PROOF_PACKAGE_URL /^https:\/\/.+$/ reste trop permissive.
  • Atténuation confirmée : source backend trusted, URL jamais saisie par l'utilisateur.
  • Impact mineur.

3. Verdict d'acceptabilité (courant)

Verdict actuel : ACCEPTE AVEC RESERVES Date : 2026-03-13 Motif synthétique : 3 écarts MAJEUR non résolus (T-02, T-04, T-05 — tests absents pour SealProgressCard, SSE client, orchestrateur). 2 écarts MAJEUR résolus (E-01, E-02 — artefacts d'injection). 1 écart MAJEUR résolu (T-01 — tests UrgentSealButton créés, 100% coverage). 10 écarts MINEUR ouverts, tous atténués. La logique métier critique (state machine, event processor, store, secure storage) reste à 80-100% coverage.

4. Historique des verdicts

Date Verdict Version / commit Commentaire
2026-03-13 ACCEPTE AVEC RESERVES Phase 1 + Phase 2 (initial) 4 MAJEUR + 7 MINEUR. Coverage 47.8% global, >80% modules logiques critiques.
2026-03-13 ACCEPTE AVEC RESERVES Post-correction 3 MAJEUR résolus (E-01/E-02/T-01), 3 MAJEUR non résolus (T-02/T-04/T-05). 10 MINEUR ouverts atténués.