@ingeniomaps/cauce 0.26.0 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +93 -15
  3. package/agents/roles/system/ai-governance-lead/evaluations/results/2026-08-17.md +1501 -0
  4. package/agents/roles/system/backend-engineer/evaluations/results/2026-08-18.md +1735 -0
  5. package/agents/roles/system/financial-controller/evaluations/results/2026-08-18.md +1585 -0
  6. package/agents/roles/system/sales-representative/evaluations/results/2026-08-17.md +1135 -0
  7. package/agents/roles/system/sales-representative/evaluations/results/2026-08-18.md +1200 -0
  8. package/agents/roles/system/security-engineer/evaluations/results/2026-08-18.md +1993 -0
  9. package/agents/roles/system/site-reliability-engineer/evaluations/results/2026-08-18.md +1620 -0
  10. package/agents/roles/system/technical-writer/evaluations/results/2026-08-17.md +1388 -0
  11. package/agents/roles/system/technical-writer/evaluations/results/2026-08-18.md +1329 -0
  12. package/automatization/runners/antigravity/manifest.json +4 -0
  13. package/automatization/runners/antigravity/skills/onboard/SKILL.md +30 -0
  14. package/automatization/runners/claude/CLAUDE.md +3 -2
  15. package/automatization/runners/claude/manifest.json +4 -0
  16. package/automatization/runners/codex/AGENTS.md +14 -0
  17. package/automatization/runners/gemini/GEMINI.md +14 -0
  18. package/automatization/workflows/agent-eval.js +21 -0
  19. package/automatization/workflows/onboard.js +256 -0
  20. package/engine/agents/catalog.js +5 -4
  21. package/engine/cli/args.js +4 -2
  22. package/engine/cli/bootstrap.js +96 -0
  23. package/engine/cli/ops.js +107 -17
  24. package/package.json +1 -1
  25. package/template/planning/rules/system/conduct.md +23 -0
package/CHANGELOG.md CHANGED
@@ -14,6 +14,69 @@ desde este repositorio no va, porque el que lee no puede actuar sobre eso. Cuand
14
14
  unas pocas líneas casi siempre es porque cuenta cómo se descubrió el problema o por qué se eligió el
15
15
  diseño — eso vive en el commit y en el código.
16
16
 
17
+ ## [0.28.0] - 2026-08-18
18
+
19
+ ### Añadido
20
+
21
+ - **`/onboard`: el recorrido que llena una instancia recién creada.** `init` la deja funcionando y sin
22
+ enterar de nada —`organization/` es el molde y el roadmap está vacío—, y llenarlo exige leer el
23
+ repositorio y decidir qué es cada cosa, que es justo lo que un CLI determinista no puede hacer. El
24
+ recorrido inventaría los subproyectos con manifiesto propio, **corre** los comandos de test, lint y
25
+ build que cada uno declara, y escribe `organization/`, la sección «Mapa real» de `AGENTS.md` y las
26
+ raíces reales en `ops.config.json`.
27
+
28
+ Corre los comandos en vez de copiarlos del README porque un mapa copiado envejece sin avisar y el
29
+ primer Verify de una tarea real es donde aparece: cada comando queda como verificado, falla o ausente.
30
+ Lo que deduce va marcado «(supuesto)» y lo que nada sostiene queda «Por definir». No lee `.env` ni
31
+ ninguna credencial —de `.env.example` toma sólo los nombres de variable—, y las credenciales, los MCP
32
+ y el permiso de push salen como filas de `HUMAN_ACTIONS.md` con la acción concreta que las desbloquea,
33
+ sin proponer ningún valor. Cierra escribiendo la épica 001 —que una tarea pueda atravesar el ciclo
34
+ entero— y no la promueve.
35
+
36
+ Si la instancia ya tiene contexto escrito, para y pide `force`: reescribir un borrador que alguien
37
+ corrigió no deja rastro de lo que se perdió. Y un workspace todavía sin código no es un error: escribe
38
+ lo que el contexto permita y traer los repos pasa a ser la primera historia.
39
+
40
+ Claude y Antigravity lo reciben como recorrido ejecutable; Codex y Gemini lo operan desde la sección
41
+ «El arranque» que `automation install` deja en sus instrucciones. Si ya tenés una instancia, el
42
+ workflow llega con `automation install` —no con `upgrade`—: los workflows viven en el runner.
43
+
44
+ ### Corregido
45
+
46
+ - **`init` dentro de una carpeta que ya nombra al toolkit deja de anidar.** Correrlo parado en
47
+ `acme-ops/` creaba `acme-ops/ops/` —una raíz ops dentro de otra— y llamaba «acme-ops» al proyecto.
48
+ Ahora la instancia es esa carpeta y el proyecto se llama «acme». Además un `.git` solo dejó de contar
49
+ como contenido, así que `mkdir acme-ops && git init && cauce init` no pide `--force` para no pisar
50
+ nada.
51
+
52
+ ## [0.27.0] - 2026-08-18
53
+
54
+ ### Añadido
55
+
56
+ - **Instalar Cauce es un comando.** `npx @ingeniomaps/cauce init`, sin destino, crea `ops/` en modo
57
+ sidecar, te pregunta con qué runner vas a trabajar y qué integración querés, corre `npm install`,
58
+ deja el wiring del runner puesto y valida la instancia antes de terminar.
59
+
60
+ Antes había que elegir destino y modo a ciegas, correr `npm install` a mano —sin él la instancia no
61
+ funciona: el shim, los cargos, los equipos y los adaptadores se resuelven desde `node_modules`— y
62
+ después instalar el runner. Las dos preguntas tienen «ninguno» como default: instalar un runner
63
+ escribe en tu repositorio, así que un Enter apurado no deja archivos que no pediste, y los dos pasos
64
+ se agregan más tarde con `automation install` e `integration enable`.
65
+
66
+ - **Banderas para instalar sin preguntas.** `init` acepta `--runner`, `--integration` e
67
+ `--install`/`--no-install`. Sin terminal —CI, un contenedor, un Dockerfile— no pregunta nada ni
68
+ descarga nada: materializa la instancia y dice qué falta, así que una automatización decide por
69
+ bandera y no hereda una descarga. Un `npm install` que falla se reporta y deja escrito por dónde
70
+ seguir, en vez de terminar en un error del runner tres pasos después.
71
+
72
+ ### Cambiado
73
+
74
+ - **El destino de `init` es opcional, y sin él la instancia se aparta en `ops/`.** Antes cortaba con
75
+ `Falta <destino>`, así que ninguna invocación existente cambia de comportamiento. Lo que cambia es
76
+ a dónde va lo que no elegiste: un monorepo recibía `planning/`, `teams/`, `organization/` y
77
+ `AGENTS.md` en su primer nivel y dejaba de distinguir qué era suyo. El modo `embedded`, que es el que
78
+ despliega el molde en la raíz, ahora hay que pedirlo explícito.
79
+
17
80
  ## [0.26.0] - 2026-08-17
18
81
 
19
82
  ### Añadido
package/README.md CHANGED
@@ -10,7 +10,8 @@ el contexto de cada empresa vive en su propia instancia.
10
10
  - Una sesión interrumpida se recupera desde `WIP.md`, sin reconstruir la intención.
11
11
  - Las ideas del agente no entran solas a la cola: quedan en `INBOX.md` hasta promoción humana.
12
12
  - Épicas, criterios, tareas y evidencia son validados de forma determinista.
13
- - Funciona como `planning/` embebido en un repo o como sidecar `proyecto-ops` para varios repos.
13
+ - Vive en su propia carpeta `ops/` dentro del repo, como sidecar `proyecto-ops` para varios repos, o
14
+ embebido en la raíz.
14
15
  - Incluye un catálogo de cargos reutilizables; el contexto editable de cada empresa vive en
15
16
  `organization/`.
16
17
  - No depende de Claude, Codex, Gemini ni de un stack de aplicación específico.
@@ -18,26 +19,103 @@ el contexto de cada empresa vive en su propia instancia.
18
19
 
19
20
  ## Inicio rápido
20
21
 
21
- Requiere Node.js 24 o superior y no tiene dependencias externas.
22
+ Requiere Node.js 24 o superior y no tiene dependencias externas. No hace falta clonar este repositorio.
22
23
 
23
24
  ```bash
24
- node engine/cli/ops.js init /ruta/al/proyecto --name "Mi proyecto" --mode embedded --force
25
- node engine/cli/ops.js init /ruta/al/proyecto-ops --name "Mi proyecto" --mode sidecar
25
+ cd mi-repo
26
+ npx @ingeniomaps/cauce@latest init
26
27
  ```
27
28
 
28
- El destino debe estar vacío o no existir. En modo embebido normalmente ya es un repo: `--force` permite
29
- completar archivos faltantes, pero nunca sobrescribe archivos existentes.
29
+ Eso alcanza. `init` crea `./ops`, pregunta con qué runner vas a trabajar y qué integraciones querés,
30
+ instala la dependencia, deja el wiring del runner puesto y valida la instancia antes de terminar:
30
31
 
31
- El motor llega como dependencia y el lockfile fija la versión. `init` declara `@ingeniomaps/cauce` en el
32
- `package.json` del repo ops —creándolo si no existe— y el proyecto invoca `node tools/ops.js`, que
33
- resuelve el motor sin que nadie tenga que saber dónde está.
32
+ ```text
33
+ ¿Con qué runner vas a trabajar?
34
+ 1) claude 2) codex 3) gemini 4) antigravity 5) ninguno
35
+ [ninguno] > 1
36
+
37
+ ¿Habilitar alguna integración?
38
+ 1) jira 2) ninguna
39
+ [ninguna] >
40
+
41
+ · npm install (el motor viene de la dependencia)
42
+ ✓ claude: adaptador operativo (0 advertencia(s))
43
+ ✓ planning válido: 0 épica(s), 0 tarea(s) en cola, 0 terminada(s)
44
+ listo: el ciclo empieza en ops/planning/FLOW.md
45
+ ```
46
+
47
+ El default de las dos preguntas es no hacer nada: instalar un runner escribe en tu repositorio y
48
+ habilitar un proveedor deja andamiaje que después hay que completar, así que un Enter apurado no deja
49
+ archivos que no pediste. Los dos pasos se pueden agregar más tarde con `automation install` e
50
+ `integration enable`.
51
+
52
+ Queda así, y el resto del repositorio sin tocar:
53
+
54
+ ```text
55
+ mi-repo/
56
+ ├── apps/ tu código, intacto
57
+ ├── ops/ Cauce: planning/, organization/, teams/, tools/, AGENTS.md, Makefile
58
+ ├── .claude/ el wiring del runner elegido
59
+ └── CLAUDE.md
60
+ ```
61
+
62
+ Lo del runner va a la raíz a propósito: ahí abre el dev su herramienta, y uno que sólo viera `ops/` no
63
+ tendría acceso a una línea de código.
64
+
65
+ ### Sin preguntas, para un script
66
+
67
+ Sin terminal —CI, un contenedor, un Dockerfile— `init` no pregunta nada ni descarga nada: materializa la
68
+ instancia y dice qué falta. Todo se puede decidir por bandera:
69
+
70
+ ```bash
71
+ npx @ingeniomaps/cauce@latest init --runner codex --integration jira --install
72
+ ```
73
+
74
+ `--install` es el que corre `npm install`; sin él la instancia queda creada pero todavía no funciona, y
75
+ la salida lo dice. La dependencia no es opcional: el shim `tools/ops.js`, los cargos, los equipos y los
76
+ adaptadores se resuelven desde `<ops>/node_modules/@ingeniomaps/cauce`, y el lockfile es lo que fija qué
77
+ versión del motor corre.
78
+
79
+ ### Dónde vive la instancia
80
+
81
+ | Situación | Comando | Qué queda |
82
+ |---|---|---|
83
+ | Un repo: monolito o monorepo | `init` | `ops/` dentro del repo; el runner se instala en la raíz. |
84
+ | Varios repos de producto | `init acme-ops --mode sidecar`, desde la carpeta que los contiene | `acme-ops/` hermano de los repos. |
85
+ | Planning en la raíz del repo | `init . --mode embedded --force` | `planning/`, `organization/`, `teams/`, `tools/`, `AGENTS.md` y `Makefile` en el primer nivel. |
86
+
87
+ Los dos primeros son el mismo modo —`sidecar`— y difieren sólo en dónde queda la carpeta: adentro del
88
+ repo o al lado. El tercero hay que pedirlo explícito porque es el único que despliega el molde en el
89
+ primer nivel del repositorio.
90
+
91
+ El destino debe estar vacío o no existir. `--force` completa archivos faltantes en un directorio que ya
92
+ tiene cosas, y nunca sobrescribe los que ya están.
93
+
94
+ Declarar npm en el repo ops no le impone un stack a nadie: ese repo coordina, no compila, y Node hace
95
+ falta igual —el motor, los guards y los workflows son JavaScript—.
96
+
97
+ ### El primer ciclo
98
+
99
+ `init` deja la instancia funcionando, no enterada: `organization/` llega como molde y el roadmap está
100
+ vacío. Llenarlo exige leer el repositorio y decidir qué es cada cosa, que es lo que un CLI determinista
101
+ no puede hacer, así que ese recorrido vive en el runner:
102
+
103
+ ```text
104
+ /onboard inventaría los servicios, corre sus comandos de test, lint y build, y escribe
105
+ organization/, el «Mapa real» de AGENTS.md y las raíces de ops.config.json.
106
+ Lo deducido queda marcado como supuesto; credenciales, MCP y el permiso de push
107
+ van a HUMAN_ACTIONS.md. Cierra con la épica 001, sin promoverla.
108
+ /team evalúa si una intención posterior es viable y propone su épica.
109
+ /autobuild ejecuta una tarea ya promovida, fase por fase.
110
+ ```
34
111
 
35
- Declarar npm ahí no le impone un stack a nadie: el repo ops es un sidecar, hermano de los repos de
36
- producto, y Node hace falta igual —el motor, los guards y los workflows son JavaScript—.
112
+ Claude y Antigravity lo traen como recorrido ejecutable; Codex y Gemini lo operan siguiendo las
113
+ instrucciones que `automation install` les deja. Sin runner, la [tabla de comandos](#comandos) y
114
+ [FLOW.md](template/planning/FLOW.md) hacen el mismo camino a mano.
37
115
 
38
- Dentro de un proyecto generado el CLI se invoca con `node tools/ops.js`; desde este repositorio, con
39
- `node engine/cli/ops.js`. En la tabla de abajo `ops` representa cualquiera de las dos formas. El binario
40
- `cauce` también queda disponible si el paquete se enlaza o instala mediante npm.
116
+ Dentro del proyecto el CLI se invoca con `node tools/ops.js` —o `npx cauce`, que la dependencia deja
117
+ disponible—; desde este repositorio, con `node engine/cli/ops.js`. En la tabla de abajo `ops` representa
118
+ cualquiera de esas formas.
41
119
 
42
120
  ## Flujo
43
121
 
@@ -62,7 +140,7 @@ Lee [template/planning/PROTOCOL.md](template/planning/PROTOCOL.md) para el contr
62
140
 
63
141
  | Comando | Función |
64
142
  |---|---|
65
- | `ops init <destino>` | Materializa una instancia portable. |
143
+ | `ops init [destino]` | Materializa una instancia y la deja usable; sin destino, en `ops/` y modo sidecar. |
66
144
  | `ops check <planning>` | Valida contratos, unicidad, trazabilidad y estados. |
67
145
  | `ops tree <planning>` | Muestra roadmap, backlog, WIP, inbox y done sin mutar nada. |
68
146
  | `ops context <planning>` | Emite el contexto mínimo de la tarea vigente para un runner. |