@ingeniomaps/cauce 0.69.0 → 0.71.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 +266 -0
- package/README.md +6 -6
- package/agents/README.md +38 -0
- package/agents/roles/system/accounting-specialist/learning/HISTORY.md +2 -0
- package/agents/roles/system/ai-governance-lead/learning/HISTORY.md +6 -1
- package/agents/roles/system/ai-governance-lead/learning/sources.yaml +4 -4
- package/agents/roles/system/ai-governance-lead/references/operating-model.md +2 -2
- package/agents/roles/system/ai-product-manager/learning/HISTORY.md +4 -1
- package/agents/roles/system/ai-product-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/ai-product-manager/references/operating-model.md +2 -2
- package/agents/roles/system/analytics-engineer/learning/HISTORY.md +4 -1
- package/agents/roles/system/analytics-engineer/learning/sources.yaml +2 -2
- package/agents/roles/system/analytics-engineer/references/operating-model.md +2 -2
- package/agents/roles/system/backend-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/business-strategist/learning/HISTORY.md +2 -0
- package/agents/roles/system/business-strategist/learning/sources.yaml +1 -1
- package/agents/roles/system/business-strategist/references/operating-model.md +2 -2
- package/agents/roles/system/cloud-architect/learning/HISTORY.md +1 -1
- package/agents/roles/system/cloud-architect/learning/sources.yaml +2 -2
- package/agents/roles/system/cloud-architect/references/operating-model.md +2 -2
- package/agents/roles/system/community-manager/learning/HISTORY.md +4 -1
- package/agents/roles/system/community-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/community-manager/references/operating-model.md +1 -1
- package/agents/roles/system/content-specialist/learning/HISTORY.md +2 -0
- package/agents/roles/system/customer-success-manager/learning/HISTORY.md +2 -0
- package/agents/roles/system/customer-success-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/customer-success-manager/references/operating-model.md +3 -3
- package/agents/roles/system/customer-support-specialist/learning/HISTORY.md +2 -0
- package/agents/roles/system/customer-support-specialist/learning/sources.yaml +2 -2
- package/agents/roles/system/customer-support-specialist/references/operating-model.md +2 -2
- package/agents/roles/system/data-analyst/learning/HISTORY.md +2 -0
- package/agents/roles/system/data-engineer/learning/HISTORY.md +4 -1
- package/agents/roles/system/data-engineer/learning/sources.yaml +3 -3
- package/agents/roles/system/data-engineer/references/operating-model.md +2 -2
- package/agents/roles/system/data-governance-steward/learning/HISTORY.md +2 -0
- package/agents/roles/system/data-scientist/learning/HISTORY.md +4 -1
- package/agents/roles/system/data-scientist/learning/sources.yaml +3 -3
- package/agents/roles/system/data-scientist/references/operating-model.md +2 -2
- package/agents/roles/system/database-administrator/learning/HISTORY.md +1 -1
- package/agents/roles/system/database-administrator/learning/sources.yaml +2 -2
- package/agents/roles/system/database-administrator/references/operating-model.md +2 -2
- package/agents/roles/system/developer-relations-engineer/learning/HISTORY.md +4 -1
- package/agents/roles/system/devops-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/engineering-manager/learning/HISTORY.md +2 -0
- package/agents/roles/system/engineering-manager/learning/sources.yaml +1 -1
- package/agents/roles/system/engineering-manager/references/operating-model.md +2 -2
- package/agents/roles/system/financial-controller/learning/HISTORY.md +2 -0
- package/agents/roles/system/financial-controller/learning/sources.yaml +2 -2
- package/agents/roles/system/financial-controller/references/operating-model.md +1 -1
- package/agents/roles/system/finops-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/fraud-risk-analyst/learning/HISTORY.md +2 -0
- package/agents/roles/system/frontend-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/growth-marketer/learning/HISTORY.md +2 -0
- package/agents/roles/system/growth-marketer/learning/sources.yaml +1 -1
- package/agents/roles/system/implementation-manager/learning/HISTORY.md +1 -1
- package/agents/roles/system/implementation-manager/learning/sources.yaml +4 -4
- package/agents/roles/system/implementation-manager/references/operating-model.md +3 -3
- package/agents/roles/system/integrations-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/kyc-aml-specialist/learning/HISTORY.md +3 -2
- package/agents/roles/system/kyc-aml-specialist/learning/sources.yaml +1 -1
- package/agents/roles/system/kyc-aml-specialist/references/operating-model.md +1 -1
- package/agents/roles/system/legal-counsel/learning/HISTORY.md +6 -1
- package/agents/roles/system/legal-counsel/learning/sources.yaml +1 -1
- package/agents/roles/system/legal-counsel/references/operating-model.md +1 -1
- package/agents/roles/system/logistics-operations-manager/learning/HISTORY.md +2 -0
- package/agents/roles/system/machine-learning-engineer/learning/HISTORY.md +4 -1
- package/agents/roles/system/machine-learning-engineer/learning/sources.yaml +6 -6
- package/agents/roles/system/machine-learning-engineer/references/operating-model.md +3 -3
- package/agents/roles/system/mlops-engineer/learning/HISTORY.md +4 -1
- package/agents/roles/system/mlops-engineer/learning/sources.yaml +2 -2
- package/agents/roles/system/mlops-engineer/references/operating-model.md +2 -2
- package/agents/roles/system/mobile-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/mobile-engineer/learning/sources.yaml +1 -1
- package/agents/roles/system/partnerships-manager/learning/HISTORY.md +4 -1
- package/agents/roles/system/partnerships-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/partnerships-manager/references/operating-model.md +2 -2
- package/agents/roles/system/people-operations-manager/learning/HISTORY.md +4 -1
- package/agents/roles/system/people-operations-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/people-operations-manager/references/operating-model.md +2 -2
- package/agents/roles/system/privacy-compliance-specialist/learning/HISTORY.md +2 -0
- package/agents/roles/system/privacy-compliance-specialist/learning/sources.yaml +1 -1
- package/agents/roles/system/privacy-compliance-specialist/references/operating-model.md +1 -1
- package/agents/roles/system/procurement-manager/learning/HISTORY.md +1 -1
- package/agents/roles/system/procurement-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/procurement-manager/references/operating-model.md +2 -2
- package/agents/roles/system/product-manager/learning/HISTORY.md +1 -1
- package/agents/roles/system/product-marketing-manager/learning/HISTORY.md +2 -0
- package/agents/roles/system/product-marketing-manager/learning/sources.yaml +1 -1
- package/agents/roles/system/project-manager/learning/HISTORY.md +4 -1
- package/agents/roles/system/project-manager/learning/sources.yaml +1 -1
- package/agents/roles/system/project-manager/references/operating-model.md +2 -2
- package/agents/roles/system/qa-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/qa-engineer/learning/sources.yaml +9 -11
- package/agents/roles/system/qa-engineer/references/operating-model.md +2 -2
- package/agents/roles/system/release-manager/learning/HISTORY.md +1 -1
- package/agents/roles/system/sales-representative/learning/HISTORY.md +2 -0
- package/agents/roles/system/sales-representative/learning/sources.yaml +2 -2
- package/agents/roles/system/sales-representative/references/operating-model.md +1 -1
- package/agents/roles/system/security-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/security-engineer/learning/sources.yaml +1 -1
- package/agents/roles/system/security-engineer/references/operating-model.md +1 -1
- package/agents/roles/system/site-reliability-engineer/learning/HISTORY.md +2 -0
- package/agents/roles/system/software-architect/learning/HISTORY.md +2 -0
- package/agents/roles/system/software-architect/learning/sources.yaml +2 -2
- package/agents/roles/system/software-architect/references/operating-model.md +1 -1
- package/agents/roles/system/solutions-engineer/learning/HISTORY.md +4 -1
- package/agents/roles/system/solutions-engineer/learning/sources.yaml +4 -4
- package/agents/roles/system/solutions-engineer/references/operating-model.md +2 -2
- package/agents/roles/system/tech-lead/learning/HISTORY.md +2 -0
- package/agents/roles/system/technical-program-manager/learning/HISTORY.md +4 -1
- package/agents/roles/system/technical-program-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/technical-program-manager/references/operating-model.md +3 -3
- package/agents/roles/system/technical-writer/learning/HISTORY.md +4 -1
- package/agents/roles/system/treasury-analyst/learning/HISTORY.md +2 -0
- package/agents/roles/system/ui-designer/learning/HISTORY.md +2 -0
- package/agents/roles/system/ui-designer/learning/sources.yaml +2 -2
- package/agents/roles/system/user-researcher/learning/HISTORY.md +1 -1
- package/agents/roles/system/user-researcher/learning/sources.yaml +1 -1
- package/agents/roles/system/ux-designer/learning/HISTORY.md +2 -0
- package/agents/roles/system/ux-designer/learning/sources.yaml +1 -1
- package/agents/roles/system/ux-designer/references/operating-model.md +1 -1
- package/automatization/AGENTS.md +1 -1
- package/automatization/runners/antigravity/rules/cauce.md +1 -1
- package/automatization/runners/claude/CLAUDE.md +1 -1
- package/automatization/runners/codex/AGENTS.md +1 -1
- package/automatization/runners/gemini/GEMINI.md +1 -1
- package/automatization/shared/skills/autobuild/SKILL.md +1 -1
- package/automatization/workflows/autobuild.js +81 -27
- package/engine/agents/learning-seal.js +36 -5
- package/engine/agents/learning-sources.js +46 -2
- package/engine/agents/learning.js +13 -1
- package/engine/cli/archive.js +87 -0
- package/engine/cli/args.js +6 -2
- package/engine/cli/catalog.js +9 -1
- package/engine/cli/claims.js +125 -0
- package/engine/cli/ops.js +15 -4
- package/engine/cli/planning.js +139 -107
- package/engine/cli/worktree.js +89 -0
- package/engine/core/ownership.js +13 -5
- package/engine/core/repos.js +67 -0
- package/engine/hooks/files.js +3 -2
- package/engine/planning/adoption.js +1 -1
- package/engine/planning/claims.js +153 -0
- package/engine/planning/contracts.js +43 -202
- package/engine/planning/parser.js +51 -12
- package/engine/planning/state.js +39 -6
- package/engine/planning/structure.js +220 -0
- package/package.json +1 -1
- package/template/.gitattributes +19 -0
- package/template/AGENTS.md +47 -5
- package/template/automatization/AGENTS.md +1 -1
- package/template/gitignore +9 -0
- package/template/planning/BACKLOG.md +5 -0
- package/template/planning/FLOW.md +1 -1
- package/template/planning/PROTOCOL.md +34 -8
- package/template/planning/README.md +3 -3
- package/template/planning/RECURRING.md +1 -1
- package/template/planning/adr/system/OPS-001-planificacion-como-fuente-de-verdad.md +3 -2
- package/template/planning/business-rules/system/BR-OPS-001-una-sola-tarea-activa.md +7 -4
- package/template/planning/business-rules/system/BR-OPS-005-una-tarea-un-runner.md +44 -0
- package/template/planning/claims/README.md +70 -0
- package/template/planning/delivery/README.md +1 -0
- package/template/planning/delivery/multi-repo.md +11 -0
- package/template/planning/delivery/teamwork.md +162 -0
- package/template/planning/done/README.md +41 -0
- package/template/planning/wip/README.md +49 -0
- package/template/planning/DONE.md +0 -13
- package/template/planning/WIP.md +0 -22
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,272 @@ 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.71.0] - 2026-09-09
|
|
18
|
+
|
|
19
|
+
### Cambiado
|
|
20
|
+
|
|
21
|
+
- **`planning/PROTOCOL.md` pide contrastar la línea de una tarea contra su propia descripción.** La línea
|
|
22
|
+
declara cuatro cosas —qué hace, en qué carril, quién entrega y revisa, con qué se comprueba— y las
|
|
23
|
+
cuatro las escribe la misma mano en el mismo acto, así que nada las cruzaba después. Releerlas no
|
|
24
|
+
encuentra el hueco: una aceptación incompleta se lee perfecta porque todo lo que dice es cierto.
|
|
25
|
+
|
|
26
|
+
La pasada vive al escribir la tarea y no en una fase, y la razón es que cualquier fase donde viviera es
|
|
27
|
+
una que el carril puede saltar — una tarea mal marcada `express` es justamente la que se salta la fase
|
|
28
|
+
donde alguien lo notaría.
|
|
29
|
+
|
|
30
|
+
**Lo que te pide algo**: cuesta minutos por tarea al promover un hito. En el caso que originó esto, seis
|
|
31
|
+
correcciones sobre cinco tareas, todas antes de escribir una línea de código.
|
|
32
|
+
|
|
33
|
+
### Corregido
|
|
34
|
+
|
|
35
|
+
- **`autobuild` comprueba su raíz en la primera fase, y lo dice nombrándola.** `ROOT` viaja escrito en
|
|
36
|
+
el workflow y es relativo a la carpeta donde se abre la herramienta: si la sesión abrió en otra, todas
|
|
37
|
+
las rutas resuelven a `<raíz>/<raíz>/…` y ninguna existe. Nada lo comprobaba, así que la corrida
|
|
38
|
+
gastaba Triage entero sobre archivos ausentes y paraba más abajo mandando a revisar el planning — que
|
|
39
|
+
está bien; lo que no existe es la carpeta de la que cuelga.
|
|
40
|
+
|
|
41
|
+
- **`learning/HISTORY.md` dice lo mismo en los 53 cargos, y su fila entra en una tabla.** El encabezado
|
|
42
|
+
tenía trece redacciones distintas y nueve contradecían la tabla que llevan debajo —«registrar únicamente
|
|
43
|
+
cambios aprobados», cuando la columna se llama «Decisión» y hay dos—. Y dieciséis archivos no tenían
|
|
44
|
+
tabla: la fila que escribe el ciclo quedaba pegada al párrafo, que en markdown es texto con barras.
|
|
45
|
+
|
|
46
|
+
Los tres cargos con una exigencia propia —país, jurisdicción, revisión de Legal— la conservan como línea
|
|
47
|
+
aparte. Ninguna se cumplía, y aun así no se borraron: dos son de cargos regulatorios.
|
|
48
|
+
|
|
49
|
+
- **`autobuild` ya no promueve épicas: nombra la que sigue y para.** Cuando se le acababa la cola,
|
|
50
|
+
expandía la próxima épica del roadmap al BACKLOG. El roadmap llama `open` a «candidata editable que aún
|
|
51
|
+
no fue promovida al backlog», así que pegarla en la cola es promoverla — y BR-OPS-002 deja una propuesta
|
|
52
|
+
fuera de la cola hasta que la apruebe una persona. El prompt pedía «la próxima épica abierta y
|
|
53
|
+
aprobada», y «aprobada» no correspondía a ningún dato: una épica declara `epic`, `title`, `status` y
|
|
54
|
+
`service`, y ninguno registra una aprobación.
|
|
55
|
+
|
|
56
|
+
Ahora `ops context` nombra la próxima épica sin promover —`EPIC 003: … — sin promover`, y el campo
|
|
57
|
+
`nextEpic` en `--json`— igual que ya nombraba una recurrencia vencida, y por el mismo motivo: la máquina
|
|
58
|
+
calcula, la persona encola.
|
|
59
|
+
|
|
60
|
+
**Lo que te pide algo**: si usabas `autobuild` desatendido esperando que encadenara épicas, ahora se
|
|
61
|
+
detiene al terminar el hito y hay que pegar el siguiente en `BACKLOG.md`. `context` te dice cuál es.
|
|
62
|
+
|
|
63
|
+
- **El chequeo semanal de fuentes mira también `references/` y `SKILL.md`, y deja de dar por rotas las
|
|
64
|
+
páginas sanas.** Miraba sólo `sources.yaml`: las 207 URLs que un cargo cita en su método no las
|
|
65
|
+
comprobaba nadie, y 29 no servían —dos de ellas 404 de páginas movidas hacía meses—. `evaluations/`
|
|
66
|
+
queda afuera a propósito: un caso adversarial inventa dominios y comprobarlos mide el fixture.
|
|
67
|
+
|
|
68
|
+
Y el chequeo se equivocaba en las dos direcciones sobre lo que sí miraba. Se identificaba como
|
|
69
|
+
`cauce-learning/1.0`, que no es con lo que el cargo lee: las tres páginas de `ftc.gov` del catálogo dan
|
|
70
|
+
403 a ese `User-Agent` y 200 con miles de palabras a uno de navegador. Y veinte segundos no alcanzan
|
|
71
|
+
para un PDF grande —el instrumento de la OCDE que cita `sales-representative` llega pasados los
|
|
72
|
+
treinta—. Ahora lo que falla se reintenta una vez, con más tiempo y como navegador, y el resumen dice
|
|
73
|
+
cuántas lo necesitaron: que un dominio nos rechace es un dato suyo y se pierde si el reintento lo tapa.
|
|
74
|
+
|
|
75
|
+
El aviso nombra además el archivo donde está escrita cada URL, porque eso decide quién la arregla.
|
|
76
|
+
|
|
77
|
+
- **Las URLs rotas del catálogo se arreglaron, no sólo se reportaron.** Veintitrés reemplazos
|
|
78
|
+
comprobados uno por uno. Casi ninguna estaba muerta: cuando un dominio bloquea suele haber otra forma
|
|
79
|
+
publicada del mismo documento —el PDF donde el HTML tiene Cloudflare (`acm.org`, los instrumentos de la
|
|
80
|
+
OCDE), otro sitio del mismo organismo (`oecd.ai`, `gov.uk`), o el feed que la propia CISA distribuye—.
|
|
81
|
+
Las cuatro que no tienen ninguna —`pmi.org`, `fatf-gafi.org`— se quedan como fuente y pierden el enlace
|
|
82
|
+
en `references/`, conservando el nombre: un 403 ahí sólo le hace perder un clic a quien lee.
|
|
83
|
+
|
|
84
|
+
- **Las normas ISO del catálogo se citan por una ficha que se puede leer.** `www.iso.org` devuelve 403,
|
|
85
|
+
y 41 entradas de 22 cargos apuntaban ahí: para todas ellas la investigación semanal producía el mismo
|
|
86
|
+
informe «sin novedades» que produciría una norma que no cambió. Ahora una ISO/IEC se cita por su ficha
|
|
87
|
+
del IEC Webstore y una ISO sola por la de `committee.iso.org`, que sirve el mismo número de catálogo.
|
|
88
|
+
|
|
89
|
+
La edición pasó al nombre de las ISO/IEC —`ISO IEC 25010:2023 product quality model`— porque la ficha
|
|
90
|
+
del webstore es de una edición concreta: buscar «ISO/IEC 25010» ahí devuelve primero la de 2011.
|
|
91
|
+
Cada ficha se comprobó contra su `<title>` antes de anotarla, y `cloud-architect` pasó a declarar la
|
|
92
|
+
edición 2 de ISO/IEC 27017, publicada el 2026-07-27 — su modelo operativo decía «no tratarla como
|
|
93
|
+
publicada» y eso dejó de ser cierto. Los `references/` de esos cargos enlazaban las mismas normas a las
|
|
94
|
+
mismas URLs muertas y también se cambiaron: 40 enlaces en 22 archivos.
|
|
95
|
+
|
|
96
|
+
**Lo que te pide algo**: si forkeaste alguno de esos 22 cargos, tu copia sigue con las URLs viejas y
|
|
97
|
+
`check` te avisa que el original cambió río arriba. Vale traerlas: las viejas no responden.
|
|
98
|
+
|
|
99
|
+
- **El ciclo semanal comprueba que las fuentes declaradas de un cargo respondan, y anota las que no.** Una
|
|
100
|
+
fuente ilegible y una que no cambió producían el mismo informe —«sin novedades»— y no son lo mismo: la
|
|
101
|
+
primera no se comprobó. Ahora el resumen del job dice cuántas fuentes declara el cargo y cuáles no
|
|
102
|
+
respondieron, con su código, y sale una anotación cuando hay alguna. Avisa y no falla: un 403 de una
|
|
103
|
+
semana puede ser temporal, y lo que decide una cadencia es el patrón sostenido.
|
|
104
|
+
|
|
105
|
+
Mide además **el texto que la página trae**, no sólo que responda: por debajo de 50 palabras fuera de
|
|
106
|
+
etiquetas se reporta igual que un 403, porque una aplicación renderizada por cliente devuelve su título y
|
|
107
|
+
poco más. El umbral sale de medir las 255 fuentes del catálogo — catorce caen debajo y sólo dos entre 50
|
|
108
|
+
y 200, así que no parte ningún grupo. Y un `202` se reporta aparte: es «aceptado, vuelve más tarde», que
|
|
109
|
+
es lo que contestan las seis normas europeas que el catálogo cita.
|
|
110
|
+
|
|
111
|
+
- **El lector de fuentes era ciego para uno de los dos formatos del catálogo.** `sources.yaml` admite la
|
|
112
|
+
entrada repartida en varias líneas y la escrita en una sola, y sólo se leía la primera: en los seis
|
|
113
|
+
cargos que usan la segunda se veían **cero** fuentes. De ahí sale la validación que rechaza una URL
|
|
114
|
+
declarada dos veces con nombres distintos, así que esos seis nunca la tuvieron — y no fallaba nada,
|
|
115
|
+
porque no encontrar duplicados y no mirar producen el mismo silencio.
|
|
116
|
+
|
|
117
|
+
- **Archivar una propuesta ahora deja quién lo decidió y cuándo.** Antes quedaba con «Responsable: por
|
|
118
|
+
definir» y ninguna fila en `learning/HISTORY.md`, así que una propuesta que alguien miró y descartó se
|
|
119
|
+
leía igual que una que nadie tocó. El responsable sale de `CAUCE_OWNER` o de `git config user.email` —la
|
|
120
|
+
misma identidad con la que se reclama una tarea— y la fila usa la columna «Decisión» que la tabla ya
|
|
121
|
+
tenía, con el valor `archivada`.
|
|
122
|
+
|
|
123
|
+
- **`ops context` y `ops tree` sobre un planning que no existe ahora fallan, en vez de contestar como una
|
|
124
|
+
cola terminada.** Antes devolvían `queued: 0` con código 0, así que una ruta equivocada se propagaba
|
|
125
|
+
como dato y no como error. Ahora salen con código 2 y nombran la **ruta resuelta**, que es la que hace
|
|
126
|
+
falta para ver el problema: en `sidecar`, `<empresa>-ops/planning` escrito desde adentro de la raíz
|
|
127
|
+
apunta a `<empresa>-ops/<empresa>-ops/planning`, y las dos formas se ven razonables.
|
|
128
|
+
|
|
129
|
+
**Lo que te pide algo**: si tenías un script que trataba la salida vacía como «nada que hacer», ahora
|
|
130
|
+
recibe un error. Es deliberado y va en la misma dirección que el cambio de código de salida de
|
|
131
|
+
`upgrade` en 0.67.0 — un comando que no pudo leer no responde como si hubiera leído.
|
|
132
|
+
|
|
133
|
+
- **`autobuild` no expande una épica sobre una lectura que falló.** La fase Pick tomaba «sin tarea y cola
|
|
134
|
+
en cero» como permiso para promover la próxima épica al BACKLOG, y ese es exactamente el estado que
|
|
135
|
+
devolvía un planning ilegible. Una corrida real escribió seis historias que ninguna persona aprobó
|
|
136
|
+
—lo que BR-OPS-002 prohíbe— y el `check` posterior dio verde, porque once tareas en cola es un estado
|
|
137
|
+
válido.
|
|
138
|
+
|
|
139
|
+
El arreglo del CLI no alcanzaba solo: el esquema se completa igual, y ceros es lo que un modelo escribe
|
|
140
|
+
cuando no tiene qué poner. Así que el informe de estado ahora declara si de verdad leyó, y expandir
|
|
141
|
+
exige esa lectura afirmada en vez de la ausencia de tarea. Parar cuesta una corrida; promover escribe en
|
|
142
|
+
el repositorio.
|
|
143
|
+
|
|
144
|
+
## [0.70.0] - 2026-09-08
|
|
145
|
+
|
|
146
|
+
### Agregado
|
|
147
|
+
|
|
148
|
+
- **`planning/claims/`: quién tomó qué, para que dos runners no construyan lo mismo.** Un archivo por tarea
|
|
149
|
+
tomada, con el slug de la tarea como nombre: `ops claim planning <tarea>` lo crea y `ops release` lo borra.
|
|
150
|
+
`ops context` deja de ofrecer una tarea con reclamo ajeno —antes le entregaba la misma a los dos y ninguno
|
|
151
|
+
se enteraba—, nombra quién la tiene y devuelve antes lo que vos reclamaste que lo que está libre.
|
|
152
|
+
|
|
153
|
+
Es un archivo por tarea y no uno por persona a propósito: así dos personas en tareas distintas no tocan
|
|
154
|
+
nunca el mismo archivo, y dos que toman la misma chocan en git, que es donde el choque significa algo.
|
|
155
|
+
`check` rechaza el reclamo que nombra una tarea que no existe, avisa a los tres días de tomada y avisa
|
|
156
|
+
cuando hay dos reclamos sobre el mismo `service:` — avisa y no frena, porque frenar serializaría a un
|
|
157
|
+
equipo entero sobre un servicio.
|
|
158
|
+
|
|
159
|
+
El reclamo distingue `owner` —la persona, a quién preguntarle— de `runner` —el agente que la hace—, y
|
|
160
|
+
lo segundo es lo que decide de quién es una tarea. Con varios agentes en una máquina la persona es la
|
|
161
|
+
misma y el árbol de trabajo no: sin esa distinción, el segundo agente tomaría por propia la tarea del
|
|
162
|
+
primero. Se crea con exclusión —el archivo se abre en modo exclusivo, así que dos reclamos simultáneos
|
|
163
|
+
no se pisan— y un runner lleva una tarea a la vez.
|
|
164
|
+
|
|
165
|
+
**Lo que te pide algo**: el reclamo hay que commitearlo y empujarlo — sin eso, el otro runner lee lo
|
|
166
|
+
que hay en su copia y la reserva no existe para nadie más—. Y si corrés varios agentes en la misma
|
|
167
|
+
máquina, cada uno exporta `CAUCE_RUNNER` con un valor propio.
|
|
168
|
+
|
|
169
|
+
- **`autobuild` reserva la tarea antes de construirla y la suelta al cerrarla.** Es lo que hace que dos
|
|
170
|
+
corridas en paralelo dejen de trabajar lo mismo: entre preguntar qué toca y reservarlo hay una ventana, y
|
|
171
|
+
perder esa carrera no frena la corrida — relee y sigue con la que quedó libre.
|
|
172
|
+
|
|
173
|
+
- **El aviso de reclamo viejo mira si la rama avanzó, no cuánto hace que se tomó.** El tiempo transcurrido
|
|
174
|
+
no distingue una tarea larga de una abandonada, y equivocarse cuesta en los dos sentidos: apurar a quien
|
|
175
|
+
está trabajando, o dejar bloqueada para siempre la tarea de quien se fue. Ahora `check` mira el último
|
|
176
|
+
commit **propio** de `task/<tarea>` —los que no están en el tronco, porque una rama recién creada hereda
|
|
177
|
+
su historia entera y sin esa distinción toda rama parecería haber avanzado el día que se creó—: tres días
|
|
178
|
+
sin ninguno avisan, y una tarea que recibe commits no se apura nunca
|
|
179
|
+
aunque lleve semanas tomada. Sin repositorio resoluble el aviso vuelve a mirar sólo la fecha — degrada a
|
|
180
|
+
lo que había, no rompe.
|
|
181
|
+
|
|
182
|
+
- **`ops context --hito <slug>` acota la cola a un hito.** Es la forma más barata de que dos personas o dos
|
|
183
|
+
agentes no se crucen: en hitos distintos casi nunca dependen entre sí ni tocan los mismos archivos. Lo
|
|
184
|
+
que se acota es qué se ofrece, no qué se sabe — una dependencia que vive en otro hito se sigue juzgando
|
|
185
|
+
igual—, y un hito mal escrito lo dice en vez de contestar «sin tarea disponible», que es indistinguible
|
|
186
|
+
de un hito terminado.
|
|
187
|
+
|
|
188
|
+
- **El plan en vuelo es uno por runner: `planning/wip/<runner>.md`.** Con `mode: sidecar` hay un solo
|
|
189
|
+
`planning/` por máquina, así que un plan compartido lo escribían todos los agentes que corren ahí: el
|
|
190
|
+
segundo pisaba el del primero, y `ops context` le entregaba la tarea que el primero estaba construyendo
|
|
191
|
+
—con el plan ajeno adentro y diciéndole que estaba libre—. `context` honra sólo el tuyo y `check` los
|
|
192
|
+
recorre todos.
|
|
193
|
+
|
|
194
|
+
**Lo que te pide algo**: `planning/WIP.md` se retiró. Mové tu plan a `planning/wip/<runner>.md` —el
|
|
195
|
+
nombre sale de tu `CAUCE_RUNNER`, aplanado; `ops context --json` lo dice en `wipFile`— y borrá el
|
|
196
|
+
archivo viejo, que mientras esté `ops check` lo nombra. El `.gitignore` nuevo excluye `planning/wip/*.md`
|
|
197
|
+
y conserva su README; si venías con la línea de `planning/WIP.md`, cambiala.
|
|
198
|
+
|
|
199
|
+
- **Un `service:` ambiguo entre varias raíces se nombra en vez de elegirse.** Con más de un
|
|
200
|
+
`workspaceRoots`, un servicio que existe en dos —`.` existe en todas— resolvía al primero: el árbol de
|
|
201
|
+
trabajo terminaba en el repositorio que no era, y el aviso de avance miraba las ramas de otro. Ahora
|
|
202
|
+
`ops worktree` nombra los candidatos y se niega, y el aviso degrada a mirar sólo la fecha.
|
|
203
|
+
|
|
204
|
+
- **`ops worktree` avisa cuando la instancia está embebida.** Con `mode: embedded` cada árbol se lleva su
|
|
205
|
+
propia copia de `planning/`, así que los reclamos de un agente no los ve el otro hasta mergear y la
|
|
206
|
+
coordinación entre varios deja de existir sin que nada falle. No lo frena: un árbol por rama con un solo
|
|
207
|
+
agente es un uso legítimo.
|
|
208
|
+
|
|
209
|
+
- **`ops runners <planning>`: qué runners tienen trabajo abierto, para que un agente pueda preguntar.**
|
|
210
|
+
Elegir con qué runner se arranca es lo primero de una sesión y `ops context` no lo contesta: responde
|
|
211
|
+
«qué hago» para un runner ya elegido. Sin esa lista, un agente se inventa un id y deja huérfano el
|
|
212
|
+
trabajo de ayer, o se lo pisa a otro que sigue corriendo.
|
|
213
|
+
|
|
214
|
+
**Lo que te pide algo**: nada, y es el punto. `AGENTS.md` le dice al runner que mire esa lista al abrir
|
|
215
|
+
la sesión, que **pregunte** cuál se retoma o si arranca uno nuevo, y que **exporte el id él mismo**. A
|
|
216
|
+
una persona no se le pide que escriba una variable de entorno.
|
|
217
|
+
|
|
218
|
+
- **Tu propio reclamo desde otro runner se reconoce en vez de resolverse solo.** Volver al día siguiente
|
|
219
|
+
sin reponer `CAUCE_RUNNER` y correr un segundo agente tuyo se ven idénticos desde el archivo, y las dos
|
|
220
|
+
salidas automáticas rompen trabajo: retomar sola le saca la tarea al otro agente, y crear un runner
|
|
221
|
+
nuevo deja dos construyendo lo mismo. `ops claim` dice cuál es cuál y con qué id se retoma; `ops context`
|
|
222
|
+
marca esas tareas como «vos, desde otro runner».
|
|
223
|
+
|
|
224
|
+
- **La evidencia de una tarea cerrada vive en su propio archivo: `planning/done/<slug>.md`.** Cerrar es lo
|
|
225
|
+
que más se hace, y mientras la evidencia se acumulaba en un `DONE.md` compartido, cerrar era agregarle
|
|
226
|
+
una entrada a algo que otro también estaba tocando. Ahora dos personas —o dos agentes— que cierran a la
|
|
227
|
+
vez escriben archivos distintos: no hay conflicto que resolver ni regla de merge que aplicar.
|
|
228
|
+
|
|
229
|
+
La entrada declara `fecha:`, la del cierre. Mientras vivían en un archivo, «la última» era la última del
|
|
230
|
+
archivo; con archivos sueltos el orden lo daría el listado del directorio, que es alfabético, y la
|
|
231
|
+
respuesta equivocada se leería igual de bien que la correcta. `ops evidence` sin `--task` ordena por ese
|
|
232
|
+
campo, y el contrato de una entrada está en `planning/done/README.md`.
|
|
233
|
+
|
|
234
|
+
**Lo que te pide algo**: `planning/DONE.md` se retiró. Pasá cada entrada a su propio
|
|
235
|
+
`planning/done/<slug>.md` con su `fecha:` y borrá el archivo — mientras esté, `ops check` lo dice en vez
|
|
236
|
+
de ignorarlo, porque un `DONE.md` que ya nadie lee deja a sus épicas sin poder cerrar y a sus historias
|
|
237
|
+
figurando sin evidencia.
|
|
238
|
+
|
|
239
|
+
- **`ops archive <NNN>` se retiró; `ops archive human-actions` se queda.** Archivar una épica existía para
|
|
240
|
+
descongestionar un `DONE.md` que se hinchaba con una entrada por tarea; con un archivo por tarea no hay
|
|
241
|
+
nada que descongestionar, y mover esos archivos a una carpeta por épica sería reintroducir el movimiento
|
|
242
|
+
que esto vino a sacar. El comando lo dice, en vez de contestar «la épica debe ser NNN».
|
|
243
|
+
|
|
244
|
+
- **`(depende: slug)` en una línea de tarea: lo que sigue no se le ofrece a otro.** El orden del BACKLOG
|
|
245
|
+
era la dependencia y alcanzaba mientras hubiera un runner; con dos, el segundo toma la que sigue mientras
|
|
246
|
+
el primero construye aquella de la que depende, y las dos ramas se pisan al integrar. Una tarea con
|
|
247
|
+
dependencias sin cerrar no se ofrece ni se puede tomar, y `context` la muestra con una línea `WAIT` que
|
|
248
|
+
nombra la dependencia y quién la tiene — una cola trabada no se lee como una cola vacía. `check` rechaza
|
|
249
|
+
la dependencia que no existe y nombra el ciclo entero cuando lo hay.
|
|
250
|
+
|
|
251
|
+
- **`ops worktree <planning> <tarea>`: un árbol de trabajo por agente, sin clonar el repositorio.** Resuelve
|
|
252
|
+
en qué raíz de `workspaceRoots` vive el `service:` de la tarea, crea la rama `task/<slug>` y el árbol al
|
|
253
|
+
lado, y devuelve la ruta con el `export CAUCE_RUNNER` ya escrito. `git worktree` comparte el mismo `.git`
|
|
254
|
+
y el mismo historial, así que no hay una segunda copia del repositorio: lo que hay es un segundo
|
|
255
|
+
directorio de archivos fijado a su rama, y por eso **ningún agente hace `checkout`** sobre el trabajo de
|
|
256
|
+
otro. Repetirlo devuelve el árbol que ya existe.
|
|
257
|
+
|
|
258
|
+
- **`.gitattributes`: `DONE.md` y `HUMAN_ACTIONS.md` se concatenan en vez de conflictuar.** Dos personas
|
|
259
|
+
cerrando trabajo el mismo día chocaban siempre, y ese conflicto no significaba nada: las dos entradas son
|
|
260
|
+
buenas y van las dos. Lo que `union` no hace es deduplicar, y esa falla ya la atrapa `DONE duplicado`.
|
|
261
|
+
|
|
262
|
+
- **`planning/delivery/teamwork.md`**: qué comparte el equipo y qué no, por qué dos agentes necesitan un
|
|
263
|
+
`git worktree` cada uno, cómo repartir trabajo, y qué se rompe primero según el tamaño del equipo.
|
|
264
|
+
|
|
265
|
+
- **BR-OPS-005 — una tarea, un runner.** La contracara de BR-OPS-001: aquélla impide que un runner lleve dos
|
|
266
|
+
tareas, ésta que dos runners lleven la misma.
|
|
267
|
+
|
|
268
|
+
### Cambiado
|
|
269
|
+
|
|
270
|
+
- **`planning/WIP.md` pasa a ser local y deja de viajar por git.** Existe para recuperar la sesión de quien
|
|
271
|
+
lo escribió —nadie más puede retomarla— y cambia en cada paso, así que compartirlo era un conflicto por
|
|
272
|
+
commit a cambio de nada. `check` deja de exigir que exista: ausente se lee como IDLE, que es lo que
|
|
273
|
+
significa, y un clon nuevo ya no falla por no traerlo.
|
|
274
|
+
|
|
275
|
+
**Lo que te pide algo**: el molde nuevo lo gitignorea, pero tu `.gitignore` es tuyo y `upgrade` no lo toca.
|
|
276
|
+
Para aprovecharlo, agregale `planning/WIP.md` y sacalo del índice con `git rm --cached planning/WIP.md`.
|
|
277
|
+
Sin hacer nada, todo sigue funcionando como antes.
|
|
278
|
+
|
|
279
|
+
- **BR-OPS-001 se acota al runner.** Decía que WIP es el mutex sin decir de quién, y con equipo eso se leía
|
|
280
|
+
como «trabaja uno por vez». Ahora dice que un runner no toma dos tareas; que dos runners no tomen la misma
|
|
281
|
+
es BR-OPS-005.
|
|
282
|
+
|
|
17
283
|
## [0.69.0] - 2026-09-07
|
|
18
284
|
|
|
19
285
|
### Agregado
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ el contexto de cada empresa vive en su propia instancia.
|
|
|
7
7
|
## Qué resuelve
|
|
8
8
|
|
|
9
9
|
- Una tarea tiene una sola fuente de verdad durante todo su ciclo de vida.
|
|
10
|
-
- Una sesión interrumpida se recupera desde `
|
|
10
|
+
- Una sesión interrumpida se recupera desde el plan del runner en `planning/wip/`, sin reconstruir la intención.
|
|
11
11
|
- Las ideas del agente no entran solas a la cola: quedan en `INBOX.md` hasta promoción humana.
|
|
12
12
|
- El trabajo que vuelve cada tanto se declara una vez en `RECURRING.md`; el CLI dice cuándo venció y
|
|
13
13
|
nadie lo encola solo.
|
|
@@ -164,8 +164,8 @@ cualquiera de esas formas.
|
|
|
164
164
|
## Flujo
|
|
165
165
|
|
|
166
166
|
```text
|
|
167
|
-
idea → INBOX → roadmap → BACKLOG →
|
|
168
|
-
aprobación
|
|
167
|
+
idea → INBOX → roadmap → BACKLOG → claim → WIP → done/<tarea>.md
|
|
168
|
+
aprobación reserva ejecución evidencia
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
1. Captura ideas, deuda o lecciones en `INBOX.md`.
|
|
@@ -173,9 +173,9 @@ idea → INBOX → roadmap → BACKLOG → WIP → DONE → done/epic-NNN.md
|
|
|
173
173
|
un recorrido —una etapa por dueño de decisión, con su exit gate— y dejar la épica candidata escrita;
|
|
174
174
|
si falta evidencia o autoridad, para y registra la acción humana en vez de suponer.
|
|
175
175
|
3. Promueve historias listas a un `## Hito` de `BACKLOG.md`.
|
|
176
|
-
4. Un runner
|
|
177
|
-
5. Tras Build, Review, Verify y QA,
|
|
178
|
-
6. Al cerrar la
|
|
176
|
+
4. Un runner reclama la tarea con `ops claim`, para que otro no la tome, y persiste su plan en `wip/<runner>.md`.
|
|
177
|
+
5. Tras Build, Review, Verify y QA, escribe la evidencia en `done/<slug>.md` y suelta el reclamo.
|
|
178
|
+
6. Al cerrar la última historia, la épica pasa a `closed`.
|
|
179
179
|
|
|
180
180
|
Lo que vuelve cada tanto —actualizar dependencias, revisar accesos, mirar el gasto del mes— entra por
|
|
181
181
|
un costado: se declara una vez en `RECURRING.md` con su cadencia, y `ops recurring planning` dice qué
|
package/agents/README.md
CHANGED
|
@@ -25,6 +25,44 @@ mejor que repetirla en cada instalación.
|
|
|
25
25
|
Por eso `learn` falla si lo corrés sobre un cargo del catálogo dentro de una instancia: escribiría en el
|
|
26
26
|
paquete y se perdería. El ciclo de aprendizaje de esos cargos tampoco se distribuye.
|
|
27
27
|
|
|
28
|
+
## Las URLs que un cargo cita
|
|
29
|
+
|
|
30
|
+
Un cargo cita URLs en dos lugares y los dos se comprueban cada semana: `sources.yaml`, que es lo que
|
|
31
|
+
investiga, y `references/` más `SKILL.md`, que es el método que sigue. Las de `evaluations/` **no** —los
|
|
32
|
+
casos adversariales inventan dominios a propósito—, y las de `learning/reports` tampoco, porque son
|
|
33
|
+
evidencia fechada de lo que una corrida encontró.
|
|
34
|
+
|
|
35
|
+
Cuando una responde 403, casi nunca está muerta. Tres cosas que conviene probar antes de darla por
|
|
36
|
+
perdida, todas encontradas midiendo el catálogo:
|
|
37
|
+
|
|
38
|
+
- **El documento en vez de la página.** Cloudflare protege el HTML y no el PDF: `acm.org/code-of-ethics`
|
|
39
|
+
bloquea y `acm.org/binaries/.../acm-code-of-ethics-booklet.pdf` no; lo mismo con los instrumentos de la
|
|
40
|
+
OCDE, que se leen enteros bajo `legalinstruments.oecd.org/public/doc/<n>/<n>.en.pdf`.
|
|
41
|
+
- **Otro sitio del mismo organismo.** `oecd.org/en/topics/ai-principles.html` bloquea y `oecd.ai` no;
|
|
42
|
+
`projectdelivery.gov.uk` bloquea y la misma norma está publicada en `gov.uk`.
|
|
43
|
+
- **La forma publicada del dato.** El catálogo KEV de CISA bloquea en HTML y su feed JSON, que la propia
|
|
44
|
+
CISA distribuye, no.
|
|
45
|
+
|
|
46
|
+
Si aun así no hay ninguna que responda —`pmi.org`, `fatf-gafi.org`—, la fuente **se queda en
|
|
47
|
+
`sources.yaml`**, porque sigue siendo lo que la profesión publica y el chequeo semanal tiene algo que
|
|
48
|
+
decir sobre ella; lo que sale es el enlace en `references/`, donde un 403 sólo le hace perder un clic a
|
|
49
|
+
quien lee. El nombre se conserva.
|
|
50
|
+
|
|
51
|
+
## Por qué las normas no se citan en `iso.org`
|
|
52
|
+
|
|
53
|
+
`sources.yaml` cita cada norma por una ficha de catálogo, y para ISO esa ficha **no es la de
|
|
54
|
+
`iso.org`**: ese dominio devuelve 403 a todo el catálogo —31 URLs, ninguna legible— y una fuente que no
|
|
55
|
+
se puede abrir produce el mismo informe «sin novedades» que una que no cambió. Las dos que sí responden:
|
|
56
|
+
|
|
57
|
+
- **`webstore.iec.ch/en/publication/<n>`** para una ISO/IEC, que los dos organismos co-publican.
|
|
58
|
+
- **`committee.iso.org/standard/<n>.html`** para una ISO sola. Es el mismo número de catálogo que
|
|
59
|
+
llevaba la URL vieja, servido por un host que no bloquea.
|
|
60
|
+
|
|
61
|
+
La diferencia entre las dos importa al escribir una entrada nueva: el número del IEC Webstore es
|
|
62
|
+
**suyo** y nombra una edición concreta —buscar «ISO/IEC 25010» ahí devuelve primero la ficha de 2011,
|
|
63
|
+
no la de 2023—, así que se comprueba contra el `<title>` de la ficha antes de anotarla. El de
|
|
64
|
+
`committee.iso.org` es el mismo de ISO y no hay edición que equivocar.
|
|
65
|
+
|
|
28
66
|
## Quedarse con una versión propia
|
|
29
67
|
|
|
30
68
|
```bash
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
|
+
|
|
5
|
+
Para este cargo, la fila dice además si hubo revisión de Legal.
|
|
6
|
+
|
|
7
|
+
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
8
|
+
|---|---|---|---|---|
|
|
@@ -13,12 +13,12 @@ sources:
|
|
|
13
13
|
url: https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-ai-rmf-10
|
|
14
14
|
tier: standard
|
|
15
15
|
topics: [ai-risk, govern, map, measure, manage]
|
|
16
|
-
- name: ISO IEC 42001 AI management system
|
|
17
|
-
url: https://
|
|
16
|
+
- name: ISO IEC 42001:2023 AI management system
|
|
17
|
+
url: https://webstore.iec.ch/en/publication/90574
|
|
18
18
|
tier: standard
|
|
19
19
|
topics: [ai-governance, management-system, accountability, improvement]
|
|
20
|
-
- name: ISO IEC 42005 AI system impact assessment
|
|
21
|
-
url: https://
|
|
20
|
+
- name: ISO IEC 42005:2025 AI system impact assessment
|
|
21
|
+
url: https://webstore.iec.ch/en/publication/107659
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [impact-assessment, individuals, groups, society, lifecycle]
|
|
24
24
|
- name: OECD AI Principles updated 2024
|
|
@@ -34,8 +34,8 @@ Mantener fuente primaria, instrumento, artículo/sección, jurisdicción, actor/
|
|
|
34
34
|
## Fundamento externo
|
|
35
35
|
|
|
36
36
|
- [NIST AI RMF 1.0](https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-ai-rmf-10): marco voluntario y agnóstico con Govern, Map, Measure y Manage; NIST indica que está en revisión en 2026.
|
|
37
|
-
- [ISO/IEC 42001:2023](https://
|
|
38
|
-
- [ISO/IEC 42005:2025](https://
|
|
37
|
+
- [ISO/IEC 42001:2023](https://webstore.iec.ch/en/publication/90574): requisitos para establecer y mejorar un AI management system; certificación organizacional no aprueba cada sistema.
|
|
38
|
+
- [ISO/IEC 42005:2025](https://webstore.iec.ch/en/publication/107659): evaluación de impactos sobre individuos, grupos y sociedad durante el lifecycle.
|
|
39
39
|
- [OECD AI Principles](https://oecd.ai/en/ai-principles): principios intergubernamentales actualizados en mayo de 2024 sobre IA innovadora, trustworthy y respetuosa de derechos.
|
|
40
40
|
- [EU AI Act — fuente oficial](https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai): ejemplo jurisdiccional con obligaciones y calendario cambiante; verificar EUR-Lex, rol, alcance, modificaciones y fecha aplicable con Legal.
|
|
41
41
|
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
|
+
|
|
5
|
+
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
6
|
+
|---|---|---|---|---|
|
|
@@ -11,7 +11,7 @@ rules:
|
|
|
11
11
|
sources:
|
|
12
12
|
- {name: NIST AI RMF 1.0 and status, url: "https://www.nist.gov/itl/ai-risk-management-framework", tier: standard, topics: [ai-risk, lifecycle, status, monitoring]}
|
|
13
13
|
- {name: NIST Generative AI Profile AI 600-1, url: "https://www.nist.gov/itl/ai-risk-management-framework/ai-risk-management-framework-resources", tier: standard, topics: [generative-ai, risk, evaluation]}
|
|
14
|
-
- {name: ISO IEC 42001 AI management systems, url: "https://
|
|
15
|
-
- {name: OECD AI Principles, url: "https://
|
|
14
|
+
- {name: ISO IEC 42001:2023 AI management systems, url: "https://webstore.iec.ch/en/publication/90574", tier: standard, topics: [ai-management, governance, improvement]}
|
|
15
|
+
- {name: OECD AI Principles, url: "https://oecd.ai/en/ai-principles", tier: standard, topics: [rights, transparency, robustness, accountability, sustainability]}
|
|
16
16
|
- {name: Anthropic API release notes, url: "https://docs.anthropic.com/en/release-notes/overview", tier: platform, topics: [modelos, parámetros, deprecaciones]}
|
|
17
17
|
- {name: OpenAI API changelog, url: "https://platform.openai.com/docs/changelog", tier: platform, topics: [modelos, parámetros, deprecaciones]}
|
|
@@ -30,7 +30,7 @@ Verificar outcome, evals, data rights, privacy, security, accessibility, transpa
|
|
|
30
30
|
|
|
31
31
|
- [NIST AI RMF 1.0](https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-ai-rmf-10): marco voluntario y agnóstico al sector para gestionar riesgos durante el ciclo de vida; NIST indica que está en revisión.
|
|
32
32
|
- [NIST AI 600-1 Generative AI Profile](https://www.nist.gov/itl/ai-risk-management-framework): perfil 2024 para riesgos y acciones específicos de IA generativa.
|
|
33
|
-
- [ISO/IEC 42001:2023](https://
|
|
34
|
-
- [OECD AI Principles](https://
|
|
33
|
+
- [ISO/IEC 42001:2023](https://webstore.iec.ch/en/publication/90574): sistema de gestión para desarrollar y usar IA responsablemente con mejora continua.
|
|
34
|
+
- [OECD AI Principles](https://oecd.ai/en/ai-principles): principios intergubernamentales centrados en derechos, actualizados en 2024 para IA general-purpose y generativa.
|
|
35
35
|
|
|
36
36
|
Estas fuentes no sustituyen investigación de usuarios, evaluación técnica, expertise de dominio, obligaciones aplicables ni autoridad empresarial.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
|
+
|
|
5
|
+
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
6
|
+
|---|---|---|---|---|
|
|
@@ -9,8 +9,8 @@ rules:
|
|
|
9
9
|
# El contexto de la empresa no es una fuente de la profesión: vive en
|
|
10
10
|
# organization/roles/analytics-engineer.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
|
-
- {name: ISO IEC 25012 data quality model, url: "https://
|
|
13
|
-
- {name: ISO 8000-61 data quality management, url: "https://
|
|
12
|
+
- {name: ISO IEC 25012:2008 data quality model, url: "https://webstore.iec.ch/en/publication/11246", tier: standard, topics: [data-quality, measures, evaluation]}
|
|
13
|
+
- {name: ISO 8000-61 data quality management, url: "https://committee.iso.org/standard/63086.html", tier: standard, topics: [data-quality, process, maturity]}
|
|
14
14
|
- {name: W3C RDF Data Cube Vocabulary, url: "https://www.w3.org/TR/vocab-data-cube/", tier: standard, topics: [measures, dimensions, metadata]}
|
|
15
15
|
- {name: W3C PROV-O, url: "https://www.w3.org/TR/prov-o/", tier: standard, topics: [provenance, lineage]}
|
|
16
16
|
- {name: dbt Core upgrade notes, url: "https://docs.getdbt.com/docs/dbt-versions/core-upgrade", tier: platform, topics: [materializaciones, incremental, cambios incompatibles]}
|
|
@@ -28,8 +28,8 @@ Definir unique key, watermark, late arrivals y equivalencia con full refresh. Un
|
|
|
28
28
|
|
|
29
29
|
## Fundamento externo
|
|
30
30
|
|
|
31
|
-
- [ISO/IEC 25012:2008](https://
|
|
32
|
-
- [ISO 8000-61:2016](https://
|
|
31
|
+
- [ISO/IEC 25012:2008](https://webstore.iec.ch/en/publication/11246): requisitos, medidas y evaluación de calidad de datos; confirmado vigente en 2025.
|
|
32
|
+
- [ISO 8000-61:2016](https://committee.iso.org/standard/63086.html): procesos para gestionar calidad y evaluar capacidad o madurez.
|
|
33
33
|
- [W3C RDF Data Cube Vocabulary](https://www.w3.org/TR/vocab-data-cube/): observaciones, medidas, dimensiones y metadatos multidimensionales.
|
|
34
34
|
- [W3C PROV-O](https://www.w3.org/TR/prov-o/): procedencia interoperable mediante entidades, actividades y agentes.
|
|
35
35
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
|
+
|
|
3
5
|
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
4
6
|
|---|---|---|---|---|
|
|
5
7
|
| 2026-08-30 | `learning/proposals/2026-08.md` | Aprobada | @ingeniomaps (Manuel Pinzon) | Nada: el período se revisó y se decidió no cambiar ningún contrato. |
|
|
@@ -18,7 +18,7 @@ sources:
|
|
|
18
18
|
tier: regulation
|
|
19
19
|
topics: [options, appraisal, costs, benefits, risk]
|
|
20
20
|
- name: ISO 56002
|
|
21
|
-
url: https://
|
|
21
|
+
url: https://committee.iso.org/standard/68221.html
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [innovation, opportunities, learning]
|
|
24
24
|
- name: Strategyzer Business Model Canvas
|
|
@@ -71,9 +71,9 @@ Separar compromisos del núcleo, opciones adyacentes y experimentos. Ajustar tam
|
|
|
71
71
|
|
|
72
72
|
Modelo sintetizado con fuentes revisadas en agosto de 2026:
|
|
73
73
|
|
|
74
|
-
-
|
|
74
|
+
- **OECD Strategic Foresight** (sin enlace: `oecd.org` bloquea): escenarios y anticipación para decisiones robustas bajo incertidumbre.
|
|
75
75
|
- [UK Government Green Book](https://www.gov.uk/government/publications/the-green-book-appraisal-and-evaluation-in-central-government): definición de objetivos, opciones, costos, beneficios, riesgos y evaluación.
|
|
76
|
-
- [ISO 56002 Innovation management](https://
|
|
76
|
+
- [ISO 56002 Innovation management](https://committee.iso.org/standard/68221.html): enfoque sistemático para oportunidades, innovación, aprendizaje y mejora.
|
|
77
77
|
- [Strategyzer Business Model Canvas](https://www.strategyzer.com/library/the-business-model-canvas): lenguaje para relacionar propuesta de valor, clientes, canales, recursos, actividades, socios, ingresos y costos.
|
|
78
78
|
|
|
79
79
|
Verificar siempre fuentes primarias del sector, datos internos y contexto real de cada empresa.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
4
|
|
|
5
5
|
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
6
6
|
|---|---|---|---|---|
|
|
@@ -10,8 +10,8 @@ rules:
|
|
|
10
10
|
# organization/roles/cloud-architect.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
12
|
- {name: NIST SP 800-145 cloud definition, url: "https://csrc.nist.gov/pubs/sp/800/145/final", tier: standard, topics: [cloud, service-models, deployment-models]}
|
|
13
|
-
- {name: ISO IEC 27017 cloud security controls, url: "https://
|
|
14
|
-
- {name: ISO IEC 27017
|
|
13
|
+
- {name: ISO IEC 27017:2015 cloud security controls, url: "https://webstore.iec.ch/en/publication/23891", tier: standard, topics: [cloud-security, customers, providers]}
|
|
14
|
+
- {name: ISO IEC 27017:2026 cloud security controls, url: "https://webstore.iec.ch/en/publication/115400", tier: standard, topics: [cloud-security, revision-status]}
|
|
15
15
|
- {name: FinOps Framework, url: "https://www.finops.org/framework/", tier: profession, topics: [value, cost, usage, accountability]}
|
|
16
16
|
- {name: AWS What is New, url: "https://aws.amazon.com/new/", tier: platform, topics: [servicios, regiones, precios, deprecaciones]}
|
|
17
17
|
- {name: Google Cloud release notes, url: "https://cloud.google.com/release-notes", tier: platform, topics: [servicios, regiones, deprecaciones]}
|
|
@@ -29,8 +29,8 @@ Descubrir dependencias y baseline; priorizar waves reversibles; preparar observa
|
|
|
29
29
|
## Fundamento externo
|
|
30
30
|
|
|
31
31
|
- [NIST SP 800-145](https://csrc.nist.gov/pubs/sp/800/145/final): características esenciales y modelos de servicio/despliegue de cloud computing.
|
|
32
|
-
- [ISO/IEC 27017:
|
|
33
|
-
- [ISO/IEC 27017
|
|
32
|
+
- [ISO/IEC 27017:2026](https://webstore.iec.ch/en/publication/115400): edición 2, publicada el 2026-07-27 según su ficha; controles para clientes y proveedores cloud.
|
|
33
|
+
- [ISO/IEC 27017:2015](https://webstore.iec.ch/en/publication/23891): la edición 1, que la de 2026 reemplaza. Un contrato firmado contra ella no se satisface con la nueva.
|
|
34
34
|
- [FinOps Framework](https://www.finops.org/framework/): modelo operativo abierto para conectar valor, uso, costo y accountability entre ingeniería, finanzas y negocio.
|
|
35
35
|
|
|
36
36
|
Verificar documentación, precios, SLA, quotas, regiones y estado del servicio para proveedor y fecha concretos antes de recomendarlo.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
|
+
|
|
5
|
+
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
6
|
+
|---|---|---|---|---|
|
|
@@ -21,7 +21,7 @@ sources:
|
|
|
21
21
|
url: https://www.w3.org/TR/WCAG22/
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [accessibility, inclusion, web, conformance]
|
|
24
|
-
- name: OECD
|
|
25
|
-
url: https://
|
|
24
|
+
- name: OECD Privacy Guidelines
|
|
25
|
+
url: https://legalinstruments.oecd.org/public/doc/188/188.en.pdf
|
|
26
26
|
tier: standard
|
|
27
27
|
topics: [privacy, collection, purpose, use, accountability]
|
|
@@ -35,6 +35,6 @@ Sintetizar tema, necesidad, segmento/contexto, frecuencia, severidad, impacto, e
|
|
|
35
35
|
- [Contributor Covenant 3.0](https://www.contributor-covenant.org/version/3/0/code_of_conduct/): ejemplo adaptable de conductas, reporte, investigación privada y escala de medidas; requiere completar y aprobar el proceso propio.
|
|
36
36
|
- [GitHub — Community management and moderation](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/about-community-management-and-moderation): herramientas y prácticas específicas de esa plataforma; verificar equivalentes en cada canal.
|
|
37
37
|
- [W3C WCAG 2.2](https://www.w3.org/TR/WCAG22/): criterios de accesibilidad para superficies web; complementar con necesidades de eventos, idiomas y discapacidades no cubiertas totalmente.
|
|
38
|
-
- [OECD Privacy Guidelines](https://
|
|
38
|
+
- [OECD Privacy Guidelines](https://legalinstruments.oecd.org/public/doc/188/188.en.pdf): limitación de recolección, propósito, uso, calidad, seguridad, apertura, participación y accountability.
|
|
39
39
|
|
|
40
40
|
Estas fuentes orientan diseño y controles; las políticas aprobadas, plataforma, comunidad y jurisdicción reales determinan las acciones permitidas.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Historial de aprendizaje
|
|
2
2
|
|
|
3
|
+
Una fila por propuesta cerrada: cuándo, cuál, qué se decidió —aplicarla o archivarla—, quién lo decidió y qué cambió.
|
|
4
|
+
|
|
3
5
|
| Fecha | Propuesta | Decisión | Aprobó | Cambio aplicado |
|
|
4
6
|
|---|---|---|---|---|
|
|
5
7
|
| 2026-08-30 | `learning/proposals/2026-08.md` | Aprobada | Manuel Pinzon | `SKILL.md` (párrafo nuevo al final de «Construir contexto»); `learning/proposals/2026-08.md`. Dos desviaciones, escritas al final de «Aprobación humana» de la propuesta: (1) los ejemplos del párrafo se adaptaron al vocabulario del cargo —la propuesta autoriza adaptar la redacción y la licencia se usó sólo en esa lista: donde decía «Delighted, una herramienta de analítica», el `SKILL.md` dice «la encuesta de NPS o CSAT, el producto de analítica», porque Delighted es el proveedor del caso `07-nps-que-subio` y nombrarlo metía un caso de evaluación dentro del contrato del cargo—; el resto entró literal, incluida «abstenerse cubre lo que no se puede consultar, no lo que cuesta abrir una página», y en la ubicación que la propuesta fija; (2) no se re-corrió `07-nps-que-subio`, que la sección «Evaluación» pide como confirmación: esta aplicación se limitó a «Cambio propuesto», y hasta que exista ese veredicto el efecto del párrafo en este cargo no está medido. Sin caso adversarial nuevo: la propuesta acota el cambio al párrafo y nada más. |
|