# Analisis Empirico Macro/Micro v2 Fecha: 2026-03-25 Autor: Codex Base de evidencia: lectura directa de codigo en `src/`, contraste con `ANALISIS_EMPIRICO_MACRO_MICRO.md`, `IMPLEMENTATION_PLAN.md`, `AUDITORIA_CRITICA_V2.md`, y validacion local de tests focalizados. ## 0. Proposito de esta v2 Este documento no reemplaza al analisis largo original. Su funcion es otra: - releer el plan y la auditoria contra el repo actual - distinguir que partes quedaron correctas, viejas o superadas - dejar una foto compacta del estado real - fijar el siguiente milestone util La conclusion central es esta: - el repo ya no esta en el estado descrito por la auditoria mas dura - tampoco llego todavia al runtime ejecutivo unico propuesto por el analisis original - el salto de las ultimas iteraciones fue real, pero fue un salto de convergencia, no de cierre ## 1. Relectura de los documentos previos ### 1.1 `ANALISIS_EMPIRICO_MACRO_MICRO.md` Sigue siendo el mejor documento de direccion. Lo que sigue correcto: - no conviene seguir acumulando modulos heterogeneos - la direccion buena sigue siendo converger runtime, estado y engines - `heartbeat` era un punto de mezcla excesivo - el seam inbound en `get-reply.ts` era una frontera estructural importante - la columna ejecutiva era mas prometedora que seguir agregando piezas laterales Lo que necesita matiz: - la Fase 2 original proponia otro arbol de estado canonico; hoy eso seria un error - el repo ya avanzo mas de lo que el documento original podia reflejar en convergencia entre `heartbeat` y `omega_work` ### 1.2 `IMPLEMENTATION_PLAN.md` Quedo mitad ejecutado y mitad obsoleto. Estado por fase: - Fase 1: hecha - Fase 2: replanteada - Fase 3: mayormente hecha - Fase 4: hecha en su baseline util, no en su version final - Fase 5 y 6: no hechas La parte que descarto explicitamente del plan es esta: - no abrir `src/omega/runtime-state/*` como otro store canonico La parte que mantengo: - clasificar stores con autoridad explicita - usar la misma decision base en `heartbeat` y `omega_work` - desacoplar engines del path critico mediante interfaz y scoring comparable - medir con benchmark y ablation antes de seguir agregando motores ### 1.3 `AUDITORIA_CRITICA_V2.md` Sigue siendo util como presion conceptual, pero ya no describe bien el repo actual en varios puntos. Quedo vieja en esto: - ya no es correcto decir que no hay continuidad real o que todo el pensamiento continuo muere sin persistencia - ya no es correcto decir que no existe WSP o que las drives homeostaticas son solo una idea - ya no es correcto decir que `heartbeat` orquesta todo sin ningun contexto compartido Sigue acertando en esto: - el sistema todavia no tiene soberania arquitectonica cerrada - el LLM sigue siendo parte del motor ejecutivo efectivo - no existe todavia un loop frio/caliente claramente separado - no hay benchmark formal suficiente para decidir entre engines o matar hipotesis ## 2. Estado real verificado hoy ### 2.1 Fase 1: sustrato estable Esto ya cerro. Evidencia: - `src/agents/openclaw-tools.ts` ya es un ensamblador fino - existen `src/agents/tool-suites/core-tools.ts` - existen `src/agents/tool-suites/session-tools.ts` - existen `src/agents/tool-suites/omega-tools.ts` - existen `src/agents/tool-suites/plugin-tools.ts` Lectura: - el builder monolitico original ya no es el cuello principal - la frontera entre sustrato, sesiones y `omega` ahora es visible ### 2.2 Fase 2: estado canonico unico No esta resuelta como "single store". Pero ya no estamos en el punto anterior. Lo que si existe: - `src/omega/decision-context.ts` como snapshot compartida para decision - `src/omega/state-authority.ts` como clasificacion explicita de autoridad - `src/omega/policy-engine.ts` consumiendo WSP solo cuando hay autoridad activa - `src/omega/omega-wsp.ts` cargado en el path comun de decision Lo que eso significa: - ya existe una matriz de autoridad real - ya no estamos discutiendo en abstracto que store deberia mandar - el repo ya distingue entre `authoritative`, `derived`, `fallback` y `experimental` Lo que todavia no existe: - una sola fuente persistida que reemplace de verdad a `self-time-kernel`, `execution-controller`, `operational-memory`, `world-model` y `omega-wsp` Diagnostico preciso: - la Fase 2 no se resolvio por consolidacion fisica de stores - se resolvio parcialmente por gobernanza de stores - eso fue la decision correcta ### 2.3 Fase 3: convergencia del loop ejecutivo Esta mayormente hecha. Evidencia: - `src/omega/decision-context.ts` alimenta tanto `heartbeat` como `omega_work` - `src/agents/tools/omega-work-tool.ts` carga contexto comun y consulta routing ejecutivo validado - `src/omega/heartbeat.ts` consume `driveSignal`, `stateAuthority` y `controllerState` desde la misma snapshot - `src/omega/execution-controller.ts` ya no es solo sidecar observacional; participa en dispatch real Ganancia estructural: - `heartbeat` y `omega_work` ya no operan como dos cerebros casi separados - la politica base ya no se recalcula por caminos totalmente independientes Deuda restante: - todavia hay logica repartida entre `wake-policy`, `policy-engine`, `heartbeat` y el dispatch ejecutivo - el LLM sigue entrando demasiado arriba en la cadena de control ### 2.4 Fase 4: interfaz formal de engines Esta cerrada en su baseline util. Evidencia: - existen `src/omega/engines/types.ts` - existe `src/omega/engines/registry.ts` - existe `src/omega/engines/score-engine-signal.ts` - `src/omega/heartbeat.ts` ya consume `collectKernelSignals()` + `testUntestedHypotheses()` + scoring agregado - `src/omega/heartbeat-idle.ts` usa la misma logica de score sobre señales Esto ya no es "registry parcial". Lo que ya se logro: - los engines producen señales comparables - `heartbeat` dejo de depender solo de llamadas sueltas a modulos experimentales - las hipotesis ya no activan trabajo autonomo por si solas - la señal agregada puede reforzar o no la drive base compartida Lo que todavia no cerro: - no existen aun adapters formales por engine en `src/omega/engines/adapters/*` - el registry sigue envolviendo singletons y wrappers legacy de forma directa - no hay benchmark A/B serio sobre el scoring nuevo Conclusion: - Fase 4 no esta pendiente - Fase 4 baseline ya esta hecha - lo pendiente es su endurecimiento experimental ### 2.5 Fase 5 y 6: benchmark y kill criteria Siguen abiertas. Eso importa porque hoy el repo ya tiene suficiente convergencia interna como para medir, pero todavia no suficiente disciplina experimental como para cerrar hipotesis. ## 3. Que gano realmente el sistema - Menos dispersion entre `heartbeat` y `omega_work` - Mas centralidad real del stack ejecutivo - WSP integrado en decision, aunque no siempre con autoridad activa - Una clasificacion explicita de autoridad de estado - Un registry de engines que ya sirve como capa comun - Un scoring agregado de señales que evita activaciones triviales por bookkeeping experimental Lo importante aca es conceptual: antes el problema era "faltan piezas". hoy el problema ya no es ese. hoy el problema es: - hay varias piezas correctas - varias ya fueron conectadas - pero todavia no hay cierre suficientemente duro sobre quien manda, cuando manda y como cambia la conducta despues de aprender ## 4. Que sigue roto o incompleto ### 4.1 No hay soberania cerrada del estado `state-authority.ts` mejora mucho la situacion, pero clasificar no es lo mismo que unificar. Seguimos con autoridad repartida entre: - `self-time-kernel` - `execution-controller` - `operational-memory` - `world-model` - `omega-wsp` Eso ya no es caos puro, pero tampoco es un runtime con una sola ley de estado. ### 4.2 El WSP existe, pero no manda siempre Esto es mejor que antes y mas exigente que antes. Antes el problema era "WSP no existe". Ahora el problema real es: - WSP existe - entra al `decision-context` - puede gobernar drives si esta calibrado - pero sigue pudiendo quedar como `experimental` o `fallback` Eso es correcto como seguridad. Pero tambien deja claro que el WSP todavia no gano la soberania que el discurso arquitectonico le atribuye. ### 4.3 El LLM sigue siendo parte del motor, no solo un organo periferico La convergencia actual no cambia esto. Todavia no existe una separacion limpia de: - loop frio sin LLM - loop caliente con LLM solo por umbral Mientras eso no exista, OpenSkyNet sigue siendo una arquitectura ejecutiva alrededor de un LM, no una cognicion cerrada que usa el LM de manera periferica. ### 4.4 No hay benchmark decisivo Hoy podemos afirmar mejor estructura. Todavia no podemos afirmar mejor conducta de forma cerrada contra baseline en: - dispatch util - coherencia de politica - falsos positivos autonomos - valor del scoring agregado - ventaja de drives desde WSP frente a drives derivadas del kernel ## 5. Diagnostico actualizado La formulacion mas precisa hoy es esta: OpenSkyNet ya no falla por ausencia de piezas cognitivas. OpenSkyNet falla por soberania arquitectonica incompleta y por validacion experimental insuficiente. Eso es un progreso real. Significa que la critica correcta ya no es "no hay nada". La critica correcta ahora es: - hay convergencia util - hay autoridad parcial - hay señales comparables - pero todavia no hay cierre suficiente de gobierno ni benchmark suficiente de verdad ## 6. Siguiente milestone recomendado No seguiria con mas refactor lateral. Tampoco abriria otro store canonico. El siguiente milestone deberia ser: ## Benchmark and Authority Hardening Milestone Objetivo: - medir si el scoring agregado mejora decisiones reales - medir si WSP con autoridad activa supera o no al fallback de kernel - decidir que engines merecen adapters formales y cuales deben degradarse o salir Orden: 1. benchmark A/B de dispatch y falsos positivos 2. benchmark WSP drives vs kernel drives 3. adapters formales por engine solo para los motores que sobrevivan a la medicion 4. kill criteria explicitos para señales y motores de bajo valor No haria antes de eso: - otra capa de estado - otra familia de micro-refactors cosméticos - otra ola de engines experimentales sin comparacion dura ## 7. Validacion local de esta lectura Corrida local ejecutada sobre las suites de convergencia relevantes: - `src/agents/openclaw-tools.suites.test.ts` - `src/agents/openclaw-tools.omega-executive-routing.test.ts` - `src/agents/openclaw-tools.omega-unification.test.ts` - `src/agents/openclaw-tools.sessions.test.ts` - `src/agents/openclaw-tools.omega-work.test.ts` - `src/agents/openclaw-tools.omega-vs-parent.test.ts` - `src/omega/engines/registry.test.ts` - `src/omega/engines/score-engine-signal.test.ts` - `src/omega/execution-controller.test.ts` - `src/omega/policy-engine.test.ts` - `src/omega/state-authority.test.ts` - `src/omega/heartbeat.test.ts` Resultado: - 12 archivos de test pasando - 82 tests pasando ## 8. Veredicto corto El repo esta mejor de lo que dice la auditoria critica. Tambien esta menos cerrado de lo que implicaba el entusiasmo del ultimo post-scriptum. La lectura correcta hoy es: - Fase 1: cerrada - Fase 2: replanteada y parcialmente cerrada por autoridad, no por store unico - Fase 3: mayormente cerrada - Fase 4: cerrada en baseline util - Fase 5/6: pendientes El siguiente trabajo serio ya no es "mas arquitectura". Es medicion dura sobre la arquitectura que ya existe.