PD-245 — Décomposition (Étape 6a)¶
Story : PD-245 — Format de preuve multi-chain Agent : Claude (orchestrateur) Date : 2026-02-19 Branche : feature/PD-245-format-preuve-multi-chain
Résumé¶
| Métrique | Valeur |
|---|---|
| Tâches totales | 6 |
| Agents impliqués | 2 (agent-developer, agent-qa-unit-integration) |
| Fichiers à créer/modifier | 6 |
| Complexité | Low |
| Durée estimée | 4-6 heures |
Tâches¶
T01 — Blockchain Constants¶
| Attribut | Valeur |
|---|---|
| ID | T01 |
| Agent | agent-developer |
| Contract | CC-245-01 |
| Dépendances | Aucune |
| Fichiers | src/modules/tsa/constants/blockchain.constants.ts (NOUVEAU) |
Livrables : - Type BlockchainIdentifier = 'ethereum_l2' | 'tezos' - Constante ACTIVE_BLOCKCHAINS: readonly BlockchainIdentifier[] - Fonction isBlockchainActive(blockchain: BlockchainIdentifier): boolean
Invariants à respecter : - INV-245-05: tezos NE PEUT être utilisé que si isBlockchainActive('tezos') = true
T02 — Proof Errors¶
| Attribut | Valeur |
|---|---|
| ID | T02 |
| Agent | agent-developer |
| Contract | CC-245-02 |
| Dépendances | Aucune |
| Fichiers | src/modules/tsa/errors/proof.errors.ts (NOUVEAU) |
Livrables : - Constante INVALID_BLOCKCHAIN_IDENTIFIER = 'PROOF_001' - Constante BLOCKCHAIN_NOT_ACTIVE = 'PROOF_002' - Classe ProofValidationException avec structure payload (code, message, details)
Invariants à respecter : - INV-245-06: null, vide, casse incorrecte, types non-string => PROOF_001
T03 — Inclusion Proof Interface¶
| Attribut | Valeur |
|---|---|
| ID | T03 |
| Agent | agent-developer |
| Contract | CC-245-03 |
| Dépendances | T01 |
| Fichiers | src/modules/tsa/interfaces/inclusion-proof.interface.ts (MODIFIER) |
Livrables : - Champ blockchain: BlockchainIdentifier ajouté à l'interface InclusionProof - Import du type depuis blockchain.constants.ts
Invariants à respecter : - INV-245-01: champ blockchain obligatoire non nul - INV-245-02: valeur dans enum BlockchainIdentifier
T04 — Proof Service¶
| Attribut | Valeur |
|---|---|
| ID | T04 |
| Agent | agent-developer |
| Contract | CC-245-04 |
| Dépendances | T01, T03 |
| Fichiers | src/modules/tsa/services/proof.service.ts (MODIFIER) |
Livrables : - Injection de blockchain: 'ethereum_l2' à la création de toute preuve
Invariants à respecter : - INV-245-01: toute preuve émise contient blockchain non nul - INV-245-04: blockchain = 'ethereum_l2' pour toutes les preuves actuelles
T05 — Proof Verifier Service¶
| Attribut | Valeur |
|---|---|
| ID | T05 |
| Agent | agent-developer |
| Contract | CC-245-05 |
| Dépendances | T01, T02, T03 |
| Fichiers | src/modules/tsa/services/proof-verifier.service.ts (MODIFIER) |
Livrables : - Validation du champ blockchain : - Absent → rétrocompat ethereum_l2 - null/vide/casse/non-string → PROOF_001 - Valeur inconnue → PROOF_001 - tezos non actif → PROOF_002 - ethereum_l2 ou tezos actif → accepté
Invariants à respecter : - INV-245-02: valeur doit appartenir à BlockchainIdentifier - INV-245-03: absence de champ => ethereum_l2 (rétrocompat) - INV-245-05: tezos rejeté si non actif - INV-245-06: null/vide/casse/types non-string => PROOF_001
T06 — Proof Tests¶
| Attribut | Valeur |
|---|---|
| ID | T06 |
| Agent | agent-qa-unit-integration |
| Contract | CC-245-06 |
| Dépendances | T01, T02, T03, T04, T05 |
| Fichiers | 3 fichiers tests (NOUVEAU) |
Fichiers à créer : - src/modules/tsa/constants/__tests__/blockchain.constants.spec.ts - src/modules/tsa/services/__tests__/proof.service.spec.ts - src/modules/tsa/services/__tests__/proof-verifier.service.spec.ts
Tests à implémenter : - TC-245-01 à TC-245-14 (14 tests total)
Invariants à respecter : - Couverture 100% des CA (et donc tous les INV via matrice de traçabilité) - Tests déterministes et reproductibles
Ordre d'exécution¶
Séquence : 1. T01 + T02 (parallélisables) 2. T03 (dépend de T01) 3. T04 + T05 (parallélisables après T03) 4. T06 (après tous les autres)
Validation pré-commit¶
Avant chaque commit : - npm run lint — ESLint - npm run format:check — Prettier - npx tsc --noEmit — TypeScript - npm test — Jest
Fin de la décomposition.