| TC-NOM-01 | Persistance payload complet | merkle-tree.service.spec.ts | persistTree > TC-NOM-01 |
| | merkle.e2e.spec.ts | POST /api/v1/merkle/trees > TC-NOM-01 |
| TC-NOM-02 | Récupération preuve identique | merkle-tree.service.spec.ts | getProofByLeaf > TC-NOM-02 |
| | merkle.e2e.spec.ts | GET /api/v1/merkle/proofs > TC-NOM-02 |
| TC-NOM-03 | Récupération arbre complet | merkle-tree.service.spec.ts | getTreeById > TC-NOM-03 |
| | merkle.e2e.spec.ts | GET /api/v1/merkle/trees/:tree_id > TC-NOM-03 |
| TC-NOM-04 | Recherche par feuille multi-arbres | merkle-tree.service.spec.ts | getProofByLeaf > TC-NOM-04 |
| | merkle.e2e.spec.ts | GET /api/v1/merkle/proofs > TC-NOM-04 |
| TC-NOM-05 | Inspection stockage (aucun clair) | merkle-tree.service.spec.ts | TC-INV-01: Data isolation |
| | merkle.e2e.spec.ts | TC-INV-01: Data isolation |
| TC-ERR-01 | merkle_root absent | merkle-tree.service.spec.ts | persistTree > TC-ERR-01 |
| | merkle.e2e.spec.ts | POST > TC-ERR-01 |
| TC-ERR-02 | hash non conforme | merkle-proof-verifier.spec.ts | isValidHashFormat > TC-ERR-02 |
| | merkle-tree.service.spec.ts | persistTree > TC-ERR-02 |
| | merkle.e2e.spec.ts | POST > TC-ERR-02 |
| TC-ERR-03 | batch_metadata incomplet | merkle-tree.service.spec.ts | persistTree > TC-ERR-03 |
| | merkle.e2e.spec.ts | POST > TC-ERR-03 |
| TC-ERR-04 | cardinalité ou proof invalide | merkle-proof-verifier.spec.ts | verifyAllProofs > TC-ERR-04 |
| | merkle-tree.service.spec.ts | persistTree > TC-ERR-04 |
| | merkle.e2e.spec.ts | POST > TC-ERR-04 |
| TC-ERR-05 | tree_id inexistant | merkle-tree.service.spec.ts | getTreeById > TC-ERR-05 |
| | merkle-tree.service.spec.ts | getProofByLeaf > TC-ERR-05 |
| | merkle.e2e.spec.ts | GET /trees/:id > TC-ERR-05 |
| | merkle.e2e.spec.ts | GET /proofs > TC-ERR-05 |
| TC-ERR-06 | Feuille non trouvée | merkle-tree.service.spec.ts | getProofByLeaf > TC-ERR-06 |
| | merkle.e2e.spec.ts | GET /proofs > TC-ERR-06 |
| TC-ERR-07 | tree_id fourni par appelant | merkle-tree.service.spec.ts | persistTree > TC-ERR-07 |
| | merkle.e2e.spec.ts | POST > TC-ERR-07 |
| | merkle-adversarial.e2e.spec.ts | TC-NEG-01 |
| TC-ERR-08 | hash uppercase | merkle-proof-verifier.spec.ts | isValidHashFormat > TC-ERR-08 |
| | merkle-proof-verifier.spec.ts | hasUppercaseHex > TC-ERR-08 |
| | merkle-proof-verifier.spec.ts | verifyProof > TC-ERR-08 |
| | merkle-tree.service.spec.ts | persistTree > TC-ERR-08 |
| | merkle.e2e.spec.ts | POST > TC-ERR-08 |
| TC-INV-01 | Aucun événement en clair | merkle-tree.service.spec.ts | TC-INV-01: Data isolation |
| | merkle.e2e.spec.ts | TC-INV-01: Data isolation |
| TC-INV-02 | Preuve identique byte-to-byte | merkle-proof-verifier.spec.ts | verifyProof > TC-INV-02 |
| | merkle-tree.service.spec.ts | getProofByLeaf > TC-NOM-02 |
| | merkle.e2e.spec.ts | TC-INV-02: Proof integrity |
| TC-INV-03 | Métadonnées immuables | merkle-adversarial.e2e.spec.ts | TC-INV-03: Metadata immutability |
| TC-INV-04 | Rejet mismatch métadonnées | merkle-tree.service.spec.ts | persistTree > TC-INV-04 |
| | merkle-adversarial.e2e.spec.ts | TC-INV-04: Metadata mismatch rejection |
| TC-INV-05 | Append-only | merkle-adversarial.e2e.spec.ts | TC-INV-05: Append-only enforcement |
| TC-NR-01 | Ajout arbre n'altère pas existants | merkle.e2e.spec.ts | TC-NR-01: Non-regression on add |
| TC-NR-02 | Recherche par feuille stable | merkle.e2e.spec.ts | TC-NR-02: Leaf search stability |
| TC-NEG-01 | Rejeu avec tree_id | merkle-adversarial.e2e.spec.ts | TC-NEG-01: Replay attack |
| TC-NEG-02 | Modification des preuves | merkle-adversarial.e2e.spec.ts | TC-NEG-02: Proof modification attack |