PD-265 — Décomposition multi-agents (Step 6a)¶
Date : 2026-03-02 Mode : Exécution directe (claude -p a produit code + tests sans phase de décomposition séparée)
1. Stratégie d'implémentation¶
Le subprocess claude -p a produit l'implémentation complète (14 composants, 37 fichiers, 222 tests) en une seule passe, sans document de décomposition intermédiaire. L'orchestrateur a ensuite audité le code vs code contracts et corrigé 7 écarts MAJOR en phase 6c.
Parallélisation : sequential (exécution unique)
2. Composants implémentés (C1-C14)¶
| # | Composant | Fichiers principaux | Tests | Statut |
|---|---|---|---|---|
| C1 | TsaMonitoringConfigService | config/tsa-monitoring.config.ts | tsa-monitoring-config.spec.ts, tsa-monitoring-cross-constraints.spec.ts | OK |
| C2 | Entities + Migration | entities/*.entity.ts, migrations/1741700000000-*.ts | — | OK |
| C3 | TsaDegradationStateService | services/tsa-degradation-state.service.ts, enums/*.enum.ts | tsa-degradation-state.service.spec.ts, enums.spec.ts | OK |
| C4 | NtsMonitoringService | services/nts-monitoring.service.ts, schedulers/nts-monitoring.scheduler.ts | nts-monitoring.service.spec.ts | OK (post-fix MAJOR-01) |
| C5 | RevocationMonitoringService | services/revocation-monitoring.service.ts, schedulers/revocation-monitoring.scheduler.ts | — | STUB (OCSP/CRL) |
| C6 | TrustedListService | services/trusted-list.service.ts, schedulers/trusted-list.scheduler.ts | — | STUB (XML fetch) |
| C7 | KeyLifecycleExtensionService | services/key-lifecycle-extension.service.ts, schedulers/key-lifecycle-sla.scheduler.ts | key-lifecycle-extension.service.spec.ts | OK |
| C8 | RehorodatageService + Processor | services/rehorodatage.service.ts, processors/rehorodatage.processor.ts, schedulers/rehorodatage.scheduler.ts | — | OK (post-fix MAJOR-02) |
| C9 | TstEmissionGuard | guards/tst-emission.guard.ts | tst-emission-guard.spec.ts | OK (post-fix MAJOR-04) |
| C10 | MaintenanceToggleService + Controller | services/maintenance-toggle.service.ts, controllers/tsa-monitoring.controller.ts | maintenance-toggle.service.spec.ts | OK (post-fix MAJOR-05) |
| C11 | TsaMetricsService | services/tsa-metrics.service.ts | tsa-metrics.service.spec.ts | OK (InternalGauge STUB) |
| C12 | TsaAuditEventService | services/tsa-audit-event.service.ts | — | STUB: PD-37 (signature + persistence) |
| C13 | DegradationEscalationService | services/degradation-escalation.service.ts, schedulers/degradation-escalation.scheduler.ts | degradation-escalation.service.spec.ts | OK |
| C14 | CI Label Validation | __tests__/hsm-label-validation.spec.ts | hsm-label-validation.spec.ts | OK |
3. Corrections Phase 6c (post-audit)¶
| MAJOR | Écart | Correction |
|---|---|---|
| 01 | measureOffset absent de ReferenceClockService | Méthode publique ajoutée, NtsMonitoringService délègue |
| 02 | BullMQ processor manquant pour re-horodatage | RehorodatageProcessor créé + queue TSA_REHORODATAGE_QUEUE |
| 03 | supersedesTstId absent de TimestampToken | Colonne ajoutée entity + migration DDL |
| 04 | TstEmissionGuard non câblé | Check canEmitTst() ajouté dans BatchTimestampProcessor |
| 05 | Auth manquante sur controller maintenance | @UseGuards(JwtAuthGuard) ajouté sur POST /tsa/maintenance |
| 06 | Signature audit non-fonctionnelle | STUBs annotés PD-37, canonical préservé |
| 07 | config.schema.ts absent | Déviation : ConfigModule.forFeature() = pattern NestJS correct |
4. STUBs inter-PD documentés¶
| STUB | Story destination | Description |
|---|---|---|
| OCSP check | PD-265 (phase 2) | RevocationMonitoringService.checkOcsp() retourne 'GOOD' |
| CRL check | PD-265 (phase 2) | RevocationMonitoringService.checkCrl() retourne 'NOT_LISTED' |
| Trusted List fetch | PD-265 (phase 2) | TrustedListService.refreshTrustedList() no-op |
| TST detection | PD-265 (phase 2) | RehorodatageService.detectEligibleTsts() retourne [] |
| Audit signature | PD-37 | TsaAuditEventService.signAndPersist() — signature vide |
| Audit persistence | PD-37 | TsaAuditEventService — pas de AuditLogService |
| Prometheus metrics | PD-265 (phase 2) | InternalGauge STUB, remplacer par prom-client |
5. Résultats¶
- tsc --noEmit : 0 erreurs
- 14 suites, 222 tests : tous verts
- Fichiers créés : 37 (services, entities, enums, guards, schedulers, processors, tests, migration, config, controller, DTOs, interfaces)