CreaRack-SL

Hito F: Auto-Plan refactor + investigación de calidad (Plan Hardening post-Máster)

Resumen

Cierre del Hito F del Plan Hardening post-Máster (sesión s101, 2026-06-01). Refactor de Auto-Plan para retirar el provider Gemini legacy hardcodeado que violaba la Regla 8 (modelo único Gemma 4) + investigación completa de qué sustenta la calidad “100%” del servicio.

Alcance: solo Auto-Plan. El provider gemini en otros módulos (monitoring/) se mantiene sin cambios.

Cambios

Refactor: eliminación de provider Gemini legacy

Archivos modificados: 4

ArchivoAcciónLOC
blueprints/services/autoplan.pyEliminar método _analyze_with_gemini + imports google.genai−153
blueprints/api/autoplan.pyEliminar rama elif provider == "gemini" del dispatcher−4
config/settings/base.pyActualizar docstring de AUTOPLAN_PROVIDER~2
context/AI_CONFIG.mdActualizar matriz de env vars~1

Modelo retirado: gemini-3.1-flash-lite-preview (hardcodeado, no configurable).

Nuevo estado de AUTOPLAN_PROVIDER: solo 2 valores válidos:

  • google_genai (default) → Gemma 4 directo vía Google AI Studio Paid Tier
  • ollama (self-host dev) → LLM local

Investigación: ¿Qué sostiene la calidad “100%” de Auto-Plan?

Análisis detallado en sesión s101 (ver ADR decision--20260601--retirada-provider-gemini-autoplan):

Hallazgos principales:

  1. Constrained decoding es el pilar: la opción response_mime_type="application/json" de Gemma 4 fuerza salidas JSON válidas a nivel sintáctico
  2. El prompt sustenta la semántica: redacción cuidada para minimizar alucinaciones en detección de racks/conexiones/anotaciones
  3. Validador duro es contraproducente: análisis de rechazo mostró que esquemas estrictos rechazaban salidas válidas (p.ej. campos opcionales ausentes); sin beneficio en detección de errores

Decisión consensuada: NO añadir validador automático de resultado post-generación. La calidad se garantiza con:

  • Mantenimiento y versionado del prompt (AIPrompt model)
  • Constrained decoding de Gemma 4
  • Pruebas de regresión en scripts/test_autoplan_quality.py

Documentado: seción “Validación de salidas AI” en context/AI_CONFIG.md.

Impacto runtime

  • Cero: PROD ya usaba google_genai desde s49. Este refactor es limpieza interna.
  • Verificación local: imports OK, linting (ruff) limpio.

Cierre del footgun

  • Footgun #22 del GAPS: “Auto-Plan tenía provider heredado reactivable, saltando Regla 8”
  • Status: ✅ CERRADO

Hito F en contexto

Último de los 6 GAPS de severidad ALTA del Plan Hardening post-Máster:

HitoDescripciónStatus
AAlerting de PROD✅ s95 (PR #50)
BHonestidad Signage✅ s96 (PR #52)
CPortero global API✅ s99 (PR #53)
DRLS de escritura✅ s101 (PR #54)
FAuto-Plan: retirada Gemini + investigación calidad✅ s101 (PR #55)
ECifrado datos sensibles⬜ (próximo)

Referencias

  • Sesión: s101
  • PR: #55
  • Autor: @Esquembri (con Claude Code)
  • Plan maestro: TASK.md (sección “Plan Hardening post-Máster”)
  • ADR asociado: [[decision—20260601—retirada-provider-gemini-autoplan]]
  • Regla 8: CLAUDE.md — modelo único Gemma 4

Véase también

  • [[decision—20260601—retirada-provider-gemini-autoplan]]
  • [[concept—blueprints—autoplan]]
  • [[entity—blueprints—service—autoplan]]
  • [[entity—blueprints—endpoint—autoplan-import]]
  • [[entity—blueprints—model—aiprompt]]