CreaRack-SL

Auto-Plan: prompt NODAL funcional ganador 100 % calidad vía OpenRouter (s48)

Resumen

En la sesión 48 (2026-05-03), tras 10+ iteraciones manuales con seed=43 fijo, el prompt de Auto-Plan AI converge a 100 % de calidad sobre el plano de prueba de 68 racks usando el modelo google/gemma-4-26b-a4b-it:free vía OpenRouter BYOK Google AI Studio.

El cambio clave es la reformulación del criterio de clasificación NODAL: de un único predicado restrictivo (ONLY 3+ cables) a 4 condiciones disjuntivas inclusivas, cerrando así el experimento de migración desde self-host EPYC.


Contexto

Self-host s47g (EPYC pve-epyc-02)OpenRouter BYOK — s48
Tiempo plano 70 racks4:452:09 ⚡ 2,2×
Calidad racks100 % (68/68)100 % (68/68)
Walls—18
Texts—22
Connections—67
Costeservidor EPYC fijo$0 (free tier personal)
MantenimientoProxmox + LXC + llama.cppsin servidor
Reproducibilidadvarianza de muestreobit-a-bit con seed=43

Cambios en los prompts

Archivos afectados (sincronizados):

  • prompts/blueprint_analyst.md
  • prompts/blueprint_analyst_default.md

Sección 1 — RACKS & NODAL HUBS (reescrita)

Antes (s47g):

"NODAL": A rack is ONLY a NODAL if it acts as a central hub where
cables from MULTIPLE (3+) other racks converge.
*** ANTI-HALLUCINATION WARNING ***: Do NOT classify a rack as NODAL
just because it is physically large or colored.
ORPHAN RULE: A NODAL without any cables connected to it in your final
JSON is a hallucination.

Después (s48):

A rack MUST be classified as "NODAL" if ANY of these conditions is true:
- It is the endpoint or hub of cables coming from MULTIPLE (3+) other racks.
- It unifies/aggregates connections from a group of racks (distribution point).
- It is colored orange / red / yellow or visually highlighted vs its neighbours.
- It is labeled "NODE", "NODO", "MDF", "IDF", "MAIN", "DIST", "CORE" or similar.
IMPORTANT: NODAL is a FUNCTIONAL role, NOT about size.
IMPORTANT: COUNT the cables before classifying. ≥3 → NODAL by default.
IMPORTANT: A network drawing typically contains MULTIPLE NODAL racks.

Razonamiento del cambio: Las reglas anti-hallucination de s47g producían sub-clasificación: el modelo ignoraba el NODAL grande (visualmente destacado) por miedo a “alucinar” y lo dividía en racks adyacentes. Edu comprobó empíricamente que usar color y label como pistas es beneficioso, no perjudicial.

Sección 3 — Walls (addendum)

Añadido detect colors: "black", "blue", "green", "red", etc. para enriquecer la extracción estructural.

Sin cambios

Secciones 2 (CONNECTIONS), 4 (TEXTS & SYMBOLS) y OUTPUT FORMAT permanecen idénticas a s47g.


Validación PROD

Plano test: 70 racks visibles / 68 ground truth.

  • Racks: 68/68 ✅ — ambos nodales unificados, posiciones correctas (verificación visual de Edu).
  • Walls: 18 | Texts: 22 | Connections: 67 | Symbols: 0.
  • Tiempo de procesamiento: 2 min 9 s.
  • Coste: $0 (Google AI Studio free tier vía BYOK personal).
  • Reproducibilidad: bit-a-bit con seed=43 (2 disparos consecutivos idénticos).

Palancas descartadas en iteraciones previas

Durante la sesión 48, antes de converger al cambio de prompt, se probaron y descartaron como neutras o perjudiciales las siguientes palancas técnicas del driver OpenRouter:

  • Resolución de imagen.
  • detail (OpenAI-style).
  • Calidad JPEG.
  • temperature.
  • frequency_penalty.

El único cambio efectivo fue la reformulación del criterio NODAL en el texto del prompt.


Próximo paso

Decidir el destino del servidor EPYC pve-epyc-02: apagar, repurposar o mantener como fallback DR. Pendiente para sesión 49.


Véase también

  • [[entity—autoplan—endpoint—import]]
  • [[feature—autoplan—openrouter-driver]]
  • [[concept—autoplan—nodal-classification]]
  • [[decision—20260503—openrouter-vs-selfhost-epyc]]