@blamejs/exceptd-skills 0.14.19 → 0.14.20

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,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.20 — 2026-05-27
4
+
5
+ Skill content cleanup:
6
+ - `sector-telecom` no longer labels its analysis-procedure subsections with the CLI verb names that were removed in 0.13.0 (`govern`, `direct`, `look`, etc.) — the section headings are neutral procedural language now. Its reference to `cred-stores` is annotated as a playbook (not a skill, matching the convention three sibling skills already use), and its `last_threat_review` date is quoted consistently with every other skill.
7
+ - `threat-model-currency` no longer pins an outdated date literal in its body that contradicted the frontmatter — it references the frontmatter `last_threat_review` so the assertion can't desync.
8
+ - `pqc-first` no longer leaks the engine's internal phase numbering ("Phase 5 analyze") into operator-facing output prose.
9
+ - `email-security-anti-phishing` no longer cites an internal contributor rule by name in its threat-context narrative.
10
+
3
11
  ## 0.14.19 — 2026-05-27
4
12
 
5
13
  Catalog data-integrity pass:
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "schema_version": "1.1.0",
3
- "generated_at": "2026-05-28T02:01:28.108Z",
3
+ "generated_at": "2026-05-28T02:33:36.583Z",
4
4
  "generator": "scripts/build-indexes.js",
5
5
  "source_count": 54,
6
6
  "source_hashes": {
7
- "manifest.json": "633b5ddcd6927b365cab9672477db8b0ce64df963f2d44526e10d3eb7b10edd7",
7
+ "manifest.json": "dc4cdb2fa56243e42a1989558997a236e564176fa6c8e5dcae9de9d2dad8399b",
8
8
  "data/atlas-ttps.json": "d24bc02859d40ccf1615db75cca68c077585904e41e0d8f6de448121e9b1abb0",
9
9
  "data/attack-techniques.json": "fa193f0d2d248176a8beddb641e9fe56ba4faa9e15dc253ff876dbf0c5d58a77",
10
10
  "data/cve-catalog.json": "03d8071c7ae244ccda7611c3bc66a5581c21e790d158c2948c3001f55aa5aac9",
@@ -25,10 +25,10 @@
25
25
  "skills/rag-pipeline-security/skill.md": "792c6f48a7ff06785c24258cac1714068feafefb3f8f05e6c62ddce2f2f9128d",
26
26
  "skills/ai-c2-detection/skill.md": "de83dc284dc4f85a8a383c0b715ec7b9ea127ec49c3227bf4c72344bad4008ed",
27
27
  "skills/policy-exception-gen/skill.md": "238074319b57399c75d76439ef1ff67153b5a3207adf1556f3ca1e68cfe7cfaa",
28
- "skills/threat-model-currency/skill.md": "4295c0efe31dcbec1a7bc96b8ce05d41414d918cbfc7fb7dffb2be7e4d873ae3",
28
+ "skills/threat-model-currency/skill.md": "637861b4dcd2cb608c08c5aa62a8ef73efc976584f901e612c73cf53b3559422",
29
29
  "skills/global-grc/skill.md": "57ca729034e9d33c527d869c1c4aa82fe37e496878a3cbcd9e5043cb62b7105d",
30
30
  "skills/zeroday-gap-learn/skill.md": "d8872a4f5e5e927ae087e8319996ec3b9e010aa23fca32248c0909051032db48",
31
- "skills/pqc-first/skill.md": "3b41b59eb4e8480b691ff17185f42b9fbfd7665e369fc210feba496688cc77aa",
31
+ "skills/pqc-first/skill.md": "8b77569100d10201044d63a69cbc83c9cfe6d2c3568884aa900ef0eb72ba99c3",
32
32
  "skills/skill-update-loop/skill.md": "f7cd18df293b90c0d2afb6ba8b87664419becea6b63221f03efaf09c69586025",
33
33
  "skills/security-maturity-tiers/skill.md": "2e46c9332a5a6190d4605ba7bc653410659be19fab50c78c0a6732f84ebdb300",
34
34
  "skills/researcher/skill.md": "dc8ceab8f69af370abb1165ed14ead6f3e9d236a8f703165eba52014ebfd43ab",
@@ -47,14 +47,14 @@
47
47
  "skills/sector-financial/skill.md": "ad8f207a6ce255aad9c33ea9a3009fb707c0f59be9df565fe68679654488bb6e",
48
48
  "skills/sector-federal-government/skill.md": "7b513d2365390fdb546c0f266139a21ae247339f0e346695fcbc92ba3d7fa69a",
49
49
  "skills/sector-energy/skill.md": "9aed96c78e8aaeafd3b7564d26311d625b4466a1e3822281721bdbfcfca058ec",
50
- "skills/sector-telecom/skill.md": "59193e39c2fd73fdd7fede38a956bc730bbe4b712d7d6020788bb4d85f001ad8",
50
+ "skills/sector-telecom/skill.md": "2f336a0b79cd28a3353ec0a72ce0469ac57305345d652247e7cb368f79ec8d4f",
51
51
  "skills/api-security/skill.md": "120ed75df17db4dfc4746b9d5bd6efd33786bbf68cb840670aeed0be505866f9",
52
52
  "skills/cloud-security/skill.md": "425be2c6e3563f011d0280bf03268425bf60923ae3d02eafbf1b56d04f0b7ffe",
53
53
  "skills/container-runtime-security/skill.md": "f22bf5a305f8a33884d49d9bfb25fa2bd00c4b3d0dc490bd12f20a7721683b4a",
54
54
  "skills/mlops-security/skill.md": "498549ddc9d870cb8d6a28a4d79b8d7058d5eed832d7c266c281084f4371ce46",
55
55
  "skills/incident-response-playbook/skill.md": "9c219de36c7d702dff8504a25e2f1b07459716ea2ed02f49d751f91dbeca1b01",
56
56
  "skills/ransomware-response/skill.md": "471b714c42717d43f81b2b582cd8e89ca8d3140de2ddc06cce15f012a0e19be1",
57
- "skills/email-security-anti-phishing/skill.md": "250f266908f51f99a4cb3aec0d5dacfcf91fac9f3d95e5a117429a40ed2ff45a",
57
+ "skills/email-security-anti-phishing/skill.md": "da0b937350e538b55db8daa1f50047d9f4e889e6b89b040dcecfb71feecd63d7",
58
58
  "skills/age-gates-child-safety/skill.md": "639b79a2724415afe9e4469202f806e5bec022c0946c9496d4e17ed73aabbe21",
59
59
  "skills/cloud-iam-incident/skill.md": "5ec3800a0049b2123aff67bfab4ff28491a86d2daeb712283e5e88b10c3d5d7b",
60
60
  "skills/idp-incident-response/skill.md": "e67a2576e7f1c3bf89f499f5c977bc470ef29e8b3e3e45f4cb5bd45a82674282"
@@ -78,7 +78,7 @@
78
78
  "handoff_dag_nodes": 42,
79
79
  "summary_cards": 42,
80
80
  "section_offsets_skills": 42,
81
- "token_budget_total_approx": 418252,
81
+ "token_budget_total_approx": 418226,
82
82
  "recipes": 8,
83
83
  "jurisdiction_clocks": 29,
84
84
  "did_ladders": 8,
@@ -991,7 +991,7 @@
991
991
  },
992
992
  "threat-model-currency": {
993
993
  "path": "skills/threat-model-currency/skill.md",
994
- "total_bytes": 33306,
994
+ "total_bytes": 33310,
995
995
  "total_lines": 448,
996
996
  "frontmatter": {
997
997
  "line_start": 1,
@@ -1059,16 +1059,16 @@
1059
1059
  "normalized_name": "exploit-availability-matrix",
1060
1060
  "line": 289,
1061
1061
  "byte_start": 20815,
1062
- "byte_end": 23164,
1063
- "bytes": 2349,
1062
+ "byte_end": 23168,
1063
+ "bytes": 2353,
1064
1064
  "h3_count": 0
1065
1065
  },
1066
1066
  {
1067
1067
  "name": "Compliance Theater Check",
1068
1068
  "normalized_name": "compliance-theater-check",
1069
1069
  "line": 308,
1070
- "byte_start": 23164,
1071
- "byte_end": 24732,
1070
+ "byte_start": 23168,
1071
+ "byte_end": 24736,
1072
1072
  "bytes": 1568,
1073
1073
  "h3_count": 0
1074
1074
  },
@@ -1076,8 +1076,8 @@
1076
1076
  "name": "Scoring",
1077
1077
  "normalized_name": "scoring",
1078
1078
  "line": 324,
1079
- "byte_start": 24732,
1080
- "byte_end": 25274,
1079
+ "byte_start": 24736,
1080
+ "byte_end": 25278,
1081
1081
  "bytes": 542,
1082
1082
  "h3_count": 0
1083
1083
  },
@@ -1085,8 +1085,8 @@
1085
1085
  "name": "Analysis Procedure",
1086
1086
  "normalized_name": "analysis-procedure",
1087
1087
  "line": 343,
1088
- "byte_start": 25274,
1089
- "byte_end": 26204,
1088
+ "byte_start": 25278,
1089
+ "byte_end": 26208,
1090
1090
  "bytes": 930,
1091
1091
  "h3_count": 4
1092
1092
  },
@@ -1094,8 +1094,8 @@
1094
1094
  "name": "Output Format",
1095
1095
  "normalized_name": "output-format",
1096
1096
  "line": 375,
1097
- "byte_start": 26204,
1098
- "byte_end": 28177,
1097
+ "byte_start": 26208,
1098
+ "byte_end": 28181,
1099
1099
  "bytes": 1973,
1100
1100
  "h3_count": 4
1101
1101
  },
@@ -1103,8 +1103,8 @@
1103
1103
  "name": "Defensive Countermeasure Mapping",
1104
1104
  "normalized_name": "defensive-countermeasure-mapping",
1105
1105
  "line": 417,
1106
- "byte_start": 28177,
1107
- "byte_end": 33306,
1106
+ "byte_start": 28181,
1107
+ "byte_end": 33310,
1108
1108
  "bytes": 5129,
1109
1109
  "h3_count": 0
1110
1110
  }
@@ -1327,7 +1327,7 @@
1327
1327
  },
1328
1328
  "pqc-first": {
1329
1329
  "path": "skills/pqc-first/skill.md",
1330
- "total_bytes": 37988,
1330
+ "total_bytes": 38002,
1331
1331
  "total_lines": 572,
1332
1332
  "frontmatter": {
1333
1333
  "line_start": 1,
@@ -1449,16 +1449,16 @@
1449
1449
  "normalized_name": "output-format",
1450
1450
  "line": 515,
1451
1451
  "byte_start": 31983,
1452
- "byte_end": 33460,
1453
- "bytes": 1477,
1452
+ "byte_end": 33474,
1453
+ "bytes": 1491,
1454
1454
  "h3_count": 6
1455
1455
  },
1456
1456
  {
1457
1457
  "name": "Defensive Countermeasure Mapping",
1458
1458
  "normalized_name": "defensive-countermeasure-mapping",
1459
1459
  "line": 548,
1460
- "byte_start": 33460,
1461
- "byte_end": 37328,
1460
+ "byte_start": 33474,
1461
+ "byte_end": 37342,
1462
1462
  "bytes": 3868,
1463
1463
  "h3_count": 0
1464
1464
  },
@@ -1466,8 +1466,8 @@
1466
1466
  "name": "Compliance Theater Check",
1467
1467
  "normalized_name": "compliance-theater-check",
1468
1468
  "line": 569,
1469
- "byte_start": 37328,
1470
- "byte_end": 37988,
1469
+ "byte_start": 37342,
1470
+ "byte_end": 38002,
1471
1471
  "bytes": 660,
1472
1472
  "h3_count": 0
1473
1473
  }
@@ -3230,21 +3230,21 @@
3230
3230
  },
3231
3231
  "sector-telecom": {
3232
3232
  "path": "skills/sector-telecom/skill.md",
3233
- "total_bytes": 20862,
3233
+ "total_bytes": 20754,
3234
3234
  "total_lines": 257,
3235
3235
  "frontmatter": {
3236
3236
  "line_start": 1,
3237
3237
  "line_end": 71,
3238
3238
  "byte_start": 0,
3239
- "byte_end": 1989
3239
+ "byte_end": 1991
3240
3240
  },
3241
3241
  "sections": [
3242
3242
  {
3243
3243
  "name": "Threat Context (mid-2026)",
3244
3244
  "normalized_name": "threat-context",
3245
3245
  "line": 73,
3246
- "byte_start": 1990,
3247
- "byte_end": 5178,
3246
+ "byte_start": 1992,
3247
+ "byte_end": 5180,
3248
3248
  "bytes": 3188,
3249
3249
  "h3_count": 0
3250
3250
  },
@@ -3252,8 +3252,8 @@
3252
3252
  "name": "Framework Lag Declaration",
3253
3253
  "normalized_name": "framework-lag-declaration",
3254
3254
  "line": 87,
3255
- "byte_start": 5178,
3256
- "byte_end": 7260,
3255
+ "byte_start": 5180,
3256
+ "byte_end": 7262,
3257
3257
  "bytes": 2082,
3258
3258
  "h3_count": 0
3259
3259
  },
@@ -3261,8 +3261,8 @@
3261
3261
  "name": "TTP Mapping",
3262
3262
  "normalized_name": "ttp-mapping",
3263
3263
  "line": 91,
3264
- "byte_start": 7260,
3265
- "byte_end": 8694,
3264
+ "byte_start": 7262,
3265
+ "byte_end": 8696,
3266
3266
  "bytes": 1434,
3267
3267
  "h3_count": 0
3268
3268
  },
@@ -3270,8 +3270,8 @@
3270
3270
  "name": "Exploit Availability Matrix",
3271
3271
  "normalized_name": "exploit-availability-matrix",
3272
3272
  "line": 105,
3273
- "byte_start": 8694,
3274
- "byte_end": 9888,
3273
+ "byte_start": 8696,
3274
+ "byte_end": 9890,
3275
3275
  "bytes": 1194,
3276
3276
  "h3_count": 0
3277
3277
  },
@@ -3279,26 +3279,26 @@
3279
3279
  "name": "Analysis Procedure",
3280
3280
  "normalized_name": "analysis-procedure",
3281
3281
  "line": 118,
3282
- "byte_start": 9888,
3283
- "byte_end": 15717,
3284
- "bytes": 5829,
3282
+ "byte_start": 9890,
3283
+ "byte_end": 15596,
3284
+ "bytes": 5706,
3285
3285
  "h3_count": 7
3286
3286
  },
3287
3287
  {
3288
3288
  "name": "Output Format",
3289
3289
  "normalized_name": "output-format",
3290
3290
  "line": 180,
3291
- "byte_start": 15717,
3292
- "byte_end": 17232,
3293
- "bytes": 1515,
3291
+ "byte_start": 15596,
3292
+ "byte_end": 17087,
3293
+ "bytes": 1491,
3294
3294
  "h3_count": 0
3295
3295
  },
3296
3296
  {
3297
3297
  "name": "Compliance Theater Check",
3298
3298
  "normalized_name": "compliance-theater-check",
3299
3299
  "line": 228,
3300
- "byte_start": 17232,
3301
- "byte_end": 19439,
3300
+ "byte_start": 17087,
3301
+ "byte_end": 19294,
3302
3302
  "bytes": 2207,
3303
3303
  "h3_count": 0
3304
3304
  },
@@ -3306,8 +3306,8 @@
3306
3306
  "name": "Defensive Countermeasure Mapping",
3307
3307
  "normalized_name": "defensive-countermeasure-mapping",
3308
3308
  "line": 240,
3309
- "byte_start": 19439,
3310
- "byte_end": 20190,
3309
+ "byte_start": 19294,
3310
+ "byte_end": 20045,
3311
3311
  "bytes": 751,
3312
3312
  "h3_count": 0
3313
3313
  },
@@ -3315,9 +3315,9 @@
3315
3315
  "name": "Hand-Off / Related Skills",
3316
3316
  "normalized_name": "hand-off",
3317
3317
  "line": 250,
3318
- "byte_start": 20190,
3319
- "byte_end": 20862,
3320
- "bytes": 672,
3318
+ "byte_start": 20045,
3319
+ "byte_end": 20754,
3320
+ "bytes": 709,
3321
3321
  "h3_count": 0
3322
3322
  }
3323
3323
  ]
@@ -3888,7 +3888,7 @@
3888
3888
  },
3889
3889
  "email-security-anti-phishing": {
3890
3890
  "path": "skills/email-security-anti-phishing/skill.md",
3891
- "total_bytes": 29232,
3891
+ "total_bytes": 29207,
3892
3892
  "total_lines": 219,
3893
3893
  "frontmatter": {
3894
3894
  "line_start": 1,
@@ -3902,16 +3902,16 @@
3902
3902
  "normalized_name": "threat-context",
3903
3903
  "line": 62,
3904
3904
  "byte_start": 1381,
3905
- "byte_end": 5811,
3906
- "bytes": 4430,
3905
+ "byte_end": 5786,
3906
+ "bytes": 4405,
3907
3907
  "h3_count": 0
3908
3908
  },
3909
3909
  {
3910
3910
  "name": "Framework Lag Declaration",
3911
3911
  "normalized_name": "framework-lag-declaration",
3912
3912
  "line": 80,
3913
- "byte_start": 5811,
3914
- "byte_end": 9893,
3913
+ "byte_start": 5786,
3914
+ "byte_end": 9868,
3915
3915
  "bytes": 4082,
3916
3916
  "h3_count": 0
3917
3917
  },
@@ -3919,8 +3919,8 @@
3919
3919
  "name": "TTP Mapping",
3920
3920
  "normalized_name": "ttp-mapping",
3921
3921
  "line": 102,
3922
- "byte_start": 9893,
3923
- "byte_end": 11985,
3922
+ "byte_start": 9868,
3923
+ "byte_end": 11960,
3924
3924
  "bytes": 2092,
3925
3925
  "h3_count": 0
3926
3926
  },
@@ -3928,8 +3928,8 @@
3928
3928
  "name": "Exploit Availability Matrix",
3929
3929
  "normalized_name": "exploit-availability-matrix",
3930
3930
  "line": 116,
3931
- "byte_start": 11985,
3932
- "byte_end": 13825,
3931
+ "byte_start": 11960,
3932
+ "byte_end": 13800,
3933
3933
  "bytes": 1840,
3934
3934
  "h3_count": 0
3935
3935
  },
@@ -3937,8 +3937,8 @@
3937
3937
  "name": "Analysis Procedure",
3938
3938
  "normalized_name": "analysis-procedure",
3939
3939
  "line": 135,
3940
- "byte_start": 13825,
3941
- "byte_end": 21267,
3940
+ "byte_start": 13800,
3941
+ "byte_end": 21242,
3942
3942
  "bytes": 7442,
3943
3943
  "h3_count": 0
3944
3944
  },
@@ -3946,8 +3946,8 @@
3946
3946
  "name": "Output Format",
3947
3947
  "normalized_name": "output-format",
3948
3948
  "line": 164,
3949
- "byte_start": 21267,
3950
- "byte_end": 23088,
3949
+ "byte_start": 21242,
3950
+ "byte_end": 23063,
3951
3951
  "bytes": 1821,
3952
3952
  "h3_count": 0
3953
3953
  },
@@ -3955,8 +3955,8 @@
3955
3955
  "name": "Compliance Theater Check",
3956
3956
  "normalized_name": "compliance-theater-check",
3957
3957
  "line": 181,
3958
- "byte_start": 23088,
3959
- "byte_end": 24890,
3958
+ "byte_start": 23063,
3959
+ "byte_end": 24865,
3960
3960
  "bytes": 1802,
3961
3961
  "h3_count": 0
3962
3962
  },
@@ -3964,8 +3964,8 @@
3964
3964
  "name": "Defensive Countermeasure Mapping",
3965
3965
  "normalized_name": "defensive-countermeasure-mapping",
3966
3966
  "line": 192,
3967
- "byte_start": 24890,
3968
- "byte_end": 28097,
3967
+ "byte_start": 24865,
3968
+ "byte_end": 28072,
3969
3969
  "bytes": 3207,
3970
3970
  "h3_count": 0
3971
3971
  },
@@ -3973,8 +3973,8 @@
3973
3973
  "name": "Hand-Off / Related Skills",
3974
3974
  "normalized_name": "hand-off",
3975
3975
  "line": 207,
3976
- "byte_start": 28097,
3977
- "byte_end": 29232,
3976
+ "byte_start": 28072,
3977
+ "byte_end": 29207,
3978
3978
  "bytes": 1135,
3979
3979
  "h3_count": 0
3980
3980
  }
@@ -469,7 +469,7 @@
469
469
  "pqc-first": {
470
470
  "description": "Post-quantum cryptography first mentality — hard version gates (OpenSSL 3.5+), algorithm sunset tracking, HNDL assessment, loopback learning for NIST/IETF evolution",
471
471
  "threat_context_excerpt": "The post-quantum migration is not a planning exercise. It is an operational deadline against an adversary that is already collecting ciphertext.",
472
- "produces": "The skill produces a structured PQC Readiness Assessment that scores the org's post-quantum migration posture against the NIST PQC standards (ML-KEM / FIPS 203, ML-DSA / FIPS 204, SLH-DSA / FIPS 205), CNSA 2.0, and the BSI / ANSSI / NCSC migration guidance. The shape below is consumed downstream by `crypto` playbook runs (which feed the assessment into Phase 5 analyze), by `framework-gap-analysis` (for SC-8 / SC-13 / A.8.24 / A.10 lag declarations), and by `compliance-theater` (which compares the harvest-now-decrypt-later exposure against the org's data-classification claims). Preserve the per ...",
472
+ "produces": "The skill produces a structured PQC Readiness Assessment that scores the org's post-quantum migration posture against the NIST PQC standards (ML-KEM / FIPS 203, ML-DSA / FIPS 204, SLH-DSA / FIPS 205), CNSA 2.0, and the BSI / ANSSI / NCSC migration guidance. The shape below is consumed downstream by `crypto` playbook runs (which feed the assessment into the analysis correlation step), by `framework-gap-analysis` (for SC-8 / SC-13 / A.8.24 / A.10 lag declarations), and by `compliance-theater` (which compares the harvest-now-decrypt-later exposure against the org's data-classification claims). Pr ...",
473
473
  "key_xrefs": {
474
474
  "cwe_refs": [
475
475
  "CWE-327"
@@ -1354,7 +1354,7 @@
1354
1354
  "sector-telecom": {
1355
1355
  "description": "Telecom and 5G security for mid-2026 — Salt Typhoon, Volt Typhoon, CALEA / IPA-LI gateway compromise, signaling-protocol abuse (SS7 / Diameter / GTP), 5G N6 / N9 isolation, gNB / DU / CU integrity, OEM-equipment supply-chain compromise, AI-RAN / O-RAN security",
1356
1356
  "threat_context_excerpt": "**Salt Typhoon (China nation-state; PRC Ministry of State Security nexus).** The 2024–2026 campaign — disclosed in successive Five Eyes joint advisories from October 2024 onward (CISA / NSA / FBI joint product reissued through 2025–2026) — compromised at least nine US carriers (publicly named: AT&T, Verizon, T-Mobile US, Lumen, Charter, Cox, Windstream, Consolidated, plus undisclosed others) and extended to AU / CA / NZ / UK Tier-1 carriers. Threat actor TTPs map to T1199 (Trusted Relationship) via OEM vendor supply chain, T1098 (Account Manipulation) for persistent admin access on NMS, and ...",
1357
- "produces": "The investigation evidence bundle returned by phase 5 + 6 has this shape:\n\n```json\n{\n \"session_id\": \"telecom-<iso>\",\n \"playbook_id\": \"sector-telecom\",\n \"classification\": \"detected | clean | not_detected | inconclusive\",\n \"evidence_hash\": \"sha256:...\",\n \"telecom_specific_findings\": {\n \"li_gateway_audit\": {\n \"anomalous_activations\": 0,\n \"activations_outside_ticket\": 0,\n \"outbound_tunnel_to_non_allowlist_ip\": 0\n },\n \"gnb_attestation_state\": {\n \"expected_hashes_compared\": 0,\n \"drifted_basestations\": [],\n \"downgrade_events\": 0\n },\n \"signaling_anomal ...",
1357
+ "produces": "The investigation evidence bundle has this shape:\n\n```json\n{\n \"session_id\": \"telecom-<iso>\",\n \"playbook_id\": \"sector-telecom\",\n \"classification\": \"detected | clean | not_detected | inconclusive\",\n \"evidence_hash\": \"sha256:...\",\n \"telecom_specific_findings\": {\n \"li_gateway_audit\": {\n \"anomalous_activations\": 0,\n \"activations_outside_ticket\": 0,\n \"outbound_tunnel_to_non_allowlist_ip\": 0\n },\n \"gnb_attestation_state\": {\n \"expected_hashes_compared\": 0,\n \"drifted_basestations\": [],\n \"downgrade_events\": 0\n },\n \"signaling_anomaly_count\": {\n \"ss7_p ...",
1358
1358
  "key_xrefs": {
1359
1359
  "cwe_refs": [
1360
1360
  "CWE-287",
@@ -3,8 +3,8 @@
3
3
  "schema_version": "1.0.0",
4
4
  "tokenizer_note": "Character-density approximation: 1 token ≈ 4 chars. This is the canonical rule-of-thumb for OpenAI tokenizers on English+technical text. Claude's tokenizer is typically more efficient on prose; treat this as an upper-bound budget for both. Consumers with stricter precision needs should re-tokenize with their own tokenizer.",
5
5
  "approx_chars_per_token": 4,
6
- "total_chars": 1672973,
7
- "total_approx_tokens": 418252,
6
+ "total_chars": 1672872,
7
+ "total_approx_tokens": 418226,
8
8
  "skill_count": 42
9
9
  },
10
10
  "skills": {
@@ -575,10 +575,10 @@
575
575
  },
576
576
  "threat-model-currency": {
577
577
  "path": "skills/threat-model-currency/skill.md",
578
- "bytes": 33306,
579
- "chars": 33120,
578
+ "bytes": 33310,
579
+ "chars": 33124,
580
580
  "lines": 448,
581
- "approx_tokens": 8280,
581
+ "approx_tokens": 8281,
582
582
  "approx_chars_per_token": 4,
583
583
  "sections": {
584
584
  "frontmatter-scope": {
@@ -612,9 +612,9 @@
612
612
  "approx_tokens": 765
613
613
  },
614
614
  "exploit-availability-matrix": {
615
- "bytes": 2349,
616
- "chars": 2331,
617
- "approx_tokens": 583
615
+ "bytes": 2353,
616
+ "chars": 2335,
617
+ "approx_tokens": 584
618
618
  },
619
619
  "compliance-theater-check": {
620
620
  "bytes": 1568,
@@ -770,10 +770,10 @@
770
770
  },
771
771
  "pqc-first": {
772
772
  "path": "skills/pqc-first/skill.md",
773
- "bytes": 37988,
774
- "chars": 37818,
773
+ "bytes": 38002,
774
+ "chars": 37832,
775
775
  "lines": 572,
776
- "approx_tokens": 9455,
776
+ "approx_tokens": 9458,
777
777
  "approx_chars_per_token": 4,
778
778
  "sections": {
779
779
  "threat-context": {
@@ -837,9 +837,9 @@
837
837
  "approx_tokens": 375
838
838
  },
839
839
  "output-format": {
840
- "bytes": 1477,
841
- "chars": 1471,
842
- "approx_tokens": 368
840
+ "bytes": 1491,
841
+ "chars": 1485,
842
+ "approx_tokens": 371
843
843
  },
844
844
  "defensive-countermeasure-mapping": {
845
845
  "bytes": 3868,
@@ -1880,10 +1880,10 @@
1880
1880
  },
1881
1881
  "sector-telecom": {
1882
1882
  "path": "skills/sector-telecom/skill.md",
1883
- "bytes": 20862,
1884
- "chars": 20762,
1883
+ "bytes": 20754,
1884
+ "chars": 20668,
1885
1885
  "lines": 257,
1886
- "approx_tokens": 5191,
1886
+ "approx_tokens": 5167,
1887
1887
  "approx_chars_per_token": 4,
1888
1888
  "sections": {
1889
1889
  "threat-context": {
@@ -1907,14 +1907,14 @@
1907
1907
  "approx_tokens": 299
1908
1908
  },
1909
1909
  "analysis-procedure": {
1910
- "bytes": 5829,
1911
- "chars": 5773,
1912
- "approx_tokens": 1443
1910
+ "bytes": 5706,
1911
+ "chars": 5664,
1912
+ "approx_tokens": 1416
1913
1913
  },
1914
1914
  "output-format": {
1915
- "bytes": 1515,
1916
- "chars": 1515,
1917
- "approx_tokens": 379
1915
+ "bytes": 1491,
1916
+ "chars": 1491,
1917
+ "approx_tokens": 373
1918
1918
  },
1919
1919
  "compliance-theater-check": {
1920
1920
  "bytes": 2207,
@@ -1927,9 +1927,9 @@
1927
1927
  "approx_tokens": 188
1928
1928
  },
1929
1929
  "hand-off": {
1930
- "bytes": 672,
1931
- "chars": 662,
1932
- "approx_tokens": 166
1930
+ "bytes": 709,
1931
+ "chars": 699,
1932
+ "approx_tokens": 175
1933
1933
  }
1934
1934
  }
1935
1935
  },
@@ -2265,16 +2265,16 @@
2265
2265
  },
2266
2266
  "email-security-anti-phishing": {
2267
2267
  "path": "skills/email-security-anti-phishing/skill.md",
2268
- "bytes": 29232,
2269
- "chars": 29116,
2268
+ "bytes": 29207,
2269
+ "chars": 29091,
2270
2270
  "lines": 219,
2271
- "approx_tokens": 7279,
2271
+ "approx_tokens": 7273,
2272
2272
  "approx_chars_per_token": 4,
2273
2273
  "sections": {
2274
2274
  "threat-context": {
2275
- "bytes": 4430,
2276
- "chars": 4414,
2277
- "approx_tokens": 1104
2275
+ "bytes": 4405,
2276
+ "chars": 4389,
2277
+ "approx_tokens": 1097
2278
2278
  },
2279
2279
  "framework-lag-declaration": {
2280
2280
  "bytes": 4082,
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exceptd-security",
3
- "version": "0.14.19",
3
+ "version": "0.14.20",
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-15",
55
55
  "signature": "lXhZgoIrrVloO3XaTvo/43AxZn4mwErstd7DR0O/oVhD3AOGODM4HqrageYEou9WKOdMEGP5mJNTjJsXdP5NDA==",
56
- "signed_at": "2026-05-28T02:00:05.573Z",
56
+ "signed_at": "2026-05-28T02:32:11.254Z",
57
57
  "cwe_refs": [
58
58
  "CWE-125",
59
59
  "CWE-362",
@@ -123,7 +123,7 @@
123
123
  ],
124
124
  "last_threat_review": "2026-05-17",
125
125
  "signature": "ztSKk/zFMFbT12qRcEeBKpydBn7fTT86KxMmor0DTCoKQWk5fJ0fSInfP1XMSB6rFk4/SuSjKVxQRMKVJ5a+Cg==",
126
- "signed_at": "2026-05-28T02:00:05.575Z",
126
+ "signed_at": "2026-05-28T02:32:11.256Z",
127
127
  "cwe_refs": [
128
128
  "CWE-1039",
129
129
  "CWE-1426",
@@ -196,7 +196,7 @@
196
196
  ],
197
197
  "last_threat_review": "2026-05-17",
198
198
  "signature": "K6QdPHNK5c4K5QFjrW0QsUhjp71D7SOisSoulwPNSvKRdi2rY+yg0kdckijBMkLMsVPyUvcC9giu93mKJ1OZDg==",
199
- "signed_at": "2026-05-28T02:00:05.575Z",
199
+ "signed_at": "2026-05-28T02:32:11.256Z",
200
200
  "cwe_refs": [
201
201
  "CWE-22",
202
202
  "CWE-345",
@@ -248,7 +248,7 @@
248
248
  "framework_gaps": [],
249
249
  "last_threat_review": "2026-05-22",
250
250
  "signature": "Qd3SBWmUAaaT++e1Ry2wBIz/dCBmNBMl0+4Rb0etvJLES0fIBEAkU1mTbgNZnT5XOg9J5twdUpymWtmKnDDQCQ==",
251
- "signed_at": "2026-05-28T02:00:05.576Z"
251
+ "signed_at": "2026-05-28T02:32:11.257Z"
252
252
  },
253
253
  {
254
254
  "name": "compliance-theater",
@@ -279,7 +279,7 @@
279
279
  ],
280
280
  "last_threat_review": "2026-05-22",
281
281
  "signature": "F2Shxae0ua0gPtvwzTRVzzHaIgJcFDRT3/akLUAZ4aaMQhkleKkcTaTpkjp+pTVEdPfLeLGNCeAOMs+whVYOBg==",
282
- "signed_at": "2026-05-28T02:00:05.576Z"
282
+ "signed_at": "2026-05-28T02:32:11.257Z"
283
283
  },
284
284
  {
285
285
  "name": "exploit-scoring",
@@ -308,7 +308,7 @@
308
308
  ],
309
309
  "last_threat_review": "2026-05-18",
310
310
  "signature": "NA1hoQycvQhSUoG5rwlXX0mOVmGxoXRVezkELGEA2nZOdGis4gXkHT3O6Sfw7zxE4JuMrsCb65TEeOWk9WEPDg==",
311
- "signed_at": "2026-05-28T02:00:05.577Z"
311
+ "signed_at": "2026-05-28T02:32:11.258Z"
312
312
  },
313
313
  {
314
314
  "name": "rag-pipeline-security",
@@ -345,7 +345,7 @@
345
345
  ],
346
346
  "last_threat_review": "2026-05-22",
347
347
  "signature": "W3pS8lnaCP96TQzsJpG5d5yv5IwgaQyS4Z2Ctcz5BOJf6LbajSIgeDgTZ4f4Bhr5m4E7KsgWGjZS4x7Fwd33BQ==",
348
- "signed_at": "2026-05-28T02:00:05.577Z",
348
+ "signed_at": "2026-05-28T02:32:11.258Z",
349
349
  "cwe_refs": [
350
350
  "CWE-1395",
351
351
  "CWE-1426"
@@ -405,7 +405,7 @@
405
405
  ],
406
406
  "last_threat_review": "2026-05-17",
407
407
  "signature": "/WDGygh1Ck4yWlBWDGtEUVCqKB8d+UaJXoAoBXujtt+GAl8JbMNpaN1TvI0WkEltQ9dTxaAzSn20/eVDqv8iDQ==",
408
- "signed_at": "2026-05-28T02:00:05.577Z",
408
+ "signed_at": "2026-05-28T02:32:11.258Z",
409
409
  "d3fend_refs": [
410
410
  "D3-CA",
411
411
  "D3-CSPP",
@@ -440,7 +440,7 @@
440
440
  "framework_gaps": [],
441
441
  "last_threat_review": "2026-05-22",
442
442
  "signature": "za1NKBpy9LC91F/ESO/qhUfmvVr8GNItQOjR5OJLeHm+2dQ9HHiFWQK2eo53V/n/0uhubuggURA3yS6kJuWwBg==",
443
- "signed_at": "2026-05-28T02:00:05.578Z",
443
+ "signed_at": "2026-05-28T02:32:11.259Z",
444
444
  "cwe_refs": [
445
445
  "CWE-1188"
446
446
  ],
@@ -473,8 +473,8 @@
473
473
  "attack_refs": [],
474
474
  "framework_gaps": [],
475
475
  "last_threat_review": "2026-05-18",
476
- "signature": "xiHAhhdufm9hCKU8PLiPE0MX65ej2F4OZwtlWLGLCiie9/km+Kiqbt192LcMvr94v83C98pb9wIaqFsFWft6AQ==",
477
- "signed_at": "2026-05-28T02:00:05.578Z",
476
+ "signature": "1853tUUOO35GCXP4vn4qYdBDCdGJu2/WXCNOShhEt69G6BUoq9C3gYGjKWwEPxRKjwjyMtb2nmsL2BZFHRIADw==",
477
+ "signed_at": "2026-05-28T02:32:11.259Z",
478
478
  "forward_watch": [
479
479
  "New AI attack classes as ATLAS v6 publishes",
480
480
  "Post-quantum adversary capability timeline",
@@ -513,7 +513,7 @@
513
513
  "framework_gaps": [],
514
514
  "last_threat_review": "2026-05-01",
515
515
  "signature": "oYsSk35N2Uzq7MRofACykylcVwkgPhI4luWZ14vmQT+gUKLyZiKVOUJbe1+7lGl6BYPRN0sUDQ0f7S5Eu5w2Ag==",
516
- "signed_at": "2026-05-28T02:00:05.578Z"
516
+ "signed_at": "2026-05-28T02:32:11.259Z"
517
517
  },
518
518
  {
519
519
  "name": "zeroday-gap-learn",
@@ -540,7 +540,7 @@
540
540
  "framework_gaps": [],
541
541
  "last_threat_review": "2026-05-18",
542
542
  "signature": "igRqYyU1unRFH40BsPyAR62SPrk8QZv8dPGb8S9O9EvLCNOZAzm3t+HdT/NKqzWHwrpomOzkkkyLfYI/0qTUDA==",
543
- "signed_at": "2026-05-28T02:00:05.579Z",
543
+ "signed_at": "2026-05-28T02:32:11.260Z",
544
544
  "forward_watch": [
545
545
  "New CISA KEV entries",
546
546
  "New ATLAS TTP additions in each ATLAS release",
@@ -603,8 +603,8 @@
603
603
  "New CRQC timeline estimates from academic cryptanalysis"
604
604
  ],
605
605
  "last_threat_review": "2026-05-22",
606
- "signature": "i/17u4kJiSpcZAz7LnTyRePFugQOstQ1P4kVoe0oGf4E2/j8oIN9U9DccjUn/YHZhKWIJ2AILG/DMhvMrr3bBg==",
607
- "signed_at": "2026-05-28T02:00:05.579Z",
606
+ "signature": "XJFnPtu9tG23qlHGUJulQ0/Vu/p41qFrQng0fE3+GpCPD35+oipdlDXvf9zFo6A6i4OVj601qNuXKh9/kfcHDw==",
607
+ "signed_at": "2026-05-28T02:32:11.260Z",
608
608
  "cwe_refs": [
609
609
  "CWE-327"
610
610
  ],
@@ -652,7 +652,7 @@
652
652
  ],
653
653
  "last_threat_review": "2026-05-22",
654
654
  "signature": "QuOVaQ4E2Sl39TClbhZ7HA9XrYAyRrDL44HY3RTE7aWLue0hV2cxaBt40ALGmHS++631QGFDlZTLZI77Tr6nAA==",
655
- "signed_at": "2026-05-28T02:00:05.579Z"
655
+ "signed_at": "2026-05-28T02:32:11.260Z"
656
656
  },
657
657
  {
658
658
  "name": "security-maturity-tiers",
@@ -689,7 +689,7 @@
689
689
  ],
690
690
  "last_threat_review": "2026-05-01",
691
691
  "signature": "8Px1s2lDj10/Q6erwEQlXgUHM1+OTruUR8qAHPX7Oo3k/l69N6P9sm0PsafS9wDFtj9l5C/OiLiFgzMlMt6vBw==",
692
- "signed_at": "2026-05-28T02:00:05.580Z",
692
+ "signed_at": "2026-05-28T02:32:11.261Z",
693
693
  "cwe_refs": [
694
694
  "CWE-1188"
695
695
  ]
@@ -724,7 +724,7 @@
724
724
  "framework_gaps": [],
725
725
  "last_threat_review": "2026-05-11",
726
726
  "signature": "urRcataVWg6/utyEkSiOWoNxTL8sABRjPR7ShyDfZGnAozFph/yDktSoaPVxQDXwu9EfJE+qhUW5OYR/yJECBQ==",
727
- "signed_at": "2026-05-28T02:00:05.580Z"
727
+ "signed_at": "2026-05-28T02:32:11.261Z"
728
728
  },
729
729
  {
730
730
  "name": "attack-surface-pentest",
@@ -796,7 +796,7 @@
796
796
  "Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — Microsoft Edge 4-bug sandbox escape by Orange Tsai (DEVCORE); forward-watch only (browser sandbox, out of current playbook scope); track Microsoft Edge security advisory and KEV add"
797
797
  ],
798
798
  "signature": "C7lv65/Ecm8JJgSKxrX5lxx0YFzKWtrIQSKp+vy50I5e8945s1JmifGUUrnQwRQhq/Pkv7EmfiH5XSO8h75bDg==",
799
- "signed_at": "2026-05-28T02:00:05.580Z"
799
+ "signed_at": "2026-05-28T02:32:11.261Z"
800
800
  },
801
801
  {
802
802
  "name": "fuzz-testing-strategy",
@@ -856,7 +856,7 @@
856
856
  "OSS-Fuzz-Gen / AI-assisted harness generation becoming the default expectation for OSS maintainers"
857
857
  ],
858
858
  "signature": "Z7ypCUnXx8JpLtgxxB6RHNi39w74AmrGY1N4ofAGCXhkuM2EaFVm1AU0dvl9UQ1bVLfHKEDGqMO/TwlIY7RABg==",
859
- "signed_at": "2026-05-28T02:00:05.581Z"
859
+ "signed_at": "2026-05-28T02:32:11.261Z"
860
860
  },
861
861
  {
862
862
  "name": "dlp-gap-analysis",
@@ -931,7 +931,7 @@
931
931
  "Quebec Law 25, India DPDPA, KSA PDPL enforcement actions naming AI-tool prompt data as in-scope personal information"
932
932
  ],
933
933
  "signature": "IgEnpHOhCftAyfUNdKsjbrd169T9pJkk/rRM2ZEna+H18y7p5x48+1kME2sJMZjJuyAdQFBJi8PJXZFwLGI+DQ==",
934
- "signed_at": "2026-05-28T02:00:05.581Z"
934
+ "signed_at": "2026-05-28T02:32:11.262Z"
935
935
  },
936
936
  {
937
937
  "name": "supply-chain-integrity",
@@ -1010,7 +1010,7 @@
1010
1010
  "Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Megatron Bridge path traversal by haehae; AI training-stack file-system trust boundary; track patch and SBOM-attestation impact"
1011
1011
  ],
1012
1012
  "signature": "pcLrM98A3vUSZRjwNAk0aZ9umvOwB41XCLLsCOy/IebB2F/06oIrGUKkMHtHwm4pTVPShMMcKdZQQ3jz30FnCg==",
1013
- "signed_at": "2026-05-28T02:00:05.581Z"
1013
+ "signed_at": "2026-05-28T02:32:11.262Z"
1014
1014
  },
1015
1015
  {
1016
1016
  "name": "defensive-countermeasure-mapping",
@@ -1067,7 +1067,7 @@
1067
1067
  ],
1068
1068
  "last_threat_review": "2026-05-11",
1069
1069
  "signature": "G5q5elh7Q7eu2xcwTVQJGDTGfvZR0OGQaLSLJPb2wjzCHFF8PWuZfCHZdjjqisiRzRWPyLlzgfHeMJqOdy7cBw==",
1070
- "signed_at": "2026-05-28T02:00:05.582Z"
1070
+ "signed_at": "2026-05-28T02:32:11.262Z"
1071
1071
  },
1072
1072
  {
1073
1073
  "name": "identity-assurance",
@@ -1134,7 +1134,7 @@
1134
1134
  "d3fend_refs": [],
1135
1135
  "last_threat_review": "2026-05-11",
1136
1136
  "signature": "Wv5hGMeHjlaQK1zwicVCA7AvdKgJBgvcjdpGM9Ywahh9tagAKhbkOjybowDQZzu7OZ3bDkbh6pBYc1Sdwr6NAA==",
1137
- "signed_at": "2026-05-28T02:00:05.582Z"
1137
+ "signed_at": "2026-05-28T02:32:11.263Z"
1138
1138
  },
1139
1139
  {
1140
1140
  "name": "ot-ics-security",
@@ -1190,7 +1190,7 @@
1190
1190
  "d3fend_refs": [],
1191
1191
  "last_threat_review": "2026-05-11",
1192
1192
  "signature": "8t5qKHd3yWi57dvG36YQkLN/X9bQWqtEiYjay4IfSmqhJpM/xXPaQVKNGz3wscrO8OLKUZ0OaX7Mj5kzpgBKBQ==",
1193
- "signed_at": "2026-05-28T02:00:05.582Z"
1193
+ "signed_at": "2026-05-28T02:32:11.263Z"
1194
1194
  },
1195
1195
  {
1196
1196
  "name": "coordinated-vuln-disclosure",
@@ -1242,7 +1242,7 @@
1242
1242
  "NYDFS 23 NYCRR 500 amendments potentially adding explicit CVD program requirements"
1243
1243
  ],
1244
1244
  "signature": "GDGt4UPqBa04PjlpSmpyihGzd3OgfBN7jaAK5tfwp+LRSs3ygKOdbeivUCCHNagTY1hE6hG2Ou40ADfBFuXeAg==",
1245
- "signed_at": "2026-05-28T02:00:05.582Z"
1245
+ "signed_at": "2026-05-28T02:32:11.263Z"
1246
1246
  },
1247
1247
  {
1248
1248
  "name": "threat-modeling-methodology",
@@ -1292,7 +1292,7 @@
1292
1292
  "PASTA v2 updates incorporating AI/ML application threats"
1293
1293
  ],
1294
1294
  "signature": "rFBpOQEJUPpl+v88Lw/WqVJRhTl80vy0VbPAbzQj3Q0suJRRrJg368I9uKu5LXIBKFDvKxnGIcIzbGg9NUtaCA==",
1295
- "signed_at": "2026-05-28T02:00:05.583Z"
1295
+ "signed_at": "2026-05-28T02:32:11.264Z"
1296
1296
  },
1297
1297
  {
1298
1298
  "name": "webapp-security",
@@ -1366,7 +1366,7 @@
1366
1366
  "d3fend_refs": [],
1367
1367
  "last_threat_review": "2026-05-11",
1368
1368
  "signature": "ux85YI4t2mVHOyt744Yin1HHy+z11JIFygjKfFfQOBBl5QVV3A267jeIy7utix85irMcpZm/T3yx/ooqiK2tBA==",
1369
- "signed_at": "2026-05-28T02:00:05.583Z",
1369
+ "signed_at": "2026-05-28T02:32:11.264Z",
1370
1370
  "forward_watch": [
1371
1371
  "NGINX Rift CVE-2026-42945 (disclosed 2026-05-13, source depthfirst) — KEV-watch predicted CISA KEV listing by 2026-05-29; AI-assisted discovery angle; track for active-exploitation confirmation and patch advisory affecting front-door web app deployments"
1372
1372
  ]
@@ -1419,7 +1419,7 @@
1419
1419
  "d3fend_refs": [],
1420
1420
  "last_threat_review": "2026-05-15",
1421
1421
  "signature": "IIXnkZ5ZNqFwOto5KfytADTLLZLoyXNZACD1ORZ40P1HUAQxe6u2uyXFzzsfuob4Uy06jNkRGr2FFgCphUH1Cw==",
1422
- "signed_at": "2026-05-28T02:00:05.584Z"
1422
+ "signed_at": "2026-05-28T02:32:11.265Z"
1423
1423
  },
1424
1424
  {
1425
1425
  "name": "sector-healthcare",
@@ -1479,7 +1479,7 @@
1479
1479
  "d3fend_refs": [],
1480
1480
  "last_threat_review": "2026-05-11",
1481
1481
  "signature": "AhF9KF8ZBlDteciV+F8IBSmFVYCvQOn44GmD4rZjgLoPxfIv/QE1/vSkK32zyqDKtHWkLSXExbkkPkxA/V6dDw==",
1482
- "signed_at": "2026-05-28T02:00:05.584Z"
1482
+ "signed_at": "2026-05-28T02:32:11.265Z"
1483
1483
  },
1484
1484
  {
1485
1485
  "name": "sector-financial",
@@ -1560,7 +1560,7 @@
1560
1560
  "TIBER-EU framework v2.0 alignment with DORA TLPT RTS (JC 2024/40); cross-recognition with CBEST and iCAST"
1561
1561
  ],
1562
1562
  "signature": "HQgZvb4ReziEz5rNFr8i/O8/rJEZR+iHRROT7m/D2QUqhrcNISPkYXENsUZlG8xapzy/Ik92ehkseyj4hdmhCQ==",
1563
- "signed_at": "2026-05-28T02:00:05.584Z"
1563
+ "signed_at": "2026-05-28T02:32:11.266Z"
1564
1564
  },
1565
1565
  {
1566
1566
  "name": "sector-federal-government",
@@ -1629,7 +1629,7 @@
1629
1629
  "Australia PSPF 2024 revision and ISM quarterly updates — track for Essential Eight Maturity Level requirements for federal entities"
1630
1630
  ],
1631
1631
  "signature": "linxmsXZiOYtcs71sSWgGCrvb8xQfmxmtTY5PRvZJ0/8FgJulo0tQtejzexYG775s7XhjAmGsDP238BQTQ8ADA==",
1632
- "signed_at": "2026-05-28T02:00:05.585Z"
1632
+ "signed_at": "2026-05-28T02:32:11.266Z"
1633
1633
  },
1634
1634
  {
1635
1635
  "name": "sector-energy",
@@ -1694,7 +1694,7 @@
1694
1694
  "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"
1695
1695
  ],
1696
1696
  "signature": "JjBfc0ovta560Clk0x3QGRM5osFJDwcvpy3rT7QEGdCIL827jzE8QCow1C8deXq+4JhY2sA/d7/8IsxikdlkCg==",
1697
- "signed_at": "2026-05-28T02:00:05.585Z"
1697
+ "signed_at": "2026-05-28T02:32:11.266Z"
1698
1698
  },
1699
1699
  {
1700
1700
  "name": "sector-telecom",
@@ -1779,8 +1779,8 @@
1779
1779
  "3GPP TS 33.501 updates (5G security architecture rebaseline)",
1780
1780
  "O-RAN SFG / WG11 security specifications"
1781
1781
  ],
1782
- "signature": "JWVxKFoKrbX4d+Tko1d4OBdwyg25MfFFKn4CT6E/CzH+YwnU3T6Y76uBQIKg3+gIGTvPduqyvQwQQ5FxKDuPBw==",
1783
- "signed_at": "2026-05-28T02:00:05.585Z"
1782
+ "signature": "QpfWU8d2FFbo/Kt0Be2jcyDM9JPhKOiwKSi+RWmtPa2SrBVzFNYdC3T23fQXxHDEC2iyApEbXnwk8KN4d6PuBQ==",
1783
+ "signed_at": "2026-05-28T02:32:11.267Z"
1784
1784
  },
1785
1785
  {
1786
1786
  "name": "api-security",
@@ -1849,7 +1849,7 @@
1849
1849
  "d3fend_refs": [],
1850
1850
  "last_threat_review": "2026-05-18",
1851
1851
  "signature": "BmCRCestWqr55+fCynEhtAl5NWLT+xLTkpwS0Icp3SaoZOw/ce3Y6TtqjHRSKn4CBJq7YDiLRWxmhO3MStvOAA==",
1852
- "signed_at": "2026-05-28T02:00:05.586Z",
1852
+ "signed_at": "2026-05-28T02:32:11.267Z",
1853
1853
  "forward_watch": [
1854
1854
  "NGINX Rift CVE-2026-42945 (disclosed 2026-05-13, source depthfirst) — KEV-watch predicted CISA KEV listing by 2026-05-29; track for active-exploitation confirmation and patch advisory affecting API gateway / reverse-proxy deployments",
1855
1855
  "Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — LiteLLM 3-bug SSRF + Code Injection chain by k3vg3n; LLM-proxy API surface; track upstream patch and CVE assignments",
@@ -1935,7 +1935,7 @@
1935
1935
  "CISA KEV additions for cloud-control-plane CVEs (IMDSv1 abuses, federation token mishandling, cross-tenant boundary failures); CISA Cybersecurity Advisories for cross-cloud advisories"
1936
1936
  ],
1937
1937
  "signature": "/DV3pmZwrRySrk1OCbyI+0BQESacjupJfUX3eC2NGtXuYOBro0vndIP+z27heFxumnjU3a9sfla7/U9X+pqnDw==",
1938
- "signed_at": "2026-05-28T02:00:05.586Z"
1938
+ "signed_at": "2026-05-28T02:32:11.267Z"
1939
1939
  },
1940
1940
  {
1941
1941
  "name": "container-runtime-security",
@@ -1997,7 +1997,7 @@
1997
1997
  "d3fend_refs": [],
1998
1998
  "last_threat_review": "2026-05-15",
1999
1999
  "signature": "E2UGSf9ATyYgzBr8uM/0ubOUmDqo1jVA7f9mVxv6LHfWGCNuQNXDyuNou9VAmUCeeXEeUYIi3AFjXkJqpOkxDA==",
2000
- "signed_at": "2026-05-28T02:00:05.586Z",
2000
+ "signed_at": "2026-05-28T02:32:11.268Z",
2001
2001
  "forward_watch": [
2002
2002
  "Pwn2Own Berlin 2026 (disclosed 2026-05-14, embargo ends 2026-08-12) — NVIDIA Container Toolkit container escape ($50K award) by chompie / IBM X-Force XOR; high-severity container/hypervisor boundary break; track patch and KEV add post-embargo"
2003
2003
  ]
@@ -2071,7 +2071,7 @@
2071
2071
  "MITRE ATLAS v5.6.0 (released May 2026) shipped the AML.T0010 sub-technique expansion this forecast tracked plus new techniques (\"Publish Poisoned AI Agent Tool\", \"Escape to Host\"); inventory now 16 tactics, 84 techniques, 56 sub-techniques. Forward watch: subsequent ATLAS minor and major releases — track next-cadence updates to agentic-AI TTPs and MLOps-pipeline-specific techniques"
2072
2072
  ],
2073
2073
  "signature": "IL+DlRCDJN/p08iiJCFkasKcoyjcB0uWrJ6ORLjQcS1HrUa5Xt62QxVjYPHzaevlm5y36ZdmfESqsZJmzK3lCg==",
2074
- "signed_at": "2026-05-28T02:00:05.587Z"
2074
+ "signed_at": "2026-05-28T02:32:11.268Z"
2075
2075
  },
2076
2076
  {
2077
2077
  "name": "incident-response-playbook",
@@ -2133,7 +2133,7 @@
2133
2133
  "NYDFS 23 NYCRR 500.17 amendments tightening ransom-payment 24h disclosure operationalization"
2134
2134
  ],
2135
2135
  "signature": "MmjLjlmOMLjhJJ4ZfR8MYlHam+ZB+eSqfh6Nv+DecaG4O5zeo9DBP/iL3cbyDVZxmhnhivgJild2ccYeWTeZAg==",
2136
- "signed_at": "2026-05-28T02:00:05.587Z"
2136
+ "signed_at": "2026-05-28T02:32:11.269Z"
2137
2137
  },
2138
2138
  {
2139
2139
  "name": "ransomware-response",
@@ -2213,7 +2213,7 @@
2213
2213
  ],
2214
2214
  "last_threat_review": "2026-05-22",
2215
2215
  "signature": "ssueL03g9fWlhXpTe+IiY5l7RqQkunN4DTN5QETKE+VOX+qggdjAR8PONxk77ol4xWYmHrM/VcH8CNtXUEvgBA==",
2216
- "signed_at": "2026-05-28T02:00:05.587Z"
2216
+ "signed_at": "2026-05-28T02:32:11.269Z"
2217
2217
  },
2218
2218
  {
2219
2219
  "name": "email-security-anti-phishing",
@@ -2265,8 +2265,8 @@
2265
2265
  "cwe_refs": [],
2266
2266
  "d3fend_refs": [],
2267
2267
  "last_threat_review": "2026-05-18",
2268
- "signature": "rK+WnuS+9tqEABmwc0jO/PEmxcLjG1/tmUb897HsClQeKzf+TQOlwBE+OsbtuKxpjYNwur62Xxs3TxObkwm8Cw==",
2269
- "signed_at": "2026-05-28T02:00:05.588Z"
2268
+ "signature": "oAFeZmci6BN7Xlu0oOThrazZNBQBIWeCQnoZDqjXo9cs1hIe/6ZijSEr3R3hFQSXH3c1KAbhPw+InR9Gc0HIBQ==",
2269
+ "signed_at": "2026-05-28T02:32:11.269Z"
2270
2270
  },
2271
2271
  {
2272
2272
  "name": "age-gates-child-safety",
@@ -2334,7 +2334,7 @@
2334
2334
  "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"
2335
2335
  ],
2336
2336
  "signature": "Rgho5TOFUL1txOzcVR0kASCNdovSU4yt99JlGilJlJRyg0A+BdeeQYrZrhPF6Vx2reUAVG0BeHfcZtSbi+cwCg==",
2337
- "signed_at": "2026-05-28T02:00:05.588Z"
2337
+ "signed_at": "2026-05-28T02:32:11.270Z"
2338
2338
  },
2339
2339
  {
2340
2340
  "name": "cloud-iam-incident",
@@ -2414,7 +2414,7 @@
2414
2414
  ],
2415
2415
  "last_threat_review": "2026-05-15",
2416
2416
  "signature": "e/kij7GtKaytROyIj7V5RH+FC9WtmVFzrmG2kIlNDNn29ep/CRNlIQKwXLpzo/81AIf634pmdr1qy/+vwIuUDA==",
2417
- "signed_at": "2026-05-28T02:00:05.588Z",
2417
+ "signed_at": "2026-05-28T02:32:11.270Z",
2418
2418
  "forward_watch": [
2419
2419
  "AWS IAM Identity Center session-policy refresh and step-up-on-admin enforcement (anticipated 2026-H2 release)",
2420
2420
  "GCP Workload Identity Federation principal-set attribute mapping tightening (post-2026 Q3 Federation hardening guide)",
@@ -2508,7 +2508,7 @@
2508
2508
  ],
2509
2509
  "last_threat_review": "2026-05-15",
2510
2510
  "signature": "ew9Kglc9fAZzbn0ZIfGP7WSK/j4eV2VhSvpy+s5bEfNEVYIMa2kZjnGBapgUsyGDLes9H9K2ovjQyX17+GKiBw==",
2511
- "signed_at": "2026-05-28T02:00:05.589Z",
2511
+ "signed_at": "2026-05-28T02:32:11.270Z",
2512
2512
  "forward_watch": [
2513
2513
  "Entra ID conditional access evolution post-Midnight Blizzard — Microsoft's 2025-2026 commitments on legacy-tenant MFA enforcement and OAuth-app consent gating",
2514
2514
  "Okta IPSIE (Interoperability Profile for Secure Identity in the Enterprise) OpenID Foundation working-group output and adoption timeline",
@@ -2526,6 +2526,6 @@
2526
2526
  ],
2527
2527
  "manifest_signature": {
2528
2528
  "algorithm": "Ed25519",
2529
- "signature_base64": "A9IcW6Aq3w7+HN5w1AY317hnSWFQnrOebXtFjJEDQMO1MHsyLn1yd73rjuMWNQKcwJZ79eXFZfUQNfmr3zrwAQ=="
2529
+ "signature_base64": "5OiCS9JG1FyBhcQTjlzV2KgueN5dvuLey3BsQCUskFORk8RMth3VNoYjSCzbaxKo1U3WcqjY21DtpdjPWFXxCg=="
2530
2530
  }
2531
2531
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blamejs/exceptd-skills",
3
- "version": "0.14.19",
3
+ "version": "0.14.20",
4
4
  "description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (406 CVEs / 171 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.",
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:a14d98c4-ae19-4c3f-b7b7-4f7b8eac8934",
4
+ "serialNumber": "urn:uuid:ad7d6e30-1f30-448b-9b72-08b3725ef84e",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2111-10-04T22:59:16.000Z",
7
+ "timestamp": "2118-03-28T09:49:36.000Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "blamejs",
11
11
  "name": "scripts/refresh-sbom.js",
12
- "version": "0.14.19"
12
+ "version": "0.14.20"
13
13
  }
14
14
  ],
15
15
  "component": {
16
- "bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.14.19",
16
+ "bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.14.20",
17
17
  "type": "application",
18
18
  "name": "@blamejs/exceptd-skills",
19
- "version": "0.14.19",
19
+ "version": "0.14.20",
20
20
  "description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (406 CVEs / 171 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.14.19",
28
+ "purl": "pkg:npm/%40blamejs/exceptd-skills@0.14.20",
29
29
  "hashes": [
30
30
  {
31
31
  "alg": "SHA-256",
32
- "content": "0cb7b8199eb85326d5c176968e0719de6dcaa30e94d41b6bfcf748744619dd7e"
32
+ "content": "c1335307705d90a12e6b3d03d0213107590748fbefb17affec2b4134027a2066"
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.14.19"
38
+ "url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.14.20"
39
39
  },
40
40
  {
41
41
  "type": "vcs",
@@ -116,11 +116,11 @@
116
116
  "hashes": [
117
117
  {
118
118
  "alg": "SHA-256",
119
- "content": "16ad3e1e4f9fd21269c5b9d75b8fbfc8405087a0cb3d2ae889b52fce3f109e9f"
119
+ "content": "70237899d20090dad92ebb1847b7645138b1f94f072f0a4c6101e969f30c4049"
120
120
  },
121
121
  {
122
122
  "alg": "SHA3-512",
123
- "content": "98b3a80808845374818c95b68fda38cdfb79dc40991add63d0e1456be75de8b4f2d890f1e1a52e518c7363a4cbfbf6e6779fb5dd675440252281326ac8126690"
123
+ "content": "5d51b673341672c8f0efbca7ba0c7fb85acbc07fda47ec314bd10b2a979a3c736aa5cea78f73f7f259cd5099332bfaa70b8ab59d0d376d1f41b07cd962b88927"
124
124
  }
125
125
  ]
126
126
  },
@@ -1751,11 +1751,11 @@
1751
1751
  "hashes": [
1752
1752
  {
1753
1753
  "alg": "SHA-256",
1754
- "content": "633b5ddcd6927b365cab9672477db8b0ce64df963f2d44526e10d3eb7b10edd7"
1754
+ "content": "dc4cdb2fa56243e42a1989558997a236e564176fa6c8e5dcae9de9d2dad8399b"
1755
1755
  },
1756
1756
  {
1757
1757
  "alg": "SHA3-512",
1758
- "content": "3bcccff8e1981ae4ca0ea07df52219e444326b718e14d42cfe36dc04e8148ccad8cb2a9a77a162a2b1f3381f07b693b3973fbae4ef24466afa787d22c5a33327"
1758
+ "content": "79f50a6fa13bb5b81b29bed3a637e6e94a3df1689ed14d88bfc6ce1bd1df5353044308c3db24c065d69b522dd38de3c37f5bf0efd9b0ccc6c66a3acc163d77b8"
1759
1759
  }
1760
1760
  ]
1761
1761
  },
@@ -2696,11 +2696,11 @@
2696
2696
  "hashes": [
2697
2697
  {
2698
2698
  "alg": "SHA-256",
2699
- "content": "250f266908f51f99a4cb3aec0d5dacfcf91fac9f3d95e5a117429a40ed2ff45a"
2699
+ "content": "da0b937350e538b55db8daa1f50047d9f4e889e6b89b040dcecfb71feecd63d7"
2700
2700
  },
2701
2701
  {
2702
2702
  "alg": "SHA3-512",
2703
- "content": "fd4b35d28d126b0fd5ea76c565deb723d69738e96545f86b8c3684bf7aea82d32bb2a2ebc278321fed9e8e9895ae4d1851a65c53b945fdecf49cb6964f895ad6"
2703
+ "content": "0e8f1255c307f32515741283bbd8090add1429fbd69a0df1ddff2f246ddac1759216e1c2d8e19ec866cac4f374144525984e621002ff389a982b6e8f3111209a"
2704
2704
  }
2705
2705
  ]
2706
2706
  },
@@ -2891,11 +2891,11 @@
2891
2891
  "hashes": [
2892
2892
  {
2893
2893
  "alg": "SHA-256",
2894
- "content": "3b41b59eb4e8480b691ff17185f42b9fbfd7665e369fc210feba496688cc77aa"
2894
+ "content": "8b77569100d10201044d63a69cbc83c9cfe6d2c3568884aa900ef0eb72ba99c3"
2895
2895
  },
2896
2896
  {
2897
2897
  "alg": "SHA3-512",
2898
- "content": "29d98c34fc97e6bd7b9331c69ae7f27cf1eec5e182d7885c54eb6be91820bde0aaca746bda5590aa12cc1962d43d5337be569bfc7a007f4286ffee6a9a4a0412"
2898
+ "content": "280de5761907468c126ec976b8d8bce97bbb87acdf8895c4f8885630dd2c887a76abff3a2b6781d77f34bc0306801b0f7f6a59e33af85f36f155aea2b92e185d"
2899
2899
  }
2900
2900
  ]
2901
2901
  },
@@ -3011,11 +3011,11 @@
3011
3011
  "hashes": [
3012
3012
  {
3013
3013
  "alg": "SHA-256",
3014
- "content": "59193e39c2fd73fdd7fede38a956bc730bbe4b712d7d6020788bb4d85f001ad8"
3014
+ "content": "2f336a0b79cd28a3353ec0a72ce0469ac57305345d652247e7cb368f79ec8d4f"
3015
3015
  },
3016
3016
  {
3017
3017
  "alg": "SHA3-512",
3018
- "content": "872b65942dd189504cca186babc7543c806b2c1463070f527524e9a2c097b2f030b1806bb434436b3a4bbb4865b4f38d15115327a37ecc9aad64a6bccbd3bf50"
3018
+ "content": "ea3a722c2a18e32d1127393561f3122d827a26b69f95df986999a957f943fb809aef26aa99fd4f1ec0f7223a7e78843c784e0cea2710482f9b6dc20fc7196884"
3019
3019
  }
3020
3020
  ]
3021
3021
  },
@@ -3071,11 +3071,11 @@
3071
3071
  "hashes": [
3072
3072
  {
3073
3073
  "alg": "SHA-256",
3074
- "content": "4295c0efe31dcbec1a7bc96b8ce05d41414d918cbfc7fb7dffb2be7e4d873ae3"
3074
+ "content": "637861b4dcd2cb608c08c5aa62a8ef73efc976584f901e612c73cf53b3559422"
3075
3075
  },
3076
3076
  {
3077
3077
  "alg": "SHA3-512",
3078
- "content": "48b2a5adaea65860fe55c4b263d3365bc8416052ed7bb348f9af60f6af2e377208ece65ff3de4ea56059bf712029b3ad9bd3fead5f1a5aca5292a249ab5e1cdf"
3078
+ "content": "82a8f600bc6ebf7acfe9c80dfe691569f6f65e362e4e81f259c24d899f8cef54c55ee31e56548ddcc0a2fd3a50f31f199d5f133823221457c03e0cfc86a6a076"
3079
3079
  }
3080
3080
  ]
3081
3081
  },
@@ -71,7 +71,7 @@ Phishing remained the #1 initial-access vector through 2025 (Verizon DBIR 2025)
71
71
 
72
72
  **Business Email Compromise losses continued growing through 2025.** FBI IC3 2024 and 2025 reports place BEC at multi-billion-USD annual loss globally, with the wire-redirection and vendor-invoice-fraud subclasses dominant. The 2026 reality is that BEC is no longer "compromised mailbox sends a wire request" — it is increasingly "spoofed-or-look-alike domain plus deepfake voice/video confirmation channel" so that out-of-band verification by phone *fails open* unless the callback number is a pre-registered known-good.
73
73
 
74
- **Defense ecosystem snapshot.** SPF (RFC 7208), DKIM (RFC 6376), and DMARC (RFC 7489) adoption is effectively universal among Fortune 500 sender domains, but **enforcement** (`p=reject` vs `p=none`) lags — only roughly 60% of large enterprise domains are at `p=reject` by mid-2026, with the rest stuck in monitoring mode for fear of breaking legitimate forwarders. BIMI (AuthIndicators Working Group draft, with IETF mailing-list discussion ongoing as of mid-2026) for visual brand verification is deployed at Gmail, Yahoo Mail, and Apple Mail, but requires DMARC `p=quarantine` or `p=reject` to take effect — so it doubles as enforcement-status signaling. ARC (RFC 8617) is the forwarder-authentication answer to the DMARC-vs-mailing-list problem and is maturing across major providers. MTA-STS (RFC 8461) and TLSRPT (RFC 8460) close the in-transit TLS-downgrade gap that opportunistic STARTTLS leaves open. The cloud email duopoly — Microsoft 365 Exchange Online and Google Workspace Gmail — is the canonical ephemeral inbox environment per the project's ephemeral-realities rule; on-prem Exchange remains in regulated and air-gapped enclaves and gets an explicit exception path below.
74
+ **Defense ecosystem snapshot.** SPF (RFC 7208), DKIM (RFC 6376), and DMARC (RFC 7489) adoption is effectively universal among Fortune 500 sender domains, but **enforcement** (`p=reject` vs `p=none`) lags — only roughly 60% of large enterprise domains are at `p=reject` by mid-2026, with the rest stuck in monitoring mode for fear of breaking legitimate forwarders. BIMI (AuthIndicators Working Group draft, with IETF mailing-list discussion ongoing as of mid-2026) for visual brand verification is deployed at Gmail, Yahoo Mail, and Apple Mail, but requires DMARC `p=quarantine` or `p=reject` to take effect — so it doubles as enforcement-status signaling. ARC (RFC 8617) is the forwarder-authentication answer to the DMARC-vs-mailing-list problem and is maturing across major providers. MTA-STS (RFC 8461) and TLSRPT (RFC 8460) close the in-transit TLS-downgrade gap that opportunistic STARTTLS leaves open. The cloud email duopoly — Microsoft 365 Exchange Online and Google Workspace Gmail — is the canonical inbox environment most enterprises operate in; on-prem Exchange remains in regulated and air-gapped enclaves and gets an explicit exception path below.
75
75
 
76
76
  **Phishing-resistant authentication.** FIDO2 / WebAuthn synced passkeys are the only widely deployed authenticator class that survives AiTM proxy phishing (evilginx-class), Tycoon-2FA-style session-token relay, and push-notification fatigue attacks. TOTP, SMS, and push-MFA are all bypassable by 2026 phishing-kit ecosystems. Caffeine and Tycoon 2FA continue to evolve; observed 2025 telemetry shows passkey-relay attempts emerging against poorly configured WebAuthn relying-party verification.
77
77
 
@@ -514,7 +514,7 @@ Priority order:
514
514
 
515
515
  ## Output Format
516
516
 
517
- The skill produces a structured PQC Readiness Assessment that scores the org's post-quantum migration posture against the NIST PQC standards (ML-KEM / FIPS 203, ML-DSA / FIPS 204, SLH-DSA / FIPS 205), CNSA 2.0, and the BSI / ANSSI / NCSC migration guidance. The shape below is consumed downstream by `crypto` playbook runs (which feed the assessment into Phase 5 analyze), by `framework-gap-analysis` (for SC-8 / SC-13 / A.8.24 / A.10 lag declarations), and by `compliance-theater` (which compares the harvest-now-decrypt-later exposure against the org's data-classification claims). Preserve the per-protocol cryptographic-inventory rows verbatim — they are the auditable derivation of the migration roadmap.
517
+ The skill produces a structured PQC Readiness Assessment that scores the org's post-quantum migration posture against the NIST PQC standards (ML-KEM / FIPS 203, ML-DSA / FIPS 204, SLH-DSA / FIPS 205), CNSA 2.0, and the BSI / ANSSI / NCSC migration guidance. The shape below is consumed downstream by `crypto` playbook runs (which feed the assessment into the analysis correlation step), by `framework-gap-analysis` (for SC-8 / SC-13 / A.8.24 / A.10 lag declarations), and by `compliance-theater` (which compares the harvest-now-decrypt-later exposure against the org's data-classification claims). Preserve the per-protocol cryptographic-inventory rows verbatim — they are the auditable derivation of the migration roadmap.
518
518
 
519
519
  ```
520
520
  ## PQC Readiness Assessment
@@ -66,7 +66,7 @@ forward_watch:
66
66
  - "Five Eyes joint advisories on telecom-equipment intrusion"
67
67
  - "3GPP TS 33.501 updates (5G security architecture rebaseline)"
68
68
  - "O-RAN SFG / WG11 security specifications"
69
- last_threat_review: 2026-05-15
69
+ last_threat_review: "2026-05-15"
70
70
  discovery_mode: "standalone" # v0.13.2: operator-reached via `exceptd brief sector-telecom` or `exceptd ask`; not chained into any playbook's direct.skill_chain by design
71
71
  ---
72
72
 
@@ -117,7 +117,7 @@ ATLAS AML.T0040 (Tool / Plugin Compromise) anchors the AI-RAN attack class: plug
117
117
 
118
118
  ## Analysis Procedure
119
119
 
120
- ### Phase 1 — govern (jurisdictional clock + obligations)
120
+ ### Jurisdictional clocks + obligations
121
121
 
122
122
  Surface the operator's jurisdictional notification clocks immediately on detection:
123
123
 
@@ -134,11 +134,11 @@ Surface the operator's jurisdictional notification clocks immediately on detecti
134
134
 
135
135
  Wait for operator acknowledgment of the highest-priority clock before proceeding.
136
136
 
137
- ### Phase 2 — direct (threat context)
137
+ ### Threat context briefing
138
138
 
139
139
  Brief the operator on Salt Typhoon-class TTPs + RWEP-threshold bands. For telecom CVEs with active exploitation: live-patch threshold 90, urgent-patch 70, scheduled 30.
140
140
 
141
- ### Phase 3 — look (artifacts to capture)
141
+ ### Artifacts to capture
142
142
 
143
143
  Capture the following telecom-specific evidence (use `air_gap_alternative` paths if operator is in disconnected mode):
144
144
 
@@ -152,7 +152,7 @@ Capture the following telecom-specific evidence (use `air_gap_alternative` paths
152
152
  - **OEM vendor remote-support tunnel inventory** — open Cisco TAC / Ericsson ENS / Nokia OMS tunnels with last-active timestamp.
153
153
  - **NESAS deployment posture report** — most recent operator-attested deployment match against the vendor-certified build.
154
154
 
155
- ### Phase 4 — detect (indicators)
155
+ ### Detection indicators
156
156
 
157
157
  Walk every indicator's `false_positive_checks_required` list before submitting a hit:
158
158
 
@@ -163,23 +163,23 @@ Walk every indicator's `false_positive_checks_required` list before submitting a
163
163
  - **Unauthorized LI gateway tunnel** — outbound connection from the LI gateway to an IP outside the LE / DOJ / regulator allowlist. FP check: rule out documented maintenance bastion.
164
164
  - **OEM firmware downgrade events** — vendor-equipment firmware version regressed below the operator-published minimum. FP check: rule out documented incident-response rollback.
165
165
 
166
- ### Phase 5 — analyze (correlation)
166
+ ### Correlation
167
167
 
168
168
  Match captured artifacts against `data/cve-catalog.json` entries with `attack_class: telecom` or matching `attack_refs`. Cross-reference against `data/framework-control-gaps.json` for FCC-CPNI-4.1, FCC-Cyber-Incident-Notification-2024, NIS2-Annex-I-Telecom, DORA-Art-21-Telecom-ICT, UK-CAF-B5, AU-ISM-1556, GSMA-NESAS-Deployment, 3GPP-TR-33.926, ITU-T-X.805. Score blast-radius based on subscriber count + LI-feed-exposure dimension + AI-RAN slice-mismapping potential.
169
169
 
170
- ### Phase 6 — validate (priority-sorted remediation)
170
+ ### Priority-sorted remediation
171
171
 
172
172
  Priority 1 (immediate): isolate compromised NMS account; revoke and re-issue LI-gateway operator credentials; pull running-gNB firmware hash off every base station and compare against operator-attested expected.
173
173
  Priority 2 (24h): rotate all OEM vendor remote-support credentials; close TAC tunnels not actively in use; signaling-firewall block on cross-PLMN spike sources.
174
174
  Priority 3 (72h): operator-attested NESAS recertification of every gNB / EMS / OSS; slice-isolation verification across every active 5GC slice; comprehensive review of the last 90 days of NMS admin actions.
175
175
 
176
- ### Phase 7 — close (regulator notifications + evidence preservation)
176
+ ### Regulator notifications + evidence preservation
177
177
 
178
- Draft jurisdictional notification messages with regulator-specific evidence templates. Preserve LI-system audit trail for downstream law-enforcement / intelligence-community handoff. Schedule a follow-up `reattest` window at the highest applicable regulator deadline minus 48 hours.
178
+ Draft jurisdictional notification messages with regulator-specific evidence templates. Preserve LI-system audit trail for downstream law-enforcement / intelligence-community handoff. Schedule a follow-up re-attestation window at the highest applicable regulator deadline minus 48 hours.
179
179
 
180
180
  ## Output Format
181
181
 
182
- The investigation evidence bundle returned by phase 5 + 6 has this shape:
182
+ The investigation evidence bundle has this shape:
183
183
 
184
184
  ```json
185
185
  {
@@ -251,6 +251,6 @@ Theater patterns specific to telecom posture:
251
251
 
252
252
  - **incident-response-playbook** — parent IR flow; sector-telecom extends the IR contract with telecom-specific evidence and jurisdictional clocks.
253
253
  - **framework-gap-analysis** — invoke for downstream Hard-Rule-5 gap mapping against catalog framework_gaps.
254
- - **cred-stores** — LI-gateway operator credential storage falls under the cred-stores skill for secret-management depth.
254
+ - **cred-stores** *(playbook chain, not a skill)* — LI-gateway operator credential storage falls under the `cred-stores` playbook for secret-management depth.
255
255
  - **sector-federal-government** — national-security adjacency on LI-system compromise touches federal investigation scope.
256
256
  - **mcp-agent-trust** — AI-RAN xApp / rApp compromise (ATLAS AML.T0040 class) crosses into MCP-class agent-tool trust boundaries.
@@ -288,7 +288,7 @@ The truth set: every `AML.T*` key in `data/atlas-ttps.json` (excluding `_meta`)
288
288
 
289
289
  ## Exploit Availability Matrix
290
290
 
291
- A threat model is "current" only if it accounts for every `data/cve-catalog.json` entry with RWEP >= 50 — with either a deployed mitigation or a documented, accepted residual risk. As of `last_threat_review: 2026-05-14`:
291
+ A threat model is "current" only if it accounts for every `data/cve-catalog.json` entry with RWEP >= 50 — with either a deployed mitigation or a documented, accepted residual risk. As of the frontmatter `last_threat_review`:
292
292
 
293
293
  | CVE | Name | CVSS | RWEP | KEV | PoC | AI factor | Live-patchable | Required threat-model treatment |
294
294
  |---|---|---|---|---|---|---|---|---|