@ingeniomaps/cauce 0.81.0 → 0.82.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 (35) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/automatization/hooks/README.md +2 -2
  3. package/automatization/runners/antigravity/rules/cauce.md +7 -2
  4. package/automatization/runners/claude/CLAUDE.md +1 -4
  5. package/automatization/runners/codex/AGENTS.md +7 -3
  6. package/automatization/runners/gemini/GEMINI.md +1 -4
  7. package/automatization/shared/inbox.js +28 -0
  8. package/automatization/workflows/agent-eval.js +1 -1
  9. package/automatization/workflows/autobuild.js +52 -18
  10. package/automatization/workflows/flow.js +33 -8
  11. package/automatization/workflows/onboard.js +25 -3
  12. package/engine/automation/index.js +19 -4
  13. package/engine/automation/rules.js +122 -0
  14. package/engine/automation/runners.js +3 -1
  15. package/engine/cli/instance.js +35 -6
  16. package/engine/cli/planning.js +16 -2
  17. package/engine/config/validate.js +53 -3
  18. package/engine/core/onboarding.js +37 -7
  19. package/engine/core/ownership.js +64 -1
  20. package/engine/core/scan.js +23 -9
  21. package/engine/hooks/approval.js +3 -2
  22. package/engine/hooks/chat.js +59 -10
  23. package/engine/hooks/input.js +1 -11
  24. package/engine/hooks/push.js +147 -0
  25. package/engine/hooks/shell.js +7 -5
  26. package/engine/integrations/registry.js +13 -1
  27. package/engine/planning/inbox.js +36 -0
  28. package/engine/planning/parser.js +22 -9
  29. package/engine/planning/recurring.js +13 -2
  30. package/engine/schemas/ops-config.schema.json +21 -0
  31. package/package.json +1 -1
  32. package/template/AGENTS.md +10 -4
  33. package/template/planning/INBOX.md +2 -1
  34. package/template/planning/RECURRING.md +6 -5
  35. package/template/planning/rules/system/commits.md +3 -1
@@ -83,6 +83,15 @@
83
83
  },
84
84
  "allowPush": {
85
85
  "type": "boolean"
86
+ },
87
+ "pushToLiveBranches": {
88
+ "type": "array",
89
+ "description": "Las ramas vivas —main, master y la rama por defecto de cada remoto— en las que se puede publicar. Sin nombrarla acá, ni allowPush ni una orden en el chat llegan a una rama viva. Nombres exactos, sin patrones.",
90
+ "items": {
91
+ "type": "string",
92
+ "pattern": "^[^\\s*?\\[]+$"
93
+ },
94
+ "uniqueItems": true
86
95
  }
87
96
  },
88
97
  "additionalProperties": false
@@ -102,6 +111,18 @@
102
111
  "minItems": 1
103
112
  }
104
113
  }
114
+ },
115
+ "inbox": {
116
+ "type": "object",
117
+ "description": "El aviso de tamaño del INBOX. `check` advierte —nunca falla— cuando `planning/INBOX.md` pasa de este número de líneas: el INBOX es de la persona, y lo que el aviso pide es recorrerlo, no dejar de escribir.",
118
+ "additionalProperties": false,
119
+ "properties": {
120
+ "warnLines": {
121
+ "type": "integer",
122
+ "minimum": 1,
123
+ "description": "Líneas a partir de las cuales `check` avisa. Por defecto 300."
124
+ }
125
+ }
105
126
  }
106
127
  },
107
128
  "additionalProperties": false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ingeniomaps/cauce",
3
- "version": "0.81.0",
3
+ "version": "0.82.0",
4
4
  "description": "Sistema portable de planificación y ejecución verificable para cualquier proyecto",
5
5
  "keywords": [
6
6
  "planning",
@@ -2,7 +2,9 @@
2
2
 
3
3
  Este archivo gobierna el qué y el cuándo. `planning/PROTOCOL.md` gobierna el flujo y
4
4
  `planning/rules/` el cómo: sus reglas rigen cada tarea y se leen antes de empezar, no cuando algo sale
5
- mal. Los tres los mantiene Cauce y valen para cualquier proyecto. Lo que este proyecto tiene de propio
5
+ mal. Este archivo, el protocolo y `planning/rules/system/` los mantiene Cauce y valen para cualquier
6
+ proyecto; las reglas propias viven junto a `system/`, y donde una de ellas sobrescribe, contradice o
7
+ restringe una del sistema, rige la del proyecto. Lo que este proyecto tiene de propio
6
8
  —su mapa, sus integraciones, hasta dónde llega la autonomía acá— vive en `organization/workspace.md`.
7
9
 
8
10
  ## Qué sabe este proyecto y no este archivo
@@ -250,12 +252,16 @@ aprobación que pide BR-OPS-002 — `context` la nombra para que la vea una pers
250
252
  `BACKLOG.md` es esa persona.
251
253
 
252
254
  Publicar es lo único de todo eso que este proyecto puede habilitar, y `runner.allowPush` en
253
- `ops.config.json` es la autorización que R10 pide. Reescribir historia publicada no entra en el trato:
254
- un `push --force` se frena con la llave prendida o apagada.
255
+ `ops.config.json` es la autorización que R10 pide para las ramas de trabajo. La rama viva —`main`,
256
+ `master` o la rama por defecto del remoto— no la alcanza si el proyecto no la nombra en
257
+ `runner.pushToLiveBranches`, y un subagente no publica con ningún permiso. Sin la llave, pasa el push
258
+ que la persona pide en el chat nombrando el remoto y la rama, o el que ella aprueba contestando «dale».
259
+ Reescribir historia publicada no entra en el trato: un `push --force` se frena con la llave prendida o
260
+ apagada.
255
261
 
256
262
  Eso rige sin que nadie escriba nada. Lo que este proyecto amplíe o restrinja va en
257
263
  `organization/workspace.md`, con su razón; ninguna de esas prohibiciones se amplía ahí, y la
258
- publicación tampoco se decide ahí: la decide `allowPush`.
264
+ publicación tampoco se decide ahí: la deciden `allowPush` y `pushToLiveBranches`.
259
265
 
260
266
  ## Definición de terminado
261
267
 
@@ -14,7 +14,8 @@ Lo que separa a las cuatro secciones es el sujeto del ítem, no su tamaño ni su
14
14
 
15
15
  - **Deuda** — un costo que ya estamos cargando en código nuestro, conocido y no bloqueante.
16
16
  - **Ideas** — una pregunta abierta, sin respuesta propuesta.
17
- - **Propuestas** — un cambio concreto del producto, con su evidencia y su fix propuesto.
17
+ - **Propuestas** — un cambio concreto del producto y su fix propuesto. La evidencia no se copia acá: se
18
+ cita dónde vive —el `done/` de la tarea, el informe—.
18
19
  - **Lecciones** — sobre cómo trabajamos; es lo que alimenta reglas y propuestas de cargo.
19
20
 
20
21
  Ideas y Propuestas se separan por si hay una respuesta propuesta. Deuda y Propuestas, por si el costo
@@ -16,7 +16,8 @@ vencimiento se calcula cuando alguien corre el CLI. Promover sigue siendo un act
16
16
  - **Cada** — vocabulario cerrado: `mensual`, `trimestral`, `semestral`, `anual`. No hay expresiones de
17
17
  cron, y esa ausencia es el enunciado: si hiciera falta una, lo que estarías declarando es otra cosa.
18
18
  Tampoco hay `semanal`, porque el slug de cada vuelta tiene grano de mes.
19
- - **Desde** — `AAAA-MM-DD`. Ancla la primera vuelta y después no se toca.
19
+ - **Desde** — `AAAA-MM-DD`. Ancla la primera vuelta y después no se toca. Es la primera fecha en que
20
+ vence, no el día en que se escribe la fila: con la fecha de hoy nace vencida.
20
21
  - **Tarea y aceptación** — lo que se va a promover, con su aceptación observable escrita una sola vez y
21
22
  con calma. Improvisada en cada vuelta, la misma recurrencia termina significando cosas distintas sin
22
23
  que nadie lo decida.
@@ -47,12 +48,12 @@ slug son un error de `check`, y ese error llega un mes tarde.
47
48
 
48
49
  | Qué | Cada | Desde | Tarea y aceptación observable |
49
50
  |---|---|---|---|
51
+ | inbox | trimestral | {{INBOX_SINCE}} | Recorrer el INBOX entero. _Aceptación: ninguna viñeta queda sin decisión de promover, dejar o borrar._ (service: planning) |
50
52
 
51
53
  <!--
52
- | deps | mensual | 2026-09-01 | Actualizar dependencias. _Aceptación: `npm outdated` no deja una versión mayor sin decisión escrita y la puerta queda verde._ |
53
- | accesos | trimestral | 2026-07-01 | Revisar quién tiene acceso a producción. _Aceptación: cada cuenta activa figura en `organization/`, y las demás están dadas de baja._ |
54
- | costos | mensual | 2026-09-01 | Revisar el gasto de infraestructura del mes. _Aceptación: cada línea que subió más de 20% tiene una razón escrita._ |
55
- | inbox | trimestral | 2026-08-01 | Recorrer el INBOX entero. _Aceptación: ninguna viñeta queda sin decisión de promover, dejar o borrar._ |
54
+ | deps | mensual | 2026-09-01 | Actualizar dependencias. _Aceptación: `npm outdated` no deja una versión mayor sin decisión escrita y la puerta queda verde._ (service: .) |
55
+ | accesos | trimestral | 2026-07-01 | Revisar quién tiene acceso a producción. _Aceptación: cada cuenta activa figura en `organization/`, y las demás están dadas de baja._ (service: organization) |
56
+ | costos | mensual | 2026-09-01 | Revisar el gasto de infraestructura del mes. _Aceptación: cada línea que subió más de 20% tiene una razón escrita._ (service: .) |
56
57
  -->
57
58
 
58
59
  ## Postergaciones
@@ -65,7 +65,9 @@ dice qué había que hacer, no qué se apoyaba en lo que había.
65
65
 
66
66
  Push, PR, merge, tags, deploy y rollback requieren la autorización configurada para el proyecto.
67
67
 
68
- De esos seis, el motor comprueba uno: el push, contra `runner.allowPush`. Reescribir historia publicada
68
+ De esos seis, el motor comprueba uno: el push, contra `runner.allowPush` —que no llega a la rama viva
69
+ sin `runner.pushToLiveBranches`, ni a un subagente— o contra la orden que la persona da en el chat
70
+ nombrando el remoto y la rama. Reescribir historia publicada
69
71
  no entra en esa autorización y se frena siempre, igual que `--amend`. Los otros cinco no tienen una
70
72
  forma reconocible en un comando —un deploy es `kubectl`, `terraform`, un script o un botón— y los
71
73
  sostiene esta regla y el review, no un guard.