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.tsimplé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 :
minorne 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=truedésactive le bouton + tooltip "cours" - TC-ERR-05 : account_type invalide traité comme non-éligible
- TC-NOM-01 :
- 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 ligneen 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.tsn'a été créé danssrc/__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.tsn'a été créé danssrc/__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.tsexiste 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.tsxsont cohérents (TC-NOM-01/02/03, TC-ERR-05). - Mismatch dans
seal-store.test.tsnon 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.tsnon 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 dansorchestrator.tslignes 377-426 (fonctionstatusResponseToSealEvent). - 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. |