@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.
Files changed (75) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/agents/roles/system/backend-engineer/learning/sources.yaml +2 -2
  3. package/agents/roles/system/community-manager/learning/sources.yaml +2 -2
  4. package/agents/roles/system/content-specialist/learning/sources.yaml +1 -1
  5. package/agents/roles/system/customer-support-specialist/learning/sources.yaml +1 -1
  6. package/agents/roles/system/data-analyst/learning/sources.yaml +2 -2
  7. package/agents/roles/system/data-governance-steward/learning/sources.yaml +1 -1
  8. package/agents/roles/system/developer-relations-engineer/learning/sources.yaml +3 -3
  9. package/agents/roles/system/devops-engineer/learning/sources.yaml +1 -1
  10. package/agents/roles/system/financial-controller/learning/sources.yaml +1 -1
  11. package/agents/roles/system/frontend-engineer/learning/sources.yaml +1 -1
  12. package/agents/roles/system/growth-marketer/learning/sources.yaml +2 -2
  13. package/agents/roles/system/integrations-engineer/learning/sources.yaml +6 -6
  14. package/agents/roles/system/mobile-engineer/learning/sources.yaml +1 -1
  15. package/agents/roles/system/people-operations-manager/learning/sources.yaml +1 -1
  16. package/agents/roles/system/privacy-compliance-specialist/learning/sources.yaml +1 -1
  17. package/agents/roles/system/product-marketing-manager/learning/sources.yaml +1 -1
  18. package/agents/roles/system/qa-engineer/learning/sources.yaml +2 -2
  19. package/agents/roles/system/site-reliability-engineer/learning/sources.yaml +1 -1
  20. package/agents/roles/system/software-architect/learning/sources.yaml +2 -2
  21. package/agents/roles/system/solutions-engineer/learning/sources.yaml +2 -2
  22. package/agents/roles/system/technical-writer/learning/sources.yaml +4 -4
  23. package/agents/roles/system/treasury-analyst/learning/sources.yaml +2 -2
  24. package/agents/roles/system/ui-designer/learning/sources.yaml +1 -1
  25. package/agents/roles/system/ux-designer/learning/sources.yaml +1 -1
  26. package/automatization/hooks/guard-dependencies.sh +1 -1
  27. package/automatization/hooks/guard-destructive.sh +1 -1
  28. package/automatization/hooks/guard-engine.sh +1 -1
  29. package/automatization/hooks/guard-generated.sh +1 -1
  30. package/automatization/hooks/guard-git-add.sh +1 -1
  31. package/automatization/hooks/guard-governance.sh +1 -1
  32. package/automatization/hooks/guard-integration-snapshot.sh +1 -1
  33. package/automatization/hooks/guard-migrations.sh +1 -1
  34. package/automatization/hooks/guard-planning-drift.sh +1 -1
  35. package/automatization/hooks/guard-secrets.sh +1 -1
  36. package/automatization/hooks/guard-test-evidence.sh +1 -1
  37. package/automatization/hooks/guard-verify.sh +1 -1
  38. package/automatization/hooks/guard-workspace-boundary.sh +1 -1
  39. package/automatization/hooks/run-hook.sh +3 -2
  40. package/automatization/runners/antigravity/hook.js +13 -14
  41. package/automatization/shared/eval-only.js +3 -3
  42. package/automatization/workflows/agent-eval.js +3 -3
  43. package/automatization/workflows/agent-promote.js +4 -4
  44. package/automatization/workflows/autobuild.js +12 -12
  45. package/automatization/workflows/flow-eval.js +10 -7
  46. package/automatization/workflows/flow.js +9 -10
  47. package/automatization/workflows/onboard.js +4 -5
  48. package/engine/agents/evaluations.js +18 -16
  49. package/engine/agents/learning-files.js +111 -0
  50. package/engine/agents/learning-sources.js +166 -0
  51. package/engine/agents/learning.js +93 -272
  52. package/engine/automation/config.js +175 -0
  53. package/engine/automation/hooks.js +96 -0
  54. package/engine/automation/index.js +17 -431
  55. package/engine/automation/roles.js +72 -0
  56. package/engine/automation/runners.js +162 -0
  57. package/engine/cli/catalog.js +7 -12
  58. package/engine/cli/instance.js +11 -10
  59. package/engine/cli/io.js +1 -1
  60. package/engine/cli/ops.js +12 -10
  61. package/engine/cli/wiring.js +2 -4
  62. package/engine/config/validate.js +2 -1
  63. package/engine/core/frontmatter.js +2 -1
  64. package/engine/core/ownership.js +5 -4
  65. package/engine/core/scan.js +3 -0
  66. package/engine/flows/registry.js +2 -2
  67. package/engine/hooks/files.js +160 -0
  68. package/engine/hooks/input.js +129 -0
  69. package/engine/hooks/run.js +24 -449
  70. package/engine/hooks/shell.js +197 -0
  71. package/engine/integrations/registry.js +2 -0
  72. package/engine/planning/contracts.js +12 -10
  73. package/engine/planning/parser.js +4 -3
  74. package/engine/planning/state.js +2 -1
  75. 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 Editor HTTP
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: project
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: project
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: platform
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: platform
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 Handbook
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 latest published
12
+ - name: OpenAPI Specification
13
13
  url: https://spec.openapis.org/oas/latest.html
14
- tier: project
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: project
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: platform
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 WAI
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 Handbook
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 Truth in Advertising
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 3.2.0
49
+ - name: OpenAPI Specification
50
50
  url: https://spec.openapis.org/oas/latest.html
51
- tier: project
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: platform
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: platform
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: platform
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: project
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: platform
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: European Data Protection Board
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 Advertising Code
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 WCAG 2.2
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: project
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 latest published
24
+ - name: OpenAPI Specification
25
25
  url: https://spec.openapis.org/oas/latest.html
26
- tier: project
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: platform
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 WCAG 2.2
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 latest published
24
+ - name: OpenAPI Specification
25
25
  url: https://spec.openapis.org/oas/latest.html
26
- tier: project
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 Integrated Framework 2013
35
+ - name: COSO Internal ControlIntegrated 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: advisory
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`
@@ -22,5 +22,5 @@ sources:
22
22
  topics: [tokens, components, color, typography, motion]
23
23
  - name: GOV.UK Design System
24
24
  url: https://design-system.service.gov.uk/
25
- tier: platform
25
+ tier: standard
26
26
  topics: [styles, components, patterns, accessibility]
@@ -22,5 +22,5 @@ sources:
22
22
  topics: [interaction-design, information-architecture, usability]
23
23
  - name: GOV.UK Design System
24
24
  url: https://design-system.service.gov.uk/
25
- tier: platform
25
+ tier: standard
26
26
  topics: [patterns, content, accessibility]
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js dependencies().
2
+ # Shim: delega `dependencies` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" dependencies
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js destructive().
2
+ # Shim: delega `destructive` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" destructive
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js engine().
2
+ # Shim: delega `engine` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" engine
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js generated().
2
+ # Shim: delega `generated` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" generated
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js gitAdd().
2
+ # Shim: delega `git-add` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" git-add
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js governance().
2
+ # Shim: delega `governance` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" governance
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js integrationSnapshot().
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
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js migrations().
2
+ # Shim: delega `migrations` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" migrations
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js planningDrift().
2
+ # Shim: delega `planning-drift` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" planning-drift
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js secrets().
2
+ # Shim: delega `secrets` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" secrets
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js testEvidence().
2
+ # Shim: delega `test-evidence` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" test-evidence
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js verify().
2
+ # Shim: delega `verify` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" verify
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Shim: qué bloquea y cómo lo hace están en engine/hooks/run.js workspaceBoundary().
2
+ # Shim: delega `workspace-boundary` en run-hook.sh; el registro de engine/hooks/run.js nombra su módulo.
3
3
  exec "$(dirname "$0")/run-hook.sh" workspace-boundary
@@ -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 MARCAS = { dir: OPS_DIR, root: OPS_ROOT, plugin: __dirname }
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(marcas) {
40
- if (!marcas.root.startsWith('{{') && isRoot(marcas.root)) return marcas.root
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(marcas.plugin, '..', '..', '..')
43
- const root = marcas.dir.startsWith('{{') ? installed : path.join(installed, marcas.dir)
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, marcas = MARCAS) {
62
- const declared = declaredRoot(marcas)
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, marcas) {
97
- const relative = marcas.dir.startsWith('{{') ? '' : marcas.dir.replace(/\/+$/, '')
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, marcas) {
111
+ function cwdFor(args, root, markers) {
113
112
  const declared = args.Cwd && path.resolve(String(args.Cwd))
114
- const workspace = workspaceOf(root, marcas)
113
+ const workspace = workspaceOf(root, markers)
115
114
  return declared && within(declared, workspace) ? declared : workspace
116
115
  }
117
116
 
118
- function normalize(input, root, marcas = MARCAS) {
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, marcas),
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 existen = items.map((item) => item.id)
22
- const missing = only.filter((id) => !existen.includes(id))
23
- return { existen, missing, items: items.filter((item) => only.includes(item.id)) }
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
  }