Un Founder humano dirigió un enjambre semi-autónomo de 7 agentes de IA, creados como usuarios Linux bare-metal con un playbook de Ansible (setup_users.yml), equipo DELTA, coordinados por correo electrónico (Postfix) para construir un sistema enterprise-grade de gestión integral para peluquería con integración AFIP (WSFE), facturación electrónica, turnero público, remitos mixtos y auditoría de seguridad.
Definición Semi-Autónomo: El enjambre requiere la presencia activa del Founder humano para definir visión estratégica, aprobar PRDs, autorizar merges a main, y resolver bloqueos. Sin el Founder, el enjambre NO avanza. Con el Founder, multiplica su productividad 6-8x.
| Rol | Agente | Responsabilidad |
|---|---|---|
| Founder (Humano) | root@mtk.org | Visión, aprobación de PRDs, autorización de merges, resolución de conflictos |
| Product Manager | pm_agent_delta@mtk.org | Orquestador central: PRDs, issues, coordinación devs, QA, security |
| Backend Developer | dev_backend_delta@mtk.org | Implementación server-side (Express + PostgreSQL) |
| Frontend Developer | dev_frontend_delta@mtk.org | Implementación client-side (React + Vite) |
| QA Engineer | qa_agent_delta@mtk.org | Revisión de PRs, validación de ACs, E2E |
| Security Auditor | security_agent_delta@mtk.org | Auditorías de seguridad pre-merge, npm audit, secretos |
| CI/CD Agent | ci_cd_agent_delta@mtk.org | Builds, tests automatizados, deploy Docker, Nginx |
| Documentation Agent | doc_agent_delta@mtk.org | ADRs, API_SPEC, ISO checklists, README |
| Componente | Tecnología | Propósito |
|---|---|---|
| Orquestación de agentes | OpenCode (modelos free) | Ejecución de agentes |
| Comunicación | Postfix + .forward | Correos entre agentes (event-driven) |
| Repositorio | Gitea (127.0.0.1:3000) | Código, issues, PRs (repo ID: 12) |
| Backend del producto | Node.js 22 + Express + PostgreSQL | API REST, migraciones 001-006 |
| Frontend del producto | React + Vite + Tailwind CSS | SPA, panel admin, portal público |
| Reverse Proxy | Nginx | Único punto de entrada (:8090) |
| Contenedorización | Docker + Docker Compose | Despliegue reproducible |
| Contratos de agentes | system-prompt.xml (RFC 2119) | Reglas estrictas por agente |
| Provisionamiento | Ansible (setup_users.yml) | Creación de equipos replicables |
✅ Backend + Frontend completos · API /api/v1/contacts y /api/v1/pets
✅ Portal público /public/booking · Panel admin con vista ASC · Fix zona horaria GMT-3
✅ UI catálogo · Gestión de inventario · Precios configurables
✅ precio_unitario opcional para servicios · Fix P0 JOIN services→servicios · Render HTML imprimible
✅ AFIP_MODE=mock configurable · Namespace SOAP corregido · Visor de comprobantes
✅ Estados: pendiente → parcial → pagado · Cancelación/nota de crédito
✅ Endpoints /analytics/summary, /ingresos, /retention · Fix contrato 14 campos
✅ SPA en /public/* · Panel config con upload de logo · Fail-fast si falta JWT_SECRET
| Métrica | Valor Real |
|---|---|
| Duración calendario | 14 días (25 Ago - 08 Sep 2026) |
| Días hábiles efectivos | 10 días (sáb/dom inactivos) |
| Horas efectivas/día | 6 horas (limitado por rate limiting de OpenCode) |
| Costo total | USD 0 (modelos free, bare-metal) |
| Módulos entregados | 8/8 (100%) |
| Issues cerrados | 30+ (extraídos de Gitea API) |
| PRs mergeados | 26+ (con revisión de QA) |
| Tests automatizados | 317 (155 frontend + 162 backend) |
| Vulnerabilidades finales | 0 críticas/altas, 2 medios documentados |
| Auditorías de seguridad | 3 (Issues #16, #113, #146 - todas APROBADAS) |
| ADRs generados | 2+ (ADR_001, ADR_002) |
| Endpoints documentados | 40+ (API_SPEC.md) |
| ISO 25010 | 18 completados de 32 items (56%) |
| SHA final de main | Despliegue estable en puerto :8090 |
| Dimensión | Enjambre DELTA | Equipo Humano |
|---|---|---|
| Horas productivas/día | 6h (rate limited) | 6-7h efectivas |
| Disponibilidad semanal | 5 días (lun-vie) | 5 días |
| Paralelización | Backend + Frontend simultáneo | Limitado por dependencias |
| Context switching | Instantáneo (leer system-prompt) | 15-30 min por interrupción |
| Tests por feature | 15-20 automáticos | 5-10 (si hay tiempo) |
| Auditoría de seguridad | Siempre pre-merge | Periódica (quarterly) |
| Documentación | 100% (ADRs, specs, ISO) | 30-50% |
| Deuda técnica | Trackeada en issues | A menudo invisible |
| Concepto | Enjambre DELTA | Equipo Humano (LATAM) |
|---|---|---|
| Salarios | USD 0 | USD 3,000-8,000/dev/mes |
| Costo por módulo | USD 0 (solo tiempo del Founder) | USD 2,000-6,000 |
| Overhead de gestión | 1 persona (Founder part-time) | PM + Scrum Master + Tech Lead |
| Onboarding | 0 (system-prompt.xml) | 1-3 meses por dev |
| Rotación | 0 | USD 5,000-15,000 por reemplazo |
| Costo total 14 días | USD 0 | USD 15,000-50,000 |
Qué pasó: Todos los remitos fallaban con HTTP 500. El código en remito.service.js:69 ejecutaba LEFT JOIN services, pero la migración 003 de PostgreSQL había creado la tabla en español: servicios.
Resolución: PR #71 (commit 44560cb). El dev_backend_delta corrigió el JOIN y agregó tests de integración con DB real. Tiempo de resolución: < 2 horas desde el reporte del Founder.
Lección: Los 57 tests unitarios pasaban porque no cubrían el endpoint real de remitos con service_id. Se agregó test de integración contra DB real.
Qué pasó: El dashboard de Analytics mostraba ceros en todas las métricas. El backend devolvía completados, pero el frontend (PR #99) esperaba turnos_completados. Lo mismo con ingresos_total vs total_ingresos.
Resolución: PR #100. El backend ajustó 14 campos para alinearse estrictamente al contrato del frontend.
Lección: QA + Security actúan como red de seguridad para contratos malinterpretados. La validación de contratos debe ser explícita en el system-prompt.
Qué pasó: Endpoint /ingresos devolvía error Postgres 08P01. La query porServicio recibía parámetros de fecha, pero la cadena SQL no tenía los placeholders $N para bindearlos.
Resolución: Se corrigió el bind de parámetros y se agregó el LEFT JOIN con la tabla remitos.
Hallazgos:
app.use(cors()) sin restricción de orígenes (server/src/app.js:20)JWT_SECRET hardcodeado por defecto: process.env.JWT_SECRET || 'dev_secret_change_me' (server/src/config.js:19)package-lock.json en cliente (causando ENOLOCK en npm audit)Resolución: PR #18 y PR #134. Se implementó fail-fast en producción (la app aborta si no hay JWT_SECRET) y se documentaron los hallazgos medios en un Issue de Gitea.
Qué pasó: El endpoint público /availability devolvía 500 ante fechas malformadas.
Resolución: Validación estricta de formato YYYY-MM-DD, devolviendo 400 en lugar de 500. Protege la base de datos de errores de parseo y evita exposición de stack traces.
setupFilesAfterEnv) → 63/63 tests:8090services → servicios. Fix urgente en PR #71./ingresos devuelve 500 (Postgres 08P01)/availability (400 vs 500):8090project_delta/project_delta (ID: 12):8090 (solo Nginx expuesto)docs/README.md - Flujo completo de despliegue con Docker Composedocs/API_SPEC.md - 40+ endpoints documentadosdocs/ADR_001.md a ADR_002.md - Decisiones arquitectónicasdocs/ISO_25010_CHECKLIST.md - 18 PASS de 32 items (56%)docs/ISO_12207_CHECKLIST.md - Calidad de procesosystem-prompt.xml por agente (contrato RFC 2119)setup_users.yml) para aprovisionamiento replicable
1 Founder estratégico (humano, part-time)
× 6 horas productivas/día (rate limited)
× 7 agentes multiplicadores
÷ USD 0 de costo salarial
= Output de 5-6 devs senior por USD 0
El enjambre NO reemplaza al humano. Lo potencia.
El Founder es el cuello de botella y el factor crítico de calidad. Sin su visión, aprobación y corrección, el enjambre no produce nada útil. Con su dirección, produce a velocidad y consistencia imposibles para un equipo humano del mismo costo.
| Limitación | Impacto Real | Mitigación |
|---|---|---|
| Rate limiting de OpenCode | 6h productivas/día, luego ban temporal | Pausar y reanudar al día siguiente |
| Dependencia del Founder | Sin humano activo, el enjambre NO avanza | Founder debe estar presente para aprobar |
| Sábados y domingos inactivos | 0 productividad fines de semana | Diseño consciente (no es bug, es feature) |
| Contexto limitado por ventana | 6h/día = ~36h totales en 14 días | Priorización estricta de tareas |
| Capacidad | Requiere | Por qué |
|---|---|---|
| Visión estratégica | Humano (Founder) | Los agentes ejecutan, no inventan dirección |
| Juicio de negocio | Founder | Decidir qué feature importa más |
| Creatividad disruptiva | Humanos | Los agentes replican patrones conocidos |
| Negociación | Humanos | Soft skills, empatía |
| Aprobación final | Founder | Gatekeeper obligatorio por diseño |
| Resolución de conflictos | Founder | Cuando algo se rompe inesperadamente |
| Definición de UX | Humanos | Empatía con usuarios reales |
El Enjambre Semi-Autónomo DELTA demostró que 1 humano + 7 agentes de IA puede construir un producto enterprise-grade completo en 14 días, con calidad superior a la de un equipo humano típico, a costo cero.
La clave no es la autonomía total (que no existe), sino la semi-autonomía dirigida: el humano aporta visión, juicio y aprobación; los agentes aportan velocidad, consistencia y ejecución incansable dentro de los límites del rate limiting.
El producto resultante está listo para ser reutilizado como base de futuros proyectos. El playbook de Ansible (setup_users.yml) lo hace portable y permite crear distintos equipos por proyecto.