@ingeniomaps/cauce 0.52.0 → 0.53.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 +29 -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/engine/agents/learning.js +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,35 @@ 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.0] - 2026-08-27
|
|
18
|
+
|
|
19
|
+
### Corregido
|
|
20
|
+
|
|
21
|
+
- **Dieciocho fuentes estaban clasificadas como rápidas y no lo son**, así que su cargo investigaba
|
|
22
|
+
cada semana para leer el mismo texto. La cadencia sale de la fuente más veloz, y cada una se comprobó
|
|
23
|
+
contra su propia fuente antes de moverla —no se dedujo del nombre—: `arc42` va de v8 (feb 2022) a v9
|
|
24
|
+
(jul 2025); la especificación OpenAPI publica con meses o años de diferencia; el PSA `I-060923-PSA`
|
|
25
|
+
del FBI es un documento fechado y cerrado; el GOV.UK Design System publica una vez al mes o menos; la
|
|
26
|
+
guía de contenido útil de Google y su guía de estilo llevan meses sin cambiar; el archivo de «core app
|
|
27
|
+
quality» de Android muestra años entre revisiones; Standard Webhooks no publica desde febrero; el
|
|
28
|
+
Contributor Covenant va de 2016 a 2021 en tres versiones; Open Source Guides se toca cada dos a cuatro
|
|
29
|
+
meses; la documentación de GitHub sobre moderación y sobre endurecer Actions lleva meses o más de un
|
|
30
|
+
año sin cambios; la página de idempotencia de Stripe no expone fechas ni historial; y **Shopify publica
|
|
31
|
+
una versión de API por trimestre**, en fecha fija. Las dieciocho pasan a `standard`, que es mensual.
|
|
32
|
+
Los semanales bajan de 29 a 20.
|
|
33
|
+
- **Lo que no se pudo comprobar quedó donde estaba.** Apple Human Interface Guidelines y la guía de
|
|
34
|
+
Gainsight no exponen fechas de revisión, y de Material Design sólo se pudo medir su implementación de
|
|
35
|
+
referencia —4 a 9 meses entre versiones—, que no es la guía que el cargo cita. Las tres siguen
|
|
36
|
+
semanales: moverlas por su nombre, o por el ritmo de otro artefacto, es lo que `R14` prohíbe.
|
|
37
|
+
- **Una URL con dos nombres ahora es un error.** `evaluate` lo rechaza dentro de un archivo —la cadencia
|
|
38
|
+
sale del `tier` de cada entrada, así que dos copias de una fuente pueden decir cosas distintas sobre
|
|
39
|
+
cada cuánto publica, y la más rápida gana sin que nadie lo decida— y una prueba del catálogo lo
|
|
40
|
+
detecta entre cargos, que es la forma en que apareció. Se unificaron dieciséis: el catálogo pasa de
|
|
41
|
+
229 fuentes a 211.
|
|
42
|
+
- **La especificación OpenAPI estaba tres veces con nombres distintos** —`OpenAPI Specification`,
|
|
43
|
+
`...latest published` y `...3.2.0`—, así que corregirla en un cargo no la corregía en los otros.
|
|
44
|
+
|
|
45
|
+
|
|
17
46
|
## [0.52.0] - 2026-08-27
|
|
18
47
|
|
|
19
48
|
### 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`
|
|
@@ -535,6 +535,23 @@ function sourceTiers(text) {
|
|
|
535
535
|
return [...body.matchAll(/tier:\s*([A-Za-z-]+)/g)].map((hit) => hit[1])
|
|
536
536
|
}
|
|
537
537
|
|
|
538
|
+
// Las fuentes de un cargo, por su URL. La misma URL con dos nombres es una sola fuente contada dos
|
|
539
|
+
// veces: el catálogo llegó a tener la especificación OpenAPI bajo tres —`OpenAPI Specification`,
|
|
540
|
+
// `...latest published` y `...3.2.0`— así que arreglarle el `tier` a un cargo no se lo arreglaba a los
|
|
541
|
+
// otros, y quien leyera el informe vería la misma página citada como si fueran tres.
|
|
542
|
+
function sourceUrls(text) {
|
|
543
|
+
const body = text.includes('sources:') ? text.slice(text.indexOf('sources:')) : ''
|
|
544
|
+
const out = []
|
|
545
|
+
let name = ''
|
|
546
|
+
for (const line of body.split('\n')) {
|
|
547
|
+
const nombre = line.match(/^\s*-\s*name:\s*(.+?)\s*$/)
|
|
548
|
+
if (nombre) { name = nombre[1].replace(/^['"]|['"]$/g, ''); continue }
|
|
549
|
+
const url = line.match(/^\s*url:\s*(\S+)/)
|
|
550
|
+
if (url && name) out.push({ name, url: url[1].replace(/\/+$/, '') })
|
|
551
|
+
}
|
|
552
|
+
return out
|
|
553
|
+
}
|
|
554
|
+
|
|
538
555
|
function evaluate(root, agent) {
|
|
539
556
|
const target = catalog.resolve(root, agent)
|
|
540
557
|
const errors = []
|
|
@@ -562,6 +579,17 @@ function evaluate(root, agent) {
|
|
|
562
579
|
errors.push(`sources.yaml: tier "${tier}" fuera de ${SOURCE_TIERS.join(' | ')}`)
|
|
563
580
|
}
|
|
564
581
|
}
|
|
582
|
+
// Dos nombres para una URL. Es error y no aviso: la cadencia sale del `tier` de cada entrada, así
|
|
583
|
+
// que dos copias de la misma fuente pueden decir cosas distintas sobre cada cuánto publica, y la
|
|
584
|
+
// más rápida gana sin que nadie lo haya decidido.
|
|
585
|
+
const porUrl = new Map()
|
|
586
|
+
for (const one of sourceUrls(fs.readFileSync(sourcesFile, 'utf8'))) {
|
|
587
|
+
const antes = porUrl.get(one.url)
|
|
588
|
+
if (antes && antes !== one.name) {
|
|
589
|
+
errors.push(`sources.yaml: ${one.url} está dos veces, como "${antes}" y como "${one.name}"`)
|
|
590
|
+
}
|
|
591
|
+
porUrl.set(one.url, one.name)
|
|
592
|
+
}
|
|
565
593
|
}
|
|
566
594
|
const skill = fs.readFileSync(path.join(target, 'SKILL.md'), 'utf8').toLowerCase()
|
|
567
595
|
for (const phrase of ['no inventar', 'autorización', 'evidencia observable']) {
|