Aller au contenu

PD-281 — Scenarios de tests contractuels

1. References

  • Specification : PD-281-specification.md
  • Epic : EPIC-XX

2. Matrice de couverture

ID Invariant ID Critere ID Test Couverture Commentaire
INV-281-01-discrimination CA-03 TC-NOM-01 Oui Seuls status et mappings explicites declenchent Anchor enum.
INV-281-02-exclusion-classification CA-03 TC-NOM-02 Oui Les colonnes de classification explicites restent exclues.
INV-281-03-completude-types-z CA-02 TC-NOM-03 Oui Les 4 types Z obligatoires existent avec valeurs exactes.
INV-281-03-completude-types-z CA-08 TC-NOM-04 Oui Branche conditionnelle: deposit.status present => DepositStatus requis.
INV-281-03-completude-types-z CA-08 TC-NOM-05 Oui Branche inverse: deposit.status absent => DepositStatus non exige.
INV-281-04-non-regression-anchor-entity CA-06 TC-NOM-08 Oui Les checks Anchor entity restent strictement inchanges.
INV-281-05-idempotence CA-07 TC-NOM-07 Oui Deux runs identiques donnent memes resultats observables.
INV-281-06-resultat-global CA-01 TC-NOM-06 Oui verify-norm.sh en SUCCESS avec 0 echec Z-lint.
INV-281-06-resultat-global CA-04 TC-NOM-06 Oui AUDIT-SYNTHESIS.md affiche 9/9 PASS.
INV-281-06-resultat-global CA-05 TC-NOM-06 Oui Les _generated-z-lint.yaml ne contiennent plus de faux positifs cibles.
INV-281-07-modele-etats-lint N/A TC-INV-07 Oui Verifie absence d'exigence de transitions metier dans le scope QA.
INV-281-08-responsabilite-doc-only N/A TC-INV-08 Oui Les modifications restent dans le perimetre ProbatioVault-doc documentaire.

3. Scenarios de test - Flux nominaux

TEST-ID: TC-NOM-01
Reference spec: INV-281-01, CA-03

GIVEN
  - Jeu de faits valide (§5.1) contenant:
    - `anchor_batch.status`
    - `anchor_batch_event.event_type`
    - `key_envelope.envelope_type`
  - Mapping `_z_enum_type_mappings` connu et stable pour le run
WHEN
  - Generation des `_generated-z-lint.yaml`
THEN
  - Un check Anchor enum existe pour `anchor_batch.status` (ou son mapping explicite)
  - Aucun check Anchor enum n'existe pour les colonnes non `status` non mappees
AND
  - Le resultat est tracable dans les sections `anchored.enum_states`
TEST-ID: TC-NOM-02
Reference spec: INV-281-02, CA-03, CA-05

GIVEN
  - Jeu de faits valide incluant les 5 exclusions contractuelles:
    - `anchor_batch_event.event_type`
    - `key_envelope.envelope_type`
    - `legal_access_event.event_type`
    - `legal_mandate.validation_status`
    - `deposit.document_category`
WHEN
  - Generation des `_generated-z-lint.yaml`
THEN
  - Aucun de ces 5 couples n'apparait dans `anchored.enum_states`
AND
  - Le controle est strict (0 occurrence, non approxime)
TEST-ID: TC-NOM-03
Reference spec: INV-281-03, CA-02

GIVEN
  - Les fichiers cibles existent:
    - `RFC_3161.zed`
    - `NF_Z42_013.zed`
    - `ISO_14641.zed`
    - `PV_PRE.zed`
WHEN
  - Verification statique des types et valeurs enum
THEN
  - `TimestampBatchStatus` existe dans `RFC_3161.zed` avec EXACTEMENT `OPEN`,`SEALED`,`TIMESTAMPED`,`FAILED`
  - `AnchorBatchStatus` existe dans `NF_Z42_013.zed` et `ISO_14641.zed` avec EXACTEMENT `PENDING`,`BUILDING`,`SUBMITTED`,`PENDING_FINALITY`,`FINALIZED`,`FAILED`
  - `LegalReKeyStatus` existe dans `PV_PRE.zed` avec EXACTEMENT `ACTIVE`,`REVOKED`,`EXPIRED`,`COMPLETED`,`DESTROYED`
AND
  - Aucune valeur manquante, extra, ou differemment cased
TEST-ID: TC-NOM-04
Reference spec: INV-281-03, CA-08 (branche conditionnelle vraie)

GIVEN
  - La source de verite confirme `deposit.status` present (preuve versionnee)
WHEN
  - Verification des types Z dans `NF_Z42_013.zed` et `ISO_14641.zed`
THEN
  - `DepositStatus` est present dans les 2 fichiers
AND
  - L'absence dans l'un des deux entraine un verdict de non-conformite
TEST-ID: TC-NOM-05
Reference spec: INV-281-03, CA-08 (branche conditionnelle fausse)

GIVEN
  - La source de verite confirme `deposit.status` absent (preuve versionnee)
WHEN
  - Verification des exigences de la story PD-281
THEN
  - Aucune exigence `DepositStatus` n'est appliquee
AND
  - L'absence de `DepositStatus` ne peut pas etre classee en non-conformite PD-281
TEST-ID: TC-NOM-06
Reference spec: INV-281-06, CA-01, CA-04, CA-05

GIVEN
  - Artefacts regeneres depuis une entree valide et stable
WHEN
  - Execution de `verify-norm.sh` sur le lot des 9 normes cibles
THEN
  - Le statut global est `SUCCESS`
  - Le nombre d'echecs Z-lint est 0
  - `AUDIT-SYNTHESIS.md` affiche `9/9 PASS` pour Z-lint
AND
  - Les `_generated-z-lint.yaml` ne contiennent plus les faux positifs identifies
TEST-ID: TC-NOM-07
Reference spec: INV-281-05, CA-07

GIVEN
  - Meme commit, meme entree, meme environnement d'execution
WHEN
  - Generation + verification executees 2 fois consecutivement
THEN
  - Meme verdict global entre run#1 et run#2
  - Meme statut Z-lint (`9/9 PASS` attendu)
AND
  - Meme contenu fonctionnel des artefacts (diff vide ou equivalence canonique definie)
TEST-ID: TC-NOM-08
Reference spec: INV-281-04, CA-06

GIVEN
  - Baseline pre-PD-281 des checks Anchor entity et controles non cibles
WHEN
  - Regeneration post-PD-281 puis comparaison baseline/post
THEN
  - Les checks Anchor entity sont strictement identiques
  - Les controles hors scope Anchor enum restent inchanges
AND
  - Toute derive est classee non-conformite de non-regression

4. Scenarios de test - Cas d'erreur

TEST-ID: TC-ERR-01
Reference spec: ERR-281-01, §5.1

GIVEN
  - Au moins une donnee invalide de §5.1 (regex/longueur/format)
WHEN
  - Generation ou verification est lancee
THEN
  - Verdict `FAIL lint`
  - Cause explicite tracee avec la donnee en erreur
  - Aucun verdict de conformite ne peut etre prononce
TEST-ID: TC-ERR-02
Reference spec: ERR-281-02

GIVEN
  - Une colonne non-`status`, non mappee, apparait dans un Anchor enum check genere
WHEN
  - Controle de conformite Z-lint est evalue
THEN
  - Classement en non-conformite majeure (faux positif)
  - Story refusee
  - Cause rattachee a la regle de discrimination
TEST-ID: TC-ERR-03
Reference spec: ERR-281-03

GIVEN
  - Un type Z requis par §5.3 est absent de son fichier `.zed`
WHEN
  - `verify-norm.sh` est execute
THEN
  - Echec de verification
  - Motif explicite `type Z manquant`
  - Story non acceptee
TEST-ID: TC-ERR-04
Reference spec: ERR-281-04

GIVEN
  - Run complet effectue
WHEN
  - Le statut final de `verify-norm.sh` est different de `SUCCESS`
THEN
  - Story non acceptee
  - Le resultat est marque non conforme sans interpretation manuelle
TEST-ID: TC-ERR-05
Reference spec: ERR-281-05

GIVEN
  - Run complet effectue
WHEN
  - `AUDIT-SYNTHESIS.md` n'affiche pas exactement `9/9 PASS` pour Z-lint
THEN
  - Story non acceptee
  - Ecart de reporting trace comme bloquant
TEST-ID: TC-ERR-06
Reference spec: ERR-281-06

GIVEN
  - Comparaison baseline/post des checks Anchor entity
WHEN
  - Une difference est detectee hors scope
THEN
  - Story non acceptee
  - Ecart qualifie en regression
TEST-ID: TC-ERR-07
Reference spec: ERR-281-07

GIVEN
  - Deux runs consecutifs a entree identique
WHEN
  - Les verdicts ou artefacts divergent
THEN
  - Story non acceptee
  - Ecart qualifie non-idempotent

5. Tests d'invariants (non negociables)

Invariant Test(s) dedies Observable Commentaire
INV-281-01-discrimination TC-NOM-01, TC-ERR-02 Presence check uniquement pour status/mapping explicite Elimine faux positifs structurels.
INV-281-02-exclusion-classification TC-NOM-02 0 occurrence des 5 exclusions dans anchored.enum_states Exclusion stricte et non-regressive.
INV-281-03-completude-types-z TC-NOM-03, TC-NOM-04, TC-NOM-05, TC-ERR-03 Types/valeurs exacts et branche conditionnelle respectee Couvre completude + condition DepositStatus.
INV-281-04-non-regression-anchor-entity TC-NOM-08, TC-ERR-06 Diff baseline/post strictement nul sur Anchor entity Protection des controles existants.
INV-281-05-idempotence TC-NOM-07, TC-ERR-07 Verdict et artefacts fonctionnels stables sur 2 runs Determinisme du pipeline.
INV-281-06-resultat-global TC-NOM-06, TC-ERR-04, TC-ERR-05 SUCCESS, 0 echec Z-lint, 9/9 PASS Objectif contractuel principal.
INV-281-07-modele-etats-lint TC-INV-07 Aucune exigence de transition metier dans le verdict PD-281 Scope de controle borne a l'ancrage/types.
INV-281-08-responsabilite-doc-only TC-INV-08 Modifs limitees aux artefacts documentaires ProbatioVault-doc Respect du perimetre technique impose.
TEST-ID: TC-INV-07
Reference spec: INV-281-07

GIVEN
  - Dossier de preuve PD-281 constitue
WHEN
  - Revue des controles appliques pour la story
THEN
  - Aucun test n'exige de transitions metier entre valeurs enum
AND
  - Toute tentative d'ajout de contrainte de transition est classee hors perimetre PD-281
TEST-ID: TC-INV-08
Reference spec: INV-281-08

GIVEN
  - Liste des fichiers modifies par le changement PD-281
WHEN
  - Verification du perimetre des modifications
THEN
  - Seuls scripts/configs `.zed`/YAML/MD du perimetre documentaire cible sont modifies
AND
  - Aucune modification de code backend TypeORM n'est incluse

6. Tests de non-regression

Test ID Objet Observable Commentaire
TC-NR-01 Exclusions explicites historiques Les 5 couples exclus restent absents apres regeneration Evite retour des faux positifs connus.
TC-NR-02 Check Anchor entity Sortie Anchor entity strictement identique baseline/post Garantit orthogonalite Anchor entity vs Anchor enum.
TC-NR-03 Normes non cibles par l'ajustement enum Aucun ecart inattendu sur controles hors scope Anchor enum Controle de stabilite transverse.

7. Tests negatifs et adversariaux

Test ID Entree invalide / abus Resultat attendu Observable
TC-NEG-01 entity_name invalide (9bad_name, taille >64) FAIL lint immediat Cause explicite sur format §5.1.
TC-NEG-02 column_name invalide (Status, status-1) FAIL lint immediat Rejet regex/case §5.1.
TC-NEG-03 enum_value invalide (open, A-B) FAIL lint immediat Rejet jeu de caracteres/case.
TC-NEG-04 zed_file_path sans suffixe .zed FAIL lint immediat Rejet contrainte chemin.
TC-NEG-05 generated_config_path sans suffixe _generated-z-lint.yaml FAIL lint immediat Rejet contrainte chemin genere.
TC-NEG-06 norm_id hors ensemble ferme FAIL lint immediat Rejet de scope de run.
TC-NEG-07 Colonne de classification injectee comme faux status logique Non-conformite majeure si check enum produit Detection faux positif structurel.

8. Observabilite requise pour les tests

  • Etat systeme : contenu des .zed, _generated-z-lint.yaml, et AUDIT-SYNTHESIS.md avant/apres run.
  • Reponse API : NON APPLICABLE sur ce perimetre documentaire; observable remplace par statuts de commandes (SUCCESS/FAIL).
  • Journal d'audit : traces d'execution de verify-norm.sh avec motifs explicites en cas d'echec.
  • Evenement signe / horodate : NON APPLICABLE; horodatage des runs et artefacts versionnes requis pour rejouabilite.
  • Export probatoire : dossier de preuve incluant artefacts generes, diff baseline/post, et resultat du double run idempotence.

9. Regles non testables

Regle Raison Impact
Application stricte de CA-08 sur l'etat reel du SI (deposit.status existe/absent) La specification indique que cette donnee reste a confirmer; sans source de verite figee, le verdict ne peut etre absolument tranche sur un run donne Majeur
Verification exacte de "9 normes cibles" par nom La liste definitive des 9 normes est signalee "a confirmer" en entree; seule la cardinalite 9 est testable en l'etat Majeur
Evaluation des transitions metier internes des enums Explicitement hors perimetre PD-281 (INV-281-07) Mineur

10. Verdict QA

  • ⚠️ Testable partiellement (avec reserves listees)

Reserve principale: le contrat est majoritairement testable de facon deterministe (discrimination, completude, non-regression, resultat global, idempotence), mais le verdict strict sur la branche conditionnelle DepositStatus et sur l'inventaire nominal des 9 normes reste bloque tant que les donnees d'entree marquees "a confirmer" ne sont pas figees.