Aller au contenu

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

T01 ─────┐
         ├──► T03 ──► T04 ──┐
T02 ─────┤                  ├──► T06
         └──► T05 ──────────┘

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.