# OPTIMUS RESEARCH CENTER — INFORME DE CERTIFICACIÓN ORC-31
## NORMALIZACIÓN DE VERSIÓN Y PREPARACIÓN DE INSTALACIÓN CONTROLADA (v1.1.0)

- **Fecha UTC:** `2026-10-27`
- **Directorio de Auditoría ORC-31:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027`
- **Candidato Normalizado (`v1.1.0`):** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\candidate_v1_1`
- **Instalación de Ensayo Paralela:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\parallel_trial_install`
- **Instalación Principal Protegida (Intacta):** `C:\xampp\htdocs\centro de investigacion`

---

## 1. Versión Final y Nombre del Paquete

| Concepto de Versionado | Identificador Oficial | Propósito / Alcance |
| :--- | :--- | :--- |
| **Versión de la Aplicación (`VERSION`)** | `1.1.0` | Versión funcional de Optimus Research Center con las mejoras científicas y de seguridad de ORC-27/29/31. |
| **Versión del Empaquetador Portátil (`PACKAGER_VERSION`)** | `1.0.0-m22d` | Versión de la utilidad de higiene y empaquetado portátil (`scripts/package_laboratory.py`, especificación ORC-22D). |
| **Versión del Protocolo de Contratos (`PROTOCOL_VERSION`)** | `1.0.0` | Versión del protocolo de contratos de integración externa (`ORC22C_TITAN_INTEGRATION_CONTRACT.md`, `ORC22C_NEUROLAB_INTEGRATION_CONTRACT.md`). |
| **Paquete Portátil Oficial (`v1.1.0`)** | `optimus_research_center_portable_v1.1.0.zip` | Paquete portátil candidato certificado (84 archivos, 0 `.db`, 0 `.env`). |
| **Alias de Compatibilidad (`v1.0`)** | `optimus_research_center_portable_v1.0.zip` | Copia binaria idéntica generada para compatibilidad con la suite de regresión histórica `test_mission22d_package_hygiene.py`. |

---

## 2. Hash SHA-256 del Paquete y Correspondencia con su Manifiesto

- **Archivo:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\optimus_research_center_portable_v1.1.0.zip`
- **SHA-256 del Paquete ZIP:** `978EE1D0CCF407D2FB890C16619944774CFEA9B50B3FD2268988BA0AAEE9E7AF`
- **Tamaño:** `265,185 bytes` (`84` archivos seleccionados + `5` directorios vacíos `storage/*`)
- **Manifiesto del Paquete:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\manifest.json` (`ORC31_PORTABLE_MANIFEST_v1.1.0.json`)
- **Verificación de Integridad:** `84 / 84` archivos dentro del archivo ZIP coinciden exactamente en SHA-256 y tamaño en bytes con `manifest.json` (`0` discrepancias).
- **Manifiestos Históricos Preservados Intactos:**
  - `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\ORC29_CANDIDATE_MANIFEST_HISTORICAL.json`
  - `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\ORC29_PORTABLE_MANIFEST_HISTORICAL.json`
  - `scripts/package_laboratory.py::FROZEN_HASHES` (contratos congelados de ORC-22D)

---

## 3. Lista Exacta de Cambios de Versionado y Corrección de Advertencia $R^2$

### 3.1. Archivos modificados para normalización de versión (`1.1.0` vs `1.0.0-m22d` vs `1.0.0`)
1. `app/__init__.py`: Definición explícita de `__version__ = "1.1.0"`, `__packager_version__ = "1.0.0-m22d"` y `__protocol_version__ = "1.0.0"`.
2. `app/config.py`: `VERSION = "1.1.0"`, `PACKAGER_VERSION = "1.0.0-m22d"`, `PROTOCOL_VERSION = "1.0.0"`.
3. `app/main.py`: Banner de arranque actualizado a `1.1.0` y endpoint `/health` exponiendo `"version": "1.1.0"`, `"packager_version": "1.0.0-m22d"` y `"protocol_version": "1.0.0"`.
4. `app/core/lab_adapters.py`: `AlgorithmLabAdapter` y `AILabAdapter` normalizados a `version="1.1.0"`.
5. `app/core/system_monitor.py`: Telemetría (`get_system_telemetry()`) incluye `"application_version": "1.1.0"`, `"packager_version": "1.0.0-m22d"` y `"digital_optimus_integration": "DISCONNECTED (STANDALONE V1.1)"`.
6. `app/static/index.html`: Título y subtítulo de la interfaz web actualizados a `v1.1.0`.
7. `start.bat`: Banner de consola actualizado a `v1.1.0 (STANDALONE)`.
8. `README.md`: Encabezado actualizado a `v1.1.0` y tabla explícita diferenciando versión de la aplicación (`1.1.0`), versión de la utilidad empaquetadora (`1.0.0-m22d`) y versión del protocolo de contratos (`1.0.0`).
9. `scripts/package_laboratory.py`: Inclusión de `ORC31_CANDIDATE_MANIFEST.json` en `ALLOWED_ROOT_FILES`, publicación de `optimus_research_center_portable_v1.1.0.zip` (junto al alias `v1.0.zip`) y metadatos diferenciados en `manifest.json`.

### 3.2. Registro y corrección de las 3 advertencias de `pytest` (Instrucción 7)
En ORC-29/30 se registraron 3 advertencias durante la ejecución global de `pytest`:
1. **`UndefinedMetricWarning: R^2 score is not well-defined with less than two samples` (2 ocurrencias en `tests/test_lab_algorithms.py::test_predictive_algorithms`)**:
   - **Causa:** `RidgePredictor` y `GradientBoostingPredictor` invocaban `sklearn.metrics.r2_score(y_test, preds)` directamente cuando `test_predictive_algorithms` pasaba un vector `y_test` de 1 sola muestra (`len(y_test) == 1`), donde la varianza muestral es $0$ y $R^2$ es matemáticamente indefinido (`NaN`).
   - **Corrección aplicada:** Se implementó `_safe_r2(y_true, y_pred)` en `app/lab_algorithms/algorithms/predictive.py`, que calcula `r2_score` únicamente cuando `len(y_true) >= 2` y `np.var(y_true) > 0.0` (`r2_status = "DEFINED"`), y devuelve `r2 = None`, `r2_status = "UNDEFINED_LESS_THAN_2_SAMPLES"` cuando hay menos de 2 muestras sin fabricar valores artificiales ni emitir `NaN`. Se actualizó `tests/test_lab_algorithms.py` y se añadió `tests/test_mission31_version_and_trial.py` para comprobar tanto el caso multimuestra (`len(y_test) >= 2`) como el caso de 1 muestra con `0` advertencias `UndefinedMetricWarning`.
2. **`StarletteDeprecationWarning: Using httpx with starlette.testclient is deprecated; install httpx2 instead` (1 ocurrencia)**:
   - **Causa:** Advertencia interna de importación en librería de terceros (`.venv\Lib\site-packages\fastapi\testclient.py:1`). No afecta la ejecución ni proviene del código de Optimus Research Center; queda documentada sin alterar el entorno virtual compartido.

---

## 4. Resultado de la Instalación de Ensayo Paralela, `/health`, Laboratorios, Escenarios A–F y Parada Segura

Evidencia completa en UTF-8: `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\04_ENSAYO_INSTALACION_PARALELA.txt`.

1. **Extracción limpia en directorio externo nuevo (`parallel_trial_install`):**
   - Extraídos `84` archivos desde `optimus_research_center_portable_v1.1.0.zip`.
   - Verificados `0` archivos `.db`/`.sqlite` y `0` archivos `.env*` tras la extracción.
2. **Base SQLite creada desde cero (`init_db()`):**
   - Creada en `parallel_trial_install\storage\db\research_center.db` sin copiar ni abrir la base operativa.
   - `12` tablas creadas desde cero (`ai_models`, `algorithms`, `audit_logs`, `commercial_opportunities`, `coordination_tasks`, `experiment_runs`, `experiments`, `hypotheses`, `inter_lab_collaborations`, `research_projects`, `scientific_artifacts`, `scientific_evidence`), `PRAGMA integrity_check = ok`.
3. **Arranque y verificación de `/health` en puerto aislado `18551`:**
   - Servidor iniciado en `http://127.0.0.1:18551` sin ocupar ni alterar el puerto `8550` ni servicios existentes.
   - `GET /health` devolvió `HTTP 200`:
     `{"status": "HEALTHY", "version": "1.1.0", "packager_version": "1.0.0-m22d", "protocol_version": "1.0.0", "profile": "LAPTOP_STANDALONE", "mode": "STANDALONE_V1", "digital_optimus_connected": false, "titan_connected": false, "neurolab_connected": false}`.
   - `GET /api/v1/coordinator/laboratories` (`HTTP 200`, 2 laboratorios verificados) y `GET /api/v1/coordinator/system-telemetry` (`HTTP 200`, `application_version="1.1.0"`, `packager_version="1.0.0-m22d"`).
4. **Acceso en vivo a ambos laboratorios:**
   - **Laboratorio de Algoritmos:** Creación de proyecto (`POST /api/v1/algorithms/projects` -> `HTTP 200`), experimento de optimización (`POST /api/v1/algorithms/experiments/optimization` -> `HTTP 200`, `COMPLETED`) y experimento predictivo (`POST /api/v1/algorithms/experiments/predictive` -> `HTTP 200`, `COMPLETED`).
   - **Laboratorio de IA:** Catálogo de arquitecturas (`GET /api/v1/ai/architectures` -> `HTTP 200`, 5 arquitecturas), dominios especializados (`GET /api/v1/ai/specializations` -> `HTTP 200`, 8 dominios), creación de proyecto (`POST /api/v1/ai/projects` -> `HTTP 200`), entrenamiento y auditoría (`POST /api/v1/ai/models/train` -> `HTTP 200`, `verdict=IMPROVEMENT`) y simulación robótica (`POST /api/v1/ai/robotics/simulate` -> `HTTP 200`, `simulation_only=True`).
5. **Parada segura (`scripts/safe_stop.py`):**
   - Verificó la identidad del proceso Python de Optimus Research Center en el puerto `18551` y `storage/server.pid`, detuvo únicamente dicho proceso, eliminó `storage/server.pid` y liberó el puerto `18551`.
6. **Escenarios obligatorios A–F (`python run_scenarios.py`):**
   - Ejecutados íntegramente en `parallel_trial_install` sobre la base creada desde cero:
     - **Escenario A (Benchmark de Algoritmos):** `PASS` (`genetic_algorithm`, fitness `-7.364163`, persistencia verificada).
     - **Escenario B (Entrenamiento y Evaluación de IA):** `PASS` (`scenario_b_mlp`, exactitud `0.7333` vs baseline `0.6533`, `IMPROVEMENT`).
     - **Escenario C (Colaboración Inter-Laboratorio):** `PASS` (propuesta evaluada empíricamente, exactitud `0.8667` vs baseline `0.6533`, `ACCEPTED`).
     - **Escenario D (Investigación Cuantitativa Financiera WFA):** `PASS` (5 folds expanding window sin fuga de datos, aserción de solo simulación verificada).
     - **Escenario E (Recuperación ante Fallos):** `PASS` (tarea `RUNNING` huérfana reconciliada como `FAILED`).
     - **Escenario F (Barreras de Seguridad y Aislamiento):** `PASS` (acceso a rutas de Digital Optimus denegado, ejecución de código peligroso denegada, conexiones externas `False`).

---

## 5. Pruebas Ejecutadas y Evidencia (UTF-8 sin BOM)

- **Suite Global de Pruebas (`pytest tests -v`):**
  - **Resultado:** `161 passed, 0 failed, 1 warning in 39.50s` (código de salida `0`).
  - **Registro UTF-8:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\02_SUITE_GLOBAL_UTF8.txt` (y copia en `02_SUITE_GLOBAL.txt`, codificados en UTF-8 sin BOM para evitar el `REVIEW` de codificación UTF-16 de ORC-30).
- **Verificación del Paquete Portátil y Manifiesto:**
  - **Registro UTF-8:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\03_PAQUETE_PORTATIL_UTF8.txt` (`84/84` hashes SHA-256 verificados).
- **Ensayo de Instalación Paralela y Escenarios A–F:**
  - **Registro UTF-8:** `C:\Users\intel\AppData\Local\OptimusAudits\ORC31_20261027\04_ENSAYO_INSTALACION_PARALELA.txt`.
- **Inmutabilidad de Producción y Base Operativa:**
  - `C:\xampp\htdocs\centro de investigacion\storage\db\research_center.db` conserva intacto su SHA-256 original: `E4A5A8DAE3B9BF9C24DF50ABC243CB4969F4CF4B29CC98F1013091CF01F9CDE9`.

---

## 6. Plan de Respaldo, Promoción Controlada y Rollback

> **Nota:** De acuerdo con las restricciones de ORC-31, **no se ha promovido automáticamente** el candidato a producción. El siguiente procedimiento queda preparado para ejecución manual o autorizada:

### Fase 1: Respaldo Previo y Verificación de Parada
1. Detener de forma segura cualquier instancia activa de Optimus Research Center en la raíz principal:
   ```powershell
   cd "C:\xampp\htdocs\centro de investigacion"
   .\.venv\Scripts\python.exe scripts\safe_stop.py
   ```
2. Crear un respaldo completo con marca de tiempo de la instalación principal y de la base SQLite canónica (usando la API `sqlite3.backup` para consistencia WAL):
   ```powershell
   $ts = Get-Date -Format "yyyyMMdd_HHmmss"
   $backupDir = "C:\Users\intel\AppData\Local\OptimusAudits\BACKUP_PRE_V1_1_$ts"
   New-Item -ItemType Directory -Force -Path $backupDir
   Copy-Item "C:\xampp\htdocs\centro de investigacion\storage\db\research_center.db" "$backupDir\research_center.db.bak"
   ```
3. Verificar que el hash SHA-256 de `research_center.db.bak` coincide con el hash pre-promoción (`E4A5A8DAE3B9BF9C24DF50ABC243CB4969F4CF4B29CC98F1013091CF01F9CDE9`).

### Fase 2: Promoción Controlada del Candidato `v1.1.0`
1. Comprobar el hash SHA-256 del paquete certificado `optimus_research_center_portable_v1.1.0.zip` (`978EE1D0CCF407D2FB890C16619944774CFEA9B50B3FD2268988BA0AAEE9E7AF`).
2. Extraer únicamente los módulos de código y configuración permitidos del paquete portátil sobre `C:\xampp\htdocs\centro de investigacion` (el paquete no contiene archivos `.db` ni `.env`, por lo que `storage/db/research_center.db` y `.env` quedan preservados).
3. Purgar todos los directorios `__pycache__` en `C:\xampp\htdocs\centro de investigacion` para impedir el uso de bytecode antiguo.
4. Ejecutar `pytest tests -v` y verificar `GET /health` (`version == "1.1.0"`).

### Fase 3: Plan de Rollback Inmediato (Reversión)
Si cualquier verificación posterior a la promoción falla:
1. Ejecutar `.\.venv\Scripts\python.exe scripts\safe_stop.py`.
2. Restaurar los archivos de código desde `$backupDir` (o desde `C:\xampp\htdocs\centro de investigacion\dist\OPTIMUS_TRANSFERENCIA_PC\01_optimus_research_center_core_app.zip`) y restaurar `research_center.db.bak` si la base hubiera sufrido escrituras.
3. Purgar `__pycache__` y comprobar que todos los hashes coinciden con el manifiesto original ORC-24/26.

---

## 7. Bloqueos de Seguridad que Permanecen Activos Intencionalmente

1. **Bloqueo de Ejecución de Código Experimental No Confiable (`SANDBOX_UNAVAILABLE`):**
   - `ExecutionPolicy.execute_untrusted_code()` en `app/core/sandbox.py` mantiene bloqueada incondicionalmente la ejecución dinámica de código de Categoría B mientras no exista un contenedor de aislamiento real a nivel de sistema operativo (Windows Containers / AppContainer). Las propuestas se auditan sintácticamente mediante AST y se preservan como `PENDING_SAFE_ENVIRONMENT`.
2. **Bloqueo de Conexiones a Proveedores Externos No Autorizados (`NEEDS_MODEL`):**
   - `ALLOW_EXTERNAL_API_CALLS = False` por defecto. Las consultas estructuradas sin proveedor externo autorizado operan exclusivamente con `LocalHeuristicStructuredProvider` o devuelven `NEEDS_MODEL` sin realizar llamadas de red externas.
3. **Aislamiento Total respecto de Digital Optimus / Titan / NeuroLab:**
   - `DIGITAL_OPTIMUS_INTEGRATION_ENABLED = False`, `TITAN_INTEGRATION_ENABLED = False`, `NEUROLAB_INTEGRATION_ENABLED = False` en el perfil `LAPTOP_STANDALONE`. `CanonicalPathGuard` bloquea cualquier intento de lectura o escritura hacia rutas de Digital Optimus, Titan o NeuroLab.
4. **Prohibición Física de Trading en Vivo y Actuación de Hardware Real:**
   - `QuantitativeResearchEngine.assert_no_live_trading()` y `RoboticsSimulationEngine.assert_simulation_only()` bloquean cualquier intento de habilitar órdenes financieras reales o actuadores físicos.

---

`ORC31_READY_FOR_CONTROLLED_INSTALLATION=TRUE`

