@ingeniomaps/cauce 0.52.0 → 0.53.1
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 +55 -0
- package/agents/roles/system/backend-engineer/learning/sources.yaml +2 -2
- package/agents/roles/system/community-manager/learning/sources.yaml +2 -2
- package/agents/roles/system/content-specialist/learning/sources.yaml +1 -1
- package/agents/roles/system/customer-support-specialist/learning/sources.yaml +1 -1
- package/agents/roles/system/data-analyst/learning/sources.yaml +2 -2
- package/agents/roles/system/data-governance-steward/learning/sources.yaml +1 -1
- package/agents/roles/system/developer-relations-engineer/learning/sources.yaml +3 -3
- package/agents/roles/system/devops-engineer/learning/sources.yaml +1 -1
- package/agents/roles/system/financial-controller/learning/sources.yaml +1 -1
- package/agents/roles/system/frontend-engineer/learning/sources.yaml +1 -1
- package/agents/roles/system/growth-marketer/learning/sources.yaml +2 -2
- package/agents/roles/system/integrations-engineer/learning/sources.yaml +6 -6
- package/agents/roles/system/mobile-engineer/learning/sources.yaml +1 -1
- package/agents/roles/system/people-operations-manager/learning/sources.yaml +1 -1
- package/agents/roles/system/privacy-compliance-specialist/learning/sources.yaml +1 -1
- package/agents/roles/system/product-marketing-manager/learning/sources.yaml +1 -1
- package/agents/roles/system/qa-engineer/learning/sources.yaml +2 -2
- package/agents/roles/system/site-reliability-engineer/learning/sources.yaml +1 -1
- package/agents/roles/system/software-architect/learning/sources.yaml +2 -2
- package/agents/roles/system/solutions-engineer/learning/sources.yaml +2 -2
- package/agents/roles/system/technical-writer/learning/sources.yaml +4 -4
- package/agents/roles/system/treasury-analyst/learning/sources.yaml +2 -2
- package/agents/roles/system/ui-designer/learning/sources.yaml +1 -1
- package/agents/roles/system/ux-designer/learning/sources.yaml +1 -1
- package/automatization/hooks/guard-dependencies.sh +1 -1
- package/automatization/hooks/guard-destructive.sh +1 -1
- package/automatization/hooks/guard-engine.sh +1 -1
- package/automatization/hooks/guard-generated.sh +1 -1
- package/automatization/hooks/guard-git-add.sh +1 -1
- package/automatization/hooks/guard-governance.sh +1 -1
- package/automatization/hooks/guard-integration-snapshot.sh +1 -1
- package/automatization/hooks/guard-migrations.sh +1 -1
- package/automatization/hooks/guard-planning-drift.sh +1 -1
- package/automatization/hooks/guard-secrets.sh +1 -1
- package/automatization/hooks/guard-test-evidence.sh +1 -1
- package/automatization/hooks/guard-verify.sh +1 -1
- package/automatization/hooks/guard-workspace-boundary.sh +1 -1
- package/automatization/hooks/run-hook.sh +3 -2
- package/automatization/runners/antigravity/hook.js +13 -14
- package/automatization/shared/eval-only.js +3 -3
- package/automatization/workflows/agent-eval.js +3 -3
- package/automatization/workflows/agent-promote.js +4 -4
- package/automatization/workflows/autobuild.js +12 -12
- package/automatization/workflows/flow-eval.js +10 -7
- package/automatization/workflows/flow.js +9 -10
- package/automatization/workflows/onboard.js +4 -5
- package/engine/agents/evaluations.js +18 -16
- package/engine/agents/learning-files.js +111 -0
- package/engine/agents/learning-sources.js +166 -0
- package/engine/agents/learning.js +93 -272
- package/engine/automation/config.js +175 -0
- package/engine/automation/hooks.js +96 -0
- package/engine/automation/index.js +17 -431
- package/engine/automation/roles.js +72 -0
- package/engine/automation/runners.js +162 -0
- package/engine/cli/catalog.js +7 -12
- package/engine/cli/instance.js +11 -10
- package/engine/cli/io.js +1 -1
- package/engine/cli/ops.js +12 -10
- package/engine/cli/wiring.js +2 -4
- package/engine/config/validate.js +2 -1
- package/engine/core/frontmatter.js +2 -1
- package/engine/core/ownership.js +5 -4
- package/engine/core/scan.js +3 -0
- package/engine/flows/registry.js +2 -2
- package/engine/hooks/files.js +160 -0
- package/engine/hooks/input.js +129 -0
- package/engine/hooks/run.js +24 -449
- package/engine/hooks/shell.js +197 -0
- package/engine/integrations/registry.js +2 -0
- package/engine/planning/contracts.js +12 -10
- package/engine/planning/parser.js +4 -3
- package/engine/planning/state.js +2 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,61 @@ 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.53.1] - 2026-08-29
|
|
18
|
+
|
|
19
|
+
### Corregido
|
|
20
|
+
|
|
21
|
+
- **`init` no instalaba el motor en Windows.** Lanzaba `npm.cmd` directo, y la documentación de Node
|
|
22
|
+
dice que un `.cmd` no es ejecutable por sí solo: ahora va por `cmd.exe` con el comando de argumento.
|
|
23
|
+
Fallaba en silencio útil —imprimía el error de npm y dejaba `npm install` entre los pasos
|
|
24
|
+
pendientes—, así que si venías corriéndolo a mano en Windows, ya no hace falta. Sin comprobar en un
|
|
25
|
+
Windows real: acá no hay uno, y el comentario del código lo dice.
|
|
26
|
+
|
|
27
|
+
### Cambiado
|
|
28
|
+
|
|
29
|
+
- **Los trece shims de guards se reemplazan y ninguno cambia lo que bloquea.** Su comentario prometía
|
|
30
|
+
«qué bloquea y cómo lo hace» en `engine/hooks/run.js`, que es un registro de una línea por guard: lo
|
|
31
|
+
que bloquea vive en otro módulo, y el puntero mandaba al lugar equivocado. Los trece cambian sólo en
|
|
32
|
+
comentarios, sin una línea ejecutable distinta. Se los nombra porque viven en tu instancia: `upgrade`
|
|
33
|
+
los va a reemplazar y, hasta que lo corras, `automation check` los reporta desactualizados.
|
|
34
|
+
- **El motor se repartió en más archivos de los que tenía**, sin cambiar una sola conducta:
|
|
35
|
+
`engine/automation/index.js` en cinco, `engine/agents/learning.js` en tres y `engine/hooks/run.js` en
|
|
36
|
+
cuatro, cada uno cortado por lo que lo hace cambiar. Llega con `npm install` y no pide nada de tu
|
|
37
|
+
parte; se menciona porque un `require` a una ruta interna del motor —que nunca fue superficie
|
|
38
|
+
pública— puede haber dejado de resolver.
|
|
39
|
+
- Los recorridos que instala tu runner cambiaron de texto —comentarios y nombres internos, ahora en
|
|
40
|
+
inglés como pide la convención—. Para recibirlos hay que reinstalar el wiring; si no lo hacés, los
|
|
41
|
+
que ya tenés siguen funcionando igual.
|
|
42
|
+
|
|
43
|
+
## [0.53.0] - 2026-08-27
|
|
44
|
+
|
|
45
|
+
### Corregido
|
|
46
|
+
|
|
47
|
+
- **Dieciocho fuentes estaban clasificadas como rápidas y no lo son**, así que su cargo investigaba
|
|
48
|
+
cada semana para leer el mismo texto. La cadencia sale de la fuente más veloz, y cada una se comprobó
|
|
49
|
+
contra su propia fuente antes de moverla —no se dedujo del nombre—: `arc42` va de v8 (feb 2022) a v9
|
|
50
|
+
(jul 2025); la especificación OpenAPI publica con meses o años de diferencia; el PSA `I-060923-PSA`
|
|
51
|
+
del FBI es un documento fechado y cerrado; el GOV.UK Design System publica una vez al mes o menos; la
|
|
52
|
+
guía de contenido útil de Google y su guía de estilo llevan meses sin cambiar; el archivo de «core app
|
|
53
|
+
quality» de Android muestra años entre revisiones; Standard Webhooks no publica desde febrero; el
|
|
54
|
+
Contributor Covenant va de 2016 a 2021 en tres versiones; Open Source Guides se toca cada dos a cuatro
|
|
55
|
+
meses; la documentación de GitHub sobre moderación y sobre endurecer Actions lleva meses o más de un
|
|
56
|
+
año sin cambios; la página de idempotencia de Stripe no expone fechas ni historial; y **Shopify publica
|
|
57
|
+
una versión de API por trimestre**, en fecha fija. Las dieciocho pasan a `standard`, que es mensual.
|
|
58
|
+
Los semanales bajan de 29 a 20.
|
|
59
|
+
- **Lo que no se pudo comprobar quedó donde estaba.** Apple Human Interface Guidelines y la guía de
|
|
60
|
+
Gainsight no exponen fechas de revisión, y de Material Design sólo se pudo medir su implementación de
|
|
61
|
+
referencia —4 a 9 meses entre versiones—, que no es la guía que el cargo cita. Las tres siguen
|
|
62
|
+
semanales: moverlas por su nombre, o por el ritmo de otro artefacto, es lo que `R14` prohíbe.
|
|
63
|
+
- **Una URL con dos nombres ahora es un error.** `evaluate` lo rechaza dentro de un archivo —la cadencia
|
|
64
|
+
sale del `tier` de cada entrada, así que dos copias de una fuente pueden decir cosas distintas sobre
|
|
65
|
+
cada cuánto publica, y la más rápida gana sin que nadie lo decida— y una prueba del catálogo lo
|
|
66
|
+
detecta entre cargos, que es la forma en que apareció. Se unificaron dieciséis: el catálogo pasa de
|
|
67
|
+
229 fuentes a 211.
|
|
68
|
+
- **La especificación OpenAPI estaba tres veces con nombres distintos** —`OpenAPI Specification`,
|
|
69
|
+
`...latest published` y `...3.2.0`—, así que corregirla en un cargo no la corregía en los otros.
|
|
70
|
+
|
|
71
|
+
|
|
17
72
|
## [0.52.0] - 2026-08-27
|
|
18
73
|
|
|
19
74
|
### Corregido
|
|
@@ -9,13 +9,13 @@ rules:
|
|
|
9
9
|
# El contexto de la empresa no es una fuente de la profesión: vive en
|
|
10
10
|
# organization/roles/backend-engineer.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
|
-
- name: RFC
|
|
12
|
+
- name: RFC 9110 HTTP Semantics
|
|
13
13
|
url: https://www.rfc-editor.org/rfc/rfc9110.html
|
|
14
14
|
tier: standard
|
|
15
15
|
topics: [http, semantics, idempotency, caching]
|
|
16
16
|
- name: OpenAPI Specification
|
|
17
17
|
url: https://spec.openapis.org/oas/latest.html
|
|
18
|
-
tier:
|
|
18
|
+
tier: standard
|
|
19
19
|
topics: [api-contracts]
|
|
20
20
|
- name: OWASP API Security
|
|
21
21
|
url: https://owasp.org/API-Security/
|
|
@@ -11,11 +11,11 @@ rules:
|
|
|
11
11
|
sources:
|
|
12
12
|
- name: Contributor Covenant 3.0
|
|
13
13
|
url: https://www.contributor-covenant.org/version/3/0/code_of_conduct/
|
|
14
|
-
tier:
|
|
14
|
+
tier: standard
|
|
15
15
|
topics: [conduct, safety, reporting, enforcement]
|
|
16
16
|
- name: GitHub community management and moderation
|
|
17
17
|
url: https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/about-community-management-and-moderation
|
|
18
|
-
tier:
|
|
18
|
+
tier: standard
|
|
19
19
|
topics: [community, moderation, platform, tools]
|
|
20
20
|
- name: W3C Web Content Accessibility Guidelines 2.2
|
|
21
21
|
url: https://www.w3.org/TR/WCAG22/
|
|
@@ -15,7 +15,7 @@ sources:
|
|
|
15
15
|
topics: [accessibility, headings, links, alternatives, clarity]
|
|
16
16
|
- name: Google Search helpful content
|
|
17
17
|
url: https://developers.google.com/search/docs/fundamentals/creating-helpful-content
|
|
18
|
-
tier:
|
|
18
|
+
tier: standard
|
|
19
19
|
topics: [seo, people-first, quality, transparency]
|
|
20
20
|
- name: Federal Plain Language Guidelines
|
|
21
21
|
url: https://www.plainlanguage.gov/guidelines/
|
|
@@ -21,7 +21,7 @@ sources:
|
|
|
21
21
|
url: https://www.peoplecert.org/browse-certifications/it-governance-and-service-management/ITIL-1
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [incident-management, service-desk, knowledge]
|
|
24
|
-
- name: W3C Writing for Accessibility
|
|
24
|
+
- name: W3C Writing for Web Accessibility
|
|
25
25
|
url: https://www.w3.org/WAI/tips/writing/
|
|
26
26
|
tier: standard
|
|
27
27
|
topics: [clear-instructions, headings, links, accessibility]
|
|
@@ -9,11 +9,11 @@ rules:
|
|
|
9
9
|
# El contexto de la empresa no es una fuente de la profesión: vive en
|
|
10
10
|
# organization/roles/data-analyst.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
|
-
- name: NIST Statistical Methods
|
|
12
|
+
- name: NIST SEMATECH e-Handbook of Statistical Methods
|
|
13
13
|
url: https://www.itl.nist.gov/div898/handbook/
|
|
14
14
|
tier: standard
|
|
15
15
|
topics: [statistics, exploration, uncertainty, modeling]
|
|
16
|
-
- name: ASA Ethical Guidelines
|
|
16
|
+
- name: ASA Ethical Guidelines for Statistical Practice
|
|
17
17
|
url: https://www.amstat.org/your-career/ethical-guidelines-for-statistical-practice
|
|
18
18
|
tier: profession
|
|
19
19
|
topics: [ethics, transparency, communication, data]
|
|
@@ -51,7 +51,7 @@ sources:
|
|
|
51
51
|
topics: [catalog, dataset-metadata, interoperability, versioning]
|
|
52
52
|
# Recomendación W3C del 2013-04-30, leída el 2026-08-22. Entidad, actividad y agente: el vocabulario
|
|
53
53
|
# con el que un linaje se puede afirmar de forma comprobable en vez de dibujarse.
|
|
54
|
-
- name: W3C PROV-O
|
|
54
|
+
- name: W3C PROV-O provenance ontology
|
|
55
55
|
url: https://www.w3.org/TR/prov-o/
|
|
56
56
|
tier: standard
|
|
57
57
|
topics: [provenance, lineage, agents]
|
|
@@ -9,9 +9,9 @@ rules:
|
|
|
9
9
|
# El contexto de la empresa no es una fuente de la profesión: vive en
|
|
10
10
|
# organization/roles/developer-relations-engineer.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
|
-
- name: OpenAPI Specification
|
|
12
|
+
- name: OpenAPI Specification
|
|
13
13
|
url: https://spec.openapis.org/oas/latest.html
|
|
14
|
-
tier:
|
|
14
|
+
tier: standard
|
|
15
15
|
topics: [api, contracts, versions, compatibility]
|
|
16
16
|
- name: NIST Secure Software Development Framework
|
|
17
17
|
url: https://csrc.nist.gov/pubs/sp/800/218/final
|
|
@@ -23,5 +23,5 @@ sources:
|
|
|
23
23
|
topics: [accessibility, web, conformance, testing]
|
|
24
24
|
- name: Open Source Guides building welcoming communities
|
|
25
25
|
url: https://opensource.guide/building-community/
|
|
26
|
-
tier:
|
|
26
|
+
tier: standard
|
|
27
27
|
topics: [community, contributors, inclusion, conduct]
|
|
@@ -23,5 +23,5 @@ sources:
|
|
|
23
23
|
topics: [iac, plans, state, modules]
|
|
24
24
|
- name: GitHub Actions security hardening
|
|
25
25
|
url: https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions
|
|
26
|
-
tier:
|
|
26
|
+
tier: standard
|
|
27
27
|
topics: [workflow-security, permissions, oidc]
|
|
@@ -13,7 +13,7 @@ sources:
|
|
|
13
13
|
url: https://www.ifrs.org/issued-standards/list-of-standards/
|
|
14
14
|
tier: standard
|
|
15
15
|
topics: [accounting, reporting, presentation, disclosure]
|
|
16
|
-
- name: COSO Internal Control
|
|
16
|
+
- name: COSO Internal Control—Integrated Framework (2013)
|
|
17
17
|
url: https://www.coso.org/guidance-on-ic
|
|
18
18
|
tier: standard
|
|
19
19
|
topics: [internal-control, risk, control-activities, monitoring]
|
|
@@ -13,7 +13,7 @@ sources:
|
|
|
13
13
|
url: https://developer.mozilla.org/
|
|
14
14
|
tier: platform
|
|
15
15
|
topics: [html, css, javascript, browser-apis, compatibility]
|
|
16
|
-
- name: W3C
|
|
16
|
+
- name: W3C Web Accessibility Initiative
|
|
17
17
|
url: https://www.w3.org/WAI/
|
|
18
18
|
tier: standard
|
|
19
19
|
topics: [wcag, aria, accessibility]
|
|
@@ -9,7 +9,7 @@ rules:
|
|
|
9
9
|
# El contexto de la empresa no es una fuente de la profesión: vive en
|
|
10
10
|
# organization/roles/growth-marketer.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
|
-
- name: NIST Statistical Methods
|
|
12
|
+
- name: NIST SEMATECH e-Handbook of Statistical Methods
|
|
13
13
|
url: https://www.itl.nist.gov/div898/handbook/
|
|
14
14
|
tier: standard
|
|
15
15
|
topics: [experiments, uncertainty, sampling, inference]
|
|
@@ -21,7 +21,7 @@ sources:
|
|
|
21
21
|
url: https://www.edpb.europa.eu/our-work-tools/general-guidance/guidelines-recommendations-best-practices_en
|
|
22
22
|
tier: regulation
|
|
23
23
|
topics: [privacy, consent, targeting, transfers]
|
|
24
|
-
- name: FTC
|
|
24
|
+
- name: FTC Advertising and Marketing
|
|
25
25
|
url: https://www.ftc.gov/business-guidance/advertising-marketing
|
|
26
26
|
tier: regulation
|
|
27
27
|
topics: [claims, endorsements, substantiation, disclosure]
|
|
@@ -46,9 +46,9 @@ sources:
|
|
|
46
46
|
# La versión vigente al 2026-08-22 es la 3.2.0, publicada el 2025-09-19, y define `webhooks` como
|
|
47
47
|
# campo de primer nivel del documento: el contrato de lo que se le expone a un partner puede
|
|
48
48
|
# declarar también lo que se le envía.
|
|
49
|
-
- name: OpenAPI Specification
|
|
49
|
+
- name: OpenAPI Specification
|
|
50
50
|
url: https://spec.openapis.org/oas/latest.html
|
|
51
|
-
tier:
|
|
51
|
+
tier: standard
|
|
52
52
|
topics: [api-contract, partner-facing-contract, webhooks, versioning]
|
|
53
53
|
|
|
54
54
|
# Convención de versionado con sólo versión mayor en la ruta y canales de estabilidad. Sirve como
|
|
@@ -72,7 +72,7 @@ sources:
|
|
|
72
72
|
# el contraste con el que no la publica es lo que hay que diseñar.
|
|
73
73
|
- name: Shopify — API versioning
|
|
74
74
|
url: https://shopify.dev/docs/api/usage/versioning
|
|
75
|
-
tier:
|
|
75
|
+
tier: standard
|
|
76
76
|
topics: [third-party-versioning, deprecation-window, breaking-changes]
|
|
77
77
|
|
|
78
78
|
# El proveedor declara por escrito que no garantiza el orden dentro de un topic ni entre topics del
|
|
@@ -80,7 +80,7 @@ sources:
|
|
|
80
80
|
# `X-Shopify-Webhook-Id` y conciliar. Es la cita que sostiene «asumir al menos una vez y sin orden».
|
|
81
81
|
- name: Shopify — Webhook best practices
|
|
82
82
|
url: https://shopify.dev/docs/apps/build/webhooks/best-practices
|
|
83
|
-
tier:
|
|
83
|
+
tier: standard
|
|
84
84
|
topics: [webhooks, at-least-once, out-of-order, deduplication, reconciliation]
|
|
85
85
|
|
|
86
86
|
# Guarda código y cuerpo de la primera respuesta por clave y los repite en el reintento, incluido un
|
|
@@ -89,7 +89,7 @@ sources:
|
|
|
89
89
|
# y ninguno es deducible del concepto de idempotencia.
|
|
90
90
|
- name: Stripe — Idempotent requests
|
|
91
91
|
url: https://docs.stripe.com/api/idempotent_requests
|
|
92
|
-
tier:
|
|
92
|
+
tier: standard
|
|
93
93
|
topics: [idempotency-key, retry-safety, payments, deduplication-window]
|
|
94
94
|
|
|
95
95
|
# Firma, cabeceras y verificación de webhooks, con comité técnico de varias empresas. La página
|
|
@@ -97,7 +97,7 @@ sources:
|
|
|
97
97
|
# verificó**, así que se cita como convención de la industria y no como norma con edición.
|
|
98
98
|
- name: Standard Webhooks
|
|
99
99
|
url: https://www.standardwebhooks.com/
|
|
100
|
-
tier:
|
|
100
|
+
tier: standard
|
|
101
101
|
topics: [webhooks, signature-scheme, headers, replay-protection]
|
|
102
102
|
|
|
103
103
|
# Registrado para que nadie lo cite como estándar: es un Internet-Draft **expirado**. Última
|
|
@@ -11,7 +11,7 @@ rules:
|
|
|
11
11
|
sources:
|
|
12
12
|
- name: Android Developers Core app quality
|
|
13
13
|
url: https://developer.android.com/docs/quality-guidelines/core-app-quality
|
|
14
|
-
tier:
|
|
14
|
+
tier: standard
|
|
15
15
|
topics: [quality, compatibility, performance, security]
|
|
16
16
|
- name: Apple Human Interface Guidelines
|
|
17
17
|
url: https://developer.apple.com/design/human-interface-guidelines/
|
|
@@ -29,7 +29,7 @@ sources:
|
|
|
29
29
|
url: https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/employment/
|
|
30
30
|
tier: regulation
|
|
31
31
|
topics: [employment-data, records, health, monitoring, automated-decisions]
|
|
32
|
-
- name: NIST AI Risk Management Framework
|
|
32
|
+
- name: NIST AI Risk Management Framework 1.0 (NIST.AI.100-1)
|
|
33
33
|
url: https://www.nist.gov/itl/ai-risk-management-framework
|
|
34
34
|
tier: standard
|
|
35
35
|
topics: [ai-governance, risk, measurement, oversight]
|
|
@@ -21,7 +21,7 @@ sources:
|
|
|
21
21
|
url: https://eur-lex.europa.eu/eli/reg/2016/679/oj
|
|
22
22
|
tier: regulation
|
|
23
23
|
topics: [eu-data-protection]
|
|
24
|
-
- name:
|
|
24
|
+
- name: EDPB Guidelines on targeting and consent
|
|
25
25
|
url: https://www.edpb.europa.eu/our-work-tools/general-guidance/guidelines-recommendations-best-practices_en
|
|
26
26
|
tier: regulation
|
|
27
27
|
topics: [eu-guidance, interpretation]
|
|
@@ -13,7 +13,7 @@ sources:
|
|
|
13
13
|
url: https://www.productmarketingalliance.com/
|
|
14
14
|
tier: profession
|
|
15
15
|
topics: [positioning, messaging, gtm, launches, enablement]
|
|
16
|
-
- name: ICC
|
|
16
|
+
- name: ICC Marketing Communications Code
|
|
17
17
|
url: https://iccwbo.org/business-solutions/the-icc-advertising-and-marketing-communications-code/
|
|
18
18
|
tier: standard
|
|
19
19
|
topics: [responsible-marketing, substantiation, transparency]
|
|
@@ -13,7 +13,7 @@ sources:
|
|
|
13
13
|
url: https://www.istqb.org/certifications/certified-tester-foundation-level-ctfl-v4-0/
|
|
14
14
|
tier: profession
|
|
15
15
|
topics: [testing-principles, techniques, risk, defects]
|
|
16
|
-
- name: ISO IEC 25010
|
|
16
|
+
- name: ISO IEC 25010 product quality model
|
|
17
17
|
url: https://www.iso.org/standard/78176.html
|
|
18
18
|
tier: standard
|
|
19
19
|
topics: [product-quality-model]
|
|
@@ -21,7 +21,7 @@ sources:
|
|
|
21
21
|
url: https://owasp.org/www-project-web-security-testing-guide/
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [authorized-security-testing, web]
|
|
24
|
-
- name: W3C
|
|
24
|
+
- name: W3C Web Content Accessibility Guidelines 2.2
|
|
25
25
|
url: https://www.w3.org/TR/WCAG22/
|
|
26
26
|
tier: standard
|
|
27
27
|
topics: [accessibility, conformance]
|
|
@@ -13,7 +13,7 @@ sources:
|
|
|
13
13
|
url: https://sre.google/sre-book/table-of-contents/
|
|
14
14
|
tier: profession
|
|
15
15
|
topics: [sre, availability, monitoring, incidents, capacity]
|
|
16
|
-
- name: Google SRE Workbook
|
|
16
|
+
- name: Google SRE Workbook on capacity and efficiency
|
|
17
17
|
url: https://sre.google/workbook/table-of-contents/
|
|
18
18
|
tier: profession
|
|
19
19
|
topics: [slo, burn-rate, alerting, toil]
|
|
@@ -9,7 +9,7 @@ rules:
|
|
|
9
9
|
# El contexto de la empresa no es una fuente de la profesión: vive en
|
|
10
10
|
# organization/roles/software-architect.md dentro de cada instalación.
|
|
11
11
|
sources:
|
|
12
|
-
- name: ISO IEC IEEE 42010
|
|
12
|
+
- name: ISO IEC IEEE 42010 architecture description
|
|
13
13
|
url: https://www.iso.org/standard/74393.html
|
|
14
14
|
tier: standard
|
|
15
15
|
topics: [architecture-description, stakeholders, viewpoints]
|
|
@@ -23,5 +23,5 @@ sources:
|
|
|
23
23
|
topics: [quality-attributes, scenarios, tradeoffs]
|
|
24
24
|
- name: arc42
|
|
25
25
|
url: https://arc42.org/
|
|
26
|
-
tier:
|
|
26
|
+
tier: standard
|
|
27
27
|
topics: [architecture-documentation, decisions, risks]
|
|
@@ -21,7 +21,7 @@ sources:
|
|
|
21
21
|
url: https://www.nist.gov/publications/nist-cybersecurity-framework-csf-20
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [cybersecurity, risk, governance, profiles]
|
|
24
|
-
- name: OpenAPI Specification
|
|
24
|
+
- name: OpenAPI Specification
|
|
25
25
|
url: https://spec.openapis.org/oas/latest.html
|
|
26
|
-
tier:
|
|
26
|
+
tier: standard
|
|
27
27
|
topics: [api, contracts, compatibility, tooling]
|
|
@@ -11,17 +11,17 @@ rules:
|
|
|
11
11
|
sources:
|
|
12
12
|
- name: Google developer documentation style guide
|
|
13
13
|
url: https://developers.google.com/style
|
|
14
|
-
tier:
|
|
14
|
+
tier: standard
|
|
15
15
|
topics: [clarity, consistency, accessibility, global-audience, code]
|
|
16
16
|
- name: Diataxis documentation framework
|
|
17
17
|
url: https://www.diataxis.fr/start-here/
|
|
18
18
|
tier: standard
|
|
19
19
|
topics: [tutorial, how-to, reference, explanation]
|
|
20
|
-
- name: W3C
|
|
20
|
+
- name: W3C Web Content Accessibility Guidelines 2.2
|
|
21
21
|
url: https://www.w3.org/TR/WCAG22/
|
|
22
22
|
tier: standard
|
|
23
23
|
topics: [accessibility, web-content, conformance]
|
|
24
|
-
- name: OpenAPI Specification
|
|
24
|
+
- name: OpenAPI Specification
|
|
25
25
|
url: https://spec.openapis.org/oas/latest.html
|
|
26
|
-
tier:
|
|
26
|
+
tier: standard
|
|
27
27
|
topics: [api, http, schema, reference, versioning]
|
|
@@ -32,7 +32,7 @@ sources:
|
|
|
32
32
|
topics: [liquidity-risk, maturity-analysis, disclosure]
|
|
33
33
|
# Abierta el 2026-08-22. La edición vigente es la de 2013, que reemplazó a la de 1992 el
|
|
34
34
|
# 2014-12-15; la página lo dice y por eso el nombre lleva el año.
|
|
35
|
-
- name: COSO Internal Control
|
|
35
|
+
- name: COSO Internal Control—Integrated Framework (2013)
|
|
36
36
|
url: https://www.coso.org/guidance-on-ic
|
|
37
37
|
tier: standard
|
|
38
38
|
topics: [internal-control, segregation-of-duties, dual-approval]
|
|
@@ -60,7 +60,7 @@ sources:
|
|
|
60
60
|
# authentication to verify requests for changes in account information."
|
|
61
61
|
- name: FBI IC3 Business Email Compromise PSA I-060923-PSA
|
|
62
62
|
url: https://www.ic3.gov/PSA/2023/PSA230609
|
|
63
|
-
tier:
|
|
63
|
+
tier: standard
|
|
64
64
|
topics: [payment-fraud, beneficiary-verification, out-of-band-verification]
|
|
65
65
|
|
|
66
66
|
# Pendientes: no entran porque no pude abrirlas en esta corrida, y `require_primary_source: true`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Shim:
|
|
2
|
+
# Shim: delega `integration-snapshot` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
|
|
3
3
|
exec "$(dirname "$0")/run-hook.sh" integration-snapshot
|
|
@@ -8,14 +8,14 @@ ops_root=$(CDPATH= cd -- "$hook_dir/../.." && pwd)
|
|
|
8
8
|
# abre en la carpeta de la compañía y la raíz ops es un hermano, que ninguna búsqueda hacia arriba
|
|
9
9
|
# encuentra: sin esto el guard no halla `ops.config.json` y deja pasar todo en silencio.
|
|
10
10
|
export OPS_ROOT="$ops_root"
|
|
11
|
-
# Mismo orden que tools/ops.js: la dependencia npm y, por último, el propio repositorio del toolkit.
|
|
12
|
-
# Un guard que no encuentra su motor bloquea, nunca permite.
|
|
13
11
|
# Primero el argumento, que además es lo que nombra el error de abajo.
|
|
14
12
|
if [ -z "$hook_name" ]; then
|
|
15
13
|
echo "BLOQUEADO: run-hook.sh requiere el nombre del guard o grupo que debe ejecutar." >&2
|
|
16
14
|
exit 2
|
|
17
15
|
fi
|
|
18
16
|
|
|
17
|
+
# La misma cascada que `packagePath` en engine/core/ownership.js, repetida acá porque el shim corre
|
|
18
|
+
# antes de poder cargar el motor: si cambia allá, cambia acá.
|
|
19
19
|
runner=""
|
|
20
20
|
for candidate in \
|
|
21
21
|
"$ops_root/node_modules/@ingeniomaps/cauce/engine/hooks/run.js" \
|
|
@@ -24,6 +24,7 @@ do
|
|
|
24
24
|
if [ -f "$candidate" ]; then runner="$candidate"; break; fi
|
|
25
25
|
done
|
|
26
26
|
|
|
27
|
+
# Un guard que no encuentra su motor bloquea, nunca permite.
|
|
27
28
|
if [ -z "$runner" ]; then
|
|
28
29
|
echo "BLOQUEADO [$hook_name]: no se encontró el motor de hooks de Cauce." >&2
|
|
29
30
|
echo " Buscado en node_modules/@ingeniomaps/cauce y engine/ bajo $ops_root" >&2
|
|
@@ -28,7 +28,7 @@ const OPS_ROOT = '{{OPS_ROOT}}'
|
|
|
28
28
|
// desde el repositorio lo que sólo existe instalado. Sin eso, la resolución de la raíz —donde ya se
|
|
29
29
|
// escondieron dos fallas que negaban cada llamada a herramienta— sólo se puede probar sobre una copia,
|
|
30
30
|
// y una copia no la mide ninguna cobertura.
|
|
31
|
-
const
|
|
31
|
+
const MARKERS = { dir: OPS_DIR, root: OPS_ROOT, plugin: __dirname }
|
|
32
32
|
|
|
33
33
|
function isRoot(dir) {
|
|
34
34
|
const instance = fs.existsSync(path.join(dir, 'planning'))
|
|
@@ -36,11 +36,11 @@ function isRoot(dir) {
|
|
|
36
36
|
return fs.existsSync(path.join(dir, 'ops.config.json')) && (instance || toolkit)
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
function declaredRoot(
|
|
40
|
-
if (!
|
|
39
|
+
function declaredRoot(markers) {
|
|
40
|
+
if (!markers.root.startsWith('{{') && isRoot(markers.root)) return markers.root
|
|
41
41
|
// El plugin corriendo desde donde `automation install` lo dejó, que es el caso sin registrar.
|
|
42
|
-
const installed = path.resolve(
|
|
43
|
-
const root =
|
|
42
|
+
const installed = path.resolve(markers.plugin, '..', '..', '..')
|
|
43
|
+
const root = markers.dir.startsWith('{{') ? installed : path.join(installed, markers.dir)
|
|
44
44
|
return fs.existsSync(path.join(root, 'ops.config.json')) ? root : ''
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -58,8 +58,8 @@ function childRoot(dir) {
|
|
|
58
58
|
return roots.length === 1 ? roots[0] : ''
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
function findRoot(input,
|
|
62
|
-
const declared = declaredRoot(
|
|
61
|
+
function findRoot(input, markers = MARKERS) {
|
|
62
|
+
const declared = declaredRoot(markers)
|
|
63
63
|
if (declared) return declared
|
|
64
64
|
const args = input.toolCall && input.toolCall.args || {}
|
|
65
65
|
const starts = [args.Cwd, process.cwd(), ...(input.workspacePaths || [])].filter(Boolean)
|
|
@@ -79,7 +79,6 @@ function findRoot(input, marcas = MARCAS) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
function runtimeAt(root) {
|
|
82
|
-
// Mismo orden que tools/ops.js: dependencia npm y, por último, el repositorio del toolkit.
|
|
83
82
|
const candidates = [
|
|
84
83
|
path.join(root, 'node_modules', '@ingeniomaps', 'cauce', 'engine', 'hooks', 'run.js'),
|
|
85
84
|
path.join(root, 'engine', 'hooks', 'run.js'),
|
|
@@ -93,8 +92,8 @@ function runtimeAt(root) {
|
|
|
93
92
|
|
|
94
93
|
// La carpeta que el runner abrió, deducida de la raíz: en sidecar la raíz ops es su hija, y en modo
|
|
95
94
|
// embebido son la misma.
|
|
96
|
-
function workspaceOf(root,
|
|
97
|
-
const relative =
|
|
95
|
+
function workspaceOf(root, markers) {
|
|
96
|
+
const relative = markers.dir.startsWith('{{') ? '' : markers.dir.replace(/\/+$/, '')
|
|
98
97
|
if (!relative) return root
|
|
99
98
|
return path.resolve(root, ...relative.split('/').map(() => '..'))
|
|
100
99
|
}
|
|
@@ -109,20 +108,20 @@ function within(dir, base) {
|
|
|
109
108
|
// juzgando otro archivo, y uno que busque el repo git lo buscaría fuera del proyecto. Se respeta el
|
|
110
109
|
// que manda sólo si cae adentro del workspace —si algún día manda uno real, es mejor que el nuestro—;
|
|
111
110
|
// si no, el workspace, que es donde el runner dice estar trabajando.
|
|
112
|
-
function cwdFor(args, root,
|
|
111
|
+
function cwdFor(args, root, markers) {
|
|
113
112
|
const declared = args.Cwd && path.resolve(String(args.Cwd))
|
|
114
|
-
const workspace = workspaceOf(root,
|
|
113
|
+
const workspace = workspaceOf(root, markers)
|
|
115
114
|
return declared && within(declared, workspace) ? declared : workspace
|
|
116
115
|
}
|
|
117
116
|
|
|
118
|
-
function normalize(input, root,
|
|
117
|
+
function normalize(input, root, markers = MARKERS) {
|
|
119
118
|
const args = input.toolCall && input.toolCall.args || {}
|
|
120
119
|
const file = args.TargetFile || args.AbsolutePath || ''
|
|
121
120
|
const content = args.CodeContent || args.ReplacementContent
|
|
122
121
|
|| (args.ReplacementChunks && JSON.stringify(args.ReplacementChunks)) || ''
|
|
123
122
|
return {
|
|
124
123
|
sessionId: input.conversationId,
|
|
125
|
-
cwd: cwdFor(args, root,
|
|
124
|
+
cwd: cwdFor(args, root, markers),
|
|
126
125
|
tool_input: {
|
|
127
126
|
command: args.CommandLine || '',
|
|
128
127
|
file_path: file,
|
|
@@ -18,7 +18,7 @@ const onlyCases = (input) => (Array.isArray(input.cases) ? input.cases : String(
|
|
|
18
18
|
|
|
19
19
|
// Devuelve los casos pedidos, o los que faltan para que quien llama frene con su propio vocabulario.
|
|
20
20
|
function pickCases(items, only) {
|
|
21
|
-
const
|
|
22
|
-
const missing = only.filter((id) => !
|
|
23
|
-
return {
|
|
21
|
+
const present = items.map((item) => item.id)
|
|
22
|
+
const missing = only.filter((id) => !present.includes(id))
|
|
23
|
+
return { present, missing, items: items.filter((item) => only.includes(item.id)) }
|
|
24
24
|
}
|