Skip to content

[NO BORRAR][REFERENCIA] Filosofía OlympusAgents: Goal-Driven · Loop-Executed · Evidence-Gated #92

Open

Description

@Edulynch

NO BORRAR — REFERENCIA PERMANENTE DE FILOSOFÍA DE TRABAJO.

No es un issue de implementación ni debe incorporarse al WIP activo. Su propósito es preservar este acuerdo para consultarlo al redactar encargos futuros. Mantenerlo accesible; no cerrarlo como duplicate ni sustituirlo por nuevos issues de proceso sin decisión explícita del usuario.

Decisión del mantenedor

Desde el siguiente prompt de trabajo, DESPUÉS de que termine la ejecución que ya está en curso y se reciba su resultado, OlympusAgents debe tratar los encargos nuevos con esta filosofía:

Un objetivo · Una autorización explícita y acotada · Ejecución continua · Evidencia proporcional · Intervención humana por excepción.

No interrumpir ni reinterpretar retroactivamente el prompt que está ejecutándose. Este issue no modifica automáticamente instrucciones del runtime, permisos, archivos ni configuración: el cambio inmediato es cómo formulamos y autorizamos los próximos prompts.

Problema que queremos evitar

El proceso anterior tendía a dividir artificialmente una sola misión en múltiples mensajes humanos: 1–5 investigar (solo lectura), 6–10 implementar, 11–12 listar archivos, 13–14 commit, 15 push/PR, 16–20 qualification y 20+ merge. Cada transición exigía otra intervención aun cuando el objetivo, los permisos y el alcance ya estaban claros.

Consecuencia: más issues abiertos que cerrados, pruebas FULL/RUNTIME repetitivas, documentos de evidencia y rondas de revisión que consumen más tiempo que la funcionalidad entregada.

Filosofía operativa

  1. Goal-Driven: recibir una misión completa con criterios de aceptación, no un prompt para cada paso.
  2. Loop-Executed: dentro del alcance permitido, investigar → implementar → comprobar → corregir → volver a comprobar, sin pedir autorización de nuevo por pasar de fase.
  3. Evidence-Gated: declarar éxito por evidencia real de los criterios, no por texto PASS, suposiciones o confianza del modelo.
  4. Risk-Proportional: tests específicos y baratos durante el loop; FAST/FULL/RUNTIME según impacto y contrato oficial, sin repetir automáticamente suites completas después de cada cambio.
  5. Autonomous Correction: resolver en el mismo encargo fallos directamente relacionados; reutilizar evidencia aún válida; no crear un issue por cada detalle.
  6. Finish Before Expanding: terminar o bloquear honestamente el trabajo activo antes de abrir otro frente; hallazgos externos reciben triage, no expansión tácita.
  7. Bounded Persistence: persistir mientras existan progresos verificables y recursos/autoridad suficientes; detenerse si se repite un fallo sin nueva información o no se puede cumplir un gate.
  8. Minimum Human Interruptions: la métrica es cuántas veces debe intervenir el mantenedor, no cuántas llamadas internas hace el modelo.

Objetivos orientativos de interacción humana

Tamaño/riesgo Prompts humanos objetivo
Simple 1
Normal 1–3
Complejo 3–5
Crítico o excepcional Los necesarios, con causas de continuación/bloqueo explícitas

No son límites artificiales para cortar una investigación de seguridad ni cuotas que animen a ocultar problemas.

Autorización integral en el prompt inicial

Cuando corresponda, un solo encargo puede autorizar investigación, implementación, pruebas focalizadas, revisión del diff, correcciones, commit, push y creación de PR, sin solicitar una nueva confirmación por etapa. Debe indicar claramente: repo, issue, rama/checkout, alcance de escritura, aceptación, acciones externas permitidas, pruebas esperadas y condiciones de parada.

Merge, release, cambios de permisos, acciones destructivas o cualquier operación protegida requieren autoridad explícita previa y cumplimiento de los gates. La autorización no se deduce por estar dentro de un loop. Respetar la ruta real de /maintain/Aegis y los DENY/ASK existentes; no fingir accesos ni capacidad de herramientas. El agente puede usar sus delegaciones autorizadas si la herramienta de ejecución directa no está disponible.

Estados terminales claros

  • DONE: aceptación comprobada y entrega efectuada hasta el límite autorizado (por ejemplo PR_READY, no MERGED cuando no existe permiso de merge).
  • NEEDS_DECISION: decisión externa que cambia el resultado o alcance.
  • BLOCKED: impedimento real con evidencia, sin reintento ciego ni falsa aprobación.
  • BUDGET_EXCEEDED: continuar sin progreso verificable no se justifica.
  • FAILED: criterios incumplidos, con estado y evidencia precisos.

Qualification y revisión sin burocracia

  • En cada iteración: solo comprobación afectada y sus dependencias necesarias.
  • En entrega de PR: gates que apliquen al tipo de cambio.
  • En candidato de release: FULL → Installer UX → RUNTIME y demás prerrequisitos obligatorios del contrato vigente; no se omiten por perseguir menos prompts.
  • Revisión independiente solo cuando el riesgo, el contrato o un hallazgo material lo justifiquen; sus correcciones permanecen en la misma misión.
  • No afirmar que la evidencia sintética demuestra el comportamiento real de OpenCode/Codex.
  • No publicar secretos, raw sensibles ni reportes inseguros por acelerar.

Límites arquitectónicos

  • No construir ahora otro motor de loops, daemon, scheduler, plugin, agente, framework ni un conjunto nuevo de documentos. Aprovechar el loop de herramientas y delegación nativos disponibles en OpenCode/Codex.
  • Mantener las responsabilidades existentes de Kael y especialistas y los límites de ownership; no iniciar recursión/fan-out ilimitado.
  • Operación sin APIs de pago, servicios externos facturables ni infraestructura adicional fuera de GitHub y gates locales.
  • No introducir hooks Git automáticos.
  • La filosofía aplica al flujo de trabajo de OlympusAgents y a la redacción de nuestros próximos encargos; no redefine los demás proyectos.

Cómo empezamos

  1. Dejar concluir intacta la ejecución actual; esperar el resultado que compartirá el mantenedor.
  2. Al recibirlo, determinar el siguiente resultado útil o bloqueo real sin iniciar otra cascada de prompts de solo lectura.
  3. Redactar un prompt end-to-end con la máxima autonomía que permita la autorización explícita y el riesgo, para ejecutar el siguiente trabajo real.
  4. Medir durante cinco trabajos reales: intervenciones humanas, tiempo de cierre, gates repetidos sin impacto y entregas efectivas. Ajustar reglas con evidencia.
  5. No abrir un issue nuevo para implementar esta filosofía; este documento es la referencia, y los cambios de producto se gestionan solo cuando se justifiquen.

En una frase

No diseñemos prompts para que el agente termine una etapa; diseñemos misiones para que termine el trabajo, se autocorrija dentro de sus permisos y sepa exactamente cuándo detenerse.

Relacionado: #91 (gobernanza/documentación y secretos; trabajo distinto, no bloquea adoptar desde el siguiente prompt).

Inspiración — no adopción literal de un while true: https://ghuntley.com/ralph/ · https://arxiv.org/abs/2607.00038.

Aprendizaje aplicado — 2026-10-26: parar cuando el bloqueo deja de ser local

Caso práctico: preparación del colector externo de qualification para OlympusAgents v0.4.12. La misión autónoma pasó de una base de 47 pruebas a 54/54 en Windows y 4/4 en Linux/WSL, con correcciones locales revisadas independientemente: manejo de ancestros Windows por HANDLE/FileID, estados de observación separados de decisiones de gate y backend Linux por FD. El candidato, checkout y evidencias anteriores permanecieron preservados según los reportes de ejecución; esto no acredita los runners oficiales ni constituye autorización de release.

Bloqueo residual real: la observación continua obligatoria de descendientes en Windows no está disponible/validada bajo el token y restricciones actuales; ETW fue denegado. READY_FOR_QUALIFICATION_AUTHORIZATION = NO. No atribuir esta limitación a un defecto corregible por otra ronda genérica de tests ni afirmar que 54/54 habilita qualifications oficiales.

Decisión operativa:

  1. Congelar el esfuerzo del colector externo en el último paquete/evidencia revisada. Preservar sus límites y hashes; no iniciar nuevas copias, suites ni revisiones por inercia.
  2. Mantener v0.4.12 sin autorización de qualifications/release mientras no se observe la capacidad obligatoria en un entorno Windows expresamente autorizado o se apruebe una modificación fundada del contrato/candidato. No elevar privilegios, eludir restricciones ni degradar CLEANUP_UNKNOWN a PASS.
  3. Separar el bloqueo del trabajo independiente de OlympusAgents. Puede continuar una funcionalidad no dependiente del release, sin declarar liberada v0.4.12.
  4. Distinguir tipos de impedimento: defecto local → corrección focalizada dentro del mandato; capacidad/permiso/entorno ausente → NEEDS_DECISION o BLOCKED con evidencia, sin reintentos; gate de seguridad no cumplido → no promover.
  5. Control de WIP: priorizar una misión de producto activa a la vez. Reutilizar/triage de los issues existentes y reducir duplicados; no transformar cada fallo del colector en otro issue o en un proyecto de infraestructura.
  6. Limitar evidencia auxiliar: pruebas afectadas durante el loop; una validación final proporcionada; revisión independiente cuando el riesgo la justifique. Medir resultados aceptados e intervenciones humanas, no número de artefactos ni tests.

Próximo objetivo preferido para recuperar entrega funcional: issue #74, Capability Preflight de Kael (resolver capacidad de delegación antes de comunicar un bloqueo global). Mantener #92 como referencia, no como ticket implementable. Revisar prioridades con el mantenedor antes de iniciar escrituras.

Aprendizaje central: un loop eficiente también sabe detenerse cuando ya no existen acciones locales legítimas con probabilidad razonable de progreso.

Ensayo de lotes — 2026-10-26: investigación compartida #72, #76, #85 y #87

Alcance: primera prueba de agrupación temática, ejecutada como una misión Codex read-only. Se compartieron inventario, versión del CLI, configuración, contratos y fuentes upstream. El informe del ejecutor declara 4/4 issues abordados, 3/4 con investigación suficiente para proponer cierre (#76, #85, #87) y 1/4 pendiente (#72, por comparación de beneficio medido no autorizada). No se cerraron issues ni se modificó código.

Métricas reportadas: una instrucción humana inicial; 0 solicitudes de intervención adicionales; 0 delegaciones; 399,6 s (6 min 39,6 s) de adquisición/comprobación, excluyendo la redacción posterior; ningún archivo modificado. Se identificó una consulta duplicada a releases/latest, seis contrastes web/tag para fijar versión y reutilización de una sola base local. Las métricas provienen del reporte de ejecución, no de telemetría independiente de tiempo/tokens.

Evaluación: PROMISING_FOR_RESEARCH_BATCHES, todavía no validado como mejora general. La prueba demuestra que pueden tomarse cuatro decisiones relacionadas sin cuatro rondas humanas independientes, pero no demuestra reducción porcentual de tiempo ni de tokens: falta un grupo de comparación secuencial y la duración reportada no incluye la entrega completa. Tampoco prueba la eficacia del loop para implementación, regresiones, PR y merge.

Reglas provisionales: agrupar por responsabilidad y evidencias compartidas; mantener decisión y estado de aceptación por issue; separar investigaciones read-only de mutaciones privilegiadas; no cerrar por mera cobertura documental cuando falte un criterio medido; evitar ramas y PR innecesarias en trabajos de solo lectura. No aumentar WIP ni alterar DENY/ASK, /maintain, los gates de release o el carácter permanente de este issue.

Próximo contraste necesario: repetir la medición en una misión de implementación con cambios relacionados, corrección autónoma y checks proporcionados. Registrar tiempo completo hasta entrega aceptada, intervenciones, reintentos, pruebas repetidas, bloqueos y resultado por issue. Solo después decidir si formalizar nuevos límites de tamaño de lote o concurrencia.

Actualización de filosofía — 2026-10-31: /goal nativo como motor de continuidad, Olympus como contrato de aceptación

Decisión de diseño (propuesta, no adopción automática): NATIVE_FIRST / EVIDENCE_GATED. La filosofía de este issue sigue vigente. OpenCode V2 incorporó /goal <objective> en v2.2.1 (TUI/Desktop), con controles pause, resume, clear, continuación en el límite idle y revisión de progreso. Esto permite investigar → implementar → comprobar → corregir dentro de una ejecución sin diseñar otro motor de loops. Referencias oficiales: changelog V2 y PR upstream #59437.

Separación de responsabilidades

Capa Responsabilidad Qué NO demuestra/autoriz​a
Usuario / PM Objetivo, alcance, recursos, presupuesto, criterios observables, permisos para Git/PR y condiciones de parada. La activación de /goal no amplía esta autorización.
OpenCode /goal Persistencia acotada y continuaciones nativas mientras exista progreso; pausa/reanudación; revisión interna al llegar a idle. Su veredicto done no equivale a aprobación humana, pruebas PASS ni permiso de merge/release.
Kael / OlympusAgents Traducir la misión en trabajo autorizado, coordinar especialistas cuando aporten valor, aplicar TFR y reconciliar evidencia y estados. No duplicar /goal con un segundo loop/daemon/scheduler Olympus.
Gates y mantenedor Comprobar los criterios relevantes mediante evidencia real; resolver ASK/DENY, /maintain/Aegis y las decisiones externas. Un gate obligatorio no se omite por reducir prompts.

Contrato mínimo portable de misión (para formular el prompt inicial)

  1. Goal: resultado de producto deseado expresado en términos verificables, no una lista artificial de fases.
  2. Contexto: repositorio, directorio/worktree, rama/revisión esperada, issue y límites de entorno.
  3. Autorización integral y acotada: qué lecturas, escrituras, pruebas, delegaciones, commits, push/PR están permitidos; lo protegido (merge, release, cambios destructivos, permisos) exige autorización propia.
  4. Acceptance / evidence: condiciones de éxito y evidencia mínima por riesgo; resultados previos aplicables se reutilizan, sin hashes ni suites FULL por inercia.
  5. Persistence / stop: seguir mientras haya progreso y autoridad; pausar ante estancamiento, fallo de entorno, permisos, presupuestos, riesgo o un resultado que exige decisión del usuario.
  6. Handoff: estado terminal honesto, artefactos/cambios, evidencia ejecutada/reutilizada, límites y siguiente decisión imprescindible.

Este contrato puede usarse sin /goal en Codex, CLI o proyectos que aún no adoptan el mecanismo; su objetivo es portabilidad semántica, no dependencia obligatoria de un host.

Adaptación operacional sugerida

  • Cuándo probar /goal: misiones interactivas de OpenCode TUI/Desktop, con varias iteraciones útiles y un resultado medible. Las consultas simples, investigaciones breves o tareas de un paso pueden usar el loop ordinario sin activar /goal.
  • Cómo iniciar: establecer el contrato completo y la autorización antes de activar /goal <objective> en la sesión y directorio correctos. Kael ejecuta y corrige dentro del alcance; un fallo focalizado lleva a la corrección focalizada, no a repetir FULL.
  • Cómo terminar: goal met/veredicto interno done es candidato a cierre, no DONE de Olympus. Reconciliar pruebas, artefactos, permisos y publicación hasta el límite autorizado. Un goal paused requiere clasificar su motivo (NEEDS_DECISION, BLOCKED, BUDGET_EXCEEDED u otro); no traducirlo automáticamente a fracaso.
  • Cómo controlar costo: medir intervenciones humanas, tiempo total de orquestación frente al tiempo técnico, pruebas repetidas, vueltas sin progreso, resultado aceptado y coste/uso solo cuando el host lo exponga. No auditar rutinariamente suscripciones ni facturación; respetar restricciones económicas del usuario y no modificar autenticación sin autorización.
  • Cómo preservar autoridad: /goal no altera DENY/ASK, ownership, /maintain/Aegis, ni gates de release; nunca otorgar acciones no autorizadas mediante continuaciones sintéticas.

Límites nativos confirmados en fuente — no asumir más

  • El revisor de /goal usa el modelo de la misma sesión (session.generate), no un segundo revisor independiente; no reemplaza Vera ni pruebas del producto.
  • El diseño incorpora mecanismos de pausa por estancamiento/límites de rondas, pero no ofrece un presupuesto configurable de tokens; una continuación nativa no garantiza economía ni cierre correcto.
  • Un reinicio puede dejar el goal en pausa y requerir resume; no prometer recuperación automática universal.
  • /goal es un comando de TUI/Desktop; el PR original señala que opencode run no soporta slash commands. No atribuirle capacidad en run --standalone sin verificación específica.
  • La semántica de trabajo en background y notificaciones debe evaluarse con los eventos reales; un aviso done del cliente o del revisor no demuestra por sí mismo que todos los consumidores terminaron.

Evidencia y siguiente decisión

  • La investigación y comparativa ADOPT / ADAPT / DEFER / REJECT corresponden a #100, que sigue siendo el issue ejecutable de investigación; [NO BORRAR][REFERENCIA] Filosofía OlympusAgents: Goal-Driven · Loop-Executed · Evidence-Gated #92 continúa como referencia permanente y abierta.
  • Las pruebas funcionales de provisioning/native B/C de #77 validaron Kael y directorios en worktrees consumer, pero no probaron /goal; lifecycle B sigue históricamente UNVERIFIED.
  • La política de verificación TFR fue revisada y comprometida localmente, pero su comportamiento en runtime y la adopción de /goal todavía no están verificados. No convertir esta adición documental en adopción del producto.
  • Siguiente paso de [Research] Native /goal vs. reusable evidence-gated mission workflow #100: piloto opt-in, pequeño y medible, comparando la ejecución actual frente a /goal para una misión relacionada con pruebas/corrección. Mantener la misma autoridad y criterios, no añadir infraestructura ni revalidar requisitos ya demostrados. Solo después decidir una forma de uso reutilizable en nuestros proyectos.

Síntesis: Olympus define qué significa terminar y qué está autorizado; OpenCode /goal puede ayudar a sostener el trabajo hasta ese punto. Ni el loop nativo ni su revisor deben sustituir evidencia, autoridad o decisiones humanas.

Activity

  1. Edulynch commented on Oct 27, 2026

    @Edulynch
    OwnerAuthor

    Evidencia cerrada — A/B controlado de modificadores de Kael (2026-10-27)

    Decisión: FUNCTIONAL_VALIDATION=PASS; MODIFIER_EFFECTIVENESS=INCONCLUSIVE. Cerrar este experimento como completado, sin cerrar #92 ni adoptar cambios adicionales de comportamiento. Evidencia reportada por ejecuciones locales del mantenedor; no se realizó auditoría independiente de los exports crudos de sesión.

    Diseño y resultados

    Dos copias originalmente byte-idénticas de una fixture PowerShell (Functions.ps1, Tests.ps1, README.md) contenían dos defectos deliberados: minúsculas faltantes en Normalize-Label y zero-padding faltante en Format-Duration. Los siete fallos de test originales representaban esos dos defectos, no siete causas. La sesión de OpenCode permaneció en la raíz de OlympusAgents (master, 8bf08f64b1ecbcaac73eecb17e8d3fa78512071f); el destino experimental se transmitió mediante KAEL_AB_TARGET, sin convertir la carpeta temporal en proyecto OpenCode.

    Métrica NORMAL (sin marcadores) MODOS (long-mode, fast-mode, surgical-mode)
    Suite inicial 12 PASS / 7 FAIL esperados 12 PASS / 7 FAIL esperados
    Suite final 19/19 PASS 19/19 PASS
    Intervalo UTC observado 1145.556 s (19:05.6) 1056.7622049 s (17:36.8)
    Preguntas a usuario 0 0
    Delegaciones 3 3
    Sesiones de especialistas 2 (Nox, Kovan) 2 (Nox, Kovan)
    Paralelismo físico probado No No (delegación observada secuencial)
    Archivos modificados Solo Functions.ps1 Solo Functions.ps1

    MODOS registró 88.794 s menos de intervalo observado (≈7.75%) en las ejecuciones completas. No equivale a tiempo total exacto ni prueba un efecto causado por los marcadores: una ejecución por condición, sin orden aleatorio ni control de variabilidad/caché, y sin evidencia de paralelismo. Adicionalmente, hubo un primer intento MODOS interrumpido por reinicio (COMPLETION_UNCONFIRMED); se verificó después que los tres hashes seguían idénticos a la fixture inicial, el mantenedor confirmó que la sesión original estaba detenida, y solo entonces se autorizó una ejecución nueva. Esos costes de interrupción/recuperación no están incluidos en los 1056.762 s y deben conservarse como evidencia de fiabilidad operativa.

    Revisión de salidas e integridad

    • Ambas variantes cambiaron exclusivamente Functions.ps1; Tests.ps1 y README.md conservaron sus SHA256 originales, sin archivos extra.
    • git diff --no-index entre implementaciones finales mostró únicamente paréntesis alrededor de [regex]::Replace(...) antes de .ToLowerInvariant() y presencia/ausencia del LF final. El comportamiento de las correcciones comparadas es equivalente por inspección; no se reivindica prueba exhaustiva fuera de los 19 tests.
    • OlympusAgents mantuvo rama/HEAD y el estado Git preexistente; los 21 archivos locales sin seguimiento se preservaron según los reportes. Sin commits, push, publicación ni cambios del framework.
    • La UI y decisión de permisos nativos fueron NOT_OBSERVABLE; éxito de herramientas no se interpreta como autorización visible.

    Lectura de los tres modificadores

    • long-mode: no discriminado; ambos hicieron cero preguntas.
    • fast-mode: no discriminado; sin menor número de delegaciones ni paralelismo demostrado.
    • surgical-mode: no discriminado; ambas condiciones respetaron el mismo alcance mínimo.
    • La presencia de marcadores al final del prompt no implica parser, reconocimiento nativo garantizado ni mejora causal.

    Continuidad recomendada: mantenerlos como modificadores de prompt experimentales de Kael (no comandos / ni funcionalidad demostrada como superior). Señalar explícitamente el estado experimental en README mediante cambio documental revisable; evaluar efectos en pilotos reales Flutter/Android u otras tareas con preferencias opcionales, partes independientes y tentaciones de editar fuera del alcance. No imponer reescritura de contratos, no modificar permisos y mantener #92 abierto como referencia filosófica.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions