@blamejs/exceptd-skills 0.21.3 → 0.21.5
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 +10 -0
- package/data/_indexes/_meta.json +8 -8
- package/data/_indexes/activity-feed.json +4 -4
- package/data/_indexes/catalog-summaries.json +7 -7
- package/data/_indexes/chains.json +2 -2
- package/data/attack-techniques.json +6 -0
- package/data/cve-catalog.json +218 -1
- package/data/cwe-catalog.json +2 -0
- package/data/framework-control-gaps.json +10 -0
- package/data/zeroday-lessons.json +162 -2
- package/lib/cve-batch.js +8 -0
- package/lib/gap-detectors.js +64 -2
- package/manifest.json +53 -53
- package/package.json +2 -2
- package/sbom.cdx.json +35 -35
- package/scripts/audit-catalog-gaps.js +4 -12
- package/scripts/check-catalog-gap-budget.js +6 -1
- package/scripts/release.js +13 -5
package/sbom.cdx.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:99dafa74-a1f1-4f58-968c-6d582a69b82d",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "2026-09-
|
|
7
|
+
"timestamp": "2026-09-27T00:00:00.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.21.
|
|
12
|
+
"version": "0.21.5"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.21.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.21.5",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.21.
|
|
20
|
-
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 51 skills, 11 catalogs (
|
|
19
|
+
"version": "0.21.5",
|
|
20
|
+
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 51 skills, 11 catalogs (1754 CVEs / 241 CWEs / 794 ATT&CK + ICS / 174 ATLAS / 468 D3FEND / 8889 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
|
{
|
|
23
23
|
"license": {
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
|
-
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.21.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.21.5",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "f85f2b74f092b1146f7e6a7c3b6093c0e1398279d0a8208f8e74329a25f0a6e6"
|
|
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.21.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.21.5"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"type": "vcs",
|
|
@@ -124,11 +124,11 @@
|
|
|
124
124
|
"hashes": [
|
|
125
125
|
{
|
|
126
126
|
"alg": "SHA-256",
|
|
127
|
-
"content": "
|
|
127
|
+
"content": "8edeb11bc2c862aeb003abf349ce50a0d45427c1be5bad0f9c7660e57cafbb97"
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
"alg": "SHA3-512",
|
|
131
|
-
"content": "
|
|
131
|
+
"content": "88e705b6a843f3baa45605ba9e7ee553f17068ea35d3e87fed625f3540abe066170bc70a09624f4916902c40bdd9e5e054a31f0e05e3171bf97f647eaada4dd4"
|
|
132
132
|
}
|
|
133
133
|
]
|
|
134
134
|
},
|
|
@@ -319,11 +319,11 @@
|
|
|
319
319
|
"hashes": [
|
|
320
320
|
{
|
|
321
321
|
"alg": "SHA-256",
|
|
322
|
-
"content": "
|
|
322
|
+
"content": "f004eadd708c9243aea6667e683451b29921b6cec45d1aec9bf63b4b49493b13"
|
|
323
323
|
},
|
|
324
324
|
{
|
|
325
325
|
"alg": "SHA3-512",
|
|
326
|
-
"content": "
|
|
326
|
+
"content": "a43b1206ad4f3aa01e48f3e5eba4ae3c91941134e1a6a11ff804c8d54e16f63f4f1d8d828de30cabe885d4985fe4b1362a9124f48b4449a7d70fddd5890bed97"
|
|
327
327
|
}
|
|
328
328
|
]
|
|
329
329
|
},
|
|
@@ -334,11 +334,11 @@
|
|
|
334
334
|
"hashes": [
|
|
335
335
|
{
|
|
336
336
|
"alg": "SHA-256",
|
|
337
|
-
"content": "
|
|
337
|
+
"content": "deddba50e7f8d16528b04007715a1574211d058afc403d36c475ca8380e89eec"
|
|
338
338
|
},
|
|
339
339
|
{
|
|
340
340
|
"alg": "SHA3-512",
|
|
341
|
-
"content": "
|
|
341
|
+
"content": "92d9204f0f55404b3f5b0489a7594aecfaf33dc5041341eaeec1857ab61876aec292d8b6eb22b57a2d8f17228934b2395260a9908b5aaf40d1de453ec98c7851"
|
|
342
342
|
}
|
|
343
343
|
]
|
|
344
344
|
},
|
|
@@ -349,11 +349,11 @@
|
|
|
349
349
|
"hashes": [
|
|
350
350
|
{
|
|
351
351
|
"alg": "SHA-256",
|
|
352
|
-
"content": "
|
|
352
|
+
"content": "4a11ae07ebfb69c9f7321a51468d36335cfa42f7c049d24439e39ed99fda18d8"
|
|
353
353
|
},
|
|
354
354
|
{
|
|
355
355
|
"alg": "SHA3-512",
|
|
356
|
-
"content": "
|
|
356
|
+
"content": "58cf99e0daaf3db6679674469dfb1bdb66dc2dbd66d3608d9370399f5010290439bfd2d7eea4d5f0cc0cab8c649f99d61e92d6e831bb438d7eda273661f975b2"
|
|
357
357
|
}
|
|
358
358
|
]
|
|
359
359
|
},
|
|
@@ -409,11 +409,11 @@
|
|
|
409
409
|
"hashes": [
|
|
410
410
|
{
|
|
411
411
|
"alg": "SHA-256",
|
|
412
|
-
"content": "
|
|
412
|
+
"content": "8ddc65d007fd67c9f6ef3a9f818b09e8025af72d59532a4785bdba956dd01dfd"
|
|
413
413
|
},
|
|
414
414
|
{
|
|
415
415
|
"alg": "SHA3-512",
|
|
416
|
-
"content": "
|
|
416
|
+
"content": "7fc815f99463ffab4d16d3647843cdbc66215c41ed91b75448519c9452e80844844c73ea7179c90d161e2ae8384356a755e872203ad8b68641dc108d2a778b61"
|
|
417
417
|
}
|
|
418
418
|
]
|
|
419
419
|
},
|
|
@@ -949,11 +949,11 @@
|
|
|
949
949
|
"hashes": [
|
|
950
950
|
{
|
|
951
951
|
"alg": "SHA-256",
|
|
952
|
-
"content": "
|
|
952
|
+
"content": "a8fec7dd4cc7fd2b817d593c07e697b94f32628d9b197a4d7d3d9bafda7754a4"
|
|
953
953
|
},
|
|
954
954
|
{
|
|
955
955
|
"alg": "SHA3-512",
|
|
956
|
-
"content": "
|
|
956
|
+
"content": "b7c0a41d1988dfdc7874986da7bd99335ef1a925abb7aa0c634ce6aa8504abe0255186cabb008d9cb065ff098ed4d467bea2b315482f9c466bd1f76076ced7d0"
|
|
957
957
|
}
|
|
958
958
|
]
|
|
959
959
|
},
|
|
@@ -1309,11 +1309,11 @@
|
|
|
1309
1309
|
"hashes": [
|
|
1310
1310
|
{
|
|
1311
1311
|
"alg": "SHA-256",
|
|
1312
|
-
"content": "
|
|
1312
|
+
"content": "45cb7d334468884ff84c74d9fe1e1c5091b6e1e414443769455d7276314c2e6a"
|
|
1313
1313
|
},
|
|
1314
1314
|
{
|
|
1315
1315
|
"alg": "SHA3-512",
|
|
1316
|
-
"content": "
|
|
1316
|
+
"content": "1f1df26ba3909cea83a5c29213a7031ca3c7649db2c16a50be316fb9d33508c11b351d05009f3911ebfccb06febda306b1dd998c14c1e5beb74bbcce75882fc0"
|
|
1317
1317
|
}
|
|
1318
1318
|
]
|
|
1319
1319
|
},
|
|
@@ -1459,11 +1459,11 @@
|
|
|
1459
1459
|
"hashes": [
|
|
1460
1460
|
{
|
|
1461
1461
|
"alg": "SHA-256",
|
|
1462
|
-
"content": "
|
|
1462
|
+
"content": "0bce0c11c11549e8151465c9902deedad94e5c694b0e4deb79c2744d36ccf799"
|
|
1463
1463
|
},
|
|
1464
1464
|
{
|
|
1465
1465
|
"alg": "SHA3-512",
|
|
1466
|
-
"content": "
|
|
1466
|
+
"content": "a4b5395ae33d32c5c0a296a1ee0c9f60e708a77831b5ba2364aeb3932cb7c67593397b6130916bf1003c117e2e267f66a93e1c68d541e61083e7d8955c10c2b4"
|
|
1467
1467
|
}
|
|
1468
1468
|
]
|
|
1469
1469
|
},
|
|
@@ -1954,11 +1954,11 @@
|
|
|
1954
1954
|
"hashes": [
|
|
1955
1955
|
{
|
|
1956
1956
|
"alg": "SHA-256",
|
|
1957
|
-
"content": "
|
|
1957
|
+
"content": "02398f4bcc28238623b56128e7e517d6b33375360be62c7cf799b3896d1b5a93"
|
|
1958
1958
|
},
|
|
1959
1959
|
{
|
|
1960
1960
|
"alg": "SHA3-512",
|
|
1961
|
-
"content": "
|
|
1961
|
+
"content": "46aaab8c7783e42f02fabf5143b3a5534ef83e77a50455e8e30715a9b080b9f26618630f1ff79e272c56b91de0188c38fcc38094d32559e603aafd85fcc0a1e5"
|
|
1962
1962
|
}
|
|
1963
1963
|
]
|
|
1964
1964
|
},
|
|
@@ -2074,11 +2074,11 @@
|
|
|
2074
2074
|
"hashes": [
|
|
2075
2075
|
{
|
|
2076
2076
|
"alg": "SHA-256",
|
|
2077
|
-
"content": "
|
|
2077
|
+
"content": "a5d0c91f21d55c9da2140bc735108caf2f036a0a7314e3c2b38a60a7390dc6d7"
|
|
2078
2078
|
},
|
|
2079
2079
|
{
|
|
2080
2080
|
"alg": "SHA3-512",
|
|
2081
|
-
"content": "
|
|
2081
|
+
"content": "e22e5a674211276bdb6ad47661b80ca4e080a35d6d96d1415149934b2db84cfecd5d4af53cab3341cfe82cf27c00a01b717566f48e0cf82b469301a8a128f112"
|
|
2082
2082
|
}
|
|
2083
2083
|
]
|
|
2084
2084
|
},
|
|
@@ -2089,11 +2089,11 @@
|
|
|
2089
2089
|
"hashes": [
|
|
2090
2090
|
{
|
|
2091
2091
|
"alg": "SHA-256",
|
|
2092
|
-
"content": "
|
|
2092
|
+
"content": "15beed039cb1022e4dd040d0e26e7fb873d04124602f44af2168a0b19cb8fbb2"
|
|
2093
2093
|
},
|
|
2094
2094
|
{
|
|
2095
2095
|
"alg": "SHA3-512",
|
|
2096
|
-
"content": "
|
|
2096
|
+
"content": "e508f4ecaed05572be153a19f6f25d2bb29a2ae8370507a9dea0cd06e423844df041e299819d752b25ffd4bbdefff706900a3c7d72b6703c91dbbc6f65581b76"
|
|
2097
2097
|
}
|
|
2098
2098
|
]
|
|
2099
2099
|
},
|
|
@@ -2404,11 +2404,11 @@
|
|
|
2404
2404
|
"hashes": [
|
|
2405
2405
|
{
|
|
2406
2406
|
"alg": "SHA-256",
|
|
2407
|
-
"content": "
|
|
2407
|
+
"content": "2ecbfdc338534054d1b2f51e43a5a0c7d78b62f01da4a854df5f8b8b560807fd"
|
|
2408
2408
|
},
|
|
2409
2409
|
{
|
|
2410
2410
|
"alg": "SHA3-512",
|
|
2411
|
-
"content": "
|
|
2411
|
+
"content": "7c8de0d6aac1bd6d6f92887145c3f0bff734e94a8bcdb04faa68a0197a988fb84ccf9e461a5e5b456765896cba532a9bb57c1a89cf62b877d50fcb4185642aef"
|
|
2412
2412
|
}
|
|
2413
2413
|
]
|
|
2414
2414
|
},
|
|
@@ -2824,11 +2824,11 @@
|
|
|
2824
2824
|
"hashes": [
|
|
2825
2825
|
{
|
|
2826
2826
|
"alg": "SHA-256",
|
|
2827
|
-
"content": "
|
|
2827
|
+
"content": "b00dc7f39e23d5cb3a28a26562865d8cb5210c3ce757c68c1c52f78396dcf506"
|
|
2828
2828
|
},
|
|
2829
2829
|
{
|
|
2830
2830
|
"alg": "SHA3-512",
|
|
2831
|
-
"content": "
|
|
2831
|
+
"content": "3db79e84a0b9299018cd8282d9d8c5988959c8cd64a2bfb96d358184ea930b22d6f02be61bdfb872173ff8f8536f6d1b4f249d342846342fc6922501fa106f69"
|
|
2832
2832
|
}
|
|
2833
2833
|
]
|
|
2834
2834
|
},
|
|
@@ -249,19 +249,11 @@ function emitPretty(report) {
|
|
|
249
249
|
return lines.join("\n");
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
// Names `--class` accepts; the extended ones are implemented in lib/gap-detectors.js
|
|
253
|
-
|
|
254
|
-
"missing-context", "dangling-ref", "draft-debt",
|
|
255
|
-
"content-quality", "temporal-staleness", "logical-consistency",
|
|
256
|
-
"cross-ref-completeness", "schema-evolution", "operator-action-sla",
|
|
257
|
-
"unused-orphan"
|
|
258
|
-
]);
|
|
259
|
-
const EXTENDED_CLASS_NAMES = new Set([
|
|
260
|
-
"content-quality", "temporal-staleness", "logical-consistency",
|
|
261
|
-
"cross-ref-completeness", "schema-evolution", "operator-action-sla",
|
|
262
|
-
"unused-orphan"
|
|
263
|
-
]);
|
|
252
|
+
// Names `--class` accepts; the extended ones are implemented in lib/gap-detectors.js
|
|
253
|
+
// and taken from its DETECTOR_CLASSES.
|
|
264
254
|
const EXTENDED_DETECTORS = require("../lib/gap-detectors.js");
|
|
255
|
+
const EXTENDED_CLASS_NAMES = new Set(EXTENDED_DETECTORS.DETECTOR_CLASSES);
|
|
256
|
+
const VALID_CLASSES = new Set(["missing-context", "dangling-ref", "draft-debt", ...EXTENDED_DETECTORS.DETECTOR_CLASSES]);
|
|
265
257
|
|
|
266
258
|
function main() {
|
|
267
259
|
const opts = parseArgs(process.argv);
|
|
@@ -60,7 +60,12 @@ const BUDGET = {
|
|
|
60
60
|
"cross-ref-completeness": 5,
|
|
61
61
|
"schema-evolution": 0,
|
|
62
62
|
"operator-action-sla": 0,
|
|
63
|
-
"unused-orphan": 1400
|
|
63
|
+
"unused-orphan": 1400,
|
|
64
|
+
// Lesson and catalog texts that cite the curation input ("Packet: ...", "the
|
|
65
|
+
// packet names ...", "the packet's own ...") instead of stating the fact and
|
|
66
|
+
// its source. refresh --curate-batch refuses new ones; the budget comes down
|
|
67
|
+
// as existing texts are rewritten.
|
|
68
|
+
"pipeline-wording": 2159
|
|
64
69
|
};
|
|
65
70
|
|
|
66
71
|
function main() {
|
package/scripts/release.js
CHANGED
|
@@ -345,11 +345,14 @@ function cmdPush() {
|
|
|
345
345
|
_run("git", ["push", "-u", "origin", branch]);
|
|
346
346
|
_ok("pushed " + branch);
|
|
347
347
|
|
|
348
|
-
|
|
349
|
-
|
|
348
|
+
var section = _changelogSection(next);
|
|
349
|
+
var title = _releaseSubject(next, section);
|
|
350
|
+
var existing = _openPrNumber(branch);
|
|
351
|
+
if (existing) {
|
|
352
|
+
// The PR title and body follow the current CHANGELOG section on every push.
|
|
353
|
+
_run("gh", ["pr", "edit", existing, "--title", title, "--body", section]);
|
|
354
|
+
_ok("PR #" + existing + " already open for " + branch + " (resume mode); title and body updated from CHANGELOG.md");
|
|
350
355
|
} else {
|
|
351
|
-
var section = _changelogSection(next);
|
|
352
|
-
var title = _releaseSubject(next, section);
|
|
353
356
|
_run("gh", ["pr", "create", "--base", "main", "--head", branch,
|
|
354
357
|
"--title", title, "--body", section]);
|
|
355
358
|
_ok("PR opened");
|
|
@@ -452,8 +455,13 @@ function cmdMerge() {
|
|
|
452
455
|
throw new Error("release: refusing to merge PR #" + prNum + " — " +
|
|
453
456
|
unresolved.length + " unresolved review thread(s); run watch again");
|
|
454
457
|
}
|
|
458
|
+
// The squash commit takes its subject and body from the CHANGELOG section, not
|
|
459
|
+
// from the branch's commit messages.
|
|
460
|
+
var section = _changelogSection(next);
|
|
461
|
+
var subject = _releaseSubject(next, section) + " (#" + prNum + ")";
|
|
455
462
|
// Solo-maintainer protection requires 0 approvals; --admin covers required checks.
|
|
456
|
-
_run("gh", ["pr", "merge", prNum, "--squash", "--admin", "--delete-branch"
|
|
463
|
+
_run("gh", ["pr", "merge", prNum, "--squash", "--admin", "--delete-branch",
|
|
464
|
+
"--subject", subject, "--body", section]);
|
|
457
465
|
_ok("PR #" + prNum + " squash-merged");
|
|
458
466
|
|
|
459
467
|
_run("git", ["checkout", "main"]);
|