Skip to content

Segunda tanda de cobertura sobre el bucle de aprendizaje autónomo (me...

isidro requested to merge pmc/auto/202608071800-5b95 into main

PMC dispatch#153 · persona: free

Tarea

=== REGLAS DE AUTOPILOT (NO NEGOCIABLES) ===

  1. NUNCA pushear a main/master ni fuerza (use el branch actual o crea uno feature/).
  2. NUNCA borrar archivos, ramas o tags.
  3. NUNCA modificar .env, secretos, dependencias mayores sin que el cambio sea trivial.
  4. Si hay dudas, ESCRIBE una nota markdown en .claude/pmc-autopilot/log-<ISO-timestamp>.md con tu razonamiento y TERMINA.
  5. Si el cambio funciona y es seguro, COMMITEA con mensaje claro empezando por "[autopilot] ".
  6. NO ejecutar tests destructivos (DB drops, migraciones). Si los tests requieren eso, marca como blocker.
  7. Al terminar emite UNA línea final exactamente: SUMMARY: <una frase del estado tras tu trabajo>.

=== CONTEXTO === Proyecto: CMOAgent Path: /Users/thio/CMOAgent Señales: score=40 state=active branch=update/doctrinestrike-context last_commit=1d

=== LECCIONES GLOBALES (REVIEW LOOP DEL AUTOPILOT) === Patrones que el meta-reviewer destiló de sesiones pasadas en TODOS los proyectos. Aplícalos como reglas operativas si encajan con la situación actual.

  • Before dispatching ahead_unpushed or any push task, check for git remote existence; if none exists, mark as N/A and skip without spawning a session.
  • If CLAUDE.md contains 'local-only' or 'no git remote', permanently suppress push-related task types for that repo — do not re-queue them.
  • Do not dispatch the same task type to the same repo if an autopilot log from the last 24h already documents the same no-op outcome.
  • If working tree contains only untracked .claude/ artifacts, resolve dirty_long by adding .gitignore entry in one commit — do not spawn a full 30min session.
  • Cap implementer sessions at 60min hard; if the task (playbook, dirty_long) is not closeable in that window, split into subtasks before dispatching.
  • Do not re-run lifecycle_audit on a repo where a lifecycle-audit file already exists and is less than 7 days old.
  • When a PR is stalled on a product decision (not a technical blocker), write the triage note and stop — do not open a new branch without human approval.

=== PERFIL DE ESTE PROYECTO (síntesis de actividad previa) === CMOAgent converge a main vía rama de integración con absorción determinista de divergencias; playbook /api/pulse + kpis contract estable (573 tests). Policy: cierre manual de MR post-merge en rama alternativa, sin auto-push. Blockers históricos (uv.lock mecánico, .env.tpl vault refs) resueltos; sincronización inter-ramas robusta. Norma LiteLLM: tagging obligatorio, cliente único, cero endpoints directos. Modularización converged, superficie API segura, linter + type-checker clean.

=== INTENTOS PREVIOS (MEMORIA DEL AUTOPILOT) === Estos son los resultados de tus runs anteriores sobre este mismo proyecto y kind. LEE ESTO ANTES DE EMPEZAR — no repitas trabajo ya hecho ni intentes acciones que ya se diagnosticaron como bloqueadas. Si ves un blocker estructural repetido, NO vuelvas a intentar la misma vía: deja una nota y termina.

  • [3d, completed] MR !40 (merged) desbloqueada — merge con main actual resuelto (573 tests + ruff + mypy en verde),
  • [4d, completed] Rama de integración con las dos ramas divergentes absorbidas, tabla de rutas del portal
  • [5d, completed] Cerrado el último P2 de seguridad del audit CTO (tokens de conectores vía referencias

=== CÓMO SE RESOLVIÓ ESTO EN OTROS PROYECTOS === Sesiones recientes con el mismo kind en otros repos del portfolio. Toma ideas, no copies a ciegas — el contexto de cada proyecto manda.

  • [ThioBot, 2d] (timeout — sesión >90min, marcada como completada)
  • [LaPareditaAgent, 2d] Cobertura añadida a properties.ts, tools/ttlock.ts (38→98 %) y telegram/prompt.ts, más

=== TAREA: PLAYBOOK "Boost de cobertura de tests" ===

Objetivo: subir la cobertura de tests de CMOAgent priorizando archivos de dominio críticos.

Proceso:

  1. Lista los archivos bajo src/ (o equivalente) que son lógica de dominio (no UI glue, no config, no tipos).
  2. De esos, identifica los 3 con menor cobertura (leyendo tests existentes) y mayor criticidad.
  3. Para cada uno, TDD:
    • primero escribe 2-3 tests unitarios que cubran el path normal + 1-2 edge cases obvios
    • si el código no es testeable sin cambios, aplica el refactor mínimo (nunca cambies comportamiento)
    • ejecuta los tests — deben pasar (GREEN)
  4. Commit por archivo cubierto: "test(xxx): add coverage for Y invariant".

Si el proyecto no tiene test runner configurado → reporta claramente y sugiere cuál aplicar (vitest/jest/pytest según el stack).

Reglas operativas — MODO AUTÓNOMO REAL:

  • Estás corriendo con --permission-mode bypassPermissions --dangerously-skip-permissions. Eso significa que puedes ejecutar CUALQUIER comando (read, edit, bash, write, WebFetch, …) sin pedir confirmación. Hazlo.
  • NO pidas permiso para editar archivos, ejecutar scripts, instalar deps, correr tests, ni hacer commits. El usuario ya te autorizó al delegarte esta tarea.
  • NO digas cosas como "¿quieres que proceda?", "¿te parece bien si…?", "necesito tu aprobación". Si lo piensas, ejecútalo.
  • SOLO interrumpe al usuario si: · necesitas una credencial o secret que no está disponible, · hay que tomar una decisión estratégica de producto (no técnica) con dos caminos equivalentes, · la acción requiere autenticación externa (OAuth, 2FA push, biometría), · detectas riesgo de pérdida de datos irreversible (drop de DB, force push, rm -rf fuera del worktree).
  • Commit por bloques pequeños con mensajes conventional commits. NO pushees a main sin confirmación.
  • Sigue las convenciones del repo (CLAUDE.md, AGENTS.md si existen).
  • Antes de terminar, ejecuta /recap para generar un resumen estructurado.
  • Al terminar: la primera línea de output debe ser SUMMARY: <1 línea> seguida de la lista de commits hechos y el recap de /recap.

Cuando termines, recuerda:

  • 1 línea SUMMARY: ... al final
  • Si commiteaste, lista los hashes
  • Si NO commiteaste, explica por qué en 1-2 líneas

Resumen del agente

Segunda tanda de cobertura sobre el bucle de aprendizaje autónomo (measure 56→100 %, implement 56→97 %, insights_store 38→98 %); 63 tests nuevos, suite en 750 passed con ruff y mypy

Diff

tests/test_email_sender.py          | 205 ++++++++++++++++++++
 tests/test_insights_store_sql.py    | 369 ++++++++++++++++++++++++++++++++++++
 tests/test_learning_implement.py    | 346 +++++++++++++++++++++++++++++++++
 tests/test_learning_measure.py      | 289 ++++++++++++++++++++++++++++
 tests/test_social_ops_publishers.py | 333 ++++++++++++++++++++++++++++++++
 tests/test_weekly_reset.py          | 282 +++++++++++++++++++++++++++
 6 files changed, 1824 insertions(+)

🤖 Generated by PMC (Project Mission Control) — revisa antes de mergear.

Merge request reports