Skip to content

Commit cab98ca

Browse files
committed
docs(overclock): documentar pestana Overclock F0-F7 en README/ARCHITECTURE/CATALOG/CHANGELOG
README: badge 1692, fila OVERCLOCK en pilares, seccion 8 Overclock honesto, filas en motores/paginas/Pruebas. ARCHITECTURE: motor, 3 rutas de persistencia, suite 1692. CATALOG: seccion separada sin filas de tabla (guard de ids intacto). CHANGELOG: [Unreleased] F0-F7. Docs-consistency 16/16.
1 parent 15a0f0e commit cab98ca

4 files changed

Lines changed: 64 additions & 21 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22

33
Formato basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/).
44

5+
## [Unreleased]
6+
7+
### Anadido
8+
- **Pestana Overclock** (`OverclockPage`, ruta `overclock`; Benchmark intacto). 6 secciones: procesador, graficos, memoria, juegos, estabilidad, resultado. i18n es-ES/en-US.
9+
- **Catalogo declarativo de 11 knobs** (6 NVIDIA, 2 CPU por politica, 2 memoria solo lectura, 1 AMD) con riesgo, evidencia y dependencias; ningun knob con evidencia `Unknown`.
10+
- **Escritura real donde el vendor la permite**: NVIDIA via NVML (relojes + potencia), AMD via ADLX (potencia), CPU via `powercfg` + flujo guiado XTU/IPF. Limites honestos: sin MSR no hay OC de reloj de CPU; sin SPD no hay timings de memoria.
11+
- **Tuning con biseccion + recovery D4**: checkpoint antes de cada paso; 1er arranque sucio avisa (Revertir/Mantener/Descartar), 2do consecutivo revierte a LastKnownGood.
12+
- **Delta honesto**: solo total del perfil (mediana, suelo 3 %) + techo por eje; prohibido atribuir delta por knob.
13+
- **Puerta anti-cheat en perfiles de juego**: KernelLevel bloquea siempre; sin `LaunchOptions` ni `ProcessPriority` por construccion.
14+
- **Docs**: README, ARCHITECTURE, OPTIMIZATION-CATALOG y CHANGELOG documentan Overclock.
15+
16+
### Probado
17+
- Suite completa: **1692 passed, 0 failed** en Release (referencia 2.2.3: 1278; Overclock aporta +414).
18+
519
## [2.2.3] - 2026-10-07
620

721
Bajada de correccion tras una auditoria completa del pipeline UI -> IPC -> servicio -> Core (21 rondas). Todos los hallazgos quedaron cerrados: ninguno sigue pendiente.

‎README.md‎

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![.NET 10](https://img.shields.io/badge/.NET%2010-512BD4?style=flat-square&logo=dotnet&logoColor=white)](global.json)
77
[![WinUI 3](https://img.shields.io/badge/WinUI%203-00B7C3?style=flat-square&logo=windows&logoColor=white)](https://microsoft.github.io/microsoft-ui-xaml/)
88
[![Build](https://img.shields.io/badge/build-passing-brightgreen?style=flat-square)](https://github.com/Pyromesis/CA-O/actions)
9-
[![Tests](https://img.shields.io/badge/tests-1278%20passed-brightgreen?style=flat-square)](#-pruebas)
9+
[![Tests](https://img.shields.io/badge/tests-1692%20passed-brightgreen?style=flat-square)](#-pruebas)
1010
[![Release](https://img.shields.io/badge/release-v2.2.3-blue?style=flat-square)](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.3)
1111
[![License](https://img.shields.io/badge/license-privado-lightgrey?style=flat-square)](#licencia)
1212

@@ -50,7 +50,7 @@ La UI **siempre eleva** (`app.manifest` `requireAdministrator` → UAC en cada i
5050
**En números:**
5151
- **93 optimizaciones** con efecto real verificado (transaccionales) + `AllLegacy` para trazabilidad
5252
- **12 páginas** WinUI 3 con Mica, `NavigationView`, animaciones de entrada, i18n `es-ES`/`en-US` instantáneo
53-
- **1278 tests** en 6 suites (todos en verde en el release 2.2.3)
53+
- **1692 tests** en 6 suites (todos en verde)
5454
- **0 telemetría externa**, 0 dependencias web, 0 comandos arbitrarios
5555

5656
---
@@ -63,6 +63,7 @@ La UI **siempre eleva** (`app.manifest` `requireAdministrator` → UAC en cada i
6363
| **OPTIMIZE** | Solo lo medido genera recomendación | `RecommendationEngine` clasifica exactamente 1 bucket por optimización consultando `SystemContext` real |
6464
| **BENCHMARK** | Sin promesas falsas | Flujo 5 pasos con mediana de trials, suelo de ruido 3 %, veredictos `Mejora medible` / `Sin mejora` / `Regresión`. No se simulan FPS |
6565
| **RECOVER** | Todo es reversible | Snapshot **antes** de mutar, journal `transactions/{txid}.jsonl`, hash-chain `history.jsonl` + `integrity.json` SHA-256 |
66+
| **OVERCLOCK** | Tuning con evidencia, sin promesas | Catalogo declarativo de knobs + TuningEngine (biseccion) + recovery D4 + delta no aditivo con suelo 3 % |
6667

6768
**Decisión fundacional:** *¿Cuál es la mejor configuración para ESTE Windows, ESTE hardware, ESTE driver, ESTE juego y ESTE objetivo?* — no *¿qué tweaks tiene Internet?*
6869

@@ -80,7 +81,7 @@ La UI **siempre eleva** (`app.manifest` `requireAdministrator` → UAC en cada i
8081
| **Perf** | System.Diagnostics.PerformanceCounter | **10.0.0** | `% DPC Time` / `% Interrupt Time` |
8182
| **Servicios** | System.ServiceProcess.ServiceController | **8.0.1** | `CAO.Privileged` como `BackgroundService` |
8283
| **Build** | `Directory.Packages.props` + `Directory.Build.props` + `Version.props` (single source `2.2.3`) | Centralizado | Un lugar para bump de versión/paquetes |
83-
| **Tests** | xUnit 2.9.2 + Microsoft.NET.Test.Sdk 17.11.1 | — | 1278 tests en Release |
84+
| **Tests** | xUnit 2.9.2 + Microsoft.NET.Test.Sdk 17.11.1 | — | 1692 tests en Release |
8485
| **Seguridad** | CodeQL + `dotnet audit` + Dependabot + CycloneDX SBOM | CI | Cadena de suministro auditada |
8586

8687
> **Self-contained:** los artefactos de release no requieren runtime instalado. El instalador es `self-contained` sin `single-file` (requisito WinUI 3).
@@ -206,12 +207,12 @@ CA-O.sln (.NET 10 · LangVersion 13 · WinUI 3)
206207
│ ├── CA-O.Setup/ # Consola fallback (sc.exe create/start)
207208
│ └── CA-O.Uninstaller/ # ARP uninstaller (sc stop/delete + rmdir)
208209
├── tests/ # 1278 tests, Release
209-
│ ├── CA-O.Core.Tests/ # 786: catalog (93), AnalysisStateStore, GameCompatibility, transacciones
210-
│ ├── CA-O.Integration.Tests/ # 49: E2E 9 pruebas (8 casos + benchmark) + TransactionJournalRecovery + ArchitectureDependency
211-
│ ├── CA-O.Security.Tests/ # 248: IpcValidator (+timer/nonce), ReplayCache, CommandPolicy (incl. `@` ACPI)
212-
│ ├── CA-O.Infrastructure.Tests/ # 55: HistoryRobustness, SnapshotRepository, PhantomBatchValidation
210+
│ ├── CA-O.Core.Tests/ # 928: catalog (93), AnalysisStateStore, GameCompatibility, transacciones
211+
│ ├── CA-O.Integration.Tests/ # 60: E2E 9 pruebas (8 casos + benchmark) + TransactionJournalRecovery + ArchitectureDependency
212+
│ ├── CA-O.Security.Tests/ # 274: IpcValidator (+timer/nonce), ReplayCache, CommandPolicy (incl. `@` ACPI)
213+
│ ├── CA-O.Infrastructure.Tests/ # 191: HistoryRobustness, SnapshotRepository, PhantomBatchValidation
213214
│ ├── CA-O.Benchmark.Tests/ # 17: suelo 3%, mediana
214-
│ ├── CA-O.UI.Tests/ # 105: ViewModels, Localizer, AppUpdater (Zip-Slip), DriverConflicts
215+
│ ├── CA-O.UI.Tests/ # 222: ViewModels, Localizer, AppUpdater (Zip-Slip), DriverConflicts
215216
│ └── CA-O.Benchmark.Tests/
216217
├── docs/ # ARCHITECTURE.md, SECURITY.md, THREAT-MODEL.md, OPTIMIZATION-CATALOG.md, IPC_PROTOCOL.md, TRANSACTIONS.md
217218
├── scripts/ # build.ps1, test.ps1, verify.ps1, build-release.ps1, package.ps1, install-privileged-service.ps1, harden-data-acls.ps1, …
@@ -545,6 +546,17 @@ Detecta juegos (Valorant, Fortnite, Apex, CS2, OW2, LoL, R6, CoD, Destiny 2) y a
545546

546547
---
547548

549+
550+
### 8. Overclock honesto
551+
552+
Pestana `Overclock` (`OverclockPage.xaml`, ruta `overclock`; Benchmark intacto). 6 secciones: procesador, graficos, memoria, juegos, estabilidad, resultado.
553+
554+
- **Catalogo declarativo, no tweaks sueltos.** 11 knobs con riesgo, evidencia y dependencias (`Core/Overclock/Catalog/OverclockCatalog.cs`): 6 NVIDIA, 2 CPU por politica, 2 memoria solo lectura, 1 AMD. Ninguno con evidencia `Unknown`.
555+
- **Escritura real donde el vendor la permite.** GPU NVIDIA via NVML (`NvmlInterop.cs`: relojes + limite de potencia), GPU AMD via ADLX (`AmdAdlxInterop.cs`: limite de potencia), CPU via `powercfg` + flujo guiado XTU/IPF. Sin XTU no hay OC de CPU: se dice, no se finge.
556+
- **Limites honestos por construccion.** Sin acceso MSR no hay overclock de reloj de CPU desde una app sin driver firmado; el SPD de memoria solo lo expone el firmware en el arranque. CPU = politica + XTU guiado, memoria = SMBIOS solo lectura.
557+
- **Tuning con biseccion y recovery D4** (`TuningEngine.cs`, `OverclockRecoveryService.cs`). Checkpoint antes de cada paso en `%ProgramData%\CA-O\overclock\runs\`; primer arranque sucio avisa con 3 botones, segundo consecutivo revierte a LastKnownGood.
558+
- **Delta honesto: el OC no es aditivo.** Solo delta total del perfil (mediana, suelo 3 %) + techo que limito cada eje; prohibido atribuir delta por knob (`OverclockDeltaBuilder`, test `Delta_NeverCarriesAKnob`).
559+
- **Puerta anti-cheat.** KernelLevel bloquea aunque el escaneo salga limpio; un escaneo que no pudo mirar no es un equipo limpio. Sin `LaunchOptions` ni `ProcessPriority` por construccion (guard estatico `OverclockGameSafetyTests`).
548560
## Motores internos
549561

550562
| Motor | Ubicación | Qué hace |
@@ -556,6 +568,7 @@ Detecta juegos (Valorant, Fortnite, Apex, CS2, OW2, LoL, R6, CoD, Destiny 2) y a
556568
| **Compatibilidad** | `Core/Compatibility/KnownIssueMatcher` + JSON store | DB versionada con override drop-in `%ProgramData%\CA-O\known-issues.json` |
557569
| **Gaming** | `Core/Gaming/GameCompatibilityPolicy` + `Infrastructure/Gaming/*` | Matriz 24 entradas, lectura `Services`/`drivers` |
558570
| **Benchmark** | `Infrastructure/Benchmarking/SystemBenchmarkRunner` | CPU/mem/disco, mediana, suelo 3 % |
571+
| **Overclock** | `Core/Overclock/` + `Infrastructure/Overclock/` | Knobs declarativos + TuningEngine + recovery D4 + delta no aditivo |
559572
| **Análisis** | `Infrastructure/Services/SystemAnalysisService` | `WhenAll` paralelo + `CancellationToken` + 5 s timeout por provider |
560573
| **Scoring perfiles** | `Core/Scoring/ProfileEngine` | Safe/Balanced/Gaming/Competitive/Privacy/Security/Maintenance/Expert/Custom — consultan `SystemContext`, ninguno es lista fija |
561574

@@ -608,6 +621,7 @@ Cada perfil es **dinámico** — no es lista fija. Ej. `maximum-power-plan` solo
608621
| **Gaming** | `AnalyzePage.xaml` (sección juegos) | Juegos detectados + anti-cheats del análisis + bloqueos por anti-cheat en Optimizar |
609622
| **Diagnóstico** | `AnalyzePage.xaml` | 6 dimensiones paralelas con interpretación natural ("CPU Normal", "GPU RTX 4070 12 GB driver 551.61") — "no disponible" si API ausente |
610623
| **Benchmark** | `BenchmarkPage.xaml` | Flujo 5 pasos + `Baseline/After/Comparison/Verdict` + suelo 3 % |
624+
| **Overclock** | `OverclockPage.xaml` | 6 secciones + tuning real + delta honesto + puerta anti-cheat |
611625
| **Restaurar** | `RestorePage.xaml` | `snapshots/{txid}/` por fecha, `TxId`, conteo, build, `[Revertir]` + verificación |
612626
| **Historial** | `HistoryPage.xaml` | `history.jsonl` timeline + hash-chain verify + filtros + `corruptedCount` warning |
613627
| **Limpieza** | `LimpiezaPage.xaml` | Temporales por optimización + `Ejecutar todo`, papelera con confirmación, DNS y **timer resolution** (0,5/1,0 ms) vía IPC |
@@ -749,17 +763,17 @@ powershell -ExecutionPolicy Bypass -File scripts/harden-data-acls.ps1
749763

750764
## Pruebas
751765

752-
**1278 pruebas en 6 suites, todas en Release:**
766+
**1692 pruebas en 6 suites, todas en Release:**
753767

754768
| Suite | Cubre | Cant. |
755769
|---|---|---|
756-
| `CA-O.Core.Tests` | Contratos catálogo (93), `AnalysisStateStore` (save/load/corrupt/schema), `GameCompatibility` (VBS bloqueado), `OptimizationTransaction` (snapshot/apply/verify/rollback), `RecommendationEngine`, `KnownIssueMatcher`, `HealthEngine`, 93 definiciones `IOptimization` + `FixDriver`/`InstallDriver` motor, one-shots (`OneShotLedger`, regla `one-shot`) | **786** |
757-
| `CA-O.Security.Tests` | `IpcRequestValidator` (version/nonce mín. 16/freshness/size/schema, timer, SetDns 1–2 IPs, FixDriver/InstallDriver), `ReplayCache` (TTL, single-use atómico), `CommandPolicy` (allowlist, PATH-hijacking, injection, pnputil, `@` ACPI), `WindowsCallerInspector` (SID/SessionId/elevación), `PrivilegedIpcSecurityTests` (oversized/malformed/flood) | **248** |
770+
| `CA-O.Core.Tests` | Contratos catálogo (93), `AnalysisStateStore` (save/load/corrupt/schema), `GameCompatibility` (VBS bloqueado), `OptimizationTransaction` (snapshot/apply/verify/rollback), `RecommendationEngine`, `KnownIssueMatcher`, `HealthEngine`, 93 definiciones `IOptimization` + `FixDriver`/`InstallDriver` motor, one-shots (`OneShotLedger`, regla `one-shot`), overclock F0-F7 (tuning/estabilidad/recovery/delta/juego/AMD) | **928** |
771+
| `CA-O.Security.Tests` | `IpcRequestValidator` (version/nonce mín. 16/freshness/size/schema, timer, SetDns 1–2 IPs, FixDriver/InstallDriver), `ReplayCache` (TTL, single-use atómico), `CommandPolicy` (allowlist, PATH-hijacking, injection, pnputil, `@` ACPI), `WindowsCallerInspector` (SID/SessionId/elevación), `PrivilegedIpcSecurityTests` (oversized/malformed/flood) | **274** |
758772
| `CA-O.Integration.Tests` | `E2EFlowsTests` 9 pruebas (8 casos numerados + benchmark), `TransactionJournalRecovery` (Incomplete→RollbackRequired), `ArchitectureDependencyTests`, `DocumentationCodeConsistencyTests` (docs↔código), `PrivilegedServicePackagingTests` (contrato self-contained del servicio) | **60** |
759-
| `CA-O.Infrastructure.Tests` | `HistoryRobustness` (líneas malformadas), `SnapshotRepository` (TX identity), `SystemContextCache` dual-TTL, `DnsBenchmark`, `PhantomBatchValidation` (IDs reales + barrido vivo) | **58** |
773+
| `CA-O.Infrastructure.Tests` | `HistoryRobustness` (líneas malformadas), `SnapshotRepository` (TX identity), `SystemContextCache` dual-TTL, `DnsBenchmark`, `PhantomBatchValidation` (IDs reales + barrido vivo), backends overclock (NVML/ADLX/policy) + recovery + ceilings + juego) | **191** |
760774
| `CA-O.Benchmark.Tests` | `SystemBenchmarkRunner` (suelo 3 %, mediana, trials) | **17** |
761-
| `CA-O.UI.Tests` | `ViewModelTests` (Analyze/Dashboard con `SystemAnalysisService` + `CorrelationId`), `LocalizerTests`, `AppUpdater` (extracción con progreso + Zip-Slip), `DriverConflicts`, `VendorDriverSupport`, `UnblockTree`, `MascotFlipbookTests`, `MascotMoodTests` | **109** |
762-
| **Total** | **Gates 1-5 `verify.ps1` + `build-release` con `gui-installer`** | **1278** |
775+
| `CA-O.UI.Tests` | `ViewModelTests` (Analyze/Dashboard con `SystemAnalysisService` + `CorrelationId`), `LocalizerTests`, `AppUpdater` (extracción con progreso + Zip-Slip), `DriverConflicts`, `VendorDriverSupport`, `UnblockTree`, `MascotFlipbookTests`, `MascotMoodTests`, Overclock (tuning/delta/recovery/juego) | **222** |
776+
| **Total** | **Gates 1-5 `verify.ps1` + `build-release` con `gui-installer`** | **1692** |
763777

764778
```powershell
765779
powershell -ExecutionPolicy Bypass -File scripts/test.ps1
@@ -847,7 +861,7 @@ Consulta [CONTRIBUTING.md](CONTRIBUTING.md).
847861
2. Tests que **fallen sin el parche** (TDD)
848862
3. Toda optimización nueva implementa `IOptimization` con `Definition` completa + reversibilidad exacta + `PreviewAsync`
849863
4. Si usa comando externo → patrón exacto en `CommandPolicy` + test en `CommandPolicyTests` (anti-inyección)
850-
5. `scripts/verify.ps1` en verde (5 gates + 1278 tests)
864+
5. `scripts/verify.ps1` en verde (5 gates + 1692 tests)
851865
6. PR con evidencia, impacto seguridad/compatibilidad, captura `OptimizePage` Before/After
852866

853867
---

‎docs/ARCHITECTURE.md‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ Step 5 targets `NoteBar` (`SnapshotsList` collapses when empty on first run). Ma
5959
| Recomendaciones + scoring | `Core/Scoring/` | Buckets analyze-first + score 0-100 |
6060
| Known-issues | `Core/Compatibility/KnownIssueMatcher.cs` + store JSON en Infrastructure | DB versionada con override drop-in en `%ProgramData%\CA-O\known-issues.json` |
6161
| Detección de juegos / anti-cheats | `Infrastructure/Gaming/` | Procesos conocidos; lectura de servicios/drivers |
62+
| Overclock honesto | `Core/Overclock/` (catalogo, TuningEngine, recovery D4, delta) + `Infrastructure/Overclock/` (NVML, ADLX, policy) | Biseccion con checkpoints; 1er arranque sucio avisa, 2do revierte; delta total del perfil, nunca por ajuste |
6263

6364
Desviaciones documentadas respecto al árbol literal del prompt: `Core/Services` conserva accesores reutilizados por el servicio; `Infrastructure/SystemInterop` agrupa proveedores WMI en lugar de dividirlos por carpeta Windows/*; ETW queda como limitación documentada (DPC/ISR por contador, atribución por driver futura vía trazas).
6465

@@ -98,6 +99,9 @@ Safe · Balanced · Gaming · Competitive · Privacy · Security · Productivity
9899
| `%ProgramData%\CA-O\history.jsonl` | `JsonHistoryLogger` hash-chain SHA-256: `seq, prevHash, hash, entry` — `ReadLast` tolera líneas corruptas, `VerifyIntegrity` reporta | `VerifyIntegrity` warnings, nunca crash |
99100
| `%ProgramData%\CA-O\snapshots/{txid}/` | `snapshot.json + manifest.json + integrity.json (SHA256)` — TX identity, `FindLatestForOptimization` | `SnapshotRepository` (UI nunca `Directory.GetDirectories`) |
100101
| `%ProgramData%\CA-O\benchmarks\baseline.json` | `SystemBenchmarkResult` + `BenchmarkRunHeader` | Mediana de trials, suelo 3% |
102+
| `%ProgramData%\CA-O\overclock\runs\*.json` | Checkpoints de tuning (Started/StepApplied/Interrupted/AutoReverted/Closed) + LastEvaluatedBootUtc | Escritura atomica tmp+move, cuarentena .corrupt, nunca se borra evidencia |
103+
| `%ProgramData%\CA-O\overclock\profiles\*.json` | Perfiles validados por knob (un fichero por ajuste) | Escritura atomica, solo tras run estable hasta su techo |
104+
| `%ProgramData%\CA-O\benchmarks\overclock-delta.json` | Ultimo informe de delta (linea base vs candidato) | Via BenchmarkStore atomico; informe vacio = Sin datos |
101105
| `%AppData%\CA-O\settings.json` | Preferencias UI + `UiState.LastAnalysisUtc` restaurado al iniciar | 3 fases startup sin bloquear UI |
102106

103107
Nunca se registran secretos, credenciales ni contenido de entrada del usuario (spec 75, 116).
@@ -110,14 +114,14 @@ Nunca se registran secretos, credenciales ni contenido de entrada del usuario (s
110114
- **i18n**: diccionario tipado es-ES/en-US (`Localizer`); migración a `.resw` planificada sin cambiar llamadas (`Localizer.Get(key)`).
111115
- **HAGS/VBS/MPO/etc.**: nunca tratados como ganancias universales; HAGS es WorkloadDependent+Conditional+RequiresReboot, VBS es Critical+SecurityTradeoff+ExpertOnly.
112116

113-
## Pruebas (1278 passed, 0 failed — Release)
117+
## Pruebas (1692 passed, 0 failed — Release)
114118

115119
| Suite | Cubre | Count |
116120
|---|---|---|
117-
| `CA-O.Core.Tests` | Contratos catálogo 93, `AnalysisStateStore` (save/load/corrupt), `GameCompatibility` (VBS bloqueado), transacciones, scoring, health, ledger one-shot | 786 |
118-
| `CA-O.Security.Tests` | IPC validator (`Ping`/`Apply` cross-check), `IpcPingTests`, inyección | 248 |
121+
| `CA-O.Core.Tests` | Contratos catálogo 93, `AnalysisStateStore` (save/load/corrupt), `GameCompatibility` (VBS bloqueado), transacciones, scoring, health, ledger one-shot | 928 |
122+
| `CA-O.Security.Tests` | IPC validator (`Ping`/`Apply` cross-check), `IpcPingTests`, inyección | 274 |
119123
| `CA-O.Integration.Tests` | `E2EFlowsTests` 9 pruebas (8 casos numerados + benchmark: Abrir→Analizar→Persistir→Vanguard→Restore→Benchmark) + `TransactionJournalRecovery` + contrato docs + `PrivilegedServicePackagingTests` (payload self-contained) | 60 |
120-
| `CA-O.Infrastructure.Tests` | `HistoryRobustness` (malformed), `SnapshotRepository` (TX identity), `SystemContextCache` dual-TTL | 58 |
124+
| `CA-O.Infrastructure.Tests` | `HistoryRobustness` (malformed), `SnapshotRepository` (TX identity), `SystemContextCache` dual-TTL | 191 |
121125
| `CA-O.Benchmark.Tests` | `SystemBenchmarkRunner` (suelo 3%, mediana) | 17 |
122-
| `CA-O.UI.Tests` | `ViewModelTests` (Analyze/Dashboard con `SystemAnalysisService` + `Correlation`) | 109 |
123-
| **Total** | **Gates 1-5 `verify.ps1` + `build-release` con `gui-installer`** | **1278** |
126+
| `CA-O.UI.Tests` | `ViewModelTests` (Analyze/Dashboard con `SystemAnalysisService` + `Correlation`) | 222 |
127+
| **Total** | **Gates 1-5 `verify.ps1` + `build-release` con `gui-installer`** | **1692** |

0 commit comments

Comments
 (0)