6.9 KiB
ARNES Framework (agnóstico) — Diseño v0.1
Framework para construir aplicaciones con agentes autónomos, con control estricto de calidad, seguridad y trazabilidad.
Convención recomendada: el código real del proyecto vive dentro de project/.
Cada proyecto real debe vivir en su propio repo git, distinto del repo fuente de ARNES.
Compatible por diseño con pi.dev y opencode mediante adaptadores.
Objetivo
Permitir que agentes implementen features de forma autónoma sin perder control:
- una feature a la vez
- evidencia en disco (no en chat)
- gates obligatorios de revisión, seguridad y QA
- cierre solo con validación completa
Principios
- Vendor-neutral: núcleo independiente de herramienta.
- Estado persistente: todo vive en archivos versionables.
- No confianza ciega: “funciona” debe demostrarse con evidencia ejecutable.
- Separación de roles: quien implementa no aprueba.
- Anti-trampa por diseño: no se puede marcar
donesaltando gates.
Matriz de agentes (8)
-
leader
- Orquesta etapas y handoffs.
- Da órdenes internas en English caveman.
-
triager
- Convierte requests en tickets claros.
- Escribe tickets en English caveman.
-
architect
- Define/ajusta diseño técnico y contratos.
-
implementer
- Implementa feature + tests.
- No puede aprobar ni cerrar.
-
reviewer
- Gate técnico.
-
security
- Gate de seguridad.
-
qa
- Gate funcional.
-
documenter
- Documenta fix/feature/bug y actualiza docs.
Flujo de trabajo (pipeline)
triage_translate(leader/triager)intake(leader)design(architect)build(implementer)review_gate(reviewer) ✅security_gate(security) ✅qa_gate(qa) ✅documentation_gate(documenter) ✅close(leader)publish(leader) ✅
Regla: no hay done si cualquier gate falla.
Anti-trampa (control estricto)
Reglas de autorización
- Solo
leaderpuede moverin_progress -> done. implementerno puede editar archivos de estado final de cierre.reviewer/security/qano pueden editar código de producto.
Evidencia obligatoria por etapa
Cada agente escribe artefactos en disco:
work/artifacts/<feature>/implementer.mdwork/artifacts/<feature>/reviewer.jsonwork/artifacts/<feature>/security.jsonwork/artifacts/<feature>/qa.jsonwork/artifacts/<feature>/leader-close.jsonwork/artifacts/<feature>/publish.json
Respuesta de agente siempre: done -> <ruta> o blocked -> <ruta>.
Gates ejecutados fuera del agente
- Verificación disparada por harness/scripts (no por “declaración” del agente).
- Si gate falla, estado vuelve a
blockedo permanecein_progress.
Trazabilidad y auditoría
work/history.mdappend-only.- Checklist de cierre firmado por etapa (aprobado/rechazado + evidencia).
- Cualquier missing evidence = cierre denegado.
Estructura propuesta
.
├── project/ # código real del proyecto
│ └── README.md
├── README.md
├── AGENTS.md
├── CHECKPOINTS.md
├── harness/
│ ├── agents.matrix.yml
│ ├── workflow.stages.yml
│ ├── models.profiles.yml
│ ├── policies/
│ └── contracts/
├── spec/
│ ├── product.md
│ ├── tech.md
│ ├── acceptance.md
│ ├── sdd/
│ └── bdd/
├── backlog/
│ └── features.json
├── work/
│ ├── current.md
│ ├── history.md
│ ├── runtime-status.json
│ └── artifacts/
├── scripts/
│ ├── start.sh
│ ├── new_ticket.py
│ ├── agent_status.py
│ └── verify.sh
├── defaults/
│ └── flask-skeleton/
└── platforms/
Estado runtime visible
- Estado en tiempo real:
work/runtime-status.json - CLI:
python3 scripts/agent_status.py show|set|reset
Overlays por proyecto (sin contaminar el core)
- Reglas locales:
AGENTS.local.md(opcional) - Checks locales:
scripts/verify.local.sh(opcional) - El template base sigue agnóstico.
Lenguaje y modelos
- Política de lenguaje:
harness/policies/language.md(English caveman interno) - Routing de modelos:
harness/models.profiles.yml - Reglas de routing:
harness/policies/model-routing.md
Manejo de pérdidas de memoria (context loss)
Sí: el framework está diseñado para eso.
Mecanismos:
- Estado en disco (
work/current.md,backlog/features.json). - Bitácora append-only (
work/history.md). - Handoffs explícitos por archivo, no por chat.
- Protocolo de reentrada al iniciar sesión:
- leer
work/current.md - leer feature activa
- ejecutar verificación base
- continuar desde “próximo paso”
- leer
Si se pierde contexto del modelo, el sistema se puede reconstruir desde archivos.
Adaptadores de plataforma
platforms/pi/: prompts, hooks, permisos, comandos compatibles con pi.dev.platforms/opencode/: prompts, hooks, permisos, comandos compatibles con opencode.
El núcleo no cambia; solo el adaptador.
Criterios de éxito del framework
- No se puede cerrar una feature sin 3 gates en verde (review/security/qa).
- Evidencia completa y auditable por feature.
- Reentrada robusta tras reinicio o pérdida de contexto.
- Portabilidad entre pi.dev y opencode sin rediseñar el núcleo.
Inicio rápido
- Instalar ARNES en repo externo:
./scripts/install_into_repo.sh /path/to/project-repo - Ejecuta wizard:
./scripts/start.sh - Crear ticket:
python3 scripts/new_ticket.py - Publicar ticket:
python3 scripts/publish_ticket.py --feature-id F-001 - Guía breve:
HOWTO.md - Starter pack:
starter-pack/README.md - Adaptación del template:
TEMPLATE.md - Índice de docs:
docs/README.md - Layout del repo:
docs/repository-layout.md - Referencia de scripts:
docs/scripts-reference.md - Manual Skeleton (uso + mejoras):
docs/skeleton-manual.md
Tipos de tarea / ticket
python3 scripts/new_ticket.py soporta estos tipos:
feature: nueva capacidadfix: corrección de comportamiento rotobug: incidencia reportada o defecto clarochore: trabajo interno, refactor, setup, mantenimiento
Además guarda campos estructurados:
problemgoalscope_inscope_outpriorityriskacceptance
Convención recomendada:
- usar
featurepara trabajo nuevo visible - usar
fixobugpara reparación - usar
chorepara cambios internos sin valor funcional directo
Próximos pasos sugeridos
- Instalar/copiar ARNES en un repo de proyecto real distinto del repo fuente.
- Definir el backlog inicial del proyecto real.
- Configurar overlay opcional (
AGENTS.local.md,scripts/verify.local.sh). - Ejecutar
./scripts/verify.shypython3 scripts/agent_status.py show. - Empezar la primera feature
pendingcon pipeline completo y terminar con commit+push del ticket.