@ingeniomaps/cauce 0.49.0 → 0.51.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 +32 -11
- package/engine/hooks/run.js +13 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -14,7 +14,32 @@ 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.
|
|
17
|
+
## [0.51.0] - 2026-08-27
|
|
18
|
+
|
|
19
|
+
### Agregado
|
|
20
|
+
|
|
21
|
+
- **El guard `destructive` bloquea la forma ancha de `git checkout` y `git restore`.** `git checkout
|
|
22
|
+
-- .` destruye lo mismo que `git reset --hard` —que ya se bloqueaba— y sin recuperación, pero se
|
|
23
|
+
escribe como una limpieza. Se bloquea sólo cuando la ruta es `.`, `*`, `:/` o no hay ninguna:
|
|
24
|
+
revertir un archivo nombrado es trabajo corriente y sigue pasando. Lo que engaña es que el alcance no
|
|
25
|
+
se ve en el comando — `.` es el directorio actual, y ahí suele haber más de lo que uno está mirando.
|
|
26
|
+
|
|
27
|
+
## [0.50.0] - 2026-08-27
|
|
28
|
+
|
|
29
|
+
### Corregido
|
|
30
|
+
|
|
31
|
+
- **La investigación semanal recibe las herramientas que su instrucción nombra.** Corría sin permisos
|
|
32
|
+
declarados, así que no podía correr un comando ni salir a la web —que es todo lo que una
|
|
33
|
+
investigación hace— y devolvía el informe vacío en tres minutos. El cargo se portaba bien y lo decía:
|
|
34
|
+
«no voy a fabricar fuentes, fechas ni salidas de comando para llenar el informe». Ahora se le declaran
|
|
35
|
+
las que su `AUTOMATION.md` nombra —buscar, leer, escribir su informe, `make agent-learn` y
|
|
36
|
+
`make agent-evaluate`— y sólo ésas: saltear permisos le daría justo lo que su instrucción le prohíbe.
|
|
37
|
+
- **Un informe sin contenido ya no abre PR.** Que el archivo exista no alcanza: `learn` lo crea vacío y
|
|
38
|
+
el modelo puede devolverlo tal cual, y así se publicaba. Un lunes eso son veintinueve PRs en blanco
|
|
39
|
+
sin que nada lo diga. Ahora se miran las secciones que la propuesta mensual consolida, y si están
|
|
40
|
+
vacías el job falla nombrando cuáles y dónde mirar la causa.
|
|
41
|
+
|
|
42
|
+
## [0.49.0] - 2026-08-27
|
|
18
43
|
|
|
19
44
|
### Agregado
|
|
20
45
|
|
|
@@ -28,12 +53,6 @@ diseño — eso vive en el commit y en el código.
|
|
|
28
53
|
|
|
29
54
|
### Corregido
|
|
30
55
|
|
|
31
|
-
- **Un recorrido que frena da igual la salida que su contrato reserva para no poder.** `change-review`
|
|
32
|
-
enumera tres veredictos y el tercero es «no poder aprobar»; bloqueado, su informe parcial escribía
|
|
33
|
-
«No hay veredicto», que no es ninguno de los tres. Con el diff, los importadores y las pruebas a la
|
|
34
|
-
vista, un revisor **sí** puede firmar que no aprueba: eso es un veredicto, no su ausencia. Vale para
|
|
35
|
-
cualquier recorrido cuyo contrato tenga esa salida — un destino de «nada que hacer», una
|
|
36
|
-
recomendación de investigar.
|
|
37
56
|
- **`dependsOn` dejó de ser decorativo: un recorrido corre sus etapas como su contrato las declara.**
|
|
38
57
|
Hasta ahora el motor las corría en fila y le pasaba a cada una los handoffs de **todas** las
|
|
39
58
|
anteriores, sin mirar de qué decía depender. `technical-design` existe para tener tres lecturas
|
|
@@ -45,15 +64,17 @@ diseño — eso vive en el commit y en el código.
|
|
|
45
64
|
**no** declara `dependsOn` sigue viendo todo lo anterior, igual que antes: independencia es una
|
|
46
65
|
afirmación, y una afirmación se declara. Si una etapa no cumple su gate, el corte es por nivel — las
|
|
47
66
|
que corrieron con ella entran igual al handoff, y lo que se abandona son los niveles siguientes.
|
|
67
|
+
- **Un recorrido que frena da igual la salida que su contrato reserva para no poder.** `change-review`
|
|
68
|
+
enumera tres veredictos y el tercero es «no poder aprobar»; bloqueado, su informe parcial escribía
|
|
69
|
+
«No hay veredicto», que no es ninguno de los tres. Con el diff, los importadores y las pruebas a la
|
|
70
|
+
vista, un revisor **sí** puede firmar que no aprueba: eso es un veredicto, no su ausencia. Vale para
|
|
71
|
+
cualquier recorrido cuyo contrato tenga esa salida — un destino de «nada que hacer», una
|
|
72
|
+
recomendación de investigar.
|
|
48
73
|
- **Cambiar el `flow.json` de un recorrido ahora envejece sus veredictos.** El aviso de «el contrato
|
|
49
74
|
cambió y la última corrida es anterior» miraba sólo el `SKILL.md`, que un recorrido no tiene, así que
|
|
50
75
|
no se disparaba nunca: se le podía agregar una dimensión a un gate y sus casos aprobados seguían
|
|
51
76
|
leyéndose vigentes. Qué archivo **es** el contrato depende del sujeto — el de un cargo es su
|
|
52
77
|
`SKILL.md`, el de un recorrido su `flow.json`— y ahora se mira el que corresponde.
|
|
53
|
-
## [0.49.0] - 2026-08-27
|
|
54
|
-
|
|
55
|
-
### Corregido
|
|
56
|
-
|
|
57
78
|
- **`ops context` ya no se traga las acciones humanas cuando no hay tarea en cola.** Se imprimían
|
|
58
79
|
después del `return` de «sin tarea disponible», así que una instancia recién arrancada —`onboard`
|
|
59
80
|
deja filas pendientes y ninguna tarea todavía— preguntaba qué toca ahora y recibía «nada», cuando lo
|
package/engine/hooks/run.js
CHANGED
|
@@ -114,6 +114,19 @@ function destructive(input) {
|
|
|
114
114
|
const rules = [
|
|
115
115
|
[/\bgit\s+reset\s+--hard\b/, "'git reset --hard' destruye cambios locales."],
|
|
116
116
|
[/\bgit\s+clean\s+-[^\s]*f/, "'git clean -f' borra archivos sin seguimiento."],
|
|
117
|
+
// `git checkout -- .` destruye lo mismo que `reset --hard` y sin recuperación, pero se escribe como
|
|
118
|
+
// una limpieza. Se bloquea sólo la forma ancha —`.`, `*`, `:/`, o sin ruta—: revertir un archivo
|
|
119
|
+
// nombrado es trabajo corriente y no se toca.
|
|
120
|
+
//
|
|
121
|
+
// Pasó dos veces en una sesión, las dos limpiando restos de una prueba: el comando revirtió también
|
|
122
|
+
// el trabajo de al lado, que no estaba commiteado. Lo que engaña es que el alcance no se ve en el
|
|
123
|
+
// comando — `.` es el cwd, y el cwd suele tener más de lo que uno está mirando.
|
|
124
|
+
[
|
|
125
|
+
// `git restore .` no lleva `--` y destruye igual: es la forma moderna del mismo comando.
|
|
126
|
+
/\bgit\s+(?:checkout|restore)\s+(?:[^;&|]*?\s)?(?:--\s*(?:$|[;&|])|(?:--\s+)?(?:\.|\*|:\/)\s*(?:$|[;&|]))/,
|
|
127
|
+
"'git checkout -- .' revierte todo lo no commiteado del directorio, no sólo lo que estás mirando. "
|
|
128
|
+
+ 'Nombrá el archivo, o commiteá lo que quieras conservar antes.',
|
|
129
|
+
],
|
|
117
130
|
[
|
|
118
131
|
/\bdocker(?:\s+\w+)*\s+(?:volume\s+(?:rm|prune)|system\s+prune|network\s+prune)\b/,
|
|
119
132
|
'La limpieza global de Docker puede borrar datos compartidos.',
|