Stability checkpoint — B-7-6/B-7-7 + customers D1 step 1 (MR !115) Three extractions batched in one MR per 'Réduire les vagues CI' rule : 1. Diagnostic B-7-6 : DiagnosticScenarioComponent generic widget used by 5 of 10 uniform-output scenarios (API Versioning, Idempotency, Rate Limiting, Kafka Enrich, VT Aggregate). Content projection slots for action + desc. 5 custom-output scenarios (Diff, Stress, Sched, Waterfall, Sankey) stay inline. html : 433 → 381 LOC. 2. Database B-7-7 : DatabaseHealthTabComponent extracted — owns its health-checks state + vacuum state + injections. Parent keeps healthChecks[] data array + passes as input. Cross-widget 'See raw data' dependency via single-hop event drilling through parent (no DatabaseStateService needed for one event). html : 237 → 141 LOC. 3. Customers B-7-2c step 1 : CustomerImportExportService extracted. Self-contained bounded service (no overlap with list/detail/ selection state) — owns importLoading/importProgress/importTotal/ importResults signals + handleFileSelected/exportJson/exportCsv methods. Component delegates via 3 thin wrappers. customers.ts : 838 → 715 LOC. Remaining customers split (list + detail + selection state) deferred — needs full CustomerStateService rewrite + signal-bridge widgets, 2-3h focused session.