Volver a la wiki

Decisiones de la Auditoría Suprema s105 (Blueprints/Auto-Plan)

Contexto

Sesión 105 de la Auditoría Suprema: revisión exhaustiva de seguridad y correctness del dominio blueprints / Auto-Plan.

Hallazgos: 61 crudos → 40 únicos → 22 confirmados (7 ALTA, 12 MEDIA, 3 BAJA).

Decisión de Edu: “Arreglar todo de una vez. Definitivo. No se parceliza.”


Decisión 1: Arreglar todos los 22 hallazgos en UNA sola PR

Discusión: Algunas PRs grandes (>50-100 KB de diff) se pueden parcelar en sub-PRs por dominio o por tipo de problema. Ejemplo:

Razón del NO-parcelizar:

Resultado: 1 commit, ~300-400 LOC diff, cambios en 14 archivos. Mergea hoy (2026-06-03), directa a main.


Decisión 2: Dos items quedan para PR distinta (documentado)

Problema: La auditoría identifica otros dos issues del dominio blueprints que sí se parcelizan:

2a. Handler global de str(exc) en config/urls.py

Problema: ~509 endpoints de CreaRack exponen str(e) en los exception handlers (fuga de información interna: stack traces, SQL, rutas, etc.).

Por qué NO se arregla en s105:

Acción: se documenta en RELEASE_NOTES como “fuera de tanda”. PR aparte cuando sea el momento.

2b. Auto-Plan asíncrono (Celery / tarea background)

Problema: magic_import_blueprint() es síncrono, llamada IA bloqueante (puede tardar 5-30s). El Map Editor no tiene UI de spinner/polling.

Por qué NO se arregla en s105:

Acción: se documenta como “fuera de tanda”. Feature page separada cuando se inicie.

Mención en RELEASE_NOTES: “Conversión de Auto-Plan a asíncrono → PR propio (frontend). Prioridad: media. Tracking: issue #XYZ.”


Decisión 3: Naming del prompt activo

Alternativas consideradas:

Razón de __brain_active__:


Decisión 4: Fallback a fichero semilla (no error)

Alternativas:

Razón de A (fallback):


Decisión 5: Soft-delete de racks en blueprints

Alternativas:

Razón de B (soft-delete):


Decisión 6: Limit 25 MB para Auto-Plan

Alternativas:

Razón de 25 MB:


Decisión 7: Guard de decompression bomb: 64 MP

Alternativas:

Razón de 64 MP:


Follow-ups documentados

  1. PR handler global str(exc): transversal a config/urls.py. Timing: próximas 1-2 sprints.
  2. PR Auto-Plan async: Celery + frontend. Timing: próximas 2-3 sprints. Depende de: definición de formato de job, schema de polling, WebSocket vs HTTP polling.
  3. Prompt migration script (si aplica): script para migrar orgs existentes sin prompt activo (opcional, fallback ya cubre).

Checklist de verificación (s105)


Véase también

Subir