@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 +78 -0
- package/README.md +7 -2
- package/agents/roles/system/backend-engineer/evaluations/results/2026-08-16.md +740 -0
- package/agents/roles/system/privacy-compliance-specialist/evaluations/results/2026-08-16.md +649 -0
- package/agents/roles/system/product-manager/evaluations/results/2026-08-16.md +700 -0
- package/automatization/workflows/agent-eval.js +32 -11
- package/automatization/workflows/agent-promote.js +4 -5
- package/automatization/workflows/integrations/promote.js +3 -3
- package/automatization/workflows/integrations/sync.js +3 -3
- package/engine/agents/fork.js +6 -13
- package/engine/agents/learning.js +2 -6
- package/engine/automation/index.js +13 -7
- package/engine/cli/ops.js +55 -15
- package/engine/core/files.js +0 -1
- package/engine/core/manifest.js +1 -1
- package/engine/core/ownership.js +16 -21
- package/engine/hooks/run.js +1 -1
- package/engine/integrations/registry.js +5 -11
- package/engine/integrations/state.js +0 -1
- package/engine/planning/contracts.js +0 -3
- package/engine/planning/parser.js +4 -7
- package/package.json +1 -1
- package/template/automatization/README.md +4 -1
- package/template/automatization/config.json +0 -13
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
|
|
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
|