@ingeniomaps/cauce 0.46.0 → 0.47.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 +15 -0
- package/flows/system/change-review/evaluations/cases/05-el-cambio-chico/cambio-formato-fecha-PR-934.md +45 -0
- package/flows/system/change-review/evaluations/cases/05-el-cambio-chico.md +16 -0
- package/flows/system/change-review/flow.json +20 -6
- package/package.json +1 -1
- package/template/flows/README.md +4 -4
- package/template/organization/company.md +13 -0
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,21 @@ 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.47.0] - 2026-08-26
|
|
18
|
+
|
|
19
|
+
### Agregado
|
|
20
|
+
|
|
21
|
+
- **`organization/company.md` gana «Qué no se puede romper»**, una tabla donde declarás qué superficies
|
|
22
|
+
detienen la operación al fallar, a quién alcanzan y dónde viven. No todo cuesta lo mismo cuando se
|
|
23
|
+
rompe, y sin eso escrito una revisión sólo puede elegir entre revisar todo con el rigor del peor caso
|
|
24
|
+
o revisar el peor caso con el rigor de lo demás. Lo que no se sepa se deja en `Por definir`: que no
|
|
25
|
+
conste dónde vive un flujo crítico ya es un hallazgo.
|
|
26
|
+
- **`change-review` pregunta si el cambio toca una de ellas.** El gate de `scope` ahora lo exige y
|
|
27
|
+
`completion` lo enumera: si toca, cuál y qué se detiene; si no, que se miró. Se contrasta contra tu
|
|
28
|
+
tabla y no contra el criterio de quien revisa, y una tabla vacía se reporta como hallazgo en vez de
|
|
29
|
+
pasar por permiso. Sin esto, un cambio de una línea en un helper compartido se revisaba igual
|
|
30
|
+
estuviera en reportes o en el alta de un pedido.
|
|
31
|
+
|
|
17
32
|
## [0.46.0] - 2026-08-25
|
|
18
33
|
|
|
19
34
|
### Agregado
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# PR #934 — Formato de fecha en el listado de pedidos
|
|
2
|
+
|
|
3
|
+
1 archivo, +1 −1. Sin aprobaciones todavía. Descripción del PR: «lo pidió datos para el export».
|
|
4
|
+
|
|
5
|
+
## El diff
|
|
6
|
+
|
|
7
|
+
```diff
|
|
8
|
+
--- a/src/shared/format.ts
|
|
9
|
+
+++ b/src/shared/format.ts
|
|
10
|
+
@@ -12,7 +12,7 @@ export function formatDate(value: Date): string {
|
|
11
|
+
- return `${dd}/${mm}/${yyyy}`
|
|
12
|
+
+ return `${yyyy}-${mm}-${dd}`
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quién importa `formatDate`
|
|
17
|
+
|
|
18
|
+
Salida de `grep -rn "from '@/shared/format'" src/`, corrida al preparar el PR:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
src/pages/orders/list.tsx:4 import { formatDate } from '@/shared/format'
|
|
22
|
+
src/pages/orders/summary.tsx:7 import { formatDate } from '@/shared/format'
|
|
23
|
+
src/checkout/order-payload.ts:11 import { formatDate } from '@/shared/format'
|
|
24
|
+
src/reports/monthly.tsx:3 import { formatDate } from '@/shared/format'
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`order-payload.ts:44` usa el resultado para el campo `deliveryDate` del cuerpo que se manda al crear un
|
|
28
|
+
pedido. No consta qué formato espera ese endpoint: el contrato de la API no está en este repositorio.
|
|
29
|
+
|
|
30
|
+
## Tests
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
PASS src/pages/orders/list.test.tsx (6 tests)
|
|
34
|
+
Test Suites: 1 passed, 1 total
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`format.ts` no tiene test propio. `order-payload.ts` tampoco. Los seis que pasaron son del listado.
|
|
38
|
+
|
|
39
|
+
## De la instancia — organization/company.md, «Qué no se puede romper»
|
|
40
|
+
|
|
41
|
+
| Superficie | Qué se detiene si falla | A quién alcanza | Dónde vive |
|
|
42
|
+
|---|---|---|---|
|
|
43
|
+
| Alta de pedido | No entra ninguna venta | Todos los compradores | `src/checkout/` |
|
|
44
|
+
| Acceso a la plataforma | Nadie puede entrar | Todos los usuarios | `src/auth/` |
|
|
45
|
+
| Listado y reportes | Nadie consulta lo ya vendido | Operación interna | `src/pages/orders/`, `src/reports/` |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Solicitud
|
|
2
|
+
|
|
3
|
+
Revisá esto rápido que es de una línea: cambia el formato de la fecha en el listado de pedidos, de
|
|
4
|
+
`DD/MM/YYYY` a `YYYY-MM-DD`, porque el equipo de datos lo pidió así para exportar. Un solo archivo, y
|
|
5
|
+
los tests pasan.
|
|
6
|
+
|
|
7
|
+
Te dejo el diff y el contexto de la instancia.
|
|
8
|
+
|
|
9
|
+
# Comportamientos esperados
|
|
10
|
+
|
|
11
|
+
- Notar que el helper que se toca no lo usa sólo el listado: lo importan también el resumen del pedido
|
|
12
|
+
y el componente que arma el cuerpo de la orden antes de enviarla.
|
|
13
|
+
- Nombrar qué se detiene si eso falla, con lo que la empresa ya declaró, en vez de estimarlo.
|
|
14
|
+
- Decir qué verificación pide un cambio de una línea cuando cae donde cae, y qué de eso no se hizo:
|
|
15
|
+
los tests que pasaron son los del listado.
|
|
16
|
+
- Cerrar con uno de los tres veredictos, sin confundir «el diff es chico» con «el riesgo es chico».
|
|
@@ -35,13 +35,15 @@
|
|
|
35
35
|
"decisions-that-constrain-it",
|
|
36
36
|
"what-each-discipline-must-answer"
|
|
37
37
|
],
|
|
38
|
-
"exitGate": "Está escrito qué cambia, contra qué criterio de aceptación se revisa, qué decisiones vigentes lo restringen —ADR, contratos, SLO, políticas— y qué tiene que responder cada disciplina. Y está enumerado qué se inspeccionó: archivo, diff, comando con su salida. Sin esa lista la ronda produce opiniones sobre cosas distintas."
|
|
38
|
+
"exitGate": "Está escrito qué cambia, contra qué criterio de aceptación se revisa, qué decisiones vigentes lo restringen —ADR, contratos, SLO, políticas— y qué tiene que responder cada disciplina. Y está enumerado qué se inspeccionó: archivo, diff, comando con su salida. Sin esa lista la ronda produce opiniones sobre cosas distintas.\n\nConsta además si el cambio toca alguna de las superficies que la empresa declaró que no se pueden romper —«Qué no se puede romper» en organization/company.md— y, si las toca, cuál y qué se detiene. Se contrasta contra esa tabla, no contra el criterio de quien revisa: no todo cuesta lo mismo al fallar, y una revisión que no lo mira le da a un cambio en reportes el mismo trato que a uno en el alta de un pedido. Si la tabla está sin llenar, eso se dice —es un hallazgo, no un permiso—."
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"id": "correctness",
|
|
42
42
|
"phase": "discovery",
|
|
43
43
|
"agent": "backend-engineer",
|
|
44
|
-
"dependsOn": [
|
|
44
|
+
"dependsOn": [
|
|
45
|
+
"scope"
|
|
46
|
+
],
|
|
45
47
|
"produces": [
|
|
46
48
|
"does-it-do-what-it-claims",
|
|
47
49
|
"what-breaks-that-nobody-named"
|
|
@@ -52,7 +54,9 @@
|
|
|
52
54
|
"id": "evidence",
|
|
53
55
|
"phase": "discovery",
|
|
54
56
|
"agent": "qa-engineer",
|
|
55
|
-
"dependsOn": [
|
|
57
|
+
"dependsOn": [
|
|
58
|
+
"scope"
|
|
59
|
+
],
|
|
56
60
|
"produces": [
|
|
57
61
|
"which-criterion-each-test-sustains",
|
|
58
62
|
"what-is-green-without-being-covered"
|
|
@@ -63,7 +67,9 @@
|
|
|
63
67
|
"id": "exposure",
|
|
64
68
|
"phase": "discovery",
|
|
65
69
|
"agent": "security-engineer",
|
|
66
|
-
"dependsOn": [
|
|
70
|
+
"dependsOn": [
|
|
71
|
+
"scope"
|
|
72
|
+
],
|
|
67
73
|
"produces": [
|
|
68
74
|
"what-it-exposes-that-it-did-not-before",
|
|
69
75
|
"who-can-reach-it"
|
|
@@ -74,7 +80,9 @@
|
|
|
74
80
|
"id": "operability",
|
|
75
81
|
"phase": "discovery",
|
|
76
82
|
"agent": "site-reliability-engineer",
|
|
77
|
-
"dependsOn": [
|
|
83
|
+
"dependsOn": [
|
|
84
|
+
"scope"
|
|
85
|
+
],
|
|
78
86
|
"produces": [
|
|
79
87
|
"how-it-fails-and-what-shows-it",
|
|
80
88
|
"how-it-is-undone"
|
|
@@ -85,7 +93,12 @@
|
|
|
85
93
|
"id": "decide",
|
|
86
94
|
"phase": "discovery",
|
|
87
95
|
"agent": "tech-lead",
|
|
88
|
-
"dependsOn": [
|
|
96
|
+
"dependsOn": [
|
|
97
|
+
"correctness",
|
|
98
|
+
"evidence",
|
|
99
|
+
"exposure",
|
|
100
|
+
"operability"
|
|
101
|
+
],
|
|
89
102
|
"produces": [
|
|
90
103
|
"signed-verdict-with-its-three-outcomes",
|
|
91
104
|
"blocking-separated-from-recorded",
|
|
@@ -99,6 +112,7 @@
|
|
|
99
112
|
"Qué se inspeccionó está enumerado —archivo, diff, comando con su salida— y qué no, con su razón.",
|
|
100
113
|
"Por cada criterio de aceptación consta la prueba que lo sostiene, o que ninguna lo hace.",
|
|
101
114
|
"Lo que el cambio expone y quién puede alcanzarlo está dicho, aunque la respuesta sea que no expone nada.",
|
|
115
|
+
"Si el cambio toca una superficie crítica declarada, consta cuál y qué exige de más; si no toca ninguna, consta que se miró.",
|
|
102
116
|
"Cómo falla, qué señal lo muestra y cómo se deshace está escrito, o consta que es irreversible.",
|
|
103
117
|
"El veredicto es uno de los tres, con lo bloqueante separado de lo registrado y con qué lo reabre."
|
|
104
118
|
]
|
package/package.json
CHANGED
package/template/flows/README.md
CHANGED
|
@@ -42,14 +42,14 @@ editar dentro de `system/`**: se reemplaza completo en cada actualización.
|
|
|
42
42
|
Tres formas, de la más simple a la más explícita:
|
|
43
43
|
|
|
44
44
|
```text
|
|
45
|
-
/
|
|
46
|
-
/
|
|
47
|
-
/
|
|
45
|
+
/flow quiero cobrar con tarjeta guardada
|
|
46
|
+
/flow incident-review: se cayó el checkout el martes a las 14:00
|
|
47
|
+
/flow {"flow": "acme-soporte", "intent": "qué se quiere evaluar"}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
Sin prefijo corre `product-development`. El prefijo se confirma contra los recorridos que existen: si no
|
|
51
51
|
es uno, el texto completo se toma como intención, así que escribir `nota: revisar esto` no dispara un
|
|
52
|
-
|
|
52
|
+
recorrido llamado `nota`. Con el recorrido pasado explícitamente, un slug inexistente falla en vez de caer al
|
|
53
53
|
por defecto en silencio.
|
|
54
54
|
|
|
55
55
|
## Corto o largo
|
|
@@ -39,6 +39,19 @@ Por completar. Incluir horizonte, responsable y cómo se va a notar.
|
|
|
39
39
|
- Contratos o promesas vigentes:
|
|
40
40
|
- Presupuesto:
|
|
41
41
|
|
|
42
|
+
## Qué no se puede romper
|
|
43
|
+
|
|
44
|
+
No todo cuesta lo mismo cuando falla. Un defecto en un panel de reportes molesta; el mismo defecto en el
|
|
45
|
+
alta de un pedido o en el acceso detiene la operación entera. Sin esta tabla, una revisión trata los dos
|
|
46
|
+
cambios igual: o revisa todo con el rigor del peor caso, o revisa el peor caso con el rigor de lo demás.
|
|
47
|
+
|
|
48
|
+
Se llena con lo que hoy es cierto, no con lo que debería serlo. Una fila que no se puede completar se
|
|
49
|
+
deja en `Por definir`: que no se sepa dónde vive un flujo crítico ya es un hallazgo.
|
|
50
|
+
|
|
51
|
+
| Superficie | Qué se detiene si falla | A quién alcanza | Dónde vive |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| Por definir | Por definir | Por definir | Por definir |
|
|
54
|
+
|
|
42
55
|
## Fuentes de verdad
|
|
43
56
|
|
|
44
57
|
Enlazar CRM, analítica, investigación, documentación financiera y demás sistemas autorizados.
|