CreaRack-SL

ADR — Retirada del provider 'gemini' legacy de Auto-Plan (Plan Hardening Hito F · GAP #5)

Contexto

Auto-Plan (digitalización de planos con IA) tenía un provider hardcodeado de Gemini legacy que:

  • Usaba el modelo fijo gemini-3.1-flash-lite-preview
  • Era reactivable con AUTOPLAN_PROVIDER=gemini
  • Violaba la Regla 8 (modelo único Gemma 4, definida en CLAUDE.md)
  • Era un footgun #22 del GAPS: riesgo de incumplir la política de modelo sin intervención activa

A partir de sesión s49, PROD ya usaba google_genai (Gemma 4 directo vía Google AI Studio Paid Tier). El provider Gemini legacy era muerto en ejecución pero activo en código.

Decisión

Retirar completamente el provider gemini de Auto-Plan.

  • Eliminar el método _analyze_with_gemini (~153 LOC)
  • Eliminar la rama del dispatcher elif provider == "gemini"
  • Eliminar imports huérfanos google.genai / google.genai.types
  • Actualizar config/settings/base.py: AUTOPLAN_PROVIDER solo acepta google_genai (default) u ollama (self-host dev)
  • Documentar el cambio en context/AI_CONFIG.md

Nota: el provider gemini en otros módulos (monitoring/, CNS/Tutor/Explain) se mantiene sin cambios — es una cadena alternativa independiente de la Regla 8.

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

Se realizó análisis exhaustivo (sesión s101) para entender si la retirada de validación automática del JSON resultante podría afectar la calidad. Conclusión:

  • Lo que sostiene la calidad: el prompt cuidadoso + response_mime_type="application/json" (constrained decoding nativo de Gemma 4)
  • Lo que NO añade validador duro: análisis de salidas buenas rechazadas por esquema estricto; los intentos de validación automática (ej. pydantic) generaron falsos negativos sin beneficio

Decisión consensuada: NO añadir validador duro de JSON. La responsabilidad reside en:

  1. Mantenimiento del prompt (en AIPrompt model + versionado en git)
  2. Constrained decoding de Gemma 4
  3. Pruebas de regresión en tests (scripts/test_autoplan_quality.py)

Documentado en: context/AI_CONFIG.md (sección “Validación de salidas”).

Impacto runtime

  • Cero: PROD ya usaba google_genai. Los cambios son puramente de limpieza de código
  • Verificado localmente: import OK, ruff limpio

Alcance

ArchivoCambios
blueprints/services/autoplan.py−153 LOC (_analyze_with_gemini, imports)
blueprints/api/autoplan.pyRama gemini del endpoint /autoplan/import
config/settings/base.pyDocumentación de AUTOPLAN_PROVIDER
context/AI_CONFIG.mdActualización de matriz de variables

Alternativas consideradas

  1. Mantener deprecated (con warning): rechazado — crea deuda técnica y ambigüedad
  2. Mover a rama legacy/: rechazado — sin usuarios identificados
  3. Validador duro post-generación: rechazado — basado en investigación, rechaza salidas válidas

Referencias

  • Sesión: s101 (2026-06-01)
  • PR: #55
  • Hito: F (Cierre del Plan Hardening post-Máster, GAP #5)
  • Footgun cerrado: #22 del GAPS
  • Regla 8: CLAUDE.md — modelo único Gemma 4
  • Feature relacionada: [[feature—blueprints—autoplan-hito-f-hardening]]

Véase también

  • [[feature—blueprints—auto-plan-ai]]
  • [[entity—blueprints—service—google-genai-driver]]
  • [[decision—20260511—cleanup-openrouter-monoproveedor-google-genai]]