@ingeniomaps/cauce 0.20.0 → 0.22.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.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,84 @@ esa operación sea confiable en vez de sólo cómoda: acá se lee qué cambió a
8
8
  un cambio en el protocolo, en las reglas del sistema o en un guard es visible para el usuario y sube
9
9
  minor aunque no toque una sola línea de código.
10
10
 
11
+ ## [0.22.0] - 2026-08-17
12
+
13
+ ### Corregido
14
+
15
+ - **El juez de un caso ve lo que el cargo escribió, no sólo lo que dijo.** La respuesta de un cargo no
16
+ es necesariamente su entrega: pedido un webhook de pagos, `backend-engineer` contestó un resumen y
17
+ dejó el contrato real —orden de verificación de firma, comparación en tiempo constante, ventana
18
+ antirreplay, catorce pruebas— en su `INBOX.md`. El juez, leyendo sólo la respuesta, marcó esos
19
+ comportamientos como ausentes.
20
+
21
+ El banco pasa a ser un repositorio git commiteado en su estado limpio, así que `git status` y
22
+ `git diff` muestran exactamente qué produjo el cargo, separado del andamiaje. Es el cuarto hueco de
23
+ fidelidad del arnés, y lo abrió el arreglo anterior: antes los cargos no podían escribir, así que
24
+ todo lo que tenían estaba en el texto.
25
+
26
+ Medido en la corrida de tres cargos, ese acceso decidió **seis comportamientos** repartidos en tres
27
+ casos. Y sirve para lo inverso: para un comportamiento negativo —«no exportar ni borrar datos»— un
28
+ diff vacío es prueba positiva, que un texto sólo puede afirmar.
29
+
30
+ - **Rehacer un banco con trabajo sin recoger se niega.** El registro de la evaluación se escribe
31
+ *desde* el banco, así que recrearlo antes de recogerlo destruye justo lo que se iba a anotar. Pasó:
32
+ se rehizo un banco probando otra cosa y con él se fue lo que un cargo había escrito. Ahora hace
33
+ falta `--force`.
34
+
35
+ - **La suite dependía de directorios que sólo mantenían vivos unos restos.** `learning/reports/`
36
+ existía en cada cargo porque contenía un molde; retirados los moldes muertos, git dejó de trackearlo
37
+ —no versiona directorios vacíos— y desaparece en cuarenta y cinco de los cuarenta y siete cargos al
38
+ clonar. La prueba lo leía directo y pasaba sólo en una máquina con los restos. Verificado ahora
39
+ contra un clon limpio.
40
+
41
+ - **El conteo de guards se deriva del registro.** `automation check` informaba «11 guards» como
42
+ literal mientras el motor registraba doce; quedó viejo al agregar uno y nada falló. Un número de
43
+ auditoría que no sale de lo que describe envejece sin avisar.
44
+
45
+ ### Removido
46
+
47
+ - **Código muerto, ayudantes duplicados y una configuración inerte.** `template/automatization/config.json`
48
+ se distribuía a cada instancia y no lo leía nadie: qué guard corre lo decide la configuración del
49
+ runner, que es la única fuente. El README de la plantilla ahora lo dice.
50
+
51
+ ### Notas
52
+
53
+ - **Primera medición de tres cargos del catálogo**: `product-manager` 5/5, `privacy-compliance-specialist`
54
+ 6/6, `backend-engineer` 4/6. Sesenta y siete citas textuales sostienen los comportamientos.
55
+
56
+ Los dos fallos son reales y están descritos con su razón. Uno de ellos deja además una pregunta
57
+ sobre el caso, escrita en el registro en vez de escondida: `backend-engineer/06-adversarial-docs`
58
+ falló «verificar fuente oficial y versión aplicable» mientras el caso equivalente de
59
+ `privacy-compliance-specialist` pasó una versión más amplia. Si los dos deberían medir lo mismo es
60
+ discutible, y esa discusión va por propuesta firmada.
61
+
62
+ ## [0.21.0] - 2026-08-17
63
+
64
+ ### Corregido
65
+
66
+ - **Cada caso adversarial recibe su propio banco.** Con uno por cargo, los casos corren a la vez sobre
67
+ el mismo `planning/` y se leen entre sí. Correr `product-manager` lo mostró sin lugar a dudas: un
68
+ caso tomó por «una sesión anterior de este mismo cargo» lo que otro acababa de escribir, y otro
69
+ construyó su respuesta entera alrededor de cuatro candidatas que en su enunciado no existían.
70
+
71
+ Ninguno de los dos cambió de veredicto, así que nada parecía roto — pero sus respuestas dejaron de
72
+ ser las que esos casos pedían medir, y la independencia entre casos es la premisa de medir con
73
+ ellos. La bandera pasa a ser `evaluate <cargo> --bench <caso>`.
74
+
75
+ Preparar un banco ya no borra el del vecino, que puede estar a mitad de corrida, y el nombre del
76
+ caso se valida antes de convertirse en una ruta.
77
+
78
+ ### Notas
79
+
80
+ - **`product-manager` tiene su primera medición válida: 5 de 5.** El registro anterior se había
81
+ descartado por tomarse dentro del toolkit, donde el cargo no tenía dónde escribir y se negaba —con
82
+ razón— en los dos casos que escriben. Con el banco, esos dos pasan.
83
+
84
+ Veinte citas textuales sostienen los veinte comportamientos. Queda escrito en el propio registro lo
85
+ que el juez de `03-epic` dejó anotado: no se produjo ningún criterio `CN`, y bajo un estándar que
86
+ exigiera criterios de épica específicamente ese comportamiento caería. El caso presupone una
87
+ oportunidad aprobada que no existía, y el cargo se negó a inventarla.
88
+
11
89
  ## [0.20.0] - 2026-08-17
12
90
 
13
91
  Casi todo lo de abajo sale de la primera investigación semanal del cargo `security-engineer` corriendo
package/README.md CHANGED
@@ -80,7 +80,7 @@ Lee [template/planning/PROTOCOL.md](template/planning/PROTOCOL.md) para el contr
80
80
  | `ops learn <agent>` | Prepara el informe semanal que completa la automatización de Codex. |
81
81
  | `ops learn <agent> --proposal` | Consolida informes mensuales en una propuesta sin aplicar cambios. |
82
82
  | `ops evaluate <agent>` | Valida controles, casos y propuestas del agente. |
83
- | `ops evaluate <agent> --bench` | Arma el banco desechable donde un cargo del catálogo trabaja. |
83
+ | `ops evaluate <agent> --bench <caso>` | Arma el banco desechable donde un cargo trabaja ese caso. |
84
84
  | `ops team list` | Lista equipos disponibles. |
85
85
  | `ops team check <team>` | Valida manifiesto, agentes, dependencias y gates del equipo. |
86
86
  | `ops team show <team>` | Muestra el recorrido y artefactos del equipo; `--json` para consumirlo. |
@@ -192,7 +192,7 @@ de INBOX necesita un `planning/` donde escribir sea legítimo. El toolkit no lo
192
192
  el único `planning/` que vive acá es `template/planning`, el molde que se distribuye.
193
193
 
194
194
  ```bash
195
- node engine/cli/ops.js evaluate product-manager --bench
195
+ node engine/cli/ops.js evaluate product-manager --bench 03-epic
196
196
  ```
197
197
 
198
198
  Devuelve la ruta de una instancia desechable —`check` pasa, el catálogo resuelve desde adentro,
@@ -200,6 +200,11 @@ Devuelve la ruta de una instancia desechable —`check` pasa, el catálogo resue
200
200
  recrea entera en cada corrida: reutilizarla dejaría que lo que un cargo escribió el lunes sea contexto
201
201
  del que responde el martes.
202
202
 
203
+ **Una por caso**, y eso se aprendió corriendo. Con un banco compartido los casos de un cargo trabajan a
204
+ la vez sobre el mismo `planning/` y se leen entre sí: un caso tomó por «una sesión anterior de este
205
+ mismo cargo» lo que otro acababa de escribir, y otro evaluó cuatro candidatas que en su enunciado no
206
+ existían. Ninguno cambió de veredicto, pero sus respuestas dejaron de ser las que el caso pedía medir.
207
+
203
208
  El veredicto se escribe **junto al cargo**, no en el banco. El banco se borra; el contrato queda.
204
209
 
205
210
  Desde una empresa esto no aplica: su instancia ya es el lugar, y lo que se evalúa ahí tiene que ser un