@blamejs/exceptd-skills 0.12.29 → 0.12.30

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 CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.12.30 — 2026-05-15
4
+
5
+ Catalog scoring honesty pass + diff-coverage gate tightening from the cycle 10 audit. Closes the Shape B invariant gap on the CVE catalog, adds the missing `last_threat_review` field to six catalogs, and downgrades operator-facing docs from the auto-allowlist to manual-review.
6
+
7
+ ### Features
8
+
9
+ **Shape B invariant enforced on every CVE.** `lib/scoring.js` documents that `Σ Object.values(rwep_factors) === rwep_score` is an invariant on every catalog entry, but the existing `validate()` function never enforced it — it computed via `scoreCustom()` (clamps `blast_radius` to 30, uses canonical weights) which masked dishonest factor blocks as long as the stored score happened to match the clamped formula. Fourteen entries had non-canonical factor values that summed to a different number than the stored score (CVE-2026-GTIG-AI-2FA, CVE-2026-42945, CVE-2024-3094, CVE-2024-21626, CVE-2023-3519, CVE-2026-20182, CVE-2024-40635, CVE-2025-12686, CVE-2025-62847, CVE-2025-62848, CVE-2025-62849, CVE-2025-59389, MAL-2026-TANSTACK-MINI, MAL-2026-ANTHROPIC-MCP-STDIO). All canonicalized — factor weights now derived from the operational fields (`cisa_kev`, `poc_available`, `ai_discovered`, `active_exploitation`, `blast_radius`, `patch_available`, `live_patch_available`, `patch_required_reboot`) via `lib/scoring.js` `RWEP_WEIGHTS` + `ACTIVE_EXPLOITATION_LADDER`. Where `blast_radius` exceeded the 30 cap (4 entries had values of 40), the value was clamped, which adjusted seven stored `rwep_score` values by ±5; each carries a `rwep_correction_note` documenting the delta. New `tests/cve-rwep-shape-b-invariant.test.js` blocks future drift with an exact-delta assertion.
10
+
11
+ **Operator-facing docs downgraded from auto-allowlist to manual-review.** Cycle 9 P3 finding: `CHANGELOG.md`, `README.md`, `SECURITY.md`, `MIGRATING.md`, and `AGENTS.md` were in the diff-coverage gate's `DOCS_ALWAYS_GREEN` set — a PR could land arbitrary edits to release notes, install instructions, security disclosure policy, or AI-assistant ground truth without triggering any reviewer signal. New `DOCS_MANUAL_REVIEW` set routes them to "manual-review" instead, surfacing the diff in the gate output. Contributor-only / mechanical files (`CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `LICENSE`, `NOTICE`, `SUPPORT.md`, `.gitignore`, `.npmrc`, `.editorconfig`, `CLAUDE.md`) stay always-green.
12
+
13
+ **`last_threat_review` mandatory on every catalog _meta.** Cycle 10 finding: `cve-catalog.json`, `cwe-catalog.json`, `d3fend-catalog.json`, `dlp-controls.json`, `rfc-references.json`, and `framework-control-gaps.json` carried only `last_updated` without the more specific `last_threat_review`. Hard Rule #8 makes per-catalog threat-review currency a release-blocker after a stated window; all six catalogs now carry the field. New `tests/threat-review-staleness.test.js` enforces presence + a 30-day staleness window between `manifest.threat_review_date` and every skill's `last_threat_review`.
14
+
15
+ ### Bugs
16
+
17
+ - `CVE-2026-42208` `discovery_attribution_note` misattributed discovery to Sysdig Threat Research Team. The actual credited discoverer is Tencent YunDing Security Lab per the LiteLLM GHSA-r75f-5x8p-qvmc advisory; Sysdig published only post-disclosure exploitation telemetry. Attribution corrected; sources updated.
18
+
19
+ ### Internal
20
+
21
+ - AI-discovery rate stays at 20% after cycle 10 deep-research pass (24 currently-false CVEs WebSearch'd; zero credible flips found). Methodology block updated: the 40% target reflects the broader 2025 zero-day population (Google Threat Intelligence Group), but the curated exceptd catalog is weighted toward Pwn2Own Ireland 2025 entries, historical anchors (CVE-2020-10148, CVE-2024-3094, etc.), and supply-chain incidents — none of which carry public AI-tool credit. Advancing the ladder from 20% → 30% → 40% will happen as the catalog rotates toward 2026 Big Sleep / AIxCC / GTIG-attributed entries; forcing flips on the current population would violate Hard Rule #1 (no speculation).
22
+
23
+
3
24
  ## 0.12.29 — 2026-05-15
4
25
 
5
26
  Catalog hygiene + pipeline integrity pass. Closes Hard Rule #1, #6, #7, and #8 gaps that had accumulated across the 2025-2026 catalog growth; tightens the SBOM + OpenVEX + exit-code surfaces.
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "schema_version": "1.1.0",
3
- "generated_at": "2026-05-16T01:17:57.741Z",
3
+ "generated_at": "2026-05-16T02:16:03.581Z",
4
4
  "generator": "scripts/build-indexes.js",
5
5
  "source_count": 54,
6
6
  "source_hashes": {
7
- "manifest.json": "5b9c21d9c2d885b439990b7b499429bf8a59e69cc737abfb386aa0255f2e8228",
7
+ "manifest.json": "a9d4ea238c6c91f6d12ac8ce8c46fe096c3e448bc53ae1776932bc1c6779984d",
8
8
  "data/atlas-ttps.json": "259e76e4252c7a56c17bbe96982a5e37ac89131c2d37a547fe38d64dcacfd763",
9
9
  "data/attack-techniques.json": "51f60819aef36e960fd768e44dcc725e137781534fbbb028e5ef6baa21defa1d",
10
- "data/cve-catalog.json": "72164f10238b4ba26a6c2fcacd0dfa3e745cd83b7c7c525ca26d8069511a4f24",
11
- "data/cwe-catalog.json": "b6d1a950e9dec8b313f65a546dcff724bf27d3717deca74decc04a6ba15d4538",
12
- "data/d3fend-catalog.json": "ac7c1b0ba5cc84754264846b8173011ca4328773dd981c7b42599e112e54b3c4",
13
- "data/dlp-controls.json": "8ea8d907aea0a2cfd772b048a62122a322ba3284a5c36a272ad5e9d392564cb5",
10
+ "data/cve-catalog.json": "0802d09b5783d01ec99d0d629942adbd81844e3cf6ed2f39885b362f57841abd",
11
+ "data/cwe-catalog.json": "f4bdc070b94d5b829f541aab34e21f86b133e9750ce9bef2d0b3e141c880bd33",
12
+ "data/d3fend-catalog.json": "35f076cd65d82ac97db90b72e884ec7ab2895c052567ee7d0c579c1965e6baaf",
13
+ "data/dlp-controls.json": "d2406c482dddd30e49203879999dc4b3a7fd4d0494d6a61d86b91ee76415df19",
14
14
  "data/exploit-availability.json": "a9eeda95d24b56c28a0d0178fc601b531653e2ba7dc857160b35ad23ad6c7471",
15
- "data/framework-control-gaps.json": "0c4aa0d3c48da3b3a88d0b9faa078003af76a809b63d00f1da1c504738872a06",
15
+ "data/framework-control-gaps.json": "d7e40e7d5edcdcb1573905a9a01ef31962030b4a16e0a138a4c733f00c8701d1",
16
16
  "data/global-frameworks.json": "0168825497e03f079274c9da2e5529310a2ba5bd7c7da7c93acd0b66ed845b8a",
17
- "data/rfc-references.json": "e90ec6755f6a670fdb589bbdc61b3010c90531da46065ada377272f34d282fcb",
17
+ "data/rfc-references.json": "e253a548c8a829d178d5aea601e268724b85c936ccbfa51c2e5d80c5f8efe2b0",
18
18
  "data/zeroday-lessons.json": "d960e5f8ca7a83c10194cd60207e13046a7eee1b8793e2f3de79475db283f800",
19
19
  "skills/kernel-lpe-triage/skill.md": "8e94bfd38d6db47342fbbe95a0c8df8f7c38743982c13e9de6a1c59cd3783d33",
20
20
  "skills/ai-attack-surface/skill.md": "13e543fc92b9b27cdb647dce96a9eeb44919e0fa92ec41e8265a9981a23e7b79",
@@ -1836,7 +1836,7 @@
1836
1836
  },
1837
1837
  "CVE-2024-21626": {
1838
1838
  "name": "runc /proc/self/fd leak (Leaky Vessels)",
1839
- "rwep": 75,
1839
+ "rwep": 80,
1840
1840
  "cvss": 8.6,
1841
1841
  "cisa_kev": true,
1842
1842
  "epss_score": 0.65,
@@ -1916,7 +1916,7 @@
1916
1916
  },
1917
1917
  "CVE-2023-3519": {
1918
1918
  "name": "Citrix NetScaler ADC/Gateway unauth RCE (CitrixBleed precursor)",
1919
- "rwep": 75,
1919
+ "rwep": 80,
1920
1920
  "cvss": 9.8,
1921
1921
  "cisa_kev": true,
1922
1922
  "epss_score": 0.967,
@@ -2044,7 +2044,7 @@
2044
2044
  },
2045
2045
  "CVE-2025-12686": {
2046
2046
  "name": "Synology BeeStation unauth RCE (Pwn2Own Ireland 2025)",
2047
- "rwep": 50,
2047
+ "rwep": 45,
2048
2048
  "cvss": 9.8,
2049
2049
  "cisa_kev": false,
2050
2050
  "epss_score": 0.04,
@@ -2060,7 +2060,7 @@
2060
2060
  },
2061
2061
  "CVE-2025-62847": {
2062
2062
  "name": "QNAP QTS/QuTS hero RCE (Pwn2Own Ireland 2025, chain 1/3)",
2063
- "rwep": 45,
2063
+ "rwep": 40,
2064
2064
  "cvss": 9.8,
2065
2065
  "cisa_kev": false,
2066
2066
  "epss_score": 0.03,
@@ -2076,7 +2076,7 @@
2076
2076
  },
2077
2077
  "CVE-2025-62848": {
2078
2078
  "name": "QNAP QTS/QuTS hero RCE (Pwn2Own Ireland 2025, chain 2/3)",
2079
- "rwep": 45,
2079
+ "rwep": 40,
2080
2080
  "cvss": 9.8,
2081
2081
  "cisa_kev": false,
2082
2082
  "epss_score": 0.03,
@@ -2092,7 +2092,7 @@
2092
2092
  },
2093
2093
  "CVE-2025-62849": {
2094
2094
  "name": "QNAP QTS/QuTS hero RCE (Pwn2Own Ireland 2025, chain 3/3)",
2095
- "rwep": 40,
2095
+ "rwep": 35,
2096
2096
  "cvss": 8.8,
2097
2097
  "cisa_kev": false,
2098
2098
  "epss_score": 0.02,
@@ -66,7 +66,8 @@
66
66
  "GHSA-*"
67
67
  ],
68
68
  "note": "Catalog keys are CVE-* by default. For pre-CVE-assignment advisories under active operational impact, the project accepts OSV-native identifier shapes as the canonical key, with cross-references retained in `aliases`: MAL-* (OSSF Malicious Packages dataset — published into OSV.dev; primary key for malicious-package compromises), GHSA-* (GitHub Advisory Database; primary key when the package is on GitHub and no CVE has issued yet), and SNYK-* (Snyk advisory dataset; primary key for advisories Snyk catalogued before OSV/GHSA ingested them). When MITRE issues a CVE, the entry is renamed in lockstep with the matching zeroday-lessons key; the previous identifier is retained in `aliases` so historical references continue to resolve. Precedent: MAL-2026-3083 added 2026-05-13 (the elementary-data PyPI worm, 1.1M monthly downloads, OSV/OSSF-cataloged before any CVE issued). EPSS coverage does not extend to non-CVE identifiers; epss_score is null with a documenting epss_note on such entries. Upstream pull from OSV.dev: `exceptd refresh --source osv` (added v0.12.10)."
69
- }
69
+ },
70
+ "last_threat_review": "2026-05-15"
70
71
  },
71
72
  "CVE-2025-53773": {
72
73
  "name": "GitHub Copilot / VS Code 'YOLO mode' Prompt Injection RCE",
@@ -642,7 +643,7 @@
642
643
  ]
643
644
  },
644
645
  "last_updated": "2026-05-15",
645
- "discovery_attribution_note": "Sysdig Threat Research Team Stefano Chierici and the Sysdig Sage / TRT analysts surfaced the SQLi via post-disclosure exploitation telemetry; Bishop Fox researchers reproduced and confirmed the auth-path SQLi sink. All named-human research; no AI-discovery attribution from either firm. Source: https://www.sysdig.com/blog/cve-2026-42208-targeted-sql-injection-against-litellms-authentication-path-discovered-36-hours-following-vulnerability-disclosure and https://bishopfox.com/blog/cve-2026-42208-pre-authentication-sql-injection-in-litellm-proxy."
646
+ "discovery_attribution_note": "Tencent YunDing Security Lab is the credited discoverer per the LiteLLM GHSA-r75f-5x8p-qvmc advisory and confirmed by downstream The Hacker News / Tenable / cve.news coverage. Sysdig TRT (Stefano Chierici + Sysdig Sage analysts) published the post-disclosure 36-hour-to-exploitation telemetry; Bishop Fox reproduced the auth-path SQLi sink. All named-human research; no AI-discovery attribution from any of the three teams. Sources: https://github.com/BerriAI/litellm/security/advisories/GHSA-r75f-5x8p-qvmc and https://www.sysdig.com/blog/cve-2026-42208-targeted-sql-injection-against-litellms-authentication-path-discovered-36-hours-following-vulnerability-disclosure and https://bishopfox.com/blog/cve-2026-42208-pre-authentication-sql-injection-in-litellm-proxy."
646
647
  },
647
648
  "CVE-2026-43284": {
648
649
  "name": "Dirty Frag (ESP/IPsec component)",
@@ -1483,7 +1484,7 @@
1483
1484
  "attack_refs": [
1484
1485
  "T1611"
1485
1486
  ],
1486
- "rwep_score": 75,
1487
+ "rwep_score": 80,
1487
1488
  "rwep_factors": {
1488
1489
  "cisa_kev": 25,
1489
1490
  "poc_available": 20,
@@ -1506,7 +1507,8 @@
1506
1507
  "https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/"
1507
1508
  ],
1508
1509
  "last_updated": "2026-05-15",
1509
- "discovery_attribution_note": "Discovered by Rory McNamara of Snyk Security Labs as part of the four-vulnerability Leaky Vessels disclosure (CVE-2024-21626 + CVE-2024-23651/23652/23653) published January 2024. Named human researcher; no AI-tool credited. Source: https://labs.snyk.io/resources/leaky-vessels-docker-runc-container-breakout-vulnerabilities/."
1510
+ "discovery_attribution_note": "Discovered by Rory McNamara of Snyk Security Labs as part of the four-vulnerability Leaky Vessels disclosure (CVE-2024-21626 + CVE-2024-23651/23652/23653) published January 2024. Named human researcher; no AI-tool credited. Source: https://labs.snyk.io/resources/leaky-vessels-docker-runc-container-breakout-vulnerabilities/.",
1511
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: +5 (75 -> 80)."
1510
1512
  },
1511
1513
  "CVE-2024-3094": {
1512
1514
  "_draft": true,
@@ -1559,7 +1561,7 @@
1559
1561
  "poc_available": 20,
1560
1562
  "ai_factor": 0,
1561
1563
  "active_exploitation": 10,
1562
- "blast_radius": 40,
1564
+ "blast_radius": 30,
1563
1565
  "patch_available": -15,
1564
1566
  "live_patch_available": 0,
1565
1567
  "reboot_required": 0
@@ -1577,7 +1579,8 @@
1577
1579
  "https://research.swtch.com/xz-script"
1578
1580
  ],
1579
1581
  "last_updated": "2026-05-15",
1580
- "discovery_attribution_note": "Discovered by Andres Freund (Microsoft engineer, PostgreSQL developer) on 2024-03-28 via a 0.5-second SSH-login latency regression traced to liblzma symbol resolution; reported to oss-security. Named human researcher; no AI tooling involved. Source: https://en.wikipedia.org/wiki/XZ_Utils_backdoor."
1582
+ "discovery_attribution_note": "Discovered by Andres Freund (Microsoft engineer, PostgreSQL developer) on 2024-03-28 via a 0.5-second SSH-login latency regression traced to liblzma symbol resolution; reported to oss-security. Named human researcher; no AI tooling involved. Source: https://en.wikipedia.org/wiki/XZ_Utils_backdoor.",
1583
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors to satisfy Shape B invariant (Σ factors === rwep_score). Prior values used non-canonical weights and/or blast_radius > 30 (over-cap). Stored rwep_score unchanged; factor block now reproducible from canonical RWEP_WEIGHTS + operational fields."
1581
1584
  },
1582
1585
  "CVE-2024-3154": {
1583
1586
  "_draft": true,
@@ -1814,7 +1817,7 @@
1814
1817
  "attack_refs": [
1815
1818
  "T1190"
1816
1819
  ],
1817
- "rwep_score": 75,
1820
+ "rwep_score": 80,
1818
1821
  "rwep_factors": {
1819
1822
  "cisa_kev": 25,
1820
1823
  "poc_available": 20,
@@ -1837,7 +1840,8 @@
1837
1840
  "https://support.citrix.com/article/CTX561482"
1838
1841
  ],
1839
1842
  "last_updated": "2026-05-15",
1840
- "discovery_attribution_note": "Independent security researchers via Citrix coordinated disclosure (CTX561482, 2023-07-18); no individual researcher named in the Citrix advisory. NSA/CISA AA23-201A documents in-wild exploitation by Chinese state-sponsored actors. No AI-tool credited. Source: https://support.citrix.com/article/CTX561482/ and https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-201a."
1843
+ "discovery_attribution_note": "Independent security researchers via Citrix coordinated disclosure (CTX561482, 2023-07-18); no individual researcher named in the Citrix advisory. NSA/CISA AA23-201A documents in-wild exploitation by Chinese state-sponsored actors. No AI-tool credited. Source: https://support.citrix.com/article/CTX561482/ and https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-201a.",
1844
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: +5 (75 -> 80)."
1841
1845
  },
1842
1846
  "CVE-2024-1709": {
1843
1847
  "_draft": true,
@@ -1945,7 +1949,7 @@
1945
1949
  "poc_available": 0,
1946
1950
  "ai_factor": 0,
1947
1951
  "active_exploitation": 20,
1948
- "blast_radius": 35,
1952
+ "blast_radius": 30,
1949
1953
  "patch_available": -15,
1950
1954
  "live_patch_available": 0,
1951
1955
  "reboot_required": 5
@@ -1961,7 +1965,8 @@
1961
1965
  "https://sec.cloudapps.cisco.com/security/center/publicationListing.x"
1962
1966
  ],
1963
1967
  "last_updated": "2026-05-15",
1964
- "discovery_attribution_note": "Discovered by Stephen Fewer (Senior Principal Security Researcher) and Jonah Burgess (Senior Security Researcher), both at Rapid7, while researching the related CVE-2026-20127 vdaemon authentication-bypass. Named human researchers; no AI-tool credited. Source: https://www.rapid7.com/blog/post/ve-cve-2026-20182-critical-authentication-bypass-cisco-catalyst-sd-wan-controller-fixed/."
1968
+ "discovery_attribution_note": "Discovered by Stephen Fewer (Senior Principal Security Researcher) and Jonah Burgess (Senior Security Researcher), both at Rapid7, while researching the related CVE-2026-20127 vdaemon authentication-bypass. Named human researchers; no AI-tool credited. Source: https://www.rapid7.com/blog/post/ve-cve-2026-20182-critical-authentication-bypass-cisco-catalyst-sd-wan-controller-fixed/.",
1969
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: 0."
1965
1970
  },
1966
1971
  "CVE-2024-40635": {
1967
1972
  "_draft": true,
@@ -2006,7 +2011,7 @@
2006
2011
  "cisa_kev": 0,
2007
2012
  "poc_available": 20,
2008
2013
  "ai_factor": 0,
2009
- "active_exploitation": 0,
2014
+ "active_exploitation": 5,
2010
2015
  "blast_radius": 20,
2011
2016
  "patch_available": -15,
2012
2017
  "live_patch_available": 0,
@@ -2023,7 +2028,8 @@
2023
2028
  "https://github.com/containerd/containerd/security/advisories"
2024
2029
  ],
2025
2030
  "last_updated": "2026-05-15",
2026
- "discovery_attribution_note": "Reported via the containerd security team (GO-2025-3528, Snyk SNYK-GOLANG-GITHUBCOMCONTAINERDCONTAINERDV2PKGOCI-9479987); no individual researcher byline in the advisory and no AI-tool credited. Bug class is straight integer overflow in WithUser() UID handling. Source: https://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMCONTAINERDCONTAINERDV2PKGOCI-9479987."
2031
+ "discovery_attribution_note": "Reported via the containerd security team (GO-2025-3528, Snyk SNYK-GOLANG-GITHUBCOMCONTAINERDCONTAINERDV2PKGOCI-9479987); no individual researcher byline in the advisory and no AI-tool credited. Bug class is straight integer overflow in WithUser() UID handling. Source: https://security.snyk.io/vuln/SNYK-GOLANG-GITHUBCOMCONTAINERDCONTAINERDV2PKGOCI-9479987.",
2032
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: 0."
2027
2033
  },
2028
2034
  "MAL-2026-TANSTACK-MINI": {
2029
2035
  "_draft": true,
@@ -2076,8 +2082,8 @@
2076
2082
  "poc_available": 20,
2077
2083
  "ai_factor": 0,
2078
2084
  "active_exploitation": 20,
2079
- "blast_radius": 40,
2080
- "patch_available": -10,
2085
+ "blast_radius": 30,
2086
+ "patch_available": -15,
2081
2087
  "live_patch_available": 0,
2082
2088
  "reboot_required": 0
2083
2089
  },
@@ -2094,7 +2100,8 @@
2094
2100
  "https://www.npmjs.com/advisories"
2095
2101
  ],
2096
2102
  "last_updated": "2026-05-15",
2097
- "discovery_attribution_note": "Same incident-class as CVE-2026-45321 (Mini Shai-Hulud); discovery by ecosystem detection across multiple firms (Snyk, Wiz, StepSecurity, Socket, Orca, JFrog) within minutes of the 2026-05-11 publish window. No AI-tool discovery attribution on the defender side. Source: https://snyk.io/blog/tanstack-npm-packages-compromised/."
2103
+ "discovery_attribution_note": "Same incident-class as CVE-2026-45321 (Mini Shai-Hulud); discovery by ecosystem detection across multiple firms (Snyk, Wiz, StepSecurity, Socket, Orca, JFrog) within minutes of the 2026-05-11 publish window. No AI-tool discovery attribution on the defender side. Source: https://snyk.io/blog/tanstack-npm-packages-compromised/.",
2104
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors to satisfy Shape B invariant (Σ factors === rwep_score). Prior values used non-canonical weights and/or blast_radius > 30 (over-cap). Stored rwep_score unchanged; factor block now reproducible from canonical RWEP_WEIGHTS + operational fields."
2098
2105
  },
2099
2106
  "MAL-2026-ANTHROPIC-MCP-STDIO": {
2100
2107
  "_draft": true,
@@ -2142,12 +2149,12 @@
2142
2149
  "rwep_score": 25,
2143
2150
  "rwep_factors": {
2144
2151
  "cisa_kev": 0,
2145
- "poc_available": 10,
2152
+ "poc_available": 0,
2146
2153
  "ai_factor": 0,
2147
2154
  "active_exploitation": 5,
2148
2155
  "blast_radius": 30,
2149
2156
  "patch_available": 0,
2150
- "live_patch_available": -5,
2157
+ "live_patch_available": -10,
2151
2158
  "reboot_required": 0
2152
2159
  },
2153
2160
  "epss_score": null,
@@ -2162,7 +2169,8 @@
2162
2169
  "https://modelcontextprotocol.io/"
2163
2170
  ],
2164
2171
  "last_updated": "2026-05-15",
2165
- "discovery_attribution_note": "Discovered by OX Security research team (Moshe Siman Tov Bustan, Mustafa Naamnih, Nir Zadok); part of the four-exploitation-family April 2026 MCP advisory. Named-human research; no AI-tool credited for the discovery despite the target being an AI SDK. Source: https://www.ox.security/blog/the-mother-of-all-ai-supply-chains-critical-systemic-vulnerability-at-the-core-of-the-mcp/."
2172
+ "discovery_attribution_note": "Discovered by OX Security research team (Moshe Siman Tov Bustan, Mustafa Naamnih, Nir Zadok); part of the four-exploitation-family April 2026 MCP advisory. Named-human research; no AI-tool credited for the discovery despite the target being an AI SDK. Source: https://www.ox.security/blog/the-mother-of-all-ai-supply-chains-critical-systemic-vulnerability-at-the-core-of-the-mcp/.",
2173
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors to satisfy Shape B invariant (Σ factors === rwep_score). Prior values used non-canonical weights and/or blast_radius > 30 (over-cap). Stored rwep_score unchanged; factor block now reproducible from canonical RWEP_WEIGHTS + operational fields."
2166
2174
  },
2167
2175
  "CVE-2026-GTIG-AI-2FA": {
2168
2176
  "_draft": true,
@@ -2215,12 +2223,12 @@
2215
2223
  "rwep_score": 55,
2216
2224
  "rwep_factors": {
2217
2225
  "cisa_kev": 0,
2218
- "poc_available": 10,
2219
- "ai_factor": 25,
2226
+ "poc_available": 0,
2227
+ "ai_factor": 15,
2220
2228
  "active_exploitation": 20,
2221
2229
  "blast_radius": 30,
2222
2230
  "patch_available": 0,
2223
- "live_patch_available": -5,
2231
+ "live_patch_available": -10,
2224
2232
  "reboot_required": 0
2225
2233
  },
2226
2234
  "epss_score": null,
@@ -2235,7 +2243,8 @@
2235
2243
  "https://services.google.com/fh/files/misc/gtig-2026-ai-attack-trends.pdf"
2236
2244
  ],
2237
2245
  "last_updated": "2026-05-15",
2238
- "discovery_attribution_note": "AI-developed zero-day per Google Threat Intelligence Group 2026-05-11 disclosure; first publicly-attributed in-the-wild AI-built zero-day exploit. GTIG assesses with high confidence that an LLM was weaponized to facilitate discovery + weaponization of a 2FA bypass in a popular open-source web administration tool. Source: https://cloud.google.com/blog/topics/threat-intelligence/ai-vulnerability-exploitation-initial-access and https://thehackernews.com/2026/05/hackers-used-ai-to-develop-first-known.html."
2246
+ "discovery_attribution_note": "AI-developed zero-day per Google Threat Intelligence Group 2026-05-11 disclosure; first publicly-attributed in-the-wild AI-built zero-day exploit. GTIG assesses with high confidence that an LLM was weaponized to facilitate discovery + weaponization of a 2FA bypass in a popular open-source web administration tool. Source: https://cloud.google.com/blog/topics/threat-intelligence/ai-vulnerability-exploitation-initial-access and https://thehackernews.com/2026/05/hackers-used-ai-to-develop-first-known.html.",
2247
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors to satisfy Shape B invariant (Σ factors === rwep_score). Prior values used non-canonical weights and/or blast_radius > 30 (over-cap). Stored rwep_score unchanged; factor block now reproducible from canonical RWEP_WEIGHTS + operational fields."
2239
2248
  },
2240
2249
  "CVE-2026-30623": {
2241
2250
  "_draft": true,
@@ -2339,7 +2348,7 @@
2339
2348
  "attack_refs": [
2340
2349
  "T1190"
2341
2350
  ],
2342
- "rwep_score": 50,
2351
+ "rwep_score": 45,
2343
2352
  "rwep_factors": {
2344
2353
  "cisa_kev": 0,
2345
2354
  "poc_available": 20,
@@ -2361,7 +2370,8 @@
2361
2370
  "https://www.zerodayinitiative.com/blog"
2362
2371
  ],
2363
2372
  "last_updated": "2026-05-15",
2364
- "discovery_attribution_note": "Pwn2Own Ireland 2025 (Cork, 2025-10-21) — exploited by @Tek_7987 and @_Anyfun of Synacktiv's offensive security team. Disclosure methodology: attack-surface enumeration + manual code auditing + exploit development per Synacktiv's published writeup; no AI-tool credit. Source: https://www.synacktiv.com/en/publications/breaking-the-beestation-inside-our-pwn2own-2025-exploit-journey."
2373
+ "discovery_attribution_note": "Pwn2Own Ireland 2025 (Cork, 2025-10-21) — exploited by @Tek_7987 and @_Anyfun of Synacktiv's offensive security team. Disclosure methodology: attack-surface enumeration + manual code auditing + exploit development per Synacktiv's published writeup; no AI-tool credit. Source: https://www.synacktiv.com/en/publications/breaking-the-beestation-inside-our-pwn2own-2025-exploit-journey.",
2374
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: -5 (50 -> 45)."
2365
2375
  },
2366
2376
  "CVE-2025-62847": {
2367
2377
  "_draft": true,
@@ -2400,7 +2410,7 @@
2400
2410
  "attack_refs": [
2401
2411
  "T1190"
2402
2412
  ],
2403
- "rwep_score": 45,
2413
+ "rwep_score": 40,
2404
2414
  "rwep_factors": {
2405
2415
  "cisa_kev": 0,
2406
2416
  "poc_available": 20,
@@ -2422,7 +2432,8 @@
2422
2432
  "https://www.qnap.com/en/security-advisory/"
2423
2433
  ],
2424
2434
  "last_updated": "2026-05-15",
2425
- "discovery_attribution_note": "Pwn2Own Ireland 2025 — exploited by DEVCORE Research Team (chained injection + format-string bug, $40,000 + 4 Master of Pwn points). Named-human team via ZDI live-blog credit; no AI-tool attribution. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results."
2435
+ "discovery_attribution_note": "Pwn2Own Ireland 2025 — exploited by DEVCORE Research Team (chained injection + format-string bug, $40,000 + 4 Master of Pwn points). Named-human team via ZDI live-blog credit; no AI-tool attribution. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results.",
2436
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: -5 (45 -> 40)."
2426
2437
  },
2427
2438
  "CVE-2025-62848": {
2428
2439
  "_draft": true,
@@ -2461,7 +2472,7 @@
2461
2472
  "attack_refs": [
2462
2473
  "T1190"
2463
2474
  ],
2464
- "rwep_score": 45,
2475
+ "rwep_score": 40,
2465
2476
  "rwep_factors": {
2466
2477
  "cisa_kev": 0,
2467
2478
  "poc_available": 20,
@@ -2483,7 +2494,8 @@
2483
2494
  "https://www.qnap.com/en/security-advisory/"
2484
2495
  ],
2485
2496
  "last_updated": "2026-05-15",
2486
- "discovery_attribution_note": "Pwn2Own Ireland 2025 — chain 2/3 of the DEVCORE Research Team QNAP TS-453E exploit. Same researcher attribution as CVE-2025-62847; ZDI live-blog credit. No AI-tool attribution. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results."
2497
+ "discovery_attribution_note": "Pwn2Own Ireland 2025 — chain 2/3 of the DEVCORE Research Team QNAP TS-453E exploit. Same researcher attribution as CVE-2025-62847; ZDI live-blog credit. No AI-tool attribution. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results.",
2498
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: -5 (45 -> 40)."
2487
2499
  },
2488
2500
  "CVE-2025-62849": {
2489
2501
  "_draft": true,
@@ -2522,7 +2534,7 @@
2522
2534
  "attack_refs": [
2523
2535
  "T1068"
2524
2536
  ],
2525
- "rwep_score": 40,
2537
+ "rwep_score": 35,
2526
2538
  "rwep_factors": {
2527
2539
  "cisa_kev": 0,
2528
2540
  "poc_available": 20,
@@ -2544,7 +2556,8 @@
2544
2556
  "https://www.qnap.com/en/security-advisory/"
2545
2557
  ],
2546
2558
  "last_updated": "2026-05-15",
2547
- "discovery_attribution_note": "Pwn2Own Ireland 2025 — chain 3/3 of the DEVCORE Research Team QNAP TS-453E exploit (post-auth elevation). Same attribution as CVE-2025-62847/62848; ZDI credit. No AI-tool attribution. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results."
2559
+ "discovery_attribution_note": "Pwn2Own Ireland 2025 — chain 3/3 of the DEVCORE Research Team QNAP TS-453E exploit (post-auth elevation). Same attribution as CVE-2025-62847/62848; ZDI credit. No AI-tool attribution. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results.",
2560
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: -5 (40 -> 35)."
2548
2561
  },
2549
2562
  "CVE-2025-59389": {
2550
2563
  "_draft": true,
@@ -2589,7 +2602,7 @@
2589
2602
  "poc_available": 20,
2590
2603
  "ai_factor": 0,
2591
2604
  "active_exploitation": 5,
2592
- "blast_radius": 35,
2605
+ "blast_radius": 30,
2593
2606
  "patch_available": -15,
2594
2607
  "live_patch_available": 0,
2595
2608
  "reboot_required": 5
@@ -2605,7 +2618,8 @@
2605
2618
  "https://www.qnap.com/en/security-advisory/"
2606
2619
  ],
2607
2620
  "last_updated": "2026-05-15",
2608
- "discovery_attribution_note": "Pwn2Own Ireland 2025 — Sina Kheirkhah of Summoning Team chained a hardcoded-credential issue with an injection flaw against QNAP Hyper Data Protector ($20,000 award). Named-human researcher; no AI-tool credit. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results and https://www.qnap.com/en/security-advisory/qsa-25-48."
2621
+ "discovery_attribution_note": "Pwn2Own Ireland 2025 — Sina Kheirkhah of Summoning Team chained a hardcoded-credential issue with an injection flaw against QNAP Hyper Data Protector ($20,000 award). Named-human researcher; no AI-tool credit. Source: https://www.thezdi.com/blog/2025/10/21/pwn2own-ireland-2025-day-one-results and https://www.qnap.com/en/security-advisory/qsa-25-48.",
2622
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors AND rwep_score to satisfy Shape B invariant. The prior stored rwep_score was internally inconsistent with its rwep_factors block; both now derived from canonical RWEP_WEIGHTS + operational fields. Delta from prior stored: 0."
2609
2623
  },
2610
2624
  "CVE-2025-11837": {
2611
2625
  "_draft": true,
@@ -2726,9 +2740,9 @@
2726
2740
  "rwep_factors": {
2727
2741
  "cisa_kev": 0,
2728
2742
  "poc_available": 20,
2729
- "ai_factor": 25,
2743
+ "ai_factor": 15,
2730
2744
  "active_exploitation": 0,
2731
- "blast_radius": 40,
2745
+ "blast_radius": 30,
2732
2746
  "patch_available": -15,
2733
2747
  "live_patch_available": -10,
2734
2748
  "reboot_required": 0
@@ -2747,6 +2761,7 @@
2747
2761
  "https://nginx.org/en/security_advisories.html"
2748
2762
  ],
2749
2763
  "last_updated": "2026-05-15",
2750
- "discovery_attribution_note": "Discovered by depthfirst's autonomous vulnerability-analysis platform; flagged the heap-buffer-overflow in nginx ngx_http_rewrite_module (present since nginx 0.6.27, 2008) within six hours of scan time. First publicly-attributed AI-discovered nginx CVE; jointly disclosed by F5 + depthfirst on 2026-05-13. Source: https://depthfirst.com/nginx-rift and https://github.com/depthfirstdisclosures/nginx-rift."
2764
+ "discovery_attribution_note": "Discovered by depthfirst's autonomous vulnerability-analysis platform; flagged the heap-buffer-overflow in nginx ngx_http_rewrite_module (present since nginx 0.6.27, 2008) within six hours of scan time. First publicly-attributed AI-discovered nginx CVE; jointly disclosed by F5 + depthfirst on 2026-05-13. Source: https://depthfirst.com/nginx-rift and https://github.com/depthfirstdisclosures/nginx-rift.",
2765
+ "rwep_correction_note": "v0.12.30: canonicalized rwep_factors to satisfy Shape B invariant (Σ factors === rwep_score). Prior values used non-canonical weights and/or blast_radius > 30 (over-cap). Stored rwep_score unchanged; factor block now reproducible from canonical RWEP_WEIGHTS + operational fields."
2751
2766
  }
2752
2767
  }
@@ -22,7 +22,8 @@
22
22
  "stale_after_days": 180,
23
23
  "rebuild_after_days": 365,
24
24
  "note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
25
- }
25
+ },
26
+ "last_threat_review": "2026-05-15"
26
27
  },
27
28
  "CWE-20": {
28
29
  "id": "CWE-20",
@@ -28,7 +28,8 @@
28
28
  "stale_after_days": 180,
29
29
  "rebuild_after_days": 365,
30
30
  "note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
31
- }
31
+ },
32
+ "last_threat_review": "2026-05-15"
32
33
  },
33
34
  "D3-EAL": {
34
35
  "id": "D3-EAL",
@@ -15,7 +15,8 @@
15
15
  "stale_after_days": 180,
16
16
  "rebuild_after_days": 365,
17
17
  "note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
18
- }
18
+ },
19
+ "last_threat_review": "2026-05-15"
19
20
  },
20
21
  "DLP-CHAN-EMAIL-OUT": {
21
22
  "id": "DLP-CHAN-EMAIL-OUT",
@@ -14,7 +14,8 @@
14
14
  "stale_after_days": 180,
15
15
  "rebuild_after_days": 365,
16
16
  "note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
17
- }
17
+ },
18
+ "last_threat_review": "2026-05-15"
18
19
  },
19
20
  "ALL-AI-PIPELINE-INTEGRITY": {
20
21
  "framework": "ALL",
@@ -24,7 +24,8 @@
24
24
  "stale_after_days": 180,
25
25
  "rebuild_after_days": 365,
26
26
  "note": "Per-entry last_verified governs decay. Skills depending on this catalog must check entry freshness before high-stakes use."
27
- }
27
+ },
28
+ "last_threat_review": "2026-05-15"
28
29
  },
29
30
  "RFC-4301": {
30
31
  "number": 4301,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "_comment": "Auto-generated by scripts/refresh-manifest-snapshot.js — do not hand-edit. Public skill surface used by check-manifest-snapshot.js to detect breaking removals.",
3
- "_generated_at": "2026-05-16T01:08:44.785Z",
3
+ "_generated_at": "2026-05-16T02:01:45.936Z",
4
4
  "atlas_version": "5.4.0",
5
5
  "skill_count": 42,
6
6
  "skills": [
@@ -1 +1 @@
1
- 2b2fe8086b9dd8ff974651b9ee0a00df002209856fd3e6cbacd4cd9b0029b530 manifest-snapshot.json
1
+ 3cc97ea81650ff630b335d8bb83a11ba5a847ac0dcada34ff0e36e24055d551e manifest-snapshot.json
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exceptd-security",
3
- "version": "0.12.29",
3
+ "version": "0.12.30",
4
4
  "description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation",
5
5
  "homepage": "https://exceptd.com",
6
6
  "license": "Apache-2.0",
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "last_threat_review": "2026-05-01",
55
55
  "signature": "N6H4u/u1fCFE6f/3QVkAr2cumZvLNE+xYBC91CCxKoeaSKm5zqbwzb2mvFDk9XKUegUy5W6npLFGi75yxNMIAg==",
56
- "signed_at": "2026-05-16T01:10:55.139Z",
56
+ "signed_at": "2026-05-16T02:15:30.223Z",
57
57
  "cwe_refs": [
58
58
  "CWE-125",
59
59
  "CWE-362",
@@ -117,7 +117,7 @@
117
117
  ],
118
118
  "last_threat_review": "2026-05-01",
119
119
  "signature": "Xen6ojQGzT4AZUN/WtuQon+gT2UrJyX50nrZwEdxLw5aiz8gDaeMkWo/Bic+h4NFEF7MRd7uDTm0dvKgWnlRBA==",
120
- "signed_at": "2026-05-16T01:10:55.141Z",
120
+ "signed_at": "2026-05-16T02:15:30.225Z",
121
121
  "cwe_refs": [
122
122
  "CWE-1039",
123
123
  "CWE-1426",
@@ -180,7 +180,7 @@
180
180
  ],
181
181
  "last_threat_review": "2026-05-01",
182
182
  "signature": "IDhdamTvyWfnz7SvIMrVMz2cwLuiP2/Iw2iYHFNbI1O302XnrGyIVsJcoKZa5QFClBYPiABVt+yI5HEuLxMCBw==",
183
- "signed_at": "2026-05-16T01:10:55.142Z",
183
+ "signed_at": "2026-05-16T02:15:30.225Z",
184
184
  "cwe_refs": [
185
185
  "CWE-22",
186
186
  "CWE-345",
@@ -226,7 +226,7 @@
226
226
  "framework_gaps": [],
227
227
  "last_threat_review": "2026-05-01",
228
228
  "signature": "cPRRTsNQT1MYR3cE5O3KdC4MB037EMc0fsMIbOyfOv16sR+DkiXmAhQOjlIC47HngHz3vhLI+rbqItN91VWpBg==",
229
- "signed_at": "2026-05-16T01:10:55.142Z"
229
+ "signed_at": "2026-05-16T02:15:30.225Z"
230
230
  },
231
231
  {
232
232
  "name": "compliance-theater",
@@ -257,7 +257,7 @@
257
257
  ],
258
258
  "last_threat_review": "2026-05-01",
259
259
  "signature": "79NrFMRsqGsipWeE5ETQSVICGO4BjTJYgyir+PSaNVFpkLqLcwZd8Dr1V7iwX0H0fXFL3WpPz35gtrYCEG32BQ==",
260
- "signed_at": "2026-05-16T01:10:55.142Z"
260
+ "signed_at": "2026-05-16T02:15:30.226Z"
261
261
  },
262
262
  {
263
263
  "name": "exploit-scoring",
@@ -286,7 +286,7 @@
286
286
  ],
287
287
  "last_threat_review": "2026-05-01",
288
288
  "signature": "O7YIzAOQtSCFD0pyUdF0otYy9xwksrRGCLnSw5aMMGOs0SYeYA1JsMX5XLxNOQJC8tURC21HgQc/yx22jLtvAw==",
289
- "signed_at": "2026-05-16T01:10:55.143Z"
289
+ "signed_at": "2026-05-16T02:15:30.226Z"
290
290
  },
291
291
  {
292
292
  "name": "rag-pipeline-security",
@@ -323,7 +323,7 @@
323
323
  ],
324
324
  "last_threat_review": "2026-05-01",
325
325
  "signature": "ai6ebp9pz7dBigm2rQvQ0SklhDZtHqP3exKtolbEBiN0shQScypJfDBaQN2J3aoOC4dZjjTgIZvGfWLmBxrxBA==",
326
- "signed_at": "2026-05-16T01:10:55.143Z",
326
+ "signed_at": "2026-05-16T02:15:30.226Z",
327
327
  "cwe_refs": [
328
328
  "CWE-1395",
329
329
  "CWE-1426"
@@ -380,7 +380,7 @@
380
380
  ],
381
381
  "last_threat_review": "2026-05-01",
382
382
  "signature": "BkDjyCF53MAATVfzERmIhEhi474eWloxD0qyw9Gvw+VFE8aH3pOi+yeCpc0kq0vHAVmAEszwxBKEcuLkJbmSBg==",
383
- "signed_at": "2026-05-16T01:10:55.143Z",
383
+ "signed_at": "2026-05-16T02:15:30.227Z",
384
384
  "d3fend_refs": [
385
385
  "D3-CA",
386
386
  "D3-CSPP",
@@ -415,7 +415,7 @@
415
415
  "framework_gaps": [],
416
416
  "last_threat_review": "2026-05-01",
417
417
  "signature": "DxfXhSyoAGUo1emHh0uIIcg324ZreBYxmFdBDVAKOOuPmMlfN4RqNc/JGDSfVmMv5CjgYCUcSmkcYB0A5lk0Cg==",
418
- "signed_at": "2026-05-16T01:10:55.144Z",
418
+ "signed_at": "2026-05-16T02:15:30.227Z",
419
419
  "cwe_refs": [
420
420
  "CWE-1188"
421
421
  ]
@@ -443,7 +443,7 @@
443
443
  "framework_gaps": [],
444
444
  "last_threat_review": "2026-05-01",
445
445
  "signature": "rFQ82v+1oAHWixWcGwokKhjZHfXUf6N7EfSgldhQ5Jrbiy3kv5CIbnOCsI6zPWyErSnpKVeBFTabJXnzLrzDCQ==",
446
- "signed_at": "2026-05-16T01:10:55.144Z"
446
+ "signed_at": "2026-05-16T02:15:30.228Z"
447
447
  },
448
448
  {
449
449
  "name": "global-grc",
@@ -475,7 +475,7 @@
475
475
  "framework_gaps": [],
476
476
  "last_threat_review": "2026-05-01",
477
477
  "signature": "7yVjZkanFMKDQqXdX4B/7oLc2Rz72xHC1zscYd8F/+e5UAbR7ikK8Bn5EKZt3aBEOhHPAviSQNCMxpZD9U00CA==",
478
- "signed_at": "2026-05-16T01:10:55.145Z"
478
+ "signed_at": "2026-05-16T02:15:30.228Z"
479
479
  },
480
480
  {
481
481
  "name": "zeroday-gap-learn",
@@ -502,7 +502,7 @@
502
502
  "framework_gaps": [],
503
503
  "last_threat_review": "2026-05-01",
504
504
  "signature": "VlPR7yY39hEwDJYYKPgHAOeax9LU0X7eIrR8L7zMFJWS0SdKTalOXXJtD9GppByftnkYAAdryZ8tHQ/KWLtaBQ==",
505
- "signed_at": "2026-05-16T01:10:55.145Z"
505
+ "signed_at": "2026-05-16T02:15:30.228Z"
506
506
  },
507
507
  {
508
508
  "name": "pqc-first",
@@ -554,7 +554,7 @@
554
554
  ],
555
555
  "last_threat_review": "2026-05-01",
556
556
  "signature": "V+qn5FqUlETfsEjvvi6jZGuQdqLFtFejfgPA6KSYxSlBXBTbOBXP3BGk5S+ba9akIzgbKh1j9VGB1MqsIt56DA==",
557
- "signed_at": "2026-05-16T01:10:55.145Z",
557
+ "signed_at": "2026-05-16T02:15:30.229Z",
558
558
  "cwe_refs": [
559
559
  "CWE-327"
560
560
  ],
@@ -601,7 +601,7 @@
601
601
  ],
602
602
  "last_threat_review": "2026-05-01",
603
603
  "signature": "WCNz19186cER1eEhCophTIbnL3ltS3FC98I1rfv463aRnuVxPB3sUlD9xHTbxTM2rUABhqKijhdkWiMh2uKxCQ==",
604
- "signed_at": "2026-05-16T01:10:55.146Z"
604
+ "signed_at": "2026-05-16T02:15:30.229Z"
605
605
  },
606
606
  {
607
607
  "name": "security-maturity-tiers",
@@ -638,7 +638,7 @@
638
638
  ],
639
639
  "last_threat_review": "2026-05-01",
640
640
  "signature": "zjq6ACAHD46xvhvQJKlrCPh5xDCuBuIWBI+QJB8RxcudpC7p7I1pqv+BY8DZdsAgU4tquCU8KC+xlduMIk3/DQ==",
641
- "signed_at": "2026-05-16T01:10:55.146Z",
641
+ "signed_at": "2026-05-16T02:15:30.229Z",
642
642
  "cwe_refs": [
643
643
  "CWE-1188"
644
644
  ]
@@ -673,7 +673,7 @@
673
673
  "framework_gaps": [],
674
674
  "last_threat_review": "2026-05-11",
675
675
  "signature": "/lGgWehCMQUXjI6w4FUa+5wrbyRnct+txvVcXA+D2/ZEkoJKh+J/psO3j5HPf7Hpv+Y5SmkH71CoO+9qilyVDQ==",
676
- "signed_at": "2026-05-16T01:10:55.146Z"
676
+ "signed_at": "2026-05-16T02:15:30.229Z"
677
677
  },
678
678
  {
679
679
  "name": "attack-surface-pentest",
@@ -744,7 +744,7 @@
744
744
  "PTES revision incorporating AI-surface enumeration"
745
745
  ],
746
746
  "signature": "RqQMwOKK7xjG9e/Ls4986NOrDwKz/nQmpw1DwNJwV2nlOztyo7MgxUG3kTuLbuW3qCrrkO+CbpBA5nGS1cmKBQ==",
747
- "signed_at": "2026-05-16T01:10:55.146Z"
747
+ "signed_at": "2026-05-16T02:15:30.230Z"
748
748
  },
749
749
  {
750
750
  "name": "fuzz-testing-strategy",
@@ -804,7 +804,7 @@
804
804
  "OSS-Fuzz-Gen / AI-assisted harness generation becoming the default expectation for OSS maintainers"
805
805
  ],
806
806
  "signature": "+ELdD+1AY5DymBitH7wU65CS60NY1nDoLowJAFn7cE5Gr/5jy9BTkyxsm7PEXaSlXWMOkTf/HQ+uyzyxUVD/Bw==",
807
- "signed_at": "2026-05-16T01:10:55.147Z"
807
+ "signed_at": "2026-05-16T02:15:30.230Z"
808
808
  },
809
809
  {
810
810
  "name": "dlp-gap-analysis",
@@ -879,7 +879,7 @@
879
879
  "Quebec Law 25, India DPDPA, KSA PDPL enforcement actions naming AI-tool prompt data as in-scope personal information"
880
880
  ],
881
881
  "signature": "vL5XeQOk7vwX0sLMuKghj6XLnXsqKcGpCUNMui9HwqnWyNQwgSRGu+JFqP7ZqpP3SUYRZHcVlWhXeTJHyOtiAA==",
882
- "signed_at": "2026-05-16T01:10:55.147Z"
882
+ "signed_at": "2026-05-16T02:15:30.230Z"
883
883
  },
884
884
  {
885
885
  "name": "supply-chain-integrity",
@@ -956,7 +956,7 @@
956
956
  "OpenSSF model-signing — emerging Sigstore-based signing standard for ML model weights; track for production adoption"
957
957
  ],
958
958
  "signature": "jp3MxKukV7zW47eX3VcAIMG5WxypMDcfHqwYDodI9YQgTxEojCrRcMSApaoZHTdD3yTQC1JtkXeKxU6K3C5NCg==",
959
- "signed_at": "2026-05-16T01:10:55.147Z"
959
+ "signed_at": "2026-05-16T02:15:30.231Z"
960
960
  },
961
961
  {
962
962
  "name": "defensive-countermeasure-mapping",
@@ -1013,7 +1013,7 @@
1013
1013
  ],
1014
1014
  "last_threat_review": "2026-05-11",
1015
1015
  "signature": "XZigwq8X/csfrdG10O6Q1V5q0zUqSQGd3QrjRKkZ4fkaodG4mZahYuIQqxc8rU9jjtGAm9LtBXYB+I5csqj9Bw==",
1016
- "signed_at": "2026-05-16T01:10:55.148Z"
1016
+ "signed_at": "2026-05-16T02:15:30.231Z"
1017
1017
  },
1018
1018
  {
1019
1019
  "name": "identity-assurance",
@@ -1080,7 +1080,7 @@
1080
1080
  "d3fend_refs": [],
1081
1081
  "last_threat_review": "2026-05-11",
1082
1082
  "signature": "k0HrsZMBxiPWB1jl4dRwhv/R5IsqbZ+SLDv1Jx3/sRl51JyXjtm8vyogTNhSwsl5/IkaRakqIPJFRFRl5h/9CQ==",
1083
- "signed_at": "2026-05-16T01:10:55.148Z"
1083
+ "signed_at": "2026-05-16T02:15:30.231Z"
1084
1084
  },
1085
1085
  {
1086
1086
  "name": "ot-ics-security",
@@ -1136,7 +1136,7 @@
1136
1136
  "d3fend_refs": [],
1137
1137
  "last_threat_review": "2026-05-11",
1138
1138
  "signature": "oHxjumOhk8y86WcwhAX8sSWIlPzt60KfTMn4DCJLeRrrQd5+i54fVADKAdZ3vOqfDN+DexO0uX4f5dLPtacRCQ==",
1139
- "signed_at": "2026-05-16T01:10:55.148Z"
1139
+ "signed_at": "2026-05-16T02:15:30.232Z"
1140
1140
  },
1141
1141
  {
1142
1142
  "name": "coordinated-vuln-disclosure",
@@ -1188,7 +1188,7 @@
1188
1188
  "NYDFS 23 NYCRR 500 amendments potentially adding explicit CVD program requirements"
1189
1189
  ],
1190
1190
  "signature": "UCiNjncvhkZItmLQA/Sm1/NCsOiLMwdCjfUw+067v4NIxhaMMaqRrAeD3KgMyEtov7m2Hq2kfwYSt5+DQsYDCQ==",
1191
- "signed_at": "2026-05-16T01:10:55.148Z"
1191
+ "signed_at": "2026-05-16T02:15:30.232Z"
1192
1192
  },
1193
1193
  {
1194
1194
  "name": "threat-modeling-methodology",
@@ -1238,7 +1238,7 @@
1238
1238
  "PASTA v2 updates incorporating AI/ML application threats"
1239
1239
  ],
1240
1240
  "signature": "V9kl8Cf8UMjNFyn3D/fSyhWHLeXWlx3WV/jT9jdF9SrjfDqymimuTt2o91cZ2FOEJndAH9V0JGXB13Ohz8K4CQ==",
1241
- "signed_at": "2026-05-16T01:10:55.149Z"
1241
+ "signed_at": "2026-05-16T02:15:30.232Z"
1242
1242
  },
1243
1243
  {
1244
1244
  "name": "webapp-security",
@@ -1312,7 +1312,7 @@
1312
1312
  "d3fend_refs": [],
1313
1313
  "last_threat_review": "2026-05-11",
1314
1314
  "signature": "ENSL4MJSNXhriKsTVBjg2jTc7JTtb6mxqbfBw/SVVajPMkLMcLBk4Gem9LhZWZ8DSqyWLnFO2d6hlz5q8bjuCg==",
1315
- "signed_at": "2026-05-16T01:10:55.149Z"
1315
+ "signed_at": "2026-05-16T02:15:30.232Z"
1316
1316
  },
1317
1317
  {
1318
1318
  "name": "ai-risk-management",
@@ -1362,7 +1362,7 @@
1362
1362
  "d3fend_refs": [],
1363
1363
  "last_threat_review": "2026-05-11",
1364
1364
  "signature": "8E82UwKFNraXV/MKAbiUV6gUryYuN+Ff/kiv1aW4/XtriShdTyt/UgRuQJ8LXGXl0jMH8hRJ/xTAV8LOJqexDA==",
1365
- "signed_at": "2026-05-16T01:10:55.149Z"
1365
+ "signed_at": "2026-05-16T02:15:30.233Z"
1366
1366
  },
1367
1367
  {
1368
1368
  "name": "sector-healthcare",
@@ -1422,7 +1422,7 @@
1422
1422
  "d3fend_refs": [],
1423
1423
  "last_threat_review": "2026-05-11",
1424
1424
  "signature": "BDuLcpTeFp2BNSf1q4rYOhYKNhlgd3o5RZ0Uw9xW5olyYxPbZSgqekQ+6Ggaec09s7y6sqR37GS0vuAMdbrdDQ==",
1425
- "signed_at": "2026-05-16T01:10:55.150Z"
1425
+ "signed_at": "2026-05-16T02:15:30.233Z"
1426
1426
  },
1427
1427
  {
1428
1428
  "name": "sector-financial",
@@ -1503,7 +1503,7 @@
1503
1503
  "TIBER-EU framework v2.0 alignment with DORA TLPT RTS (JC 2024/40); cross-recognition with CBEST and iCAST"
1504
1504
  ],
1505
1505
  "signature": "w12QqGBlRDaDVYug9uQVmEbxR7+gX23rOKZSjlt3XcszYDHBCRiP4cBRKMuEguu44DCaQsg+Btu4vAVMlss9Dg==",
1506
- "signed_at": "2026-05-16T01:10:55.150Z"
1506
+ "signed_at": "2026-05-16T02:15:30.233Z"
1507
1507
  },
1508
1508
  {
1509
1509
  "name": "sector-federal-government",
@@ -1572,7 +1572,7 @@
1572
1572
  "Australia PSPF 2024 revision and ISM quarterly updates — track for Essential Eight Maturity Level requirements for federal entities"
1573
1573
  ],
1574
1574
  "signature": "nMsyJ+rp5fM8/VjC7zsZyDjOC4hpxB+noT1VX7W0HBlq5t3SY56cwOGApwES/kBcCuf4qexKY376OxUr93zvCQ==",
1575
- "signed_at": "2026-05-16T01:10:55.151Z"
1575
+ "signed_at": "2026-05-16T02:15:30.234Z"
1576
1576
  },
1577
1577
  {
1578
1578
  "name": "sector-energy",
@@ -1637,7 +1637,7 @@
1637
1637
  "ICS-CERT advisory feed (https://www.cisa.gov/news-events/cybersecurity-advisories/ics-advisories) for vendor CVEs in Siemens, Rockwell, Schneider Electric, ABB, GE Vernova, Hitachi Energy, AVEVA / OSIsoft PI"
1638
1638
  ],
1639
1639
  "signature": "L1moEqEGkBkqY/3ohJcfqrlJn40UurDCyb2MOP/IwTAeZD+QbVZ17/drdsydkJ6qSXPiyiE6u8HDfZsDS13NBQ==",
1640
- "signed_at": "2026-05-16T01:10:55.151Z"
1640
+ "signed_at": "2026-05-16T02:15:30.234Z"
1641
1641
  },
1642
1642
  {
1643
1643
  "name": "sector-telecom",
@@ -1723,7 +1723,7 @@
1723
1723
  "O-RAN SFG / WG11 security specifications"
1724
1724
  ],
1725
1725
  "signature": "VKLuoRkFq7lNXqySipwzPSaiHaqemHQ2cReemF/Xy9hUpD9orQaTVZWClOA4lzoF6d2eQ/CeS///Jjnj4g9dCg==",
1726
- "signed_at": "2026-05-16T01:10:55.152Z"
1726
+ "signed_at": "2026-05-16T02:15:30.235Z"
1727
1727
  },
1728
1728
  {
1729
1729
  "name": "api-security",
@@ -1792,7 +1792,7 @@
1792
1792
  "d3fend_refs": [],
1793
1793
  "last_threat_review": "2026-05-11",
1794
1794
  "signature": "JHGu5OI35payaFR1At3XZIX4HnflgF3lI9vk/XsHpu0loWHtbTiA/SrNzTuWO+be8aIfd36uNz7WnJNwBTCHDA==",
1795
- "signed_at": "2026-05-16T01:10:55.152Z"
1795
+ "signed_at": "2026-05-16T02:15:30.235Z"
1796
1796
  },
1797
1797
  {
1798
1798
  "name": "cloud-security",
@@ -1873,7 +1873,7 @@
1873
1873
  "CISA KEV additions for cloud-control-plane CVEs (IMDSv1 abuses, federation token mishandling, cross-tenant boundary failures); CISA Cybersecurity Advisories for cross-cloud advisories"
1874
1874
  ],
1875
1875
  "signature": "UEn0305KAEqIfYOdzadLBdPG/PJ+3sJ/8ubvPFNcXfqXp2uOWTfqGUqY65PApA992VEEa1RBQt5R7Nyhd/OjDQ==",
1876
- "signed_at": "2026-05-16T01:10:55.152Z"
1876
+ "signed_at": "2026-05-16T02:15:30.235Z"
1877
1877
  },
1878
1878
  {
1879
1879
  "name": "container-runtime-security",
@@ -1935,7 +1935,7 @@
1935
1935
  "d3fend_refs": [],
1936
1936
  "last_threat_review": "2026-05-11",
1937
1937
  "signature": "lPd9tHAskNapjrWwFWhsb8ntAL0xovDCIGElsOCyjcafzby4ArwRw5Lq28sfNloJZAhMN+AWj+lDdFytiUQHCQ==",
1938
- "signed_at": "2026-05-16T01:10:55.153Z"
1938
+ "signed_at": "2026-05-16T02:15:30.236Z"
1939
1939
  },
1940
1940
  {
1941
1941
  "name": "mlops-security",
@@ -2006,7 +2006,7 @@
2006
2006
  "MITRE ATLAS v5.2 — track AML.T0010 sub-technique expansion and any new MLOps-pipeline-specific TTPs"
2007
2007
  ],
2008
2008
  "signature": "U+HyElcP007FIblXUE/nFpj/rZ5z3VohsvxRCWEuuJDLdOnsXYEadb7ccr3X7S4aRG2MC4T2KtVtgbKIuO5QDw==",
2009
- "signed_at": "2026-05-16T01:10:55.153Z"
2009
+ "signed_at": "2026-05-16T02:15:30.236Z"
2010
2010
  },
2011
2011
  {
2012
2012
  "name": "incident-response-playbook",
@@ -2068,7 +2068,7 @@
2068
2068
  "NYDFS 23 NYCRR 500.17 amendments tightening ransom-payment 24h disclosure operationalization"
2069
2069
  ],
2070
2070
  "signature": "XB3TVjNRBlqqbIhatFoYtTJHTS51nVt9k7DVrb2roUflLDjbCnaTbrpztA2oqJyyxwgnLlX+K7NW8oYOYEMeCg==",
2071
- "signed_at": "2026-05-16T01:10:55.153Z"
2071
+ "signed_at": "2026-05-16T02:15:30.236Z"
2072
2072
  },
2073
2073
  {
2074
2074
  "name": "ransomware-response",
@@ -2148,7 +2148,7 @@
2148
2148
  ],
2149
2149
  "last_threat_review": "2026-05-15",
2150
2150
  "signature": "ChZ8EWZFfrQYLNH6gJBdcRrayROvcQfiPOpb4H+0rio99OZS0AmQgWQjlWfrF1K5KPEYsLjDqtp2i5P7xLfyBw==",
2151
- "signed_at": "2026-05-16T01:10:55.154Z"
2151
+ "signed_at": "2026-05-16T02:15:30.237Z"
2152
2152
  },
2153
2153
  {
2154
2154
  "name": "email-security-anti-phishing",
@@ -2201,7 +2201,7 @@
2201
2201
  "d3fend_refs": [],
2202
2202
  "last_threat_review": "2026-05-11",
2203
2203
  "signature": "RiCryJEd66T2NNcSo/mZTd3sGWDycE3C37guLJanLdVL5co35DrPFmIl8qy3ZM/y+Wzg5vpny8VKgr1//1/bCA==",
2204
- "signed_at": "2026-05-16T01:10:55.154Z"
2204
+ "signed_at": "2026-05-16T02:15:30.237Z"
2205
2205
  },
2206
2206
  {
2207
2207
  "name": "age-gates-child-safety",
@@ -2269,7 +2269,7 @@
2269
2269
  "US state adult-site age-verification laws — 19+ states by mid-2026 (TX HB 18 upheld by SCOTUS June 2025 in Free Speech Coalition v. Paxton); track ongoing challenges in remaining states"
2270
2270
  ],
2271
2271
  "signature": "MMWvg3lIf5ygm31zyf1E43t3W9MfRbMBBPrqlj1wOa8AxVJL8LICnAXfmyJ/TNJXwpF+rfZeDdoxXkql8wmtBA==",
2272
- "signed_at": "2026-05-16T01:10:55.154Z"
2272
+ "signed_at": "2026-05-16T02:15:30.237Z"
2273
2273
  },
2274
2274
  {
2275
2275
  "name": "cloud-iam-incident",
@@ -2349,7 +2349,7 @@
2349
2349
  ],
2350
2350
  "last_threat_review": "2026-05-15",
2351
2351
  "signature": "03brHySNWPVnrfZwGBZH5rKLh20DQxVNln0w30fhdcMXtaHQYRuCfhhvqbHVHHoLEogMfsixQX1YtbiqOojsAQ==",
2352
- "signed_at": "2026-05-16T01:10:55.155Z"
2352
+ "signed_at": "2026-05-16T02:15:30.238Z"
2353
2353
  },
2354
2354
  {
2355
2355
  "name": "idp-incident-response",
@@ -2430,11 +2430,11 @@
2430
2430
  ],
2431
2431
  "last_threat_review": "2026-05-15",
2432
2432
  "signature": "EMdSANZrYCCWZ3+PL8CGKiXM7gQVsPBfj7BNMzNlEkjMIc+OccHUSjNEIWLgVZH6H5So1Le4JQSePqLq/nPABA==",
2433
- "signed_at": "2026-05-16T01:10:55.155Z"
2433
+ "signed_at": "2026-05-16T02:15:30.238Z"
2434
2434
  }
2435
2435
  ],
2436
2436
  "manifest_signature": {
2437
2437
  "algorithm": "Ed25519",
2438
- "signature_base64": "TjDIktv6rQU897k5KWBhnOiZOlqCQy9sJJT65r9uXfRjc0RV6tmnoagQgerRo/u9DyroTdcbY40THgHrC3vsCA=="
2438
+ "signature_base64": "cwGLjPDDm7XSC20Ub5GQid3BvrJX/vprQNHNa1c7h0YQT9PIlza1vzOX2ysYEMHIn1W0XpOURUnUYuHE1HFfCQ=="
2439
2439
  }
2440
2440
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blamejs/exceptd-skills",
3
- "version": "0.12.29",
3
+ "version": "0.12.30",
4
4
  "description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 10 catalogs, 34 jurisdictions, pre-computed indexes, Ed25519-signed.",
5
5
  "keywords": [
6
6
  "ai-security",
package/sbom.cdx.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.6",
4
- "serialNumber": "urn:uuid:0e60e9bd-5657-4629-ab3a-8235c39a6868",
4
+ "serialNumber": "urn:uuid:7150dfe9-d8fa-4de6-9a84-6382eeda157d",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-05-16T01:18:25.445Z",
7
+ "timestamp": "2026-05-16T02:16:31.433Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "blamejs",
11
11
  "name": "scripts/refresh-sbom.js",
12
- "version": "0.12.29"
12
+ "version": "0.12.30"
13
13
  }
14
14
  ],
15
15
  "component": {
16
- "bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.12.29",
16
+ "bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.12.30",
17
17
  "type": "application",
18
18
  "name": "@blamejs/exceptd-skills",
19
- "version": "0.12.29",
19
+ "version": "0.12.30",
20
20
  "description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 10 catalogs, 34 jurisdictions, pre-computed indexes, 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.12.29",
28
+ "purl": "pkg:npm/%40blamejs/exceptd-skills@0.12.30",
29
29
  "hashes": [
30
30
  {
31
31
  "alg": "SHA-256",
32
- "content": "d4cc401770faf40a8584db666685b2eb05dc4966346116423eb3843dea7e7136"
32
+ "content": "80e6f4b66c77729400d40271423b06ed791d013a071767a9e2640a078cdd2ddf"
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.12.29"
38
+ "url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.12.30"
39
39
  },
40
40
  {
41
41
  "type": "vcs",
@@ -108,7 +108,7 @@
108
108
  "hashes": [
109
109
  {
110
110
  "alg": "SHA-256",
111
- "content": "9ce54562c066124a51341200915991a63126235bd3187cca80d89a41d0cbdf6d"
111
+ "content": "69833513ff4e8c9365cad9eca0948eaf648394b928ae2c52d74d656c4efaaaca"
112
112
  }
113
113
  ]
114
114
  },
@@ -262,7 +262,7 @@
262
262
  "hashes": [
263
263
  {
264
264
  "alg": "SHA-256",
265
- "content": "72164f10238b4ba26a6c2fcacd0dfa3e745cd83b7c7c525ca26d8069511a4f24"
265
+ "content": "0802d09b5783d01ec99d0d629942adbd81844e3cf6ed2f39885b362f57841abd"
266
266
  }
267
267
  ]
268
268
  },
@@ -273,7 +273,7 @@
273
273
  "hashes": [
274
274
  {
275
275
  "alg": "SHA-256",
276
- "content": "b6d1a950e9dec8b313f65a546dcff724bf27d3717deca74decc04a6ba15d4538"
276
+ "content": "f4bdc070b94d5b829f541aab34e21f86b133e9750ce9bef2d0b3e141c880bd33"
277
277
  }
278
278
  ]
279
279
  },
@@ -284,7 +284,7 @@
284
284
  "hashes": [
285
285
  {
286
286
  "alg": "SHA-256",
287
- "content": "ac7c1b0ba5cc84754264846b8173011ca4328773dd981c7b42599e112e54b3c4"
287
+ "content": "35f076cd65d82ac97db90b72e884ec7ab2895c052567ee7d0c579c1965e6baaf"
288
288
  }
289
289
  ]
290
290
  },
@@ -295,7 +295,7 @@
295
295
  "hashes": [
296
296
  {
297
297
  "alg": "SHA-256",
298
- "content": "8ea8d907aea0a2cfd772b048a62122a322ba3284a5c36a272ad5e9d392564cb5"
298
+ "content": "d2406c482dddd30e49203879999dc4b3a7fd4d0494d6a61d86b91ee76415df19"
299
299
  }
300
300
  ]
301
301
  },
@@ -317,7 +317,7 @@
317
317
  "hashes": [
318
318
  {
319
319
  "alg": "SHA-256",
320
- "content": "0c4aa0d3c48da3b3a88d0b9faa078003af76a809b63d00f1da1c504738872a06"
320
+ "content": "d7e40e7d5edcdcb1573905a9a01ef31962030b4a16e0a138a4c733f00c8701d1"
321
321
  }
322
322
  ]
323
323
  },
@@ -515,7 +515,7 @@
515
515
  "hashes": [
516
516
  {
517
517
  "alg": "SHA-256",
518
- "content": "e90ec6755f6a670fdb589bbdc61b3010c90531da46065ada377272f34d282fcb"
518
+ "content": "e253a548c8a829d178d5aea601e268724b85c936ccbfa51c2e5d80c5f8efe2b0"
519
519
  }
520
520
  ]
521
521
  },
@@ -911,7 +911,7 @@
911
911
  "hashes": [
912
912
  {
913
913
  "alg": "SHA-256",
914
- "content": "2b2fe8086b9dd8ff974651b9ee0a00df002209856fd3e6cbacd4cd9b0029b530"
914
+ "content": "3cc97ea81650ff630b335d8bb83a11ba5a847ac0dcada34ff0e36e24055d551e"
915
915
  }
916
916
  ]
917
917
  },
@@ -922,7 +922,7 @@
922
922
  "hashes": [
923
923
  {
924
924
  "alg": "SHA-256",
925
- "content": "900d1f4f0d5b8cec3f0340115b95f6720e57ab2a8d87adf07f8584a47282320b"
925
+ "content": "defa4415eebe3d3f0ad741a1c838b43be61b8fabc85a147633be0a7a20b9ad72"
926
926
  }
927
927
  ]
928
928
  },
@@ -933,7 +933,7 @@
933
933
  "hashes": [
934
934
  {
935
935
  "alg": "SHA-256",
936
- "content": "5b9c21d9c2d885b439990b7b499429bf8a59e69cc737abfb386aa0255f2e8228"
936
+ "content": "a9d4ea238c6c91f6d12ac8ce8c46fe096c3e448bc53ae1776932bc1c6779984d"
937
937
  }
938
938
  ]
939
939
  },
@@ -1252,7 +1252,7 @@
1252
1252
  "hashes": [
1253
1253
  {
1254
1254
  "alg": "SHA-256",
1255
- "content": "a5f091b056107977c6804e888084a06552fd55f82b31d80617cd0184028c3e54"
1255
+ "content": "7268e2b1096db71e4104830a16859a47a993e0abbb6d3c7c4032715c046a2e11"
1256
1256
  }
1257
1257
  ]
1258
1258
  },
@@ -184,15 +184,29 @@ function readMaybe(p) {
184
184
 
185
185
  // --- Categorization ---------------------------------------------------------
186
186
 
187
+ // Mechanical / contributor-only docs the gate auto-allows: their content
188
+ // has no operator-facing semantic surface (CONTRIBUTING is for PRs;
189
+ // LICENSE / NOTICE / CODE_OF_CONDUCT are boilerplate; .gitignore / .npmrc
190
+ // / .editorconfig are tooling). Edits here never need a regression test.
187
191
  const DOCS_ALWAYS_GREEN = new Set([
188
- "CHANGELOG.md", "README.md", "CONTRIBUTING.md", "SECURITY.md",
189
- "LICENSE", "NOTICE", "CODE_OF_CONDUCT.md", "AGENTS.md", "CLAUDE.md",
190
- "SUPPORT.md", "MIGRATING.md", ".gitignore", ".npmrc", ".editorconfig",
192
+ "CONTRIBUTING.md", "LICENSE", "NOTICE", "CODE_OF_CONDUCT.md",
193
+ "CLAUDE.md", "SUPPORT.md", ".gitignore", ".npmrc", ".editorconfig",
194
+ ]);
195
+
196
+ // Cycle 9 finding: operator-facing docs (release notes, install instructions,
197
+ // security disclosure policy, migration guides, AI-assistant ground truth)
198
+ // previously auto-greened. A PR could land deceptive copy here without any
199
+ // reviewer signal. Downgrade to manual-review so the diff surfaces in the
200
+ // gate output — a human (or the maintainer reviewing the bot summary) at
201
+ // least sees the change exists.
202
+ const DOCS_MANUAL_REVIEW = new Set([
203
+ "CHANGELOG.md", "README.md", "SECURITY.md", "MIGRATING.md", "AGENTS.md",
191
204
  ]);
192
205
 
193
206
  function categorize(file) {
194
207
  const norm = file.replace(/\\/g, "/");
195
208
  if (DOCS_ALWAYS_GREEN.has(norm)) return "docs";
209
+ if (DOCS_MANUAL_REVIEW.has(norm)) return "manual-review";
196
210
  if (norm.startsWith("tests/")) return "test"; // no recursion
197
211
  if (norm.startsWith("docs/")) return "docs";
198
212
  if (norm.endsWith(".md") && !norm.startsWith("data/")) return "docs";
@@ -662,5 +676,5 @@ module.exports = {
662
676
  extractCliSurface, extractLibExports, extractPlaybookIds, extractCveIocChanges,
663
677
  coversCliVerb, coversCliFlag, coversLibExport, coversPlaybookId, coversCveIoc,
664
678
  scanForCoincidenceAsserts,
665
- DOCS_ALWAYS_GREEN,
679
+ DOCS_ALWAYS_GREEN, DOCS_MANUAL_REVIEW,
666
680
  };