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_PROVIDERsolo aceptagoogle_genai(default) uollama(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:
- Mantenimiento del prompt (en
AIPromptmodel + versionado en git) - Constrained decoding de Gemma 4
- 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
| Archivo | Cambios |
|---|---|
blueprints/services/autoplan.py | −153 LOC (_analyze_with_gemini, imports) |
blueprints/api/autoplan.py | Rama gemini del endpoint /autoplan/import |
config/settings/base.py | Documentación de AUTOPLAN_PROVIDER |
context/AI_CONFIG.md | Actualización de matriz de variables |
Alternativas consideradas
- Mantener deprecated (con warning): rechazado — crea deuda técnica y ambigüedad
- Mover a rama
legacy/: rechazado — sin usuarios identificados - 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]]