@blamejs/exceptd-skills 0.15.44 → 0.15.46

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/sbom.cdx.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.6",
4
- "serialNumber": "urn:uuid:aabeb577-d1a9-4712-bfe2-66abb67ee60d",
4
+ "serialNumber": "urn:uuid:887e056b-6ac3-4123-9b51-d1d0d75be945",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2116-10-11T09:10:15.000Z",
7
+ "timestamp": "2098-07-26T04:04:59.000Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "blamejs",
11
11
  "name": "scripts/refresh-sbom.js",
12
- "version": "0.15.44"
12
+ "version": "0.15.46"
13
13
  }
14
14
  ],
15
15
  "component": {
16
- "bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.15.44",
16
+ "bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.15.46",
17
17
  "type": "application",
18
18
  "name": "@blamejs/exceptd-skills",
19
- "version": "0.15.44",
19
+ "version": "0.15.46",
20
20
  "description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (427 CVEs / 173 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
21
21
  "licenses": [
22
22
  {
@@ -25,17 +25,17 @@
25
25
  }
26
26
  }
27
27
  ],
28
- "purl": "pkg:npm/%40blamejs/exceptd-skills@0.15.44",
28
+ "purl": "pkg:npm/%40blamejs/exceptd-skills@0.15.46",
29
29
  "hashes": [
30
30
  {
31
31
  "alg": "SHA-256",
32
- "content": "2ca0bf87b03803ffcb592ed3368987c0f6cb9a27eeb19ba57cd4f0f26eaa1c2d"
32
+ "content": "906dd3f415bfd8f2f6cef4d06c5735545ef6885584c2898336e54f6946a50798"
33
33
  }
34
34
  ],
35
35
  "externalReferences": [
36
36
  {
37
37
  "type": "distribution",
38
- "url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.15.44"
38
+ "url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.15.46"
39
39
  },
40
40
  {
41
41
  "type": "vcs",
@@ -86,11 +86,11 @@
86
86
  "hashes": [
87
87
  {
88
88
  "alg": "SHA-256",
89
- "content": "6327718cdd949622fbd4af0846fab9a0a5a8f501e173f014534fe8ff4ba22110"
89
+ "content": "fdab001b18df6526870f2cb552a2b9ad1afbddc8f6337dd137d72bb3667ec947"
90
90
  },
91
91
  {
92
92
  "alg": "SHA3-512",
93
- "content": "146c237d4f022c4a9819ad11d0328b592bc234d38dbcb7e5cf78149fe5497ed81769e68520e91a9600767200119594ed3a7234add92d1c12a087bd9b1fa7a116"
93
+ "content": "c3f12b8e7acb761b94e3c1f42681ef166c863f3b351dec8681b4143b87a5b914e430772dfaebb72efb3933a2846f7cd8b573903d9c6689f9d4c67a0dd1c25a1f"
94
94
  }
95
95
  ]
96
96
  },
@@ -116,11 +116,11 @@
116
116
  "hashes": [
117
117
  {
118
118
  "alg": "SHA-256",
119
- "content": "249f388ebea713ce2990e1c9559c678628e43a092161eefe11a26d26a39f66e8"
119
+ "content": "f8b32c1247f8c166d245184a92614ae2c289696db6b83134fde8ebf2ac7d23df"
120
120
  },
121
121
  {
122
122
  "alg": "SHA3-512",
123
- "content": "71e7e1ac5ed559a90af4e8cd6e565580b43076f02b6c9bf604eab4c8efab1ff899a945de32d7e3c1993b2f0c320b158afb6201e7807de04186534a3be1d9c65d"
123
+ "content": "864998a54fe27eff54a6479485b70f18850ebff112547ba531474b66e4d573677fb5b1b79d4b911bf9c2bf143600bb4d41f01dccdda1ab6d3a498bdedff38a14"
124
124
  }
125
125
  ]
126
126
  },
@@ -131,11 +131,11 @@
131
131
  "hashes": [
132
132
  {
133
133
  "alg": "SHA-256",
134
- "content": "2d41c604ecdc5fb61271bdf7ccb758b549f7587779952dc16e7675ec3bc4c634"
134
+ "content": "2ac160a3a720881eb86cc3e26f2caa76ee96058ccc7a046c263c2efa8156c117"
135
135
  },
136
136
  {
137
137
  "alg": "SHA3-512",
138
- "content": "e9d808d434d7572ac408a7505d07904de20b4990176c1e802cebcb583a100ecb3b311e9742dcbba4f58478b0696751b4080d290f263a9bff2fbcbff6a0ca5971"
138
+ "content": "c86fa7ad3f8b5166374ed37b4c4ee97a842fa137d0cba9b21e064380a8dc33480e6384737f8e3b530aa5a85ccd4dbbb40f07924743e43bc520037a46694eb3d3"
139
139
  }
140
140
  ]
141
141
  },
@@ -176,11 +176,11 @@
176
176
  "hashes": [
177
177
  {
178
178
  "alg": "SHA-256",
179
- "content": "45236da64a3811cc1301477352b6c8aa29b91907f5b9c988176002648284bc52"
179
+ "content": "d7188263d12b82440a9f6c076ae86455bcaea55f628b1549de22b0ad745afa3e"
180
180
  },
181
181
  {
182
182
  "alg": "SHA3-512",
183
- "content": "9f1f6812a30abc0c973f7b67a428029bb97726dfac7da51c4cf984e01ee5373c2422f2b3d3512427d182fb0b14ec248ef5bba07e21ff72f5fb6893180d9a7498"
183
+ "content": "c637ea0ed8932251bbd55ef044d8140f61a63672e4404fa247b68a81812e88c532af47c8c35c92340ae3ab46b36bdb9fe0423ea65706888682ba4a96a10dde7b"
184
184
  }
185
185
  ]
186
186
  },
@@ -281,11 +281,11 @@
281
281
  "hashes": [
282
282
  {
283
283
  "alg": "SHA-256",
284
- "content": "95b02d8293463cbf429a6ec57285c73ab83e9c93172391d019187ae68fe3a924"
284
+ "content": "04da95ad0aae43df6869d40d08640e893669e5342b930df55a3b7fad5fd9265c"
285
285
  },
286
286
  {
287
287
  "alg": "SHA3-512",
288
- "content": "8a3367e81fe6e0ac89cc430aa7b55da3fd52e30ccdc2b790f0e36a2db699ab0f60cd1027afe7d48aba4f38101a419495e1f03edd25f87eee64d67a8b68f53aa0"
288
+ "content": "7eeb691122f0f5f83b9fe4434e6329226a1a8ab56579c4d79ef122436920cfe8682c68d89903f76093e84b970c1ea8cabde7518c3e3c889c269150e6025531fb"
289
289
  }
290
290
  ]
291
291
  },
@@ -326,11 +326,11 @@
326
326
  "hashes": [
327
327
  {
328
328
  "alg": "SHA-256",
329
- "content": "4a1b5d7a722a0717211058777c7d40d0ded814d231d1cda9e8aa94517da4b905"
329
+ "content": "7a5f4e31401505e53330cdc4b54b39f8a8b04459d6b9411676d291c583ae535f"
330
330
  },
331
331
  {
332
332
  "alg": "SHA3-512",
333
- "content": "3d14fec8a59d5724d304dce4d8863aa0f6199e96e8e1cf1d84fc8bf1e18c8cd3153c2993b66d72271257bbe557929c2d21025b89cb2dbf69c71b35850976d9a1"
333
+ "content": "b4f57d7819e255a3754d0fc758198df5f1ac4f69c6d9bdee8696987bb6ab15ffe03a461c509e832f706e46e50b4755d5d1f1b06e0442d50ff55d8439bacadfa7"
334
334
  }
335
335
  ]
336
336
  },
@@ -1226,11 +1226,11 @@
1226
1226
  "hashes": [
1227
1227
  {
1228
1228
  "alg": "SHA-256",
1229
- "content": "b10a9554dcc262a85ecd46745e310860afe530afbbcfaa62c9ddb8fa0c497cc2"
1229
+ "content": "5286c1a929e1cd8f3bf9909df7c3516c6de6752094a8767307c60a0fca29be33"
1230
1230
  },
1231
1231
  {
1232
1232
  "alg": "SHA3-512",
1233
- "content": "39ef1bf1ce48119193c306be741cc6706b0c13661ac9154c37bacd1e552811e3900caeaf41edc40698787a8cf1b8164ef49c534fe05c7415f2500a8c5e73eef5"
1233
+ "content": "81913d711b92f2a942441078359e2311e714a9bbb6c865532f237e29ab50e1d7836f3b8757038ad259ca74075fa650b2d6a2920dcf0dc715a55fe380f1f5b1e6"
1234
1234
  }
1235
1235
  ]
1236
1236
  },
@@ -1301,11 +1301,11 @@
1301
1301
  "hashes": [
1302
1302
  {
1303
1303
  "alg": "SHA-256",
1304
- "content": "2b956a7a8d528e93e6cce8c2b09e7b228495c4d688c1403f7de5f60bc62d71b1"
1304
+ "content": "36ea50afc8d8141ae994a989d82e873028261c66a79a31f857f98481ffb241bf"
1305
1305
  },
1306
1306
  {
1307
1307
  "alg": "SHA3-512",
1308
- "content": "ea8d4ff719262d817b2892dbec6e14f687afde27b7ab31ca621c6e9b0a4ccf98eb3aa5a4753281efd06f188b6d0e34bf98aaf995758cf9c3a9379bae5bb17313"
1308
+ "content": "aaec7c047f0d271822967f1758ca3aeb7e65bc7c1a24e18b572856fb7a285048357f1aa1efa516e95489a94ce5af19a04856a13f7c8dab0db78a74a53c4a836f"
1309
1309
  }
1310
1310
  ]
1311
1311
  },
@@ -1316,11 +1316,11 @@
1316
1316
  "hashes": [
1317
1317
  {
1318
1318
  "alg": "SHA-256",
1319
- "content": "60bd6a680557bc848a723a20fc50049941b658f08c72205b4afb0ae19584d837"
1319
+ "content": "f70dc1e6b2a5c138a03c75d062851dd6e725142696f73c9600cc92a4ebad0035"
1320
1320
  },
1321
1321
  {
1322
1322
  "alg": "SHA3-512",
1323
- "content": "8648247dd05f0dcb9da52f2795da8ebda8e95e2652ddf3b1aff5c8cb4d530b7d8bbe4949e061641ace658445baa4f1f5ad1ff8444a0bbb6b964e8adf0e4cd30e"
1323
+ "content": "a151fc6d212218c0672c105c4063b5ec243cc2bf9eb27d6528012279a7bdac142d0d8598cd9df2ced0a16c1e2bbe10a40fd97550fa73ad31af521cf22ae8ec63"
1324
1324
  }
1325
1325
  ]
1326
1326
  },
@@ -1346,11 +1346,11 @@
1346
1346
  "hashes": [
1347
1347
  {
1348
1348
  "alg": "SHA-256",
1349
- "content": "afb6aabb94f1044694ffacf224daadfd644141d40f03ba20aa8112e3649734b9"
1349
+ "content": "4d50b95ac5732a5236e208f6ad1b1deb2654cc38aa0c29ca62a659874694c04d"
1350
1350
  },
1351
1351
  {
1352
1352
  "alg": "SHA3-512",
1353
- "content": "d613ac08b4761b55dc1660bd99de46ca9dc3f0d8d3ec0e67b6fd5987098a9b580f42d3e88134c57773c4c969bacd64ee5f48b2bb43cb1445b94e6a5afa0f3bd9"
1353
+ "content": "953e338a5a20fb65c6e93e78225c292eecfeb8a4a7cfe76d5c6c6b9ed5f13c9fd074dfb1d30d0c75dc8940fa118dfee652a1125af68c2bacfa597c64cefaf4e1"
1354
1354
  }
1355
1355
  ]
1356
1356
  },
@@ -1511,11 +1511,11 @@
1511
1511
  "hashes": [
1512
1512
  {
1513
1513
  "alg": "SHA-256",
1514
- "content": "73a41241f2b425aebada9ea641590cb8d596390f93f9e87d07c35f3cb1b1421c"
1514
+ "content": "1a362fbda4417ad83beb8053c9107a1ab55dfb717c41903030bf5853596acb86"
1515
1515
  },
1516
1516
  {
1517
1517
  "alg": "SHA3-512",
1518
- "content": "53728b018b92ab98300b76b097884c2984a2c7b56f4bf059c5be7b84c37eb8084fd90673588aba7f2f02b14b0e9959010026aa4684d3d6660e705f41308439cc"
1518
+ "content": "ce0ef6776dd4742a04414ff2a8190c24b8b6a91f23b42cab0dafcb2184b9d1fd5ec493dd18c25c4e2315ca0442bec8a25c71f4105e7e2b33f7a3e480e367353f"
1519
1519
  }
1520
1520
  ]
1521
1521
  },
@@ -1571,11 +1571,11 @@
1571
1571
  "hashes": [
1572
1572
  {
1573
1573
  "alg": "SHA-256",
1574
- "content": "74a507efcd2805b98ebd2fe22fcccaf25756200684b62d1f75a33b0336f7f813"
1574
+ "content": "a94cd7378c1f7be400c8d62cf40037bd20a7ceed47f8aa94a230faceb24dbc86"
1575
1575
  },
1576
1576
  {
1577
1577
  "alg": "SHA3-512",
1578
- "content": "5b9ce0a18861d103e653e46478d8b129c2745381b2cd17d55063fc290e6c3dd718130bb258390dad086af794c323b763dcfc8502427d01f70209e0e856405a1a"
1578
+ "content": "0dfd3a618f89705b57bdf632a9c3d1c5d7e8386f18cb9b5fdb6e905def8f441095c8ff2cfe1061a900e1db4e971b7985ff2df5bd3eb9bed4a4d69d2346a1058c"
1579
1579
  }
1580
1580
  ]
1581
1581
  },
@@ -1586,11 +1586,11 @@
1586
1586
  "hashes": [
1587
1587
  {
1588
1588
  "alg": "SHA-256",
1589
- "content": "d3e8dbc27d2a48759a4f40d7e075801065814bc3d971775c2272bc1f26dc1a89"
1589
+ "content": "da4a2d83d2b91e018b95c91076ca2af960a575fe25c50fbedc06b376f60d4d0f"
1590
1590
  },
1591
1591
  {
1592
1592
  "alg": "SHA3-512",
1593
- "content": "73ef5fd057c8257b4187cd429499e7494d290e0c9792f8e779d8909a9f77e13f8d1d282489ed79c855fa83a45464eb5acbccc603d4baf86325d2bc136ae60a11"
1593
+ "content": "70efdfefa759f40fb50494524c37167c05a0e6f07521080f167837bdb0b55b1cc3eb35ce16cdc33ff1f019aa8e81eebb1eab62a08c28542cdafff7f8f0d0739a"
1594
1594
  }
1595
1595
  ]
1596
1596
  },
@@ -1631,11 +1631,11 @@
1631
1631
  "hashes": [
1632
1632
  {
1633
1633
  "alg": "SHA-256",
1634
- "content": "32ac5e60da442fd25a7283711c0caf23a0363c1b8e8dee5ce79c80a5f26d45c8"
1634
+ "content": "4c5869064e22ac74b1e5cc7214bf8ef09a53326a4657b8c9b62be7d6ce98d4a0"
1635
1635
  },
1636
1636
  {
1637
1637
  "alg": "SHA3-512",
1638
- "content": "ed6d8990737340ab604f7354b54b2662979b5b59f853ea53e216e9b17ab6bf73fc807f1dda5bf904ccaa4081d6ae7698f0f2f326292c7bc01d56adc694d7cace"
1638
+ "content": "6f5205ec7297ae100a1ec6528ca47ad6c825b0ab9d794c5b416582f98b20c5846145f6002d5457028e2cc02d07306800209ff2eff2d49a0e235fce40c4c0fe2f"
1639
1639
  }
1640
1640
  ]
1641
1641
  },
@@ -1751,11 +1751,11 @@
1751
1751
  "hashes": [
1752
1752
  {
1753
1753
  "alg": "SHA-256",
1754
- "content": "178af7478515ce7e87d7daadbecccfedc69b819058d5b49f0fd0a9595453c52c"
1754
+ "content": "cfe4088da8f1fdddb4218f88bbadce04004046ad7105c5e16cc58fdf1aa958b8"
1755
1755
  },
1756
1756
  {
1757
1757
  "alg": "SHA3-512",
1758
- "content": "c44fdbbf40859f2beb9243e8084002d7a7929b1de50b1cd896afbcac54c1ad234d3fdce1cfcbdeaeb8a3eb25479cf4bfa6fca05c5d17321eed36f16c97596cff"
1758
+ "content": "1fcf44033f7dff0ec9bb7acfdeac9e72f36ce7da5390a6d28038abd634acb9312b0cc0b3114ea5df67e58f116389432036784d8d922a55ae7eb1b22c80423bc7"
1759
1759
  }
1760
1760
  ]
1761
1761
  },
@@ -1811,11 +1811,11 @@
1811
1811
  "hashes": [
1812
1812
  {
1813
1813
  "alg": "SHA-256",
1814
- "content": "e16aa7a99b3ea873c3977e8649665f4704aa890595654b8f851ba0f5565d0518"
1814
+ "content": "e17ffb803ef3f80afe2be092331ab23095076b0cb9c14d39eae85af20739d93d"
1815
1815
  },
1816
1816
  {
1817
1817
  "alg": "SHA3-512",
1818
- "content": "168c82da32d91b2a9b012948939dea72523b1c6ebe4da06cb49ca27dbefc8ead66c834f1be68a684f049114ebd106903cac6ef5b98e0a7830b8b3e1170f4e865"
1818
+ "content": "39d5373a2e579971dd171b131d42c2b345ab293af86ceb16ba16d350cf28f095e5c4aca6c6aa3055af4508d5b351786651524bbac9d5bf3b8b6d1b34fffc2515"
1819
1819
  }
1820
1820
  ]
1821
1821
  },
@@ -1841,11 +1841,11 @@
1841
1841
  "hashes": [
1842
1842
  {
1843
1843
  "alg": "SHA-256",
1844
- "content": "13b2d81178dc18c38f9defd74ad4cfaa01f78fa14c3d2bc8eaed5375e94048e2"
1844
+ "content": "96f7c1b43cdaaa7c96faeb33fec29b9a2e7d1a677c9979ec60de6b53942afdc0"
1845
1845
  },
1846
1846
  {
1847
1847
  "alg": "SHA3-512",
1848
- "content": "e92f1a52af1596d1c0d1ef05b51c7ebae3b3d53a23e8e87479d657ca8b1190020c48e3e525c57439c6621eeb4b2b43d56220f6810c91ee6ed50b040e9bfd0931"
1848
+ "content": "6fbb01ee40ce8a9f5988118491d7c4b219ecbc5ab6b77240b040070042a20a9ea478b81d31397382c1c364edc16454cccafa164180db8ae1da5e35be4a5cff40"
1849
1849
  }
1850
1850
  ]
1851
1851
  },
@@ -2216,11 +2216,11 @@
2216
2216
  "hashes": [
2217
2217
  {
2218
2218
  "alg": "SHA-256",
2219
- "content": "e8c7473d7a1f87d27aeab39cefa54c10c773831c3c3b0a786c81f9ac9a50d6e3"
2219
+ "content": "8748d74589b7cad24ca8fb7cdb8a425b16830ac1709c08e0294bb65bea218cc6"
2220
2220
  },
2221
2221
  {
2222
2222
  "alg": "SHA3-512",
2223
- "content": "2e713011e0ac5a87846133740084f1cabdf7c728bb5cfb0c49b835b2a71948815d5623c08ffe50534b2c553bd1208e0213952df7d789fbea03a429c92925ba8b"
2223
+ "content": "aa40992693b3a2c4d901801729858c97ec877ff249d50569cf470a2050a60ea36651456dc9b2797ca930c3faff69fb5fd1d4f28a2296bc485741287f7a804272"
2224
2224
  }
2225
2225
  ]
2226
2226
  },
@@ -2576,11 +2576,11 @@
2576
2576
  "hashes": [
2577
2577
  {
2578
2578
  "alg": "SHA-256",
2579
- "content": "6174a20b777a82c83941ef64d27e8c7e4091649358930ac1ba564a0ad4d9399f"
2579
+ "content": "8d1137c3270763f1c90a3fa8c1c19ab5dc769623c1a35d6a71859bdb8cca2a3e"
2580
2580
  },
2581
2581
  {
2582
2582
  "alg": "SHA3-512",
2583
- "content": "550ca5bec39365ff37bcbf607a5d06c5a59be78832c6845c7c2edc8d518a9a62d5a794728403878e303686e779da5ba2cd39e88f212bd9fe1a7a0b1427f36def"
2583
+ "content": "f74bdbaf25156a339d390a84308f91b087ce2413ab46e9061603d38b4076253f89713f66010daa5da3a07c72951b4875523440b694db0402eb1897ba2f4b70b8"
2584
2584
  }
2585
2585
  ]
2586
2586
  },
@@ -2591,11 +2591,11 @@
2591
2591
  "hashes": [
2592
2592
  {
2593
2593
  "alg": "SHA-256",
2594
- "content": "5ec3800a0049b2123aff67bfab4ff28491a86d2daeb712283e5e88b10c3d5d7b"
2594
+ "content": "6aab2e400d1e87df7ac2b6f0a17dac6aa99723b217258c4a7b446703d1521775"
2595
2595
  },
2596
2596
  {
2597
2597
  "alg": "SHA3-512",
2598
- "content": "c1695e83058d929e3a05426e46eabf36d12f7c2fd7f8063a9654c94566a1b560d075289123fc0c8db9ad711254a50a0331099eac8fea02be1b3eb2f8423b964a"
2598
+ "content": "79ceae57c211d1941d62618f149bc4e35b6f97c78d61ad892f8dba1421511a060e4ba1efb6215c5fa2270677d0be998769dccb5b11351b72b067666981a06779"
2599
2599
  }
2600
2600
  ]
2601
2601
  },
@@ -2981,11 +2981,11 @@
2981
2981
  "hashes": [
2982
2982
  {
2983
2983
  "alg": "SHA-256",
2984
- "content": "eb526fdd9fff84943fff951ca7762de4304adbf3212eb26c73521a8979bb776d"
2984
+ "content": "ad33faa8dddbeb23fed88f464205c630e3fa50c669d3e1ba7ed54f23719efd55"
2985
2985
  },
2986
2986
  {
2987
2987
  "alg": "SHA3-512",
2988
- "content": "6e79d74fdd6c3e495ea81fd8f847255861e46123f9ea127cfb2c98e55f57b6d5a73bd4e197b811ad76881ffa1f25d8fca522516282ef88653345676c8d23ea60"
2988
+ "content": "02be368f866e7f97cb67bc3dc5593bae2bed67cc325518094736d76107f907e4f32152b7a424a0ffd47c5898111fb90a25aff50544feb9c7ebf6a86a177f176a"
2989
2989
  }
2990
2990
  ]
2991
2991
  },
@@ -5,10 +5,17 @@
5
5
  * scripts/check-test-count.js — v0.13.2 canonical-test-count predeploy gate.
6
6
  *
7
7
  * Why this exists. The v0.12 audit flagged that nothing in the suite asserts
8
- * "we expect N tests today." A test file accidentally deleted, a skip-all
9
- * mistakenly committed, or a misnamed file glob-excluded would all silently
10
- * drop tests without anyone noticing. The lint + diff-coverage gates catch
11
- * source changes; this gate catches test-set shrinkage.
8
+ * "we expect N tests today." A deleted test file, a removed `test(` call, or a
9
+ * misnamed file glob-excluded would all silently drop tests without anyone
10
+ * noticing. The lint + diff-coverage gates catch source changes; this gate
11
+ * catches test-set shrinkage.
12
+ *
13
+ * Scope + blind spot. This counts test DECLARATIONS, so it detects deleted
14
+ * files / removed `test(` calls / glob-exclusions. It does NOT detect a test
15
+ * neutered in place: `test('name', { skip: true }, fn)` and `test.skip(` both
16
+ * still count as one declaration, so flipping a running test to permanently
17
+ * skipped leaves the count unchanged. Guarding against skip-in-place would
18
+ * need runnable-vs-skipped tracking; that is out of scope for this gate.
12
19
  *
13
20
  * Mechanism: count `test(`, `test.only(`, and `test.skip(` declarations
14
21
  * across `tests/*.test.js` via static analysis (faster than running). Compare
@@ -117,7 +117,7 @@ A pen test scoped to layers 1 and (partly) 7 — i.e. "web app + network + nomin
117
117
  | ISO/IEC 27001:2022 | A.5.34 (Privacy and protection of PII) — note: the actually relevant clause for independent review is **A.5.35 (Independent review of information security)** and **A.8.29 (Security testing in development and acceptance)** | A.5.35 requires independent review of the information security approach at planned intervals or when significant changes occur. The clause is methodology-agnostic — auditors accept a network/web pen test as evidence even when AI surfaces are in production. A.8.29 mandates security testing of new and changed information systems, but does not define what an adequate test of an AI system looks like. |
118
118
  | MITRE ATT&CK Enterprise (v19.0) | Whole matrix | The enterprise matrix does not contain prompt-injection as a technique. AI-as-C2 (SesameOp pattern) is absent from ATT&CK as of mid-2026. Adversary emulation programs that are ATT&CK-only and not ATLAS-extended will not include the mid-2026 dominant new tradecraft in their playbooks. ATLAS v5.6.0 covers it — but ATLAS is not yet a standard requirement for pen testing certification or scoping. |
119
119
 
120
- > Global coverage note (AGENTS.md rule #5): the above table spans US (NIST 800-115, ATT&CK), EU (NIS2, TIBER-EU under DORA), UK (CBEST), AU (ISM/Essential 8), and ISO 27001:2022. US-only pen test scoping is incomplete.
120
+ > Global coverage note: the above table spans US (NIST 800-115, ATT&CK), EU (NIS2, TIBER-EU under DORA), UK (CBEST), AU (ISM/Essential 8), and ISO 27001:2022. US-only pen test scoping is incomplete.
121
121
 
122
122
  ---
123
123
 
@@ -136,7 +136,7 @@ Pen testers must emulate both classical and AI-class chains. The table below map
136
136
  | Exfiltration | T1041 (Exfil Over C2 Channel) | AML.T0043 (Craft Adversarial Data) → vector-store retrieval forced to surface proprietary chunks | RAG corpus is not enumerated in classical ASM |
137
137
  | Defense Evasion | T1027 (Obfuscated Files or Information) | AML.T0051 with adaptive payload generation per attempt | Pen test reports that show "no anomalies" against AI-generated payloads understate evasion |
138
138
 
139
- Gap flag legend: every row above maps to at least one framework gap declared in `framework_gaps` frontmatter, ensuring AGENTS.md rule #4 (no orphaned controls) holds in reverse — every TTP we emulate has a framework gap it exposes.
139
+ Gap flag legend: every row above maps to at least one framework gap declared in `framework_gaps` frontmatter, ensuring no orphaned controls in reverse — every TTP we emulate has a framework gap it exposes.
140
140
 
141
141
  ---
142
142
 
@@ -227,13 +227,13 @@ If any of the AI-surface categories are reported as "none in scope" by the custo
227
227
  - DNS, subdomain enumeration, certificate transparency.
228
228
  - Code-host recon: public GitHub orgs for leaked tokens, exposed `.env`, branch-protection lapses.
229
229
  - CVE / advisory cross-walk: pull current `data/cve-catalog.json` entries, cross-reference each in-scope component against CSAF advisories and OSV.dev for OSS components.
230
- - EPSS-anchored prioritisation: rank candidate vulnerabilities by EPSS percentile and CISA KEV status; CVSS alone is not the ranker (AGENTS.md rule #3).
230
+ - EPSS-anchored prioritisation: rank candidate vulnerabilities by EPSS percentile and CISA KEV status; CVSS alone is not the ranker.
231
231
 
232
232
  **Step 4 — Vulnerability identification (classical surface)**
233
233
 
234
234
  - Authenticated and unauthenticated scans where authorised (Nessus / Nuclei / Burp / equivalent).
235
235
  - Manual webapp testing per OWASP WSTG v5 sections 4.1–4.12.
236
- - CWE coverage from `data/cwe-catalog.json` cross-walked to findings — CWE-79 (XSS), CWE-89 (SQLi), CWE-78 (OS command injection), CWE-787 (out-of-bounds write) are the load-bearing classical categories for the chains tested here; AGENTS.md rule #4 (no orphaned controls) requires every finding be CWE-mapped.
236
+ - CWE coverage from `data/cwe-catalog.json` cross-walked to findings — CWE-79 (XSS), CWE-89 (SQLi), CWE-78 (OS command injection), CWE-787 (out-of-bounds write) are the load-bearing classical categories for the chains tested here; the no-orphaned-controls discipline requires every finding be CWE-mapped.
237
237
 
238
238
  **Step 5 — AI-surface enumeration and probing**
239
239
 
@@ -268,7 +268,7 @@ Apply foundational principle #3. Record every implicit-trust crossing the test e
268
268
 
269
269
  Map each finding to:
270
270
 
271
- - RWEP score (from `lib/scoring.js`, never CVSS alone — AGENTS.md rule #3).
271
+ - RWEP score (from `lib/scoring.js`, never CVSS alone).
272
272
  - EPSS percentile and CISA KEV status (from `data/exploit-availability.json`).
273
273
  - CWE category (from `data/cwe-catalog.json`).
274
274
  - D3FEND defensive countermeasure (from `data/d3fend-catalog.json`) — see section 8 below.
@@ -384,4 +384,4 @@ The findings the pen test typically produces map to D3FEND v1.3.0+ defensive cou
384
384
  | Excess service-account / AI-agent / MCP-tool privilege (least-privilege failure) | D3-EAL (Execution Activity Logging) | Logs principal actions with context so excess-privilege exercise is detectable post-hoc and reviewable against a least-privilege baseline |
385
385
  | Unsigned MCP server installed by developer client (AML.T0010) | D3-CSPP (Credentialed Scan / Software Provenance Policy — per `data/d3fend-catalog.json`) | Enforces signed-manifest and provenance verification before MCP server load; rejects unsigned tool surfaces at install time |
386
386
 
387
- Pen test findings outside this short table map to D3FEND countermeasures present in `data/d3fend-catalog.json` (D3-EHB, D3-MFA, D3-NI, D3-PHRA, D3-PA, D3-IOPR, etc.); the tester selects the counter whose technique-coverage description in the catalog matches the chain the finding exploited. AGENTS.md rule #4 (no orphaned controls) is satisfied because every recommended counter maps to a TTP the test actually emulated and a CWE category the finding exposed.
387
+ Pen test findings outside this short table map to D3FEND countermeasures present in `data/d3fend-catalog.json` (D3-EHB, D3-MFA, D3-NI, D3-PHRA, D3-PA, D3-IOPR, etc.); the tester selects the counter whose technique-coverage description in the catalog matches the chain the finding exploited. No orphaned controls: every recommended counter maps to a TTP the test actually emulated and a CWE category the finding exposed.
@@ -188,7 +188,7 @@ This procedure threads defense in depth, least privilege, and zero trust through
188
188
 
189
189
  **Defense in depth.** Multi-layer authentication at every privilege boundary: AAL3 / FIDO2 device-bound passkey for human admins (skill `identity-assurance`); per-account SCP / Org Policy / Management Group denies; cross-account external-id on every assume-role trust; KMS / Cloud KMS / Key Vault key-policy least-privilege; resource-policy default-deny; network-layer segmentation (D3-NTA) between accounts and between zones; behavioural CloudTrail / Cloud Audit Log analytics (D3-IOPR) on top of posture tools; out-of-band confirmation on root-equivalent actions; help-desk OOB-callback for MFA resets.
190
190
 
191
- **Least privilege.** Per-principal scope; CWE-863 default-permissive role assignments are the dominant failing. External-id on every cross-account trust; non-wildcard subject claims on every federated OIDC trust; audience-pinned SAML; session-policy tightening on every AssumeRole / AssumeRoleWithSAML / AssumeRoleWithWebIdentity to scope-down beyond the role's permissions; KMS key-policy explicit-allow rather than IAM-policy-via-default-deny; managed-identity scope-token TTL ceilings (AGENTS.md cloud-IAM extension: <= 1 hour for non-CAE-enabled, <= 24 hours with CAE).
191
+ **Least privilege.** Per-principal scope; CWE-863 default-permissive role assignments are the dominant failing. External-id on every cross-account trust; non-wildcard subject claims on every federated OIDC trust; audience-pinned SAML; session-policy tightening on every AssumeRole / AssumeRoleWithSAML / AssumeRoleWithWebIdentity to scope-down beyond the role's permissions; KMS key-policy explicit-allow rather than IAM-policy-via-default-deny; managed-identity scope-token TTL ceilings (scope-token TTL ceilings: <= 1 hour for non-CAE-enabled, <= 24 hours with CAE).
192
192
 
193
193
  **Zero trust.** Every action re-evaluated, not session-trusted; root / global-admin actions require step-up; cross-account assume-role chains monitored continuously; federated trust treated as untrusted-until-claim-validated; managed-identity tokens bound to instance identity where the CSP supports it; AI-channel egress (LLM API calls from instances) explicitly allowlisted on the administrative jump zone.
194
194
 
@@ -373,7 +373,7 @@ Ask: "Inventory every IAM role with a trust policy referencing token.actions.git
373
373
 
374
374
  ## Defensive Countermeasure Mapping
375
375
 
376
- Per AGENTS.md optional 8th section. Maps cloud-IAM offensive findings to MITRE D3FEND IDs from `data/d3fend-catalog.json`, with explicit defense-in-depth layer position, least-privilege scope, zero-trust posture, and AI-pipeline applicability.
376
+ Maps cloud-IAM offensive findings to MITRE D3FEND IDs from `data/d3fend-catalog.json`, with explicit defense-in-depth layer position, least-privilege scope, zero-trust posture, and AI-pipeline applicability.
377
377
 
378
378
  | D3FEND ID | Technique | Layer Position | Least-Privilege Scope | Zero-Trust Posture | AI-Pipeline Applicability |
379
379
  |---|---|---|---|---|---|
@@ -181,7 +181,7 @@ In all three, the SCA evidence chain (the customer's authenticated session, the
181
181
 
182
182
  ## Analysis Procedure
183
183
 
184
- This procedure threads the three foundational design principles required by AGENTS.md skill-format spec (defense in depth, least privilege, zero trust) through every step.
184
+ This procedure threads the three foundational design principles (defense in depth, least privilege, zero trust) through every step.
185
185
 
186
186
  **Defense in depth.** Multi-layer authentication for high-value transactions: AAL3 / FIDO2 device-bound passkey at customer layer (skill `identity-assurance`); 4-eyes principle on payment release; SWIFT CSCF 4.1/4.2 password management plus 5.1 logical access; CSCF 1.1 secure-zone segregation; network segmentation (D3-NI) between internet-banking, core-banking, treasury, SWIFT zone, fraud-detection; transaction monitoring (D3-NTA) at multiple layers (host, network, application, payment-message); model-output review for AI-mediated transactions; out-of-band confirmation for any AI-agent-initiated payment above scoped threshold.
187
187