@ingeniomaps/cauce 0.25.0 → 0.27.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 (40) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +80 -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/procurement-manager/SKILL.md +2 -0
  7. package/agents/roles/system/procurement-manager/evaluations/cases/07-exception-scope.md +10 -0
  8. package/agents/roles/system/procurement-manager/evaluations/expected-behaviors.yaml +2 -0
  9. package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17-2.md +1228 -0
  10. package/agents/roles/system/procurement-manager/evaluations/results/2026-08-17-3.md +984 -0
  11. package/agents/roles/system/procurement-manager/learning/HISTORY.md +5 -0
  12. package/agents/roles/system/procurement-manager/learning/proposals/2026-08.md +350 -0
  13. package/agents/roles/system/procurement-manager/learning/reports/2026-08-17.md +123 -0
  14. package/agents/roles/system/procurement-manager/references/operating-model.md +29 -0
  15. package/agents/roles/system/release-manager/SKILL.md +2 -0
  16. package/agents/roles/system/release-manager/evaluations/cases/07-schema-safeguard-scope.md +10 -0
  17. package/agents/roles/system/release-manager/evaluations/expected-behaviors.yaml +1 -0
  18. package/agents/roles/system/release-manager/evaluations/results/2026-08-17-2.md +1353 -0
  19. package/agents/roles/system/release-manager/learning/HISTORY.md +4 -0
  20. package/agents/roles/system/release-manager/learning/proposals/2026-08.md +249 -0
  21. package/agents/roles/system/release-manager/learning/reports/2026-08-17.md +125 -0
  22. package/agents/roles/system/release-manager/references/operating-model.md +25 -0
  23. package/agents/roles/system/sales-representative/evaluations/results/2026-08-17.md +1135 -0
  24. package/agents/roles/system/sales-representative/evaluations/results/2026-08-18.md +1200 -0
  25. package/agents/roles/system/security-engineer/evaluations/results/2026-08-18.md +1993 -0
  26. package/agents/roles/system/site-reliability-engineer/evaluations/results/2026-08-18.md +1620 -0
  27. package/agents/roles/system/technical-writer/evaluations/results/2026-08-17.md +1388 -0
  28. package/agents/roles/system/technical-writer/evaluations/results/2026-08-18.md +1329 -0
  29. package/automatization/workflows/agent-eval.js +28 -3
  30. package/automatization/workflows/agent-promote.js +13 -8
  31. package/engine/agents/catalog.js +5 -4
  32. package/engine/agents/evaluations.js +42 -4
  33. package/engine/agents/learning.js +104 -6
  34. package/engine/cli/args.js +5 -3
  35. package/engine/cli/bootstrap.js +96 -0
  36. package/engine/cli/ops.js +93 -17
  37. package/engine/hooks/run.js +7 -2
  38. package/package.json +1 -1
  39. package/template/planning/rules/system/code-shape.md +15 -3
  40. package/template/planning/rules/system/conduct.md +33 -0
package/CHANGELOG.md CHANGED
@@ -14,6 +14,104 @@ 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.27.0] - 2026-08-18
18
+
19
+ ### Añadido
20
+
21
+ - **Instalar Cauce es un comando.** `npx @ingeniomaps/cauce init`, sin destino, crea `ops/` en modo
22
+ sidecar, te pregunta con qué runner vas a trabajar y qué integración querés, corre `npm install`,
23
+ deja el wiring del runner puesto y valida la instancia antes de terminar.
24
+
25
+ Antes había que elegir destino y modo a ciegas, correr `npm install` a mano —sin él la instancia no
26
+ funciona: el shim, los cargos, los equipos y los adaptadores se resuelven desde `node_modules`— y
27
+ después instalar el runner. Las dos preguntas tienen «ninguno» como default: instalar un runner
28
+ escribe en tu repositorio, así que un Enter apurado no deja archivos que no pediste, y los dos pasos
29
+ se agregan más tarde con `automation install` e `integration enable`.
30
+
31
+ - **Banderas para instalar sin preguntas.** `init` acepta `--runner`, `--integration` e
32
+ `--install`/`--no-install`. Sin terminal —CI, un contenedor, un Dockerfile— no pregunta nada ni
33
+ descarga nada: materializa la instancia y dice qué falta, así que una automatización decide por
34
+ bandera y no hereda una descarga. Un `npm install` que falla se reporta y deja escrito por dónde
35
+ seguir, en vez de terminar en un error del runner tres pasos después.
36
+
37
+ ### Cambiado
38
+
39
+ - **El destino de `init` es opcional, y sin él la instancia se aparta en `ops/`.** Antes cortaba con
40
+ `Falta <destino>`, así que ninguna invocación existente cambia de comportamiento. Lo que cambia es
41
+ a dónde va lo que no elegiste: un monorepo recibía `planning/`, `teams/`, `organization/` y
42
+ `AGENTS.md` en su primer nivel y dejaba de distinguir qué era suyo. El modo `embedded`, que es el que
43
+ despliega el molde en la raíz, ahora hay que pedirlo explícito.
44
+
45
+ ## [0.26.0] - 2026-08-17
46
+
47
+ ### Añadido
48
+
49
+ - **Una segunda corrida del día ya no borra a la primera.** Los registros de evaluación aceptan
50
+ `AAAA-MM-DD-N.md` además del nombre pelado, y `ops evaluate <cargo> --record [AAAA-MM-DD]` te dice
51
+ dónde escribir el próximo. `agent-eval` lo pregunta en vez de componer el nombre desde la fecha.
52
+
53
+ Importa porque aplicar una propuesta cambia el contrato y el mismo recorrido pide volver a correr los
54
+ casos ahí mismo: con el nombre saliendo de la fecha, esa segunda corrida escribía encima de la
55
+ primera, que es la línea base contra la que se compara. Si ya tenés registros, no hay que hacer nada:
56
+ el nombre viejo sigue siendo válido y es la corrida 1 de su día.
57
+
58
+ - **Una propuesta aplicada se puede corregir dentro de su período.** `ops learn <cargo> --proposal` abre
59
+ una revisión —`AAAA-MM-r2.md`, con `corrects:` en el frontmatter— cuando la anterior ya está aplicada.
60
+ La aplicada queda sellada donde está: no se reabre ni se reemplaza.
61
+
62
+ Aplicar no era el final del ciclo —la evaluación posterior es la que dice si el cambio sirvió—, y
63
+ cuando decía que no, el sello que impide reaplicar lo mismo también impedía corregirlo hasta el mes
64
+ siguiente. Sigue habiendo una sola propuesta pendiente por período. `agent-promote` nombra la revisión
65
+ como salida en vez de mandarte a esperar.
66
+
67
+ ### Cambiado
68
+
69
+ - **R11 se reescribe: comentarios con destinatario.** En `planning/rules/system/code-shape.md`, así que
70
+ rige para todo cargo y para el runner trabajando sin cargo. Antes pedía que un comentario dijera el
71
+ porqué y no el qué, con un tope de tres líneas. Ahora el filtro es quién lo va a preguntar o a
72
+ deshacer sin saberlo: tener un porqué no alcanza, porque una convención también lo tiene. Distingue
73
+ tres lugares —dentro de una unidad, encabezándola, y donde ningún nombre alcanza— y retira el tope de
74
+ líneas, que contradecía a R7 dos reglas más arriba y en la práctica se leía como presupuesto a gastar.
75
+
76
+ Lo que vas a notar: se habilita el comentario que encabeza una unidad y dice qué garantiza para poder
77
+ usarla sin leerla entera, que la redacción anterior prohibía.
78
+
79
+ - **R14 exige que el registro viaje con la afirmación, no con el informe.** Párrafo nuevo en
80
+ `planning/rules/system/conduct.md`. Una lección, una regla propuesta, una fila de acciones humanas o un
81
+ paso de runbook se leen solos, así que una afirmación de mecanismo que sale del informe hacia uno de
82
+ ellos lleva su registro o no sale. Y el disparador es a dónde va la afirmación, no cuán discutible
83
+ parece — lo que se deja plano suele ser lo que sostiene el propio procedimiento.
84
+
85
+ - **`release-manager` acota las operaciones de esquema al motor.** Dos reglas nuevas: qué preserva un
86
+ rename, una copia o un drop depende del motor y su versión, y hay que declararlo antes de apoyar ahí un
87
+ ensayo o una salvaguarda; y una copia previa a un borrado es una foto —con su instante de corte y qué
88
+ queda afuera—, no una reversión, con el roll-forward entregado en la misma pieza que la conclusión de
89
+ que revertir dejó de ser seguro. Suma la sección «Qué preserva cada operación de esquema» a su modelo
90
+ operativo, la conducta prohibida
91
+ `unscoped_schema_operation_or_data_copy_presented_as_safeguard` y el caso `07-schema-safeguard-scope`.
92
+
93
+ - **`procurement-manager` separa el alcance de una figura de su deber de documentarla.** Dos reglas
94
+ nuevas: qué habilita una sole source o una excepción de emergencia sale del régimen aplicable con su
95
+ edición, no de la parte del procedimiento propio que dice qué registrar al usarla; y un cuantificador
96
+ universal sobre normas —«ningún régimen», «todos los marcos»— es una afirmación de mecanismo y lleva su
97
+ registro. Suma la sección «Alcance de las figuras y afirmaciones normativas», el caso
98
+ `07-exception-scope` y dos conductas prohibidas:
99
+ `figure_scope_inferred_from_own_documentation_duty_or_universal_norm_claim` y
100
+ `scorecard_dimension_dropped_instead_of_carried_as_a_conditional` — una dimensión que todavía no se
101
+ puede ponderar queda como obligatorio condicionado, con qué la activa, qué evidencia la cierra y quién
102
+ la revisa, en vez de declararse ausente.
103
+
104
+ ### Corregido
105
+
106
+ - **El guard de migraciones dejaba pasar el `DELETE FROM` más común.** Nombra tres cosas que frena y una
107
+ de ellas no frenaba: el límite de palabra quedaba al final del grupo, y después de un punto y coma no
108
+ hay límite de palabra, así que `DELETE FROM pedidos;` —la forma que tiene en cualquier migración—
109
+ pasaba y sólo se detenía la variante sin punto y coma. Además `DROP COLUMN` y `DROP CONSTRAINT` nunca
110
+ habían estado en la lista, y pierden datos y garantías igual que `DROP TABLE`.
111
+
112
+ Si dependías de este guard, revisá las migraciones que integraste desde que lo instalaste: puede haber
113
+ pasado algo que creías bloqueado.
114
+
17
115
  ## [0.25.0] - 2026-08-17
18
116
 
19
117
  ### 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,90 @@ 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
34
98
 
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—.
99
+ Desde el runner, `/team` recorre un equipo y deja escrita una épica candidata en `planning/roadmap/`, y
100
+ `/autobuild` toma una tarea ya promovida y la ejecuta fase por fase. Sin runner el recorrido es el
101
+ mismo: la [tabla de comandos](#comandos) y [FLOW.md](template/planning/FLOW.md) lo operan a mano.
37
102
 
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.
103
+ Dentro del proyecto el CLI se invoca con `node tools/ops.js` —o `npx cauce`, que la dependencia deja
104
+ disponible—; desde este repositorio, con `node engine/cli/ops.js`. En la tabla de abajo `ops` representa
105
+ cualquiera de esas formas.
41
106
 
42
107
  ## Flujo
43
108
 
@@ -62,7 +127,7 @@ Lee [template/planning/PROTOCOL.md](template/planning/PROTOCOL.md) para el contr
62
127
 
63
128
  | Comando | Función |
64
129
  |---|---|
65
- | `ops init <destino>` | Materializa una instancia portable. |
130
+ | `ops init [destino]` | Materializa una instancia y la deja usable; sin destino, en `ops/` y modo sidecar. |
66
131
  | `ops check <planning>` | Valida contratos, unicidad, trazabilidad y estados. |
67
132
  | `ops tree <planning>` | Muestra roadmap, backlog, WIP, inbox y done sin mutar nada. |
68
133
  | `ops context <planning>` | Emite el contexto mínimo de la tarea vigente para un runner. |