santismm-knowledge-mcp 0.2.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 (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/content/CONVENTIONS.md +77 -0
  4. package/content/LICENSE +55 -0
  5. package/content/architectures/ai-workforce.json +280 -0
  6. package/content/architectures/customer-service-agent.json +292 -0
  7. package/content/architectures/enterprise-knowledge-assistant.json +292 -0
  8. package/content/architectures/operations-center.json +280 -0
  9. package/content/architectures/sales-copilot.json +280 -0
  10. package/content/governance/agentic-ai-governance-checklist.json +323 -0
  11. package/content/governance/audit-framework-for-agentic-systems.json +280 -0
  12. package/content/governance/enterprise-ai-governance-framework.json +277 -0
  13. package/content/governance/eu-ai-act.json +162 -0
  14. package/content/governance/human-oversight-and-accountability-policy.json +275 -0
  15. package/content/governance/iso-42001.json +161 -0
  16. package/content/governance/mitre-atlas.json +280 -0
  17. package/content/governance/nist-ai-rmf.json +161 -0
  18. package/content/governance/owasp-llm-top10.json +301 -0
  19. package/content/harness/HRN-001-definition-and-overview.es.md +76 -0
  20. package/content/harness/HRN-001-definition-and-overview.md +125 -0
  21. package/content/harness/HRN-001-definition-and-overview.pt.md +76 -0
  22. package/content/harness/HRN-002-a-brief-history-of-harness-engineering.es.md +83 -0
  23. package/content/harness/HRN-002-a-brief-history-of-harness-engineering.md +113 -0
  24. package/content/harness/HRN-002-a-brief-history-of-harness-engineering.pt.md +83 -0
  25. package/content/harness/HRN-003-the-harness-taxonomy.es.md +105 -0
  26. package/content/harness/HRN-003-the-harness-taxonomy.md +158 -0
  27. package/content/harness/HRN-003-the-harness-taxonomy.pt.md +105 -0
  28. package/content/harness/HRN-004-harness-engineering-principles.es.md +91 -0
  29. package/content/harness/HRN-004-harness-engineering-principles.md +135 -0
  30. package/content/harness/HRN-004-harness-engineering-principles.pt.md +91 -0
  31. package/content/harness/HRN-005-memory-in-agentic-systems.es.md +98 -0
  32. package/content/harness/HRN-005-memory-in-agentic-systems.md +145 -0
  33. package/content/harness/HRN-005-memory-in-agentic-systems.pt.md +98 -0
  34. package/content/harness/HRN-006-observability-for-agentic-systems.es.md +97 -0
  35. package/content/harness/HRN-006-observability-for-agentic-systems.md +139 -0
  36. package/content/harness/HRN-006-observability-for-agentic-systems.pt.md +97 -0
  37. package/content/harness/HRN-007-evaluation-of-agentic-systems.es.md +96 -0
  38. package/content/harness/HRN-007-evaluation-of-agentic-systems.md +145 -0
  39. package/content/harness/HRN-007-evaluation-of-agentic-systems.pt.md +96 -0
  40. package/content/harness/HRN-008-governance-within-the-harness.es.md +105 -0
  41. package/content/harness/HRN-008-governance-within-the-harness.md +146 -0
  42. package/content/harness/HRN-008-governance-within-the-harness.pt.md +105 -0
  43. package/content/harness/HRN-009-planning-and-goal-management.es.md +102 -0
  44. package/content/harness/HRN-009-planning-and-goal-management.md +142 -0
  45. package/content/harness/HRN-009-planning-and-goal-management.pt.md +102 -0
  46. package/content/harness/HRN-010-orchestration.es.md +107 -0
  47. package/content/harness/HRN-010-orchestration.md +149 -0
  48. package/content/harness/HRN-010-orchestration.pt.md +107 -0
  49. package/content/harness/HRN-011-security-for-agentic-systems.es.md +107 -0
  50. package/content/harness/HRN-011-security-for-agentic-systems.md +147 -0
  51. package/content/harness/HRN-011-security-for-agentic-systems.pt.md +107 -0
  52. package/content/harness/HRN-012-case-studies-in-harness-engineering.es.md +120 -0
  53. package/content/harness/HRN-012-case-studies-in-harness-engineering.md +157 -0
  54. package/content/harness/HRN-012-case-studies-in-harness-engineering.pt.md +120 -0
  55. package/content/harness/HRN-013-glossary.es.md +109 -0
  56. package/content/harness/HRN-013-glossary.md +124 -0
  57. package/content/harness/HRN-013-glossary.pt.md +109 -0
  58. package/content/harness/HRN-014-bibliography.es.md +89 -0
  59. package/content/harness/HRN-014-bibliography.md +109 -0
  60. package/content/harness/HRN-014-bibliography.pt.md +89 -0
  61. package/content/homeric/episodes/achilles-and-hector.json +139 -0
  62. package/content/homeric/episodes/aeolus-and-the-winds.json +131 -0
  63. package/content/homeric/episodes/agamemnons-murder.json +162 -0
  64. package/content/homeric/episodes/calypso-ogygia.json +157 -0
  65. package/content/homeric/episodes/catalogue-of-ships.json +177 -0
  66. package/content/homeric/episodes/cattle-of-the-sun.json +131 -0
  67. package/content/homeric/episodes/chryse-and-the-plague.json +131 -0
  68. package/content/homeric/episodes/cicones-at-ismarus.json +131 -0
  69. package/content/homeric/episodes/circe-on-aeaea.json +131 -0
  70. package/content/homeric/episodes/cyclops-polyphemus.json +162 -0
  71. package/content/homeric/episodes/laestrygonians.json +153 -0
  72. package/content/homeric/episodes/lotus-eaters.json +138 -0
  73. package/content/homeric/episodes/menelaus-and-proteus.json +130 -0
  74. package/content/homeric/episodes/nekyia.json +160 -0
  75. package/content/homeric/episodes/phaeacians-on-scheria.json +129 -0
  76. package/content/homeric/episodes/priams-ransom.json +131 -0
  77. package/content/homeric/episodes/return-to-ithaca.json +167 -0
  78. package/content/homeric/episodes/scylla-and-charybdis.json +131 -0
  79. package/content/homeric/episodes/suitors-ambush-at-asteris.json +131 -0
  80. package/content/homeric/episodes/telemachus-at-pylos.json +130 -0
  81. package/content/homeric/episodes/telemachus-in-sparta.json +130 -0
  82. package/content/homeric/episodes/the-achaean-camp.json +138 -0
  83. package/content/homeric/episodes/the-sirens.json +129 -0
  84. package/content/homeric/episodes/wooden-horse.json +168 -0
  85. package/content/homeric/places/aeaea.json +129 -0
  86. package/content/homeric/places/aeolia.json +161 -0
  87. package/content/homeric/places/asteris.json +120 -0
  88. package/content/homeric/places/aulis.json +122 -0
  89. package/content/homeric/places/cape-malea.json +126 -0
  90. package/content/homeric/places/chryse.json +120 -0
  91. package/content/homeric/places/dodona.json +129 -0
  92. package/content/homeric/places/dulichium.json +177 -0
  93. package/content/homeric/places/egypt.json +125 -0
  94. package/content/homeric/places/ephyra-acheron.json +127 -0
  95. package/content/homeric/places/hellespont.json +125 -0
  96. package/content/homeric/places/house-of-hades.json +91 -0
  97. package/content/homeric/places/ismarus.json +120 -0
  98. package/content/homeric/places/ithaca.json +240 -0
  99. package/content/homeric/places/knossos.json +132 -0
  100. package/content/homeric/places/laestrygonia.json +168 -0
  101. package/content/homeric/places/land-of-the-cyclopes.json +169 -0
  102. package/content/homeric/places/land-of-the-lotus-eaters.json +122 -0
  103. package/content/homeric/places/mount-ida.json +126 -0
  104. package/content/homeric/places/mycenae.json +152 -0
  105. package/content/homeric/places/ogygia.json +125 -0
  106. package/content/homeric/places/pharos.json +120 -0
  107. package/content/homeric/places/planctae.json +77 -0
  108. package/content/homeric/places/pylos.json +188 -0
  109. package/content/homeric/places/same.json +177 -0
  110. package/content/homeric/places/scheria.json +129 -0
  111. package/content/homeric/places/scylla-and-charybdis.json +135 -0
  112. package/content/homeric/places/sirens.json +127 -0
  113. package/content/homeric/places/sparta.json +179 -0
  114. package/content/homeric/places/tenedos.json +129 -0
  115. package/content/homeric/places/thrinacia.json +116 -0
  116. package/content/homeric/places/tiryns.json +123 -0
  117. package/content/homeric/places/troy.json +224 -0
  118. package/content/homeric/places/zacynthus.json +126 -0
  119. package/content/homeric/routes/achaean-expedition.json +132 -0
  120. package/content/homeric/routes/nostoi-of-the-others.json +205 -0
  121. package/content/homeric/routes/odysseus-nostos.json +307 -0
  122. package/content/homeric/routes/telemachy.json +134 -0
  123. package/content/knowledge/agent-memory.json +153 -0
  124. package/content/knowledge/agentic-ai.json +158 -0
  125. package/content/knowledge/agentic-evaluation.json +156 -0
  126. package/content/knowledge/agentic-threat-model.json +287 -0
  127. package/content/knowledge/ai-agent.json +153 -0
  128. package/content/knowledge/ai-cyberdefense.json +274 -0
  129. package/content/knowledge/ai-governance.json +155 -0
  130. package/content/knowledge/ai-observability.json +156 -0
  131. package/content/knowledge/context-engineering.json +153 -0
  132. package/content/knowledge/embeddings.json +153 -0
  133. package/content/knowledge/enterprise-rag.json +154 -0
  134. package/content/knowledge/fine-tuning.json +153 -0
  135. package/content/knowledge/foundation-models.json +154 -0
  136. package/content/knowledge/guardrails.json +153 -0
  137. package/content/knowledge/harness-engineering.json +158 -0
  138. package/content/knowledge/human-in-the-loop.json +153 -0
  139. package/content/knowledge/mcp-security.json +284 -0
  140. package/content/knowledge/model-context-protocol.json +154 -0
  141. package/content/knowledge/multi-agent-architecture.json +153 -0
  142. package/content/knowledge/prompt-engineering.json +153 -0
  143. package/content/knowledge/prompt-injection.json +138 -0
  144. package/content/knowledge/reasoning-models.json +153 -0
  145. package/content/knowledge/tool-use.json +156 -0
  146. package/content/library/cognitive-architecture-emergent-ai.md +15 -0
  147. package/content/library/devready-ep108-ai-customer-experiences.md +14 -0
  148. package/content/library/how-genai-impact-business.md +12 -0
  149. package/content/library/lmm-reshaping-industries-2024.md +12 -0
  150. package/content/library/rethinking-ai-pause.md +12 -0
  151. package/content/library/rise-of-agentic-ai.md +16 -0
  152. package/content/library/self-improving-autonomous-ai.md +16 -0
  153. package/content/library/the-stopwatch-and-the-exam.md +12 -0
  154. package/content/library/unlock-gpt4-secrets.md +12 -0
  155. package/content/library/vibe-coding-enterprise.md +15 -0
  156. package/content/library/video-transformando-negocios-genai.md +14 -0
  157. package/content/library/video-volando-alto-sky-airlines.md +13 -0
  158. package/content/matrix/agentic-control-matrix.json +967 -0
  159. package/content/patterns/attributed-memory.json +237 -0
  160. package/content/patterns/context-compression.json +304 -0
  161. package/content/patterns/egress-allowlist.json +310 -0
  162. package/content/patterns/evaluator-optimizer.json +180 -0
  163. package/content/patterns/goal-decomposition.json +290 -0
  164. package/content/patterns/human-approval-gate.json +311 -0
  165. package/content/patterns/human-escalation.json +288 -0
  166. package/content/patterns/least-privilege-tooling.json +333 -0
  167. package/content/patterns/long-term-memory.json +305 -0
  168. package/content/patterns/orchestrator-workers.json +202 -0
  169. package/content/patterns/parallelization.json +180 -0
  170. package/content/patterns/prompt-chaining.json +181 -0
  171. package/content/patterns/recovery-strategy.json +305 -0
  172. package/content/patterns/reflection.json +298 -0
  173. package/content/patterns/routing.json +294 -0
  174. package/content/patterns/sandboxed-execution.json +311 -0
  175. package/content/patterns/semantic-caching.json +201 -0
  176. package/content/patterns/supervisor-agent.json +290 -0
  177. package/content/patterns/task-prioritization.json +307 -0
  178. package/dist/content.js +181 -0
  179. package/dist/index.js +27 -0
  180. package/dist/shape.js +649 -0
  181. package/dist/tools.js +652 -0
  182. package/package.json +47 -0
@@ -0,0 +1,967 @@
1
+ {
2
+ "id": "ACM",
3
+ "version": "1.0",
4
+ "updated": "2026-08-22",
5
+ "groups": [
6
+ "permissions",
7
+ "egress",
8
+ "execution",
9
+ "oversight",
10
+ "observability",
11
+ "lifecycle"
12
+ ],
13
+ "frameworks": [
14
+ {
15
+ "key": "eu-ai-act",
16
+ "kind": "regulation",
17
+ "granularity": "article",
18
+ "name": "EU AI Act (Regulation 2024/1689)",
19
+ "url": "https://eur-lex.europa.eu/eli/reg/2024/1689/oj",
20
+ "governance": "eu-ai-act"
21
+ },
22
+ {
23
+ "key": "iso-42001",
24
+ "kind": "standard",
25
+ "granularity": "annex-a-group",
26
+ "name": "ISO/IEC 42001 — AI management system",
27
+ "url": "https://www.iso.org/standard/81230.html",
28
+ "governance": "iso-42001"
29
+ },
30
+ {
31
+ "key": "nist-ai-rmf",
32
+ "kind": "framework",
33
+ "granularity": "function",
34
+ "name": "NIST AI Risk Management Framework 1.0",
35
+ "url": "https://www.nist.gov/itl/ai-risk-management-framework",
36
+ "governance": "nist-ai-rmf"
37
+ },
38
+ {
39
+ "key": "owasp-llm-top10",
40
+ "kind": "framework",
41
+ "granularity": "entry",
42
+ "name": "OWASP Top 10 for LLM Applications",
43
+ "url": "https://genai.owasp.org/llm-top-10/",
44
+ "governance": "owasp-llm-top10"
45
+ },
46
+ {
47
+ "key": "mitre-atlas",
48
+ "kind": "framework",
49
+ "granularity": "tactic",
50
+ "name": "MITRE ATLAS",
51
+ "url": "https://atlas.mitre.org/",
52
+ "governance": "mitre-atlas"
53
+ }
54
+ ],
55
+ "controls": [
56
+ {
57
+ "id": "ACM-01",
58
+ "group": "permissions",
59
+ "patterns": [
60
+ "least-privilege-tooling"
61
+ ],
62
+ "knowledge": [
63
+ "tool-use",
64
+ "ai-cyberdefense"
65
+ ],
66
+ "governance": [
67
+ "owasp-llm-top10"
68
+ ],
69
+ "mappings": {
70
+ "eu-ai-act": [
71
+ "Art. 9",
72
+ "Art. 14",
73
+ "Art. 26"
74
+ ],
75
+ "iso-42001": [
76
+ "A.6 AI system life cycle",
77
+ "A.9 Use of AI systems"
78
+ ],
79
+ "nist-ai-rmf": [
80
+ "GOVERN",
81
+ "MAP"
82
+ ],
83
+ "owasp-llm-top10": [
84
+ "LLM06 Excessive Agency"
85
+ ],
86
+ "mitre-atlas": [
87
+ "Initial Access",
88
+ "Privilege Escalation"
89
+ ]
90
+ },
91
+ "locales": {
92
+ "en": {
93
+ "name": "Scoped tool catalogue",
94
+ "statement": "Every tool the agent can call is listed, with its scope, whether it writes, and what an attacker gains by calling it. A tool nobody documented is a permission nobody reviewed.",
95
+ "test": "Produce the catalogue. Every entry has a written scope and a named owner, and nothing the agent can call is missing from it."
96
+ },
97
+ "es": {
98
+ "name": "Catálogo de herramientas acotado",
99
+ "statement": "Toda herramienta que el agente puede invocar está listada, con su alcance, si escribe y qué gana un atacante al invocarla. Una herramienta que nadie documentó es un permiso que nadie revisó.",
100
+ "test": "Produce el catálogo. Cada entrada tiene alcance escrito y responsable con nombre, y nada de lo que el agente puede invocar falta en él."
101
+ },
102
+ "pt": {
103
+ "name": "Catálogo de ferramentas delimitado",
104
+ "statement": "Toda ferramenta que o agente pode invocar está listada, com seu escopo, se escreve e o que um atacante ganha ao invocá-la. Uma ferramenta que ninguém documentou é uma permissão que ninguém revisou.",
105
+ "test": "Produza o catálogo. Cada entrada tem escopo escrito e responsável nomeado, e nada do que o agente pode invocar está fora dele."
106
+ }
107
+ }
108
+ },
109
+ {
110
+ "id": "ACM-02",
111
+ "group": "permissions",
112
+ "patterns": [
113
+ "least-privilege-tooling"
114
+ ],
115
+ "knowledge": [
116
+ "tool-use"
117
+ ],
118
+ "governance": [
119
+ "owasp-llm-top10"
120
+ ],
121
+ "mappings": {
122
+ "eu-ai-act": [
123
+ "Art. 15",
124
+ "Art. 26"
125
+ ],
126
+ "iso-42001": [
127
+ "A.4 Resources for AI systems",
128
+ "A.6 AI system life cycle"
129
+ ],
130
+ "nist-ai-rmf": [
131
+ "GOVERN",
132
+ "MANAGE"
133
+ ],
134
+ "owasp-llm-top10": [
135
+ "LLM06 Excessive Agency",
136
+ "LLM02 Sensitive Information Disclosure"
137
+ ],
138
+ "mitre-atlas": [
139
+ "Credential Access",
140
+ "Privilege Escalation"
141
+ ]
142
+ },
143
+ "locales": {
144
+ "en": {
145
+ "name": "Per-tool credentials at minimum scope",
146
+ "statement": "Each tool holds its own credential, issued at the narrowest scope the upstream system supports. A read-only tool backed by an admin token is one bug away from being a write tool.",
147
+ "test": "For each tool, show the credential and its server-side scope. No two tools share a credential whose reach exceeds either one."
148
+ },
149
+ "es": {
150
+ "name": "Credenciales por herramienta con alcance mínimo",
151
+ "statement": "Cada herramienta tiene su credencial, emitida con el alcance más estrecho que soporte el sistema de arriba. Una herramienta de solo lectura respaldada por un token de administrador está a un bug de ser de escritura.",
152
+ "test": "Para cada herramienta, muestra la credencial y su alcance en el servidor. Ninguna pareja de herramientas comparte una credencial cuyo alcance exceda al de cualquiera de las dos."
153
+ },
154
+ "pt": {
155
+ "name": "Credenciais por ferramenta no escopo mínimo",
156
+ "statement": "Cada ferramenta tem sua credencial, emitida no escopo mais estreito que o sistema a montante suporta. Uma ferramenta somente leitura apoiada por um token de administrador está a um bug de virar de escrita.",
157
+ "test": "Para cada ferramenta, mostre a credencial e seu escopo no servidor. Nenhum par de ferramentas compartilha credencial cujo alcance exceda o de qualquer uma delas."
158
+ }
159
+ }
160
+ },
161
+ {
162
+ "id": "ACM-03",
163
+ "group": "permissions",
164
+ "patterns": [
165
+ "least-privilege-tooling"
166
+ ],
167
+ "knowledge": [
168
+ "prompt-injection"
169
+ ],
170
+ "governance": [
171
+ "owasp-llm-top10",
172
+ "mitre-atlas"
173
+ ],
174
+ "mappings": {
175
+ "eu-ai-act": [
176
+ "Art. 15"
177
+ ],
178
+ "iso-42001": [
179
+ "A.6 AI system life cycle"
180
+ ],
181
+ "nist-ai-rmf": [
182
+ "MANAGE"
183
+ ],
184
+ "owasp-llm-top10": [
185
+ "LLM01 Prompt Injection",
186
+ "LLM06 Excessive Agency"
187
+ ],
188
+ "mitre-atlas": [
189
+ "Execution",
190
+ "Impact"
191
+ ]
192
+ },
193
+ "locales": {
194
+ "en": {
195
+ "name": "Parameter allowlists",
196
+ "statement": "The targets a tool may address — paths, repositories, tables, accounts, recipients — are constrained server-side, so a hijacked agent cannot repoint a legitimate tool at an illegitimate target.",
197
+ "test": "Call each write-capable tool with an out-of-scope target. The call is refused by the tool's own boundary, not by the model declining."
198
+ },
199
+ "es": {
200
+ "name": "Listas de permitidos de parámetros",
201
+ "statement": "Los objetivos a los que una herramienta puede dirigirse —rutas, repositorios, tablas, cuentas, destinatarios— están acotados en el servidor, de modo que un agente secuestrado no pueda reapuntar una herramienta legítima a un objetivo ilegítimo.",
202
+ "test": "Invoca cada herramienta con escritura contra un objetivo fuera de alcance. La llamada se rechaza en la frontera de la propia herramienta, no porque el modelo se niegue."
203
+ },
204
+ "pt": {
205
+ "name": "Listas de permitidos de parâmetros",
206
+ "statement": "Os alvos que uma ferramenta pode endereçar — caminhos, repositórios, tabelas, contas, destinatários — são limitados no servidor, de modo que um agente sequestrado não consiga reapontar uma ferramenta legítima para um alvo ilegítimo.",
207
+ "test": "Invoque cada ferramenta com escrita contra um alvo fora do escopo. A chamada é recusada na fronteira da própria ferramenta, não porque o modelo se recusou."
208
+ }
209
+ }
210
+ },
211
+ {
212
+ "id": "ACM-04",
213
+ "group": "egress",
214
+ "patterns": [
215
+ "egress-allowlist"
216
+ ],
217
+ "knowledge": [
218
+ "ai-cyberdefense",
219
+ "agentic-threat-model"
220
+ ],
221
+ "governance": [
222
+ "owasp-llm-top10",
223
+ "mitre-atlas"
224
+ ],
225
+ "mappings": {
226
+ "eu-ai-act": [
227
+ "Art. 15"
228
+ ],
229
+ "iso-42001": [
230
+ "A.6 AI system life cycle",
231
+ "A.7 Data for AI systems"
232
+ ],
233
+ "nist-ai-rmf": [
234
+ "MANAGE"
235
+ ],
236
+ "owasp-llm-top10": [
237
+ "LLM02 Sensitive Information Disclosure",
238
+ "LLM01 Prompt Injection"
239
+ ],
240
+ "mitre-atlas": [
241
+ "Exfiltration",
242
+ "Collection"
243
+ ]
244
+ },
245
+ "locales": {
246
+ "en": {
247
+ "name": "Default-deny egress",
248
+ "statement": "Outbound traffic reaches only named destinations; everything else is refused. Every exfiltration path ends in an outbound request, so this is the control that still works after the model has been convinced.",
249
+ "test": "From inside the agent's environment, request a host that is not on the list. It fails at the network or proxy layer and the refusal is logged."
250
+ },
251
+ "es": {
252
+ "name": "Salida denegada por defecto",
253
+ "statement": "El tráfico saliente solo llega a destinos nombrados; todo lo demás se rechaza. Toda ruta de exfiltración termina en una petición saliente, así que este es el control que sigue funcionando cuando ya han convencido al modelo.",
254
+ "test": "Desde dentro del entorno del agente, pide un host que no esté en la lista. Falla en la capa de red o de proxy y el rechazo queda registrado."
255
+ },
256
+ "pt": {
257
+ "name": "Saída negada por padrão",
258
+ "statement": "O tráfego de saída alcança apenas destinos nomeados; todo o resto é recusado. Todo caminho de exfiltração termina em uma requisição de saída, então este é o controle que continua funcionando depois que o modelo foi convencido.",
259
+ "test": "De dentro do ambiente do agente, requisite um host fora da lista. Falha na camada de rede ou de proxy e a recusa fica registrada."
260
+ }
261
+ }
262
+ },
263
+ {
264
+ "id": "ACM-05",
265
+ "group": "egress",
266
+ "patterns": [
267
+ "egress-allowlist"
268
+ ],
269
+ "knowledge": [
270
+ "ai-observability"
271
+ ],
272
+ "governance": [
273
+ "mitre-atlas"
274
+ ],
275
+ "mappings": {
276
+ "eu-ai-act": [
277
+ "Art. 12",
278
+ "Art. 72"
279
+ ],
280
+ "iso-42001": [
281
+ "A.6 AI system life cycle",
282
+ "Clause 9 Performance evaluation"
283
+ ],
284
+ "nist-ai-rmf": [
285
+ "MEASURE",
286
+ "MANAGE"
287
+ ],
288
+ "owasp-llm-top10": [
289
+ "LLM02 Sensitive Information Disclosure"
290
+ ],
291
+ "mitre-atlas": [
292
+ "Exfiltration"
293
+ ]
294
+ },
295
+ "locales": {
296
+ "en": {
297
+ "name": "Denied egress is an alert, not an error",
298
+ "statement": "Refused outbound requests are logged as security signal and reach a human. A denial is one of the few unambiguous attack signals an agent stack produces, and it is worthless if it lands in the same bucket as a timeout.",
299
+ "test": "Trigger a denial. It appears as a distinct, alertable event with the destination and the calling agent, not as a generic network error."
300
+ },
301
+ "es": {
302
+ "name": "Una salida denegada es una alerta, no un error",
303
+ "statement": "Las peticiones salientes rechazadas se registran como señal de seguridad y llegan a una persona. Una denegación es una de las pocas señales de ataque inequívocas que produce una pila agéntica, y no vale nada si cae en el mismo cajón que un timeout.",
304
+ "test": "Provoca una denegación. Aparece como evento distinguible y alertable, con el destino y el agente que llamó, no como un error de red genérico."
305
+ },
306
+ "pt": {
307
+ "name": "Uma saída negada é um alerta, não um erro",
308
+ "statement": "As requisições de saída recusadas são registradas como sinal de segurança e chegam a uma pessoa. Uma negação é um dos poucos sinais de ataque inequívocos que uma pilha agêntica produz, e não vale nada se cair no mesmo balde de um timeout.",
309
+ "test": "Provoque uma negação. Ela aparece como evento distinguível e alertável, com o destino e o agente que chamou, não como erro de rede genérico."
310
+ }
311
+ }
312
+ },
313
+ {
314
+ "id": "ACM-06",
315
+ "group": "execution",
316
+ "patterns": [
317
+ "sandboxed-execution"
318
+ ],
319
+ "knowledge": [
320
+ "ai-cyberdefense"
321
+ ],
322
+ "governance": [
323
+ "owasp-llm-top10",
324
+ "mitre-atlas"
325
+ ],
326
+ "mappings": {
327
+ "eu-ai-act": [
328
+ "Art. 15"
329
+ ],
330
+ "iso-42001": [
331
+ "A.6 AI system life cycle"
332
+ ],
333
+ "nist-ai-rmf": [
334
+ "MANAGE"
335
+ ],
336
+ "owasp-llm-top10": [
337
+ "LLM05 Improper Output Handling",
338
+ "LLM03 Supply Chain"
339
+ ],
340
+ "mitre-atlas": [
341
+ "Execution",
342
+ "Persistence"
343
+ ]
344
+ },
345
+ "locales": {
346
+ "en": {
347
+ "name": "Ephemeral, credential-free execution",
348
+ "statement": "Anything the agent generates or invokes runs in an environment created per task and destroyed after, holding no ambient credentials. Persistence is how a one-off compromise becomes a foothold.",
349
+ "test": "Inside a live task, enumerate the environment. No credential is present that the task did not need, and the environment does not survive the task."
350
+ },
351
+ "es": {
352
+ "name": "Ejecución efímera y sin credenciales",
353
+ "statement": "Todo lo que el agente genera o invoca corre en un entorno creado por tarea y destruido al terminar, sin credenciales ambientales. La persistencia es cómo un compromiso puntual se convierte en punto de apoyo.",
354
+ "test": "Dentro de una tarea en vivo, enumera el entorno. No hay ninguna credencial que la tarea no necesitara, y el entorno no sobrevive a la tarea."
355
+ },
356
+ "pt": {
357
+ "name": "Execução efêmera e sem credenciais",
358
+ "statement": "Tudo o que o agente gera ou invoca roda em um ambiente criado por tarefa e destruído ao final, sem credenciais ambientais. A persistência é como um comprometimento pontual vira ponto de apoio.",
359
+ "test": "Dentro de uma tarefa ao vivo, enumere o ambiente. Não há credencial que a tarefa não precisasse, e o ambiente não sobrevive à tarefa."
360
+ }
361
+ }
362
+ },
363
+ {
364
+ "id": "ACM-07",
365
+ "group": "execution",
366
+ "patterns": [
367
+ "sandboxed-execution",
368
+ "recovery-strategy"
369
+ ],
370
+ "knowledge": [
371
+ "ai-observability"
372
+ ],
373
+ "governance": [
374
+ "owasp-llm-top10"
375
+ ],
376
+ "mappings": {
377
+ "eu-ai-act": [
378
+ "Art. 15"
379
+ ],
380
+ "iso-42001": [
381
+ "A.4 Resources for AI systems",
382
+ "Clause 8 Operation"
383
+ ],
384
+ "nist-ai-rmf": [
385
+ "MEASURE",
386
+ "MANAGE"
387
+ ],
388
+ "owasp-llm-top10": [
389
+ "LLM10 Unbounded Consumption"
390
+ ],
391
+ "mitre-atlas": [
392
+ "Impact"
393
+ ]
394
+ },
395
+ "locales": {
396
+ "en": {
397
+ "name": "Resource caps and timeouts",
398
+ "statement": "CPU, memory, disk, wall-clock and call count are bounded by the host. Runaway consumption is the failure mode that arrives first and most often, usually with no adversary involved at all.",
399
+ "test": "Run a task designed not to terminate. It is stopped by a quota, the stop is recorded, and the cost of the attempt is bounded and known."
400
+ },
401
+ "es": {
402
+ "name": "Límites de recursos y timeouts",
403
+ "statement": "CPU, memoria, disco, tiempo de reloj y número de llamadas los acota el anfitrión. El consumo desbocado es el modo de fallo que llega primero y más a menudo, normalmente sin ningún adversario.",
404
+ "test": "Ejecuta una tarea diseñada para no terminar. La detiene una cuota, la parada queda registrada y el coste del intento es acotado y conocido."
405
+ },
406
+ "pt": {
407
+ "name": "Limites de recursos e timeouts",
408
+ "statement": "CPU, memória, disco, tempo de relógio e número de chamadas são limitados pelo host. O consumo descontrolado é o modo de falha que chega primeiro e com mais frequência, normalmente sem adversário algum.",
409
+ "test": "Execute uma tarefa projetada para não terminar. Ela é interrompida por uma cota, a parada fica registrada e o custo da tentativa é limitado e conhecido."
410
+ }
411
+ }
412
+ },
413
+ {
414
+ "id": "ACM-08",
415
+ "group": "oversight",
416
+ "patterns": [
417
+ "human-approval-gate"
418
+ ],
419
+ "knowledge": [
420
+ "human-in-the-loop"
421
+ ],
422
+ "governance": [
423
+ "eu-ai-act",
424
+ "human-oversight-and-accountability-policy"
425
+ ],
426
+ "mappings": {
427
+ "eu-ai-act": [
428
+ "Art. 14",
429
+ "Art. 26"
430
+ ],
431
+ "iso-42001": [
432
+ "A.9 Use of AI systems",
433
+ "A.5 Assessing impacts of AI systems"
434
+ ],
435
+ "nist-ai-rmf": [
436
+ "GOVERN",
437
+ "MANAGE"
438
+ ],
439
+ "owasp-llm-top10": [
440
+ "LLM06 Excessive Agency"
441
+ ],
442
+ "mitre-atlas": [
443
+ "Impact"
444
+ ]
445
+ },
446
+ "locales": {
447
+ "en": {
448
+ "name": "Approval gate on high-impact actions",
449
+ "statement": "Actions that are irreversible, regulated or expensive stop for a person who can approve, edit or reject, with enough context to decide. Gate by risk, not by default — over-gating produces rubber-stamping, which is worse than no gate because it looks like one.",
450
+ "test": "List the gated actions and the risk criterion that put them there. Attempt one; it suspends, routes, and records the decision with the identity of who made it."
451
+ },
452
+ "es": {
453
+ "name": "Puerta de aprobación en acciones de alto impacto",
454
+ "statement": "Las acciones irreversibles, reguladas o caras se detienen ante una persona que puede aprobar, editar o rechazar, con contexto suficiente para decidir. Acota por riesgo, no por defecto: poner puertas de más produce aprobación automática, que es peor que no tener puerta porque lo parece.",
455
+ "test": "Lista las acciones con puerta y el criterio de riesgo que las puso ahí. Intenta una; se suspende, se enruta y se registra la decisión con la identidad de quien la tomó."
456
+ },
457
+ "pt": {
458
+ "name": "Portão de aprovação em ações de alto impacto",
459
+ "statement": "Ações irreversíveis, reguladas ou caras param diante de uma pessoa que pode aprovar, editar ou rejeitar, com contexto suficiente para decidir. Delimite por risco, não por padrão: portões demais produzem aprovação automática, que é pior do que não ter portão porque parece um.",
460
+ "test": "Liste as ações com portão e o critério de risco que as colocou ali. Tente uma; ela suspende, roteia e registra a decisão com a identidade de quem a tomou."
461
+ }
462
+ }
463
+ },
464
+ {
465
+ "id": "ACM-09",
466
+ "group": "oversight",
467
+ "patterns": [
468
+ "human-escalation"
469
+ ],
470
+ "knowledge": [
471
+ "human-in-the-loop"
472
+ ],
473
+ "governance": [
474
+ "human-oversight-and-accountability-policy"
475
+ ],
476
+ "mappings": {
477
+ "eu-ai-act": [
478
+ "Art. 14"
479
+ ],
480
+ "iso-42001": [
481
+ "A.9 Use of AI systems"
482
+ ],
483
+ "nist-ai-rmf": [
484
+ "GOVERN",
485
+ "MANAGE"
486
+ ],
487
+ "owasp-llm-top10": [
488
+ "LLM09 Misinformation"
489
+ ],
490
+ "mitre-atlas": []
491
+ },
492
+ "locales": {
493
+ "en": {
494
+ "name": "Escalation path with a named owner",
495
+ "statement": "When the agent is uncertain, blocked or out of policy, there is a defined path to a person, and that person is named. An escalation route with no owner is a queue.",
496
+ "test": "Force an escalation. It reaches a named human within the stated time, and the handoff carries the context needed to act without re-deriving it."
497
+ },
498
+ "es": {
499
+ "name": "Vía de escalado con responsable con nombre",
500
+ "statement": "Cuando el agente duda, se bloquea o se sale de política, hay una vía definida hacia una persona, y esa persona tiene nombre. Una vía de escalado sin responsable es una cola.",
501
+ "test": "Fuerza un escalado. Llega a un humano con nombre dentro del tiempo declarado, y el traspaso lleva el contexto necesario para actuar sin volver a deducirlo."
502
+ },
503
+ "pt": {
504
+ "name": "Via de escalonamento com responsável nomeado",
505
+ "statement": "Quando o agente hesita, trava ou sai da política, há uma via definida até uma pessoa, e essa pessoa tem nome. Uma via de escalonamento sem responsável é uma fila.",
506
+ "test": "Force um escalonamento. Ele chega a um humano nomeado dentro do tempo declarado, e a passagem carrega o contexto necessário para agir sem rededuzi-lo."
507
+ }
508
+ }
509
+ },
510
+ {
511
+ "id": "ACM-10",
512
+ "group": "observability",
513
+ "patterns": [],
514
+ "knowledge": [
515
+ "ai-observability"
516
+ ],
517
+ "governance": [
518
+ "audit-framework-for-agentic-systems"
519
+ ],
520
+ "mappings": {
521
+ "eu-ai-act": [
522
+ "Art. 12",
523
+ "Art. 19",
524
+ "Art. 72"
525
+ ],
526
+ "iso-42001": [
527
+ "Clause 9 Performance evaluation",
528
+ "A.6 AI system life cycle"
529
+ ],
530
+ "nist-ai-rmf": [
531
+ "MEASURE",
532
+ "MANAGE"
533
+ ],
534
+ "owasp-llm-top10": [
535
+ "LLM02 Sensitive Information Disclosure"
536
+ ],
537
+ "mitre-atlas": [
538
+ "Discovery",
539
+ "Collection"
540
+ ]
541
+ },
542
+ "locales": {
543
+ "en": {
544
+ "name": "Correlated trace of every decision and tool call",
545
+ "statement": "Each run produces an immutable, correlated record: inputs, model and version, tool calls with arguments and outcomes, and the final action. Enough to reconstruct what happened, and nothing that turns the log itself into the breach.",
546
+ "test": "Pick a past run at random and reconstruct it end to end from the log alone. Then confirm the log holds no secret or raw personal data it did not need."
547
+ },
548
+ "es": {
549
+ "name": "Traza correlada de cada decisión y llamada a herramienta",
550
+ "statement": "Cada ejecución produce un registro inmutable y correlado: entradas, modelo y versión, llamadas a herramientas con argumentos y resultados, y la acción final. Lo suficiente para reconstruir qué pasó, y nada que convierta el propio log en la brecha.",
551
+ "test": "Coge una ejecución pasada al azar y reconstrúyela de punta a punta solo desde el log. Después confirma que el log no guarda ningún secreto ni dato personal en crudo que no necesitara."
552
+ },
553
+ "pt": {
554
+ "name": "Trace correlacionado de cada decisão e chamada de ferramenta",
555
+ "statement": "Cada execução produz um registro imutável e correlacionado: entradas, modelo e versão, chamadas de ferramentas com argumentos e resultados, e a ação final. O suficiente para reconstruir o que aconteceu, e nada que transforme o próprio log na brecha.",
556
+ "test": "Pegue uma execução passada ao acaso e reconstrua-a de ponta a ponta só pelo log. Depois confirme que o log não guarda nenhum segredo ou dado pessoal cru de que não precisava."
557
+ }
558
+ }
559
+ },
560
+ {
561
+ "id": "ACM-11",
562
+ "group": "observability",
563
+ "patterns": [
564
+ "evaluator-optimizer"
565
+ ],
566
+ "knowledge": [
567
+ "agentic-evaluation"
568
+ ],
569
+ "governance": [
570
+ "audit-framework-for-agentic-systems",
571
+ "nist-ai-rmf"
572
+ ],
573
+ "mappings": {
574
+ "eu-ai-act": [
575
+ "Art. 9",
576
+ "Art. 15",
577
+ "Art. 17"
578
+ ],
579
+ "iso-42001": [
580
+ "A.6 AI system life cycle",
581
+ "Clause 9 Performance evaluation"
582
+ ],
583
+ "nist-ai-rmf": [
584
+ "MEASURE"
585
+ ],
586
+ "owasp-llm-top10": [
587
+ "LLM09 Misinformation"
588
+ ],
589
+ "mitre-atlas": []
590
+ },
591
+ "locales": {
592
+ "en": {
593
+ "name": "Evaluation suite gating change",
594
+ "statement": "A curated set of cases runs on every change, and a regression blocks release. Without it, 'it seems to work' is the entire quality argument, and nothing distinguishes a fix from a change.",
595
+ "test": "Introduce a known regression. The suite catches it and the change does not ship. A suite never seen failing is a suite never verified."
596
+ },
597
+ "es": {
598
+ "name": "Suite de evaluación que condiciona los cambios",
599
+ "statement": "Un conjunto curado de casos se ejecuta en cada cambio, y una regresión bloquea el despliegue. Sin eso, «parece que funciona» es todo el argumento de calidad, y nada distingue un arreglo de un cambio.",
600
+ "test": "Introduce una regresión conocida. La suite la caza y el cambio no sale. Una suite que nunca se ha visto fallar es una suite que nunca se ha verificado."
601
+ },
602
+ "pt": {
603
+ "name": "Suíte de avaliação que condiciona mudanças",
604
+ "statement": "Um conjunto curado de casos roda a cada mudança, e uma regressão bloqueia o lançamento. Sem isso, «parece que funciona» é todo o argumento de qualidade, e nada distingue uma correção de uma mudança.",
605
+ "test": "Introduza uma regressão conhecida. A suíte a pega e a mudança não sai. Uma suíte que nunca foi vista falhando é uma suíte que nunca foi verificada."
606
+ }
607
+ }
608
+ },
609
+ {
610
+ "id": "ACM-12",
611
+ "group": "lifecycle",
612
+ "patterns": [
613
+ "least-privilege-tooling",
614
+ "egress-allowlist"
615
+ ],
616
+ "knowledge": [
617
+ "prompt-injection",
618
+ "guardrails"
619
+ ],
620
+ "governance": [
621
+ "owasp-llm-top10",
622
+ "mitre-atlas"
623
+ ],
624
+ "mappings": {
625
+ "eu-ai-act": [
626
+ "Art. 15"
627
+ ],
628
+ "iso-42001": [
629
+ "A.6 AI system life cycle",
630
+ "A.7 Data for AI systems"
631
+ ],
632
+ "nist-ai-rmf": [
633
+ "MAP",
634
+ "MANAGE"
635
+ ],
636
+ "owasp-llm-top10": [
637
+ "LLM01 Prompt Injection"
638
+ ],
639
+ "mitre-atlas": [
640
+ "Initial Access",
641
+ "AI Attack Staging"
642
+ ]
643
+ },
644
+ "locales": {
645
+ "en": {
646
+ "name": "Untrusted content is isolated and marked",
647
+ "statement": "Retrieved documents, tool results and third-party output are delimited as data, never merged into the instruction channel. The model cannot reliably tell them apart, so the harness must.",
648
+ "test": "Plant an instruction inside a document the agent retrieves. The agent may read it; it must not act on it, and the attempt must be visible afterwards."
649
+ },
650
+ "es": {
651
+ "name": "El contenido no confiable se aísla y se marca",
652
+ "statement": "Documentos recuperados, resultados de herramientas y salida de terceros se delimitan como datos, nunca se funden con el canal de instrucciones. El modelo no sabe distinguirlos de forma fiable, así que tiene que hacerlo el arnés.",
653
+ "test": "Planta una instrucción dentro de un documento que el agente recupere. El agente puede leerla; no debe actuar sobre ella, y el intento debe quedar visible después."
654
+ },
655
+ "pt": {
656
+ "name": "O conteúdo não confiável é isolado e marcado",
657
+ "statement": "Documentos recuperados, resultados de ferramentas e saída de terceiros são delimitados como dados, nunca fundidos ao canal de instruções. O modelo não sabe distingui-los de forma confiável, então o harness precisa fazê-lo.",
658
+ "test": "Plante uma instrução dentro de um documento que o agente recupere. O agente pode lê-la; não deve agir sobre ela, e a tentativa deve ficar visível depois."
659
+ }
660
+ }
661
+ },
662
+ {
663
+ "id": "ACM-13",
664
+ "group": "lifecycle",
665
+ "patterns": [],
666
+ "knowledge": [
667
+ "guardrails"
668
+ ],
669
+ "governance": [
670
+ "owasp-llm-top10"
671
+ ],
672
+ "mappings": {
673
+ "eu-ai-act": [
674
+ "Art. 15",
675
+ "Art. 50"
676
+ ],
677
+ "iso-42001": [
678
+ "A.8 Information for interested parties"
679
+ ],
680
+ "nist-ai-rmf": [
681
+ "MEASURE",
682
+ "MANAGE"
683
+ ],
684
+ "owasp-llm-top10": [
685
+ "LLM05 Improper Output Handling",
686
+ "LLM07 System Prompt Leakage"
687
+ ],
688
+ "mitre-atlas": [
689
+ "Defense Evasion"
690
+ ]
691
+ },
692
+ "locales": {
693
+ "en": {
694
+ "name": "Model output treated as untrusted input",
695
+ "statement": "Anything the model emits that reaches a renderer, a shell, a query or another system is encoded and validated exactly as input from a stranger would be.",
696
+ "test": "Make the model emit a payload for each downstream sink you have. Each is neutralised at the boundary before it arrives."
697
+ },
698
+ "es": {
699
+ "name": "La salida del modelo se trata como entrada no confiable",
700
+ "statement": "Todo lo que el modelo emita y llegue a un renderizador, un shell, una consulta u otro sistema se codifica y valida exactamente igual que la entrada de un desconocido.",
701
+ "test": "Haz que el modelo emita un payload para cada destino que tengas aguas abajo. Cada uno se neutraliza en la frontera antes de llegar."
702
+ },
703
+ "pt": {
704
+ "name": "A saída do modelo é tratada como entrada não confiável",
705
+ "statement": "Tudo o que o modelo emite e chega a um renderizador, a um shell, a uma consulta ou a outro sistema é codificado e validado exatamente como a entrada de um desconhecido.",
706
+ "test": "Faça o modelo emitir um payload para cada destino a jusante que você tenha. Cada um é neutralizado na fronteira antes de chegar."
707
+ }
708
+ }
709
+ },
710
+ {
711
+ "id": "ACM-14",
712
+ "group": "lifecycle",
713
+ "patterns": [
714
+ "attributed-memory"
715
+ ],
716
+ "knowledge": [
717
+ "agent-memory",
718
+ "agentic-threat-model"
719
+ ],
720
+ "governance": [
721
+ "mitre-atlas"
722
+ ],
723
+ "mappings": {
724
+ "eu-ai-act": [
725
+ "Art. 10",
726
+ "Art. 15"
727
+ ],
728
+ "iso-42001": [
729
+ "A.7 Data for AI systems"
730
+ ],
731
+ "nist-ai-rmf": [
732
+ "MAP",
733
+ "MANAGE"
734
+ ],
735
+ "owasp-llm-top10": [
736
+ "LLM04 Data and Model Poisoning",
737
+ "LLM08 Vector and Embedding Weaknesses"
738
+ ],
739
+ "mitre-atlas": [
740
+ "Persistence",
741
+ "AI Attack Staging"
742
+ ]
743
+ },
744
+ "locales": {
745
+ "en": {
746
+ "name": "Memory integrity and expiry",
747
+ "statement": "What the agent writes to persistent memory is attributed, reviewable and expirable. Memory is what turns a one-shot attack into one that re-triggers on future, unrelated tasks.",
748
+ "test": "Write a false fact through a normal interaction. Show where it came from, who can remove it, and when it would expire on its own."
749
+ },
750
+ "es": {
751
+ "name": "Integridad y caducidad de la memoria",
752
+ "statement": "Lo que el agente escribe en memoria persistente está atribuido, es revisable y caduca. La memoria es lo que convierte un ataque puntual en uno que se vuelve a disparar en tareas futuras sin relación.",
753
+ "test": "Escribe un hecho falso a través de una interacción normal. Muestra de dónde vino, quién puede retirarlo y cuándo caducaría por sí solo."
754
+ },
755
+ "pt": {
756
+ "name": "Integridade e expiração da memória",
757
+ "statement": "O que o agente grava em memória persistente é atribuído, revisável e expira. A memória é o que transforma um ataque pontual em um que volta a disparar em tarefas futuras e não relacionadas.",
758
+ "test": "Grave um fato falso por meio de uma interação normal. Mostre de onde veio, quem pode removê-lo e quando expiraria sozinho."
759
+ }
760
+ }
761
+ },
762
+ {
763
+ "id": "ACM-15",
764
+ "group": "lifecycle",
765
+ "patterns": [],
766
+ "knowledge": [
767
+ "mcp-security",
768
+ "agentic-threat-model"
769
+ ],
770
+ "governance": [
771
+ "owasp-llm-top10",
772
+ "mitre-atlas"
773
+ ],
774
+ "mappings": {
775
+ "eu-ai-act": [
776
+ "Art. 10",
777
+ "Art. 11",
778
+ "Art. 25"
779
+ ],
780
+ "iso-42001": [
781
+ "A.10 Third-party and customer relationships",
782
+ "A.6 AI system life cycle"
783
+ ],
784
+ "nist-ai-rmf": [
785
+ "GOVERN",
786
+ "MAP"
787
+ ],
788
+ "owasp-llm-top10": [
789
+ "LLM03 Supply Chain",
790
+ "LLM04 Data and Model Poisoning"
791
+ ],
792
+ "mitre-atlas": [
793
+ "Resource Development",
794
+ "Initial Access"
795
+ ]
796
+ },
797
+ "locales": {
798
+ "en": {
799
+ "name": "Provenance for models, prompts and servers",
800
+ "statement": "Models, system prompts, MCP servers, packages and datasets are pinned, reviewed on change, and traceable to a source. A dependency that can rewrite a tool description can rewrite the agent's behaviour.",
801
+ "test": "For each external dependency, name the pinned version and who reviewed the last change. Change a tool description upstream; the change is detected before it reaches production."
802
+ },
803
+ "es": {
804
+ "name": "Procedencia de modelos, prompts y servidores",
805
+ "statement": "Modelos, system prompts, servidores MCP, paquetes y datasets están fijados, se revisan al cambiar y son trazables a un origen. Una dependencia que puede reescribir la descripción de una herramienta puede reescribir el comportamiento del agente.",
806
+ "test": "Para cada dependencia externa, nombra la versión fijada y quién revisó el último cambio. Cambia una descripción de herramienta aguas arriba; el cambio se detecta antes de llegar a producción."
807
+ },
808
+ "pt": {
809
+ "name": "Procedência de modelos, prompts e servidores",
810
+ "statement": "Modelos, system prompts, servidores MCP, pacotes e datasets são fixados, revisados a cada mudança e rastreáveis até uma origem. Uma dependência que pode reescrever a descrição de uma ferramenta pode reescrever o comportamento do agente.",
811
+ "test": "Para cada dependência externa, nomeie a versão fixada e quem revisou a última mudança. Altere uma descrição de ferramenta a montante; a mudança é detectada antes de chegar à produção."
812
+ }
813
+ }
814
+ },
815
+ {
816
+ "id": "ACM-16",
817
+ "group": "egress",
818
+ "patterns": [],
819
+ "knowledge": [
820
+ "mcp-security"
821
+ ],
822
+ "governance": [
823
+ "owasp-llm-top10",
824
+ "mitre-atlas"
825
+ ],
826
+ "mappings": {
827
+ "eu-ai-act": [
828
+ "Art. 15"
829
+ ],
830
+ "iso-42001": [
831
+ "A.6 AI system life cycle"
832
+ ],
833
+ "nist-ai-rmf": [
834
+ "MANAGE"
835
+ ],
836
+ "owasp-llm-top10": [
837
+ "LLM10 Unbounded Consumption",
838
+ "LLM06 Excessive Agency"
839
+ ],
840
+ "mitre-atlas": [
841
+ "Initial Access",
842
+ "AI Model Access"
843
+ ]
844
+ },
845
+ "locales": {
846
+ "en": {
847
+ "name": "Transport and origin validation on exposed endpoints",
848
+ "statement": "An agent endpoint reachable from outside validates its transport before doing work: origin checked against an allowlist, browser-initiated cross-site calls rejected, and every caller rate limited with a real 429.",
849
+ "test": "Call the endpoint with a foreign Origin and with no Origin. The first is rejected before any handler runs; the second is served and counted against its caller's limit."
850
+ },
851
+ "es": {
852
+ "name": "Validación de transporte y origen en endpoints expuestos",
853
+ "statement": "Un endpoint de agente accesible desde fuera valida el transporte antes de trabajar: origen comprobado contra una lista, llamadas cross-site iniciadas por navegador rechazadas y todo llamante con límite de tasa y un 429 real.",
854
+ "test": "Llama al endpoint con un Origin ajeno y sin Origin. El primero se rechaza antes de ejecutar ningún handler; el segundo se sirve y cuenta contra el límite de su llamante."
855
+ },
856
+ "pt": {
857
+ "name": "Validação de transporte e origem em endpoints expostos",
858
+ "statement": "Um endpoint de agente acessível de fora valida o transporte antes de trabalhar: origem verificada contra uma lista, chamadas cross-site iniciadas por navegador recusadas e todo chamador com limite de taxa e um 429 real.",
859
+ "test": "Chame o endpoint com um Origin alheio e sem Origin. O primeiro é recusado antes de qualquer handler rodar; o segundo é servido e conta contra o limite do seu chamador."
860
+ }
861
+ }
862
+ },
863
+ {
864
+ "id": "ACM-17",
865
+ "group": "execution",
866
+ "patterns": [
867
+ "recovery-strategy"
868
+ ],
869
+ "knowledge": [
870
+ "human-in-the-loop"
871
+ ],
872
+ "governance": [
873
+ "audit-framework-for-agentic-systems"
874
+ ],
875
+ "mappings": {
876
+ "eu-ai-act": [
877
+ "Art. 14",
878
+ "Art. 15",
879
+ "Art. 26"
880
+ ],
881
+ "iso-42001": [
882
+ "Clause 8 Operation",
883
+ "Clause 10 Improvement"
884
+ ],
885
+ "nist-ai-rmf": [
886
+ "MANAGE"
887
+ ],
888
+ "owasp-llm-top10": [
889
+ "LLM06 Excessive Agency"
890
+ ],
891
+ "mitre-atlas": [
892
+ "Impact"
893
+ ]
894
+ },
895
+ "locales": {
896
+ "en": {
897
+ "name": "Reversibility and a stop control",
898
+ "statement": "Every action the agent can take is either reversible or gated, and a person can stop the agent mid-run without stopping the whole system. Autonomy without an off switch is not autonomy, it is exposure.",
899
+ "test": "Stop a running agent. It halts within the stated time, leaves no half-applied change, and the stop is recorded with who issued it."
900
+ },
901
+ "es": {
902
+ "name": "Reversibilidad y control de parada",
903
+ "statement": "Toda acción que el agente puede tomar es reversible o tiene puerta, y una persona puede pararlo a mitad de ejecución sin parar el sistema entero. Autonomía sin interruptor no es autonomía, es exposición.",
904
+ "test": "Para un agente en marcha. Se detiene dentro del tiempo declarado, no deja ningún cambio a medio aplicar y la parada queda registrada con quién la ordenó."
905
+ },
906
+ "pt": {
907
+ "name": "Reversibilidade e controle de parada",
908
+ "statement": "Toda ação que o agente pode tomar é reversível ou tem portão, e uma pessoa pode pará-lo no meio da execução sem parar o sistema inteiro. Autonomia sem interruptor não é autonomia, é exposição.",
909
+ "test": "Pare um agente em execução. Ele para dentro do tempo declarado, não deixa nenhuma mudança pela metade e a parada fica registrada com quem a ordenou."
910
+ }
911
+ }
912
+ },
913
+ {
914
+ "id": "ACM-18",
915
+ "group": "lifecycle",
916
+ "patterns": [],
917
+ "knowledge": [
918
+ "agentic-threat-model",
919
+ "ai-cyberdefense"
920
+ ],
921
+ "governance": [
922
+ "mitre-atlas",
923
+ "owasp-llm-top10",
924
+ "agentic-ai-governance-checklist"
925
+ ],
926
+ "mappings": {
927
+ "eu-ai-act": [
928
+ "Art. 9",
929
+ "Art. 72"
930
+ ],
931
+ "iso-42001": [
932
+ "A.5 Assessing impacts of AI systems",
933
+ "Clause 10 Improvement"
934
+ ],
935
+ "nist-ai-rmf": [
936
+ "MAP",
937
+ "GOVERN"
938
+ ],
939
+ "owasp-llm-top10": [
940
+ "LLM01 Prompt Injection",
941
+ "LLM06 Excessive Agency"
942
+ ],
943
+ "mitre-atlas": [
944
+ "Reconnaissance",
945
+ "AI Attack Staging"
946
+ ]
947
+ },
948
+ "locales": {
949
+ "en": {
950
+ "name": "A threat model that is maintained and tested",
951
+ "statement": "The attack surfaces are written down with a control and an owner each, accepted risks are named as accepted, and the document is revisited whenever a tool, a data source or an autonomy level changes.",
952
+ "test": "Show the current threat model and the date of the last change to the tool catalogue. If the catalogue is newer than the model, the model is out of date and this control fails."
953
+ },
954
+ "es": {
955
+ "name": "Un modelo de amenazas mantenido y probado",
956
+ "statement": "Las superficies de ataque están escritas, cada una con control y responsable, los riesgos aceptados se nombran como aceptados, y el documento se revisa siempre que cambia una herramienta, una fuente de datos o un nivel de autonomía.",
957
+ "test": "Muestra el modelo de amenazas vigente y la fecha del último cambio en el catálogo de herramientas. Si el catálogo es más nuevo que el modelo, el modelo está caducado y este control falla."
958
+ },
959
+ "pt": {
960
+ "name": "Um modelo de ameaças mantido e testado",
961
+ "statement": "As superfícies de ataque estão escritas, cada uma com controle e responsável, os riscos aceitos são nomeados como aceitos, e o documento é revisitado sempre que uma ferramenta, uma fonte de dados ou um nível de autonomia muda.",
962
+ "test": "Mostre o modelo de ameaças vigente e a data da última mudança no catálogo de ferramentas. Se o catálogo for mais novo que o modelo, o modelo está desatualizado e este controle falha."
963
+ }
964
+ }
965
+ }
966
+ ]
967
+ }