Aller au contenu

PD-80 — Décomposition step 6a

Metadata

  • Story : PD-80 — Scellement instantané < 1h
  • Date : 2026-03-12
  • Stratégie : séquentiel (11 modules, dépendances linéaires)

Parallelization

mode: sequential
reason: >
  Les 11 modules ont des dépendances d'import entre eux (entity → service → processor → module).
  Un mode by_level apporterait peu de gain car les interfaces sont partagées.
tasks:
  - id: T1
    module: CC-80-11
    agent: agent-developer
    description: Migration DDL — table urgent_seals + enum + index
    files: ["src/database/migrations/*-CreateUrgentSeals.ts"]
  - id: T2
    module: CC-80-01
    agent: agent-developer
    description: Entité UrgentSeal + enums + machine d'états close-world
    files: ["src/modules/urgent-seal/entities/**", "src/modules/urgent-seal/enums/**", "src/modules/urgent-seal/guards/**"]
    depends_on: [T1]
  - id: T3
    module: CC-80-09
    agent: agent-developer
    description: Configuration + validation clamp + check NTP
    files: ["src/modules/urgent-seal/services/seal-config.service.ts"]
    depends_on: [T2]
  - id: T4
    module: CC-80-05
    agent: agent-developer
    description: Service crypto DEK (envelope encryption HSM)
    files: ["src/modules/urgent-seal/services/seal-crypto.service.ts"]
    depends_on: [T2]
  - id: T5
    module: CC-80-08
    agent: agent-developer
    description: Service métriques Prometheus (4 métriques + P95)
    files: ["src/modules/urgent-seal/services/seal-metrics.service.ts"]
    depends_on: [T3]
  - id: T6
    module: CC-80-02
    agent: agent-developer
    description: Service admission (quota + rate-limit + DTO)
    files: ["src/modules/urgent-seal/services/admission.service.ts", "src/modules/urgent-seal/dto/**"]
    depends_on: [T2, T3, T4]
  - id: T7
    module: CC-80-06
    agent: agent-developer
    description: Service notification multi-canal (push + email + webhook)
    files: ["src/modules/urgent-seal/services/seal-notification.service.ts"]
    depends_on: [T2]
  - id: T8
    module: CC-80-03
    agent: agent-developer
    description: Processor TSA prioritaire (retries + transitions retour)
    files: ["src/modules/urgent-seal/processors/priority-tsa.processor.ts"]
    depends_on: [T2, T4, T5]
  - id: T9
    module: CC-80-04
    agent: agent-developer
    description: Processor ancrage prioritaire (mini-batch Merkle)
    files: ["src/modules/urgent-seal/processors/priority-anchor.processor.ts"]
    depends_on: [T2, T4, T5, T7]
  - id: T10
    module: CC-80-07
    agent: agent-developer
    description: Worker réconciliation (lock Redis + scan orphelins)
    files: ["src/modules/urgent-seal/services/seal-reconciliation.service.ts"]
    depends_on: [T2, T3]
  - id: T11
    module: CC-80-09
    agent: agent-developer
    description: Scheduler timeout + Controller API + Module NestJS
    files: ["src/modules/urgent-seal/schedulers/**", "src/modules/urgent-seal/controllers/**", "src/modules/urgent-seal/urgent-seal.module.ts"]
    depends_on: [T2, T3, T5, T6, T7, T8, T9, T10]

Manifest des tâches

# Module Description Agent Dépend de
T1 CC-80-11 Migration DDL developer
T2 CC-80-01 Entité + enums + machine d'états developer T1
T3 CC-80-09 Config + clamp + NTP developer T2
T4 CC-80-05 Crypto DEK (envelope encryption) developer T2
T5 CC-80-08 Métriques Prometheus developer T3
T6 CC-80-02 Admission (quota + rate-limit) developer T2,T3,T4
T7 CC-80-06 Notification multi-canal developer T2
T8 CC-80-03 Processor TSA prioritaire developer T2,T4,T5
T9 CC-80-04 Processor ancrage mini-batch developer T2,T4,T5,T7
T10 CC-80-07 Worker réconciliation developer T2,T3
T11 CC-80-10+09 Timeout scheduler + Controller + Module developer T2-T10

Stubs inter-PD

Dépendance Story Interface attendue Stub requis
TsaService PD-39 requestTimestamp(hash): TsaToken Non (existant)
MerkleService PD-54 buildTree(hashes): MerkleResult Non (existant)
AnchorService PD-55 anchor(merkleRoot): AnchorResult Non (existant)
FreemiumService PD-84 checkQuota(userId, plan): boolean Non (existant)
NotificationDispatch PD-105 sendPush(userId, payload) Non (existant)
CryptoModule (HSM) PD-35 wrapKey(dek, kekId): Buffer Non (existant)
AuditModule PD-31 emit(event): void Non (existant)

Aucun stub n'est requis — toutes les dépendances inter-PD sont existantes dans le backend.