Dónde está la autoridad del roadmap, cómo se organizan nodos, tickets y evidencia, y el flujo de trabajo orquestado.
Implementado. La vista viva del roadmap y de las decisiones es la sección generada roadmap y decisiones. Esta página explica cómo se trabaja con ellas, no las repite.
styx.model.yml es la autoridad única del roadmap técnico: nodos, tipo, zona, dependencias,
gates por item y referencias a decisiones. Todo lo demás se deriva o se archiva:
| Qué | Dónde |
|---|---|
| Roadmap técnico | styx.model.yml |
| Vista legible | ROADMAP.md, generada con axon gen y verificada por check:roadmap-view |
| Cola ejecutable | docs/<id del nodo>/tickets/<nn>.md |
| Decisiones | docs/decisions/ (README.md es el índice vivo) |
| Evidencia de gates y forense | docs/<id del nodo>/evidence/ |
| Cronología | docs/progress-log.md |
| Snapshot congelado (sólo rollback) | roadmap.spec.yml: no se edita ni se planifica sobre él |
Si cualquier documento derivado discrepa con el model, gana el model. Y ningún CLAUDE.md
congela estado de gates, colas de tickets o hashes: se leen de estas fuentes.
Tres tipos: outcome (hitos globales), track (líneas de trabajo) y spike (experimentos).
El id es tipo/slug y el prefijo es el tipo. Un track declara una zona (dataplane,
client, services, interop o cross); un outcome no; un spike puede. Los hitos van
anidados dentro de su nodo (track/byte-runtime/m4) y heredan la zona. phase es una clase
prohibida.
Cada nodo tiene su espejo de artefactos en docs/<id>/ (tickets/, plans/, evidence/): la
ruta es el id.
Un gate es una lista de items, cada uno con su veredicto (pass, partial u open) y su
clase. Reglas:
gate.manifest.yml): el veredicto del model se copia de él y no al revés.Las guardas que lo imponen están en guardas. Cómo se verifica de verdad un item está en evidencia adversarial.
bun run check:roadmap # antes
# editar styx.model.yml / gates / manifiestos
axon gen --model styx.model.yml --out . # regenerar ROADMAP.md
bun run check:roadmap # despuésNo se inventan fases en silencio ni se ponen fechas o estimaciones sin acuerdo explícito del propietario del proyecto. El roadmap dice qué se construye y qué gates lo validan; la experiencia que emerge es otra cosa y está en el horizonte de producto.
El proyecto está orquestado por axon. El flujo canónico es:
/planning-roadmap → @task-decomposer <ticket> → @task-executor <plan>Las zonas (.axon/zones.yml) reparten el trabajo en paralelo: cada zona tiene un directorio
ancla, su CLAUDE.md y sus patrones de ficheros. Una sesión por zona carga sólo su contexto y su
porción del roadmap (bun run axon:now); los nodos cross aparecen en todas y se coordinan desde
la raíz. Hay agentes especialistas por frontera (data plane, servicios, cliente).
Quien implementa:
Tripwires que obligan a parar: autoregistrar bajo un identificador mágico para saltar una carrera,
un indicador que desactiva una validación, copiar datos para evitar un ownership roto, un catch
que se traga el error, un predicado fijo que neutraliza una capa, o un comentario «de momento» sin
ticket. Y una regla más: un comentario largo que explica por qué un parche está bien así indica
que el código es malo; se borra el comentario y se arregla el código.
Diferir no está prohibido, ocultar sí: un aplazamiento legítimo está documentado, tiene ticket y no deja el contrato roto en el camino que el hito declara cerrado.
Una decisión nueva se redacta como ADR en docs/decisions/ con estado propuesto; sólo el
propietario del proyecto la bloquea, tras una pregunta explícita. La investigación informa las
decisiones, no las sustituye. Cómo se documenta lo fija un ADR
aún propuesto; su estado está en la vista de track/docs.