@blamejs/exceptd-skills 0.9.4 → 0.10.0

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.
@@ -0,0 +1,725 @@
1
+ {
2
+ "_meta": {
3
+ "id": "framework",
4
+ "version": "1.0.0",
5
+ "last_threat_review": "2026-05-11",
6
+ "threat_currency_score": 96,
7
+ "changelog": [
8
+ {
9
+ "version": "1.0.0",
10
+ "date": "2026-05-11",
11
+ "summary": "Initial seven-phase compliance-theater correlation playbook. Analyze-heavy: ingests findings from upstream playbooks (kernel / mcp / ai-api / crypto / sbom), correlates them to per-framework gaps, fires escalation_criteria when paper-compliance claims fail theater tests. Cross-walks across NIST 800-53, ISO 27001:2022, SOC 2, PCI DSS 4.0, NIS2, DORA, EU AI Act, UK CAF, AU ISM/Essential 8, SG MAS TRM, JP NISC, IN CERT-In, CA OSFI B-10.",
12
+ "cves_added": [],
13
+ "framework_gaps_updated": ["nist-800-53-meta", "iso-27001-2022-meta", "soc2-meta", "pci-dss-4-meta", "nis2-meta", "dora-meta", "eu-ai-act-meta", "uk-caf-meta", "au-essential-8-meta", "sg-mas-trm-meta", "jp-nisc-meta", "in-cert-meta", "ca-osfi-b10-meta"]
14
+ }
15
+ ],
16
+ "owner": "@blamejs/grc",
17
+ "air_gap_mode": false,
18
+ "preconditions": [
19
+ {
20
+ "id": "upstream-findings-available",
21
+ "description": "This playbook is analyze-heavy. It consumes upstream playbook findings (kernel / mcp / ai-api / crypto / sbom) as input. If no upstream findings exist, the playbook runs in 'baseline gap inventory' mode without per-finding theater verdicts.",
22
+ "check": "upstream_playbook_findings.length > 0 OR baseline_inventory_mode == true",
23
+ "on_fail": "warn"
24
+ }
25
+ ],
26
+ "mutex": [],
27
+ "feeds_into": [
28
+ {
29
+ "playbook_id": "sbom",
30
+ "condition": "any compliance_theater_check.verdict == 'theater' AND blast_radius_score >= 4"
31
+ }
32
+ ]
33
+ },
34
+
35
+ "domain": {
36
+ "name": "Compliance theater correlation and framework-gap mapping",
37
+ "attack_class": "compliance-theater",
38
+ "atlas_refs": [],
39
+ "attack_refs": [],
40
+ "cve_refs": [],
41
+ "cwe_refs": [],
42
+ "d3fend_refs": [],
43
+ "frameworks_in_scope": [
44
+ "nist-800-53", "nist-800-82", "nist-csf-2", "iso-27001-2022",
45
+ "soc2", "pci-dss-4", "nis2", "dora", "eu-ai-act", "eu-cra",
46
+ "uk-caf", "au-ism", "au-essential-8", "sg-mas-trm",
47
+ "jp-nisc", "in-cert", "ca-osfi-b10", "hipaa", "nerc-cip", "cmmc"
48
+ ]
49
+ },
50
+
51
+ "phases": {
52
+
53
+ "govern": {
54
+ "jurisdiction_obligations": [
55
+ {
56
+ "jurisdiction": "EU",
57
+ "regulation": "NIS2 Art.21",
58
+ "obligation": "submit_governance_evidence",
59
+ "window_hours": 720,
60
+ "clock_starts": "manual",
61
+ "evidence_required": ["compliance_theater_verdicts", "framework_gap_mapping", "exception_register", "risk_acceptance_records"]
62
+ },
63
+ {
64
+ "jurisdiction": "EU",
65
+ "regulation": "DORA Art.5",
66
+ "obligation": "submit_governance_evidence",
67
+ "window_hours": 720,
68
+ "clock_starts": "manual",
69
+ "evidence_required": ["ict_risk_governance_evidence", "framework_lag_declarations", "compensating_controls_register"]
70
+ },
71
+ {
72
+ "jurisdiction": "EU",
73
+ "regulation": "NIS2 Art.23",
74
+ "obligation": "notify_regulator",
75
+ "window_hours": 24,
76
+ "clock_starts": "detect_confirmed",
77
+ "evidence_required": ["theater_detected_summary", "affected_controls", "interim_compensating_control_record"]
78
+ },
79
+ {
80
+ "jurisdiction": "UK",
81
+ "regulation": "NCSC CAF Principle B",
82
+ "obligation": "submit_governance_evidence",
83
+ "window_hours": 8760,
84
+ "clock_starts": "manual",
85
+ "evidence_required": ["caf_outcome_assessment", "gap_register", "remediation_roadmap"]
86
+ },
87
+ {
88
+ "jurisdiction": "AU",
89
+ "regulation": "APRA CPS 234",
90
+ "obligation": "notify_regulator",
91
+ "window_hours": 72,
92
+ "clock_starts": "validate_complete",
93
+ "evidence_required": ["materiality_assessment", "remediation_completed_evidence"]
94
+ },
95
+ {
96
+ "jurisdiction": "SG",
97
+ "regulation": "MAS TRM Notice",
98
+ "obligation": "submit_governance_evidence",
99
+ "window_hours": 8760,
100
+ "clock_starts": "manual",
101
+ "evidence_required": ["technology_risk_management_evidence", "gap_register"]
102
+ }
103
+ ],
104
+ "theater_fingerprints": [
105
+ {
106
+ "pattern_id": "audit-clean-but-finding-active",
107
+ "claim": "Audit opinion is unqualified (SOC 2 clean, ISO 27001:2022 certified, NIS2 compliant) — controls are operating effectively.",
108
+ "fast_detection_test": "For each upstream playbook finding with active exploitation indicator or RWEP >= 75: identify the framework control(s) the org claims address the finding. Compare the audit opinion date to the finding's RWEP date. If the audit opinion is clean AND was issued after the threat became operational reality AND the finding remains unremediated, the audit is structurally non-informative about this exposure.",
109
+ "implicated_controls": ["soc2-clean-opinion", "iso-27001-2022-cert", "nis2-art21"]
110
+ },
111
+ {
112
+ "pattern_id": "framework-lag-without-compensating-control",
113
+ "claim": "Framework lag is acknowledged; compensating controls are in place.",
114
+ "fast_detection_test": "For each framework with declared lag (govern phase of upstream playbook): confirm the org has documented compensating controls AND those controls were tested in the last 90 days. Theater if lag declared but compensating controls absent OR untested OR last test predates the most recent operational threat.",
115
+ "implicated_controls": ["nist-800-53-CA-7", "iso-27001-2022-A.5.36"]
116
+ },
117
+ {
118
+ "pattern_id": "policy-exception-without-expiry",
119
+ "claim": "Policy exceptions are documented and managed.",
120
+ "fast_detection_test": "Pull the exception register. For each exception, verify: (a) explicit duration with calendar expiry, (b) named risk-acceptance owner at correct authority level (CISO+ for high-RWEP), (c) compensating controls listed AND tested, (d) re-evaluation triggers documented. Theater if any high-RWEP exception lacks expiry, named owner, or tested compensating controls.",
121
+ "implicated_controls": ["nist-800-53-CA-7", "iso-27001-2022-A.5.36", "soc2-CC9"]
122
+ },
123
+ {
124
+ "pattern_id": "framework-jurisdictional-monoculture",
125
+ "claim": "We are SOC 2 / ISO 27001:2022 / NIST 800-53 compliant — our compliance posture is comprehensive.",
126
+ "fast_detection_test": "If the org operates in EU / UK / AU / SG / JP / IN / CA / HK / TW / IL / CH / ID / VN: confirm at least one binding jurisdictional framework is in scope (NIS2 / DORA / EU AI Act for EU; NCSC CAF for UK; APRA CPS 234 / Essential 8 for AU; MAS TRM for SG; NISC / FISC for JP; CERT-In Directions for IN; OSFI B-10 for CA). Theater if US-centric compliance program operates in a regulated jurisdiction without jurisdictional framework mapping.",
127
+ "implicated_controls": ["global-grc-meta"]
128
+ },
129
+ {
130
+ "pattern_id": "control-mapping-without-tempo",
131
+ "claim": "We have a control-mapping matrix — every control mapped across frameworks.",
132
+ "fast_detection_test": "Pick any control row in the org's framework-mapping matrix. Confirm it carries: (a) framework-specific tempo (patch SLA, notification window, audit cycle), (b) measured operational performance against tempo, (c) gap declaration where tempo lags operational reality. Theater if the matrix is presence-of-control only with no tempo and no gap.",
133
+ "implicated_controls": ["nist-800-53-meta", "iso-27001-2022-meta"]
134
+ },
135
+ {
136
+ "pattern_id": "ai-controls-deferred-to-future-framework",
137
+ "claim": "AI security controls are tracked for inclusion when frameworks publish guidance.",
138
+ "fast_detection_test": "Check whether the org has operational controls for: (a) MCP server trust, (b) prompt injection as access-control bypass, (c) AI-API egress baseline, (d) AI-generated-code provenance, (e) model-weights supply-chain integrity. Theater if none of these are operational AND the org uses AI coding assistants / AI APIs / AI workloads in production. Deferring to future framework guidance is theater when the threat is current.",
139
+ "implicated_controls": ["eu-ai-act-art15", "iso-27001-2022-A.8.30", "nist-800-53-SA-12"]
140
+ }
141
+ ],
142
+ "framework_context": {
143
+ "gap_summary": "This playbook is the org-wide correlation layer. Every upstream playbook (kernel, mcp, ai-api, crypto, sbom) declares its own per-domain framework lag. This playbook ingests those declarations, correlates them per-framework rather than per-domain, and surfaces compound theater: cases where a single framework control is implicated in multiple domains of insufficiency. The dominant pattern: a single SOC 2 / ISO 27001:2022 / NIST 800-53 audit opinion covers an org that is simultaneously exposed to KEV-listed kernel LPEs, unsigned MCP servers, AI-API C2 vulnerability, classical-only crypto, and SBOM-blind supply chain — yet the audit is clean. This is not auditor failure; it is framework lag manifest at the audit-evidence layer. Per-jurisdiction lag matters: EU (NIS2 + DORA + EU AI Act + EU CRA) has the most aggressive legislative cadence but slow implementing-act publication; UK CAF is outcome-based and partially mitigates US-centric framework lag; AU Essential 8 + APRA CPS 234 have specific operational mandates with shorter audit cycles; SG MAS TRM and JP FISC are sector-specific (financial) with high tempo; IN CERT-In Directions have aggressive notification windows (6h) that catch most orgs unprepared; CA OSFI B-10 + ISO 27001:2022 are the longest-laggard for AI/MCP/PQC threats.",
144
+ "lag_score": 200,
145
+ "per_framework_gaps": [
146
+ {
147
+ "framework": "nist-800-53",
148
+ "control_id": "meta — full catalog",
149
+ "designed_for": "Federal information system security baseline (Rev 5.1.1).",
150
+ "insufficient_because": "Catalog has no MCP control class, no AI-API egress control, no PQC algorithm-currency sub-control, no AI-generated-code provenance control. Each is documented in upstream playbooks; this playbook surfaces the org-wide compound effect."
151
+ },
152
+ {
153
+ "framework": "iso-27001-2022",
154
+ "control_id": "meta — Annex A controls",
155
+ "designed_for": "Information security management system baseline, published 2022.",
156
+ "insufficient_because": "Pre-dates FIPS 203/204/205 finalization, pre-dates MCP standardization, pre-dates SesameOp documentation. No scheduled amendment publication date as of 2026-05-11. Compound effect: ISO-certified orgs pass audit while exposed to every threat class this exceptd release tracks."
157
+ },
158
+ {
159
+ "framework": "soc2",
160
+ "control_id": "meta — Trust Services Criteria",
161
+ "designed_for": "Service-organization assurance over security, availability, processing integrity, confidentiality, privacy.",
162
+ "insufficient_because": "TSC was last updated 2017 with 2022 points-of-focus refresh. No AI/MCP/PQC-specific criteria. Compound effect: SOC 2 clean opinions are issued over service organizations fully exposed to current AI-threat classes."
163
+ },
164
+ {
165
+ "framework": "pci-dss-4",
166
+ "control_id": "meta — Requirements 1-12",
167
+ "designed_for": "Cardholder data environment security.",
168
+ "insufficient_because": "v4.0 (2022, mandatory 2025-03-31) made limited updates; no PQC, no AI-API governance, no MCP. Long-retention cardholder data is HNDL-vulnerable per crypto playbook; payment-channel AI integration creates AI-API surface per ai-api playbook."
169
+ },
170
+ {
171
+ "framework": "nis2",
172
+ "control_id": "Art.21 — risk management measures",
173
+ "designed_for": "Essential and important entities' cybersecurity risk management.",
174
+ "insufficient_because": "Sets categories; implementing acts to follow. As of 2026-05-11, AI/MCP/PQC specifics not in implementing acts. Notification clock (24/72/720) is well-specified; control content lags."
175
+ },
176
+ {
177
+ "framework": "dora",
178
+ "control_id": "Art.5-15 — ICT risk management",
179
+ "designed_for": "Financial entities' digital operational resilience.",
180
+ "insufficient_because": "Cryptographic resilience (Art.9), ICT third-party risk (Art.28), threat-led penetration testing (Art.26) are all categories without binding modern algorithm/AI/MCP specifics. RTS/ITS publishing cadence is months behind threat operational reality."
181
+ },
182
+ {
183
+ "framework": "eu-ai-act",
184
+ "control_id": "Art.15 — Accuracy, robustness, cybersecurity",
185
+ "designed_for": "High-risk AI system cybersecurity obligations.",
186
+ "insufficient_because": "System boundary drawn around the AI model; tool plugins (MCP), AI-API egress as transport, AI-generated code provenance all outside boundary. Implementing acts publishing 2025-2026 do not yet close these gaps."
187
+ },
188
+ {
189
+ "framework": "eu-cra",
190
+ "control_id": "Annex I — Essential cybersecurity requirements",
191
+ "designed_for": "Products with digital elements.",
192
+ "insufficient_because": "Manufacturer-of-record obligations; developer-installed plugins (MCP) outside manufacturer relationship. 'State-of-the-art' cryptography requirement non-binding for PQC absent implementing acts."
193
+ },
194
+ {
195
+ "framework": "uk-caf",
196
+ "control_id": "Principles A-D — Outcome-based",
197
+ "designed_for": "NCSC Cyber Assessment Framework (outcome-based regulator-assessed cyber posture).",
198
+ "insufficient_because": "Outcome-based language is forward-compatible but currently outcomes lack AI-specific success criteria; regulator assessment varies per sector. AI/MCP/PQC interpretation is regulator-dependent and inconsistently applied."
199
+ },
200
+ {
201
+ "framework": "au-essential-8",
202
+ "control_id": "Strategies 1-8",
203
+ "designed_for": "ASD's mitigation strategies for cybersecurity incidents.",
204
+ "insufficient_because": "Eight strategies (patching, MFA, application control, etc.) are operationally specific but algorithmically classical and silent on AI/MCP. Patch-tempo language under-specifies KEV fast-path."
205
+ },
206
+ {
207
+ "framework": "au-ism",
208
+ "control_id": "meta — ISM controls",
209
+ "designed_for": "Australian Government Information Security Manual.",
210
+ "insufficient_because": "Controls are detailed but published quarterly; AI/MCP/PQC entries are in the catalog but not all marked mandatory. Lag manifests in mandatory-vs-discretionary boundary."
211
+ },
212
+ {
213
+ "framework": "sg-mas-trm",
214
+ "control_id": "Technology Risk Management Notice",
215
+ "designed_for": "MAS-regulated financial institutions' technology risk.",
216
+ "insufficient_because": "Aug 2025 revisions improved AI/cloud language but PQC inventory + MCP plugin trust not bound. Sector-specific cadence (financial) helps recency but tempo controls still classical-anchored."
217
+ },
218
+ {
219
+ "framework": "jp-nisc",
220
+ "control_id": "Basic Policy",
221
+ "designed_for": "Japanese government cybersecurity baseline.",
222
+ "insufficient_because": "Recent updates address AI but operational specifics for MCP, AI-API C2, PQC migration timelines remain at policy-statement level. FISC sector guidance is tighter than NISC baseline."
223
+ },
224
+ {
225
+ "framework": "in-cert",
226
+ "control_id": "Apr 2022 Directions",
227
+ "designed_for": "Indian cyber-incident reporting and log retention.",
228
+ "insufficient_because": "Aggressive 6-hour notification window with mandatory log retention is operationally demanding but content of required logs is generic. AI/MCP/PQC not addressed in directions text."
229
+ },
230
+ {
231
+ "framework": "ca-osfi-b10",
232
+ "control_id": "B-10 — Third-Party Risk Management",
233
+ "designed_for": "Canadian federally regulated financial institutions' third-party risk.",
234
+ "insufficient_because": "Third-party scope is SaaS-and-outsourcing. MCP plugins / AI vendors as data processors are not consistently captured. Quarterly review cadence lags monthly threat tempo."
235
+ }
236
+ ]
237
+ },
238
+ "skill_preload": ["framework-gap-analysis", "compliance-theater", "global-grc", "policy-exception-gen"]
239
+ },
240
+
241
+ "direct": {
242
+ "threat_context": "Compliance theater landscape mid-2026: every framework in scope is structurally lagged for the operational threats documented in upstream exceptd playbooks. The dominant operational pattern: organizations carry clean audit opinions (SOC 2 Type II unqualified, ISO 27001:2022 certified, NIST 800-53 ATO, NIS2 self-attestation, DORA submission, etc.) while simultaneously exposed to KEV-listed kernel LPEs (kernel.json), unsigned MCP servers (mcp.json), AI-API C2 vulnerability (ai-api.json), classical-only HNDL-vulnerable crypto (crypto.json), and SBOM-blind supply chain (sbom.json). Three canonical 2026 cases: (1) CVE-2026-31431 'Copy Fail' KEV-listed kernel LPE — SOC 2 CC7.1 clean opinion issued during the active-exploitation window. (2) CVE-2026-30615 Windsurf MCP zero-interaction RCE — CC9 vendor management 'operating effectively' across the affected estate. (3) CVE-2025-53773 GitHub Copilot prompt-injection RCE — CC6 logical access controls 'passed' while prompt injection executes attacker-chosen actions using the AI service account. Each case demonstrates that current-TTP exposure can persist under audit-clean controls. This playbook is the correlation layer: it ingests upstream findings, maps them per-framework, and emits theater verdicts the GRC team must surface to risk acceptance authorities.",
243
+ "rwep_threshold": {
244
+ "escalate": 70,
245
+ "monitor": 40,
246
+ "close": 20
247
+ },
248
+ "framework_lag_declaration": "All 20 frameworks listed in domain.frameworks_in_scope are structurally insufficient for at least one upstream-playbook threat class. ISO 27001:2022, SOC 2 TSC, and PCI DSS 4.0 are the longest-laggard for AI/MCP/PQC threats (no scheduled amendments). NIST 800-53, NIS2, DORA, EU AI Act, and EU CRA have publishing cadences but lag the threat tempo by 90-365 days. UK CAF (outcome-based) and AU Essential 8 are partially forward-compatible but inconsistent across regulators/sectors. SG MAS TRM, JP FISC, IN CERT-In, CA OSFI B-10 are sector- and jurisdiction-specific with tempo varying by sector. Compound effect: an org running all current threat-class exposures under a single audit opinion is the modal state in mid-2026, not an outlier.",
249
+ "skill_chain": [
250
+ { "skill": "framework-gap-analysis", "purpose": "For each upstream finding, produce a per-framework gap declaration including the specific control(s) that should have caught it and why they didn't.", "required": true },
251
+ { "skill": "compliance-theater", "purpose": "Run the six theater fingerprints in govern.theater_fingerprints against the ingested finding set. Emit theater verdicts per pattern.", "required": true },
252
+ { "skill": "global-grc", "purpose": "Cross-walk findings to per-jurisdiction obligations. Identify orgs that operate in regulated jurisdictions without framework mapping for those jurisdictions (theater pattern #4).", "required": true },
253
+ { "skill": "policy-exception-gen", "purpose": "Generate auditor-ready policy exception language for findings that cannot be remediated within the compliance window of any framework in scope.", "skip_if": "no high-RWEP findings remain unremediated", "required": false }
254
+ ],
255
+ "token_budget": {
256
+ "estimated_total": 24000,
257
+ "breakdown": {
258
+ "govern": 3200,
259
+ "direct": 1800,
260
+ "look": 1500,
261
+ "detect": 2400,
262
+ "analyze": 7800,
263
+ "validate": 4200,
264
+ "close": 3100
265
+ }
266
+ }
267
+ },
268
+
269
+ "look": {
270
+ "artifacts": [
271
+ {
272
+ "id": "upstream-findings",
273
+ "type": "audit_trail",
274
+ "source": "exceptd's local store of completed playbook runs (kernel, mcp, ai-api, crypto, sbom) within the configured correlation window (default 30 days).",
275
+ "description": "All upstream playbook findings with their analyze-phase outputs (rwep_inputs, blast_radius_model, compliance_theater_check, framework_gap_mapping).",
276
+ "required": true,
277
+ "air_gap_alternative": "If no local store available, request the operator to supply upstream finding bundles manually; mark correlation_completeness=partial."
278
+ },
279
+ {
280
+ "id": "audit-evidence-inventory",
281
+ "type": "audit_trail",
282
+ "source": "Org's current audit-evidence repository (SOC 2 packets, ISO 27001 evidence binders, NIS2 submissions, DORA register, audit-report PDFs).",
283
+ "description": "Used to test theater fingerprint #1 (audit-clean-but-finding-active).",
284
+ "required": false,
285
+ "air_gap_alternative": "If unavailable, mark theater fingerprint #1 inconclusive."
286
+ },
287
+ {
288
+ "id": "compensating-controls-register",
289
+ "type": "config_file",
290
+ "source": "Org's compensating-controls register / risk-acceptance register / exception register.",
291
+ "description": "Used to test theater fingerprints #2 and #3 (framework-lag-without-compensating-control, policy-exception-without-expiry).",
292
+ "required": false
293
+ },
294
+ {
295
+ "id": "framework-mapping-matrix",
296
+ "type": "config_file",
297
+ "source": "Org's control-mapping matrix (cross-framework matrix typically maintained by GRC team).",
298
+ "description": "Used to test theater fingerprint #5 (control-mapping-without-tempo).",
299
+ "required": false
300
+ },
301
+ {
302
+ "id": "jurisdictional-footprint",
303
+ "type": "config_file",
304
+ "source": "Org's documented operational jurisdictions (HR records, entity registrations, customer geography, data-residency declarations).",
305
+ "description": "Used to test theater fingerprint #4 (framework-jurisdictional-monoculture).",
306
+ "required": false
307
+ },
308
+ {
309
+ "id": "ai-usage-attestation",
310
+ "type": "audit_trail",
311
+ "source": "Org's AI-use inventory (AI coding assistants, AI APIs, AI workloads in production).",
312
+ "description": "Used to test theater fingerprint #6 (ai-controls-deferred-to-future-framework).",
313
+ "required": false
314
+ }
315
+ ],
316
+ "collection_scope": {
317
+ "time_window": "30d",
318
+ "asset_scope": "org_wide",
319
+ "depth": "deep",
320
+ "sampling": "Full upstream-finding set within 30-day correlation window. Audit-evidence inventory and compensating-controls register are point-in-time snapshots."
321
+ },
322
+ "environment_assumptions": [
323
+ {
324
+ "assumption": "exceptd local store contains at least one completed upstream playbook run",
325
+ "if_false": "Run in 'baseline gap inventory' mode — produce per-framework gap declarations from the playbook's static catalog without per-finding correlation."
326
+ },
327
+ {
328
+ "assumption": "operator can supply audit-evidence inventory, compensating-controls register, framework-mapping matrix, jurisdictional footprint, AI-usage attestation",
329
+ "if_false": "Each absent artifact downgrades the corresponding theater fingerprint to inconclusive. Surface the absence as a finding ('GRC-data-not-locatable')."
330
+ }
331
+ ],
332
+ "fallback_if_unavailable": [
333
+ { "artifact_id": "audit-evidence-inventory", "fallback_action": "mark_inconclusive", "confidence_impact": "medium" },
334
+ { "artifact_id": "compensating-controls-register", "fallback_action": "mark_inconclusive", "confidence_impact": "medium" },
335
+ { "artifact_id": "framework-mapping-matrix", "fallback_action": "mark_inconclusive", "confidence_impact": "low" },
336
+ { "artifact_id": "jurisdictional-footprint", "fallback_action": "use_compensating_artifact", "confidence_impact": "low" },
337
+ { "artifact_id": "ai-usage-attestation", "fallback_action": "use_compensating_artifact", "confidence_impact": "medium" },
338
+ { "artifact_id": "upstream-findings", "fallback_action": "escalate_to_human", "confidence_impact": "high" }
339
+ ]
340
+ },
341
+
342
+ "detect": {
343
+ "indicators": [
344
+ {
345
+ "id": "audit-clean-with-active-finding",
346
+ "type": "log_pattern",
347
+ "value": "audit_evidence_inventory contains an unqualified opinion dated AFTER the active-exploitation date of any upstream finding with rwep >= 75, AND the finding remains unremediated at audit date",
348
+ "description": "Theater fingerprint #1 detection — clean audit issued over active exposure.",
349
+ "confidence": "high",
350
+ "deterministic": false
351
+ },
352
+ {
353
+ "id": "framework-lag-no-compensating-control",
354
+ "type": "behavioral_signal",
355
+ "value": "Upstream playbook declared framework_lag in direct phase AND compensating-controls register either (a) does not list a control for the lagged framework, OR (b) lists a control whose last test date is older than the most recent upstream-finding date",
356
+ "description": "Theater fingerprint #2 detection.",
357
+ "confidence": "high",
358
+ "deterministic": false
359
+ },
360
+ {
361
+ "id": "exception-missing-expiry-or-owner",
362
+ "type": "log_pattern",
363
+ "value": "Any exception register entry with rwep_at_acceptance >= 70 lacking (a) explicit calendar expiry, (b) named risk-acceptance owner at correct authority level, (c) tested compensating controls",
364
+ "description": "Theater fingerprint #3 detection.",
365
+ "confidence": "deterministic",
366
+ "deterministic": true
367
+ },
368
+ {
369
+ "id": "jurisdiction-without-framework",
370
+ "type": "log_pattern",
371
+ "value": "jurisdictional_footprint contains EU / UK / AU / SG / JP / IN / CA / HK / TW / IL / CH / ID / VN AND framework_mapping_matrix does NOT contain the corresponding binding framework (NIS2 / DORA / EU AI Act / CAF / Essential 8 / APRA / MAS TRM / NISC / CERT-In / OSFI B-10)",
372
+ "description": "Theater fingerprint #4 detection — operating in a regulated jurisdiction without framework mapping.",
373
+ "confidence": "deterministic",
374
+ "deterministic": true
375
+ },
376
+ {
377
+ "id": "mapping-without-tempo",
378
+ "type": "log_pattern",
379
+ "value": "framework_mapping_matrix rows lack (a) framework-specific tempo (SLA / notification window), OR (b) measured operational performance against tempo, OR (c) gap declaration where tempo lags",
380
+ "description": "Theater fingerprint #5 detection — presence-of-control mapping with no tempo.",
381
+ "confidence": "high",
382
+ "deterministic": false
383
+ },
384
+ {
385
+ "id": "ai-use-without-ai-controls",
386
+ "type": "log_pattern",
387
+ "value": "ai_usage_attestation contains AI coding assistants / AI APIs / AI workloads in production AND none of [MCP server trust, prompt-injection access control, AI-API egress baseline, AI-generated code provenance, model-weights supply chain] is operational",
388
+ "description": "Theater fingerprint #6 detection — AI in production, controls deferred.",
389
+ "confidence": "high",
390
+ "deterministic": false
391
+ },
392
+ {
393
+ "id": "compound-theater",
394
+ "type": "behavioral_signal",
395
+ "value": "Three or more theater fingerprints fire on the same framework control (e.g. ISO 27001:2022 A.8.30 fires patterns #1 + #2 + #6 simultaneously)",
396
+ "description": "Compound theater — single control structurally insufficient across multiple threat classes.",
397
+ "confidence": "deterministic",
398
+ "deterministic": true
399
+ }
400
+ ],
401
+ "false_positive_profile": [
402
+ {
403
+ "indicator_id": "audit-clean-with-active-finding",
404
+ "benign_pattern": "Audit scope explicitly excluded the affected system (e.g. SOC 2 scope is the SaaS production, finding is on internal developer endpoints).",
405
+ "distinguishing_test": "Check the audit's system description. If the affected systems are out-of-scope, downgrade to medium with a 'scope-excluded-finding-active' note (still material to risk acceptance even if not theater)."
406
+ },
407
+ {
408
+ "indicator_id": "framework-lag-no-compensating-control",
409
+ "benign_pattern": "Framework lag declared but org has accepted residual risk at appropriate authority with documented re-evaluation cadence — not theater, just acknowledged risk.",
410
+ "distinguishing_test": "Look up the residual-risk acceptance record. If a CISO+ acceptance with documented re-evaluation cadence exists AND last review is within cadence, downgrade to medium (acknowledged-residual rather than theater)."
411
+ },
412
+ {
413
+ "indicator_id": "exception-missing-expiry-or-owner",
414
+ "benign_pattern": "Exception is in transitional state (initial submission, awaiting CISO sign-off).",
415
+ "distinguishing_test": "Confirm the exception is older than its documented submission-to-acceptance SLA. If still within SLA, downgrade to medium and re-test at SLA expiry."
416
+ }
417
+ ],
418
+ "minimum_signal": {
419
+ "detected": "Any theater fingerprint fires deterministic OR any high-confidence fingerprint fires without a benign-pattern match OR compound-theater fires.",
420
+ "inconclusive": "Theater fingerprint #1, #2, #3, #5, or #6 cannot be tested because the supporting artifact (audit-evidence inventory / compensating-controls register / framework-mapping matrix / AI-usage attestation) is unavailable. Surface as 'GRC-data-not-locatable' finding.",
421
+ "not_detected": "Zero theater fingerprints fire AND all GRC artifacts available AND every upstream finding has documented remediation or accepted residual with current acceptance record."
422
+ }
423
+ },
424
+
425
+ "analyze": {
426
+ "rwep_inputs": [
427
+ { "signal_id": "audit-clean-with-active-finding", "rwep_factor": "blast_radius", "weight": 30, "notes": "Clean audit over active exposure = compounded regulatory + technical risk." },
428
+ { "signal_id": "framework-lag-no-compensating-control", "rwep_factor": "blast_radius", "weight": 20, "notes": "Lag without compensation = exposure persists." },
429
+ { "signal_id": "exception-missing-expiry-or-owner", "rwep_factor": "blast_radius", "weight": 15, "notes": "Indefinite exception = open-ended risk acceptance." },
430
+ { "signal_id": "jurisdiction-without-framework", "rwep_factor": "blast_radius", "weight": 25, "notes": "Operating in regulated jurisdiction without framework mapping = direct regulatory exposure (NIS2 / DORA / etc.)." },
431
+ { "signal_id": "ai-use-without-ai-controls", "rwep_factor": "active_exploitation", "weight": 20, "notes": "AI in production without AI controls = active threat exposure inherited from upstream playbooks." },
432
+ { "signal_id": "compound-theater", "rwep_factor": "blast_radius", "weight": 30, "notes": "Compound theater on single control = structural insufficiency across threat classes." }
433
+ ],
434
+ "blast_radius_model": {
435
+ "scope_question": "If compliance theater is sustained (audit-clean opinion over actual exposure), what is the realistic regulatory + technical impact across the org?",
436
+ "scoring_rubric": [
437
+ { "condition": "theater confined to one framework + one domain + low-RWEP upstream findings", "blast_radius_score": 1, "description": "Local theater; risk acceptable at manager level." },
438
+ { "condition": "theater in one framework across two or more upstream domains, medium-RWEP findings", "blast_radius_score": 2, "description": "Framework-localized structural issue; CISO awareness required." },
439
+ { "condition": "theater across multiple frameworks + multiple upstream domains, high-RWEP findings", "blast_radius_score": 3, "description": "Org-wide GRC pattern; structural program redesign warranted." },
440
+ { "condition": "theater + jurisdictional exposure (operating in NIS2/DORA/EU AI Act jurisdiction without framework mapping) + active findings", "blast_radius_score": 4, "description": "Regulatory enforcement risk + technical exposure; CISO + Legal + Board notification." },
441
+ { "condition": "theater + jurisdictional exposure + KEV-listed active finding + jurisdiction-specific notification clock active (NIS2 24h / DORA 4h / IN CERT-In 6h)", "blast_radius_score": 5, "description": "Missed notification window + active regulatory enforcement risk + named-incident exposure." }
442
+ ]
443
+ },
444
+ "compliance_theater_check": {
445
+ "claim": "Framework compliance is comprehensive — audit opinions are clean, control mappings are complete, residual risks are accepted.",
446
+ "audit_evidence": "Audit-evidence inventory (clean SOC 2 / ISO 27001 / etc.), control-mapping matrix, exception register, residual-risk acceptance records.",
447
+ "reality_test": "Run each of the six theater fingerprints in govern.theater_fingerprints against the ingested upstream findings. For each fingerprint that fires: identify the implicated framework controls and check whether the org has a documented operational fix, compensating control with current test, OR signed exception with named owner + expiry + tested compensating controls. Theater if any fingerprint fires AND none of the three remediation states applies.",
448
+ "theater_verdict_if_gap": "Org's GRC posture is structurally insufficient for the documented operational threat surface. Compliance evidence (audit opinions, control mappings, exception register) provides incomplete or non-informative signal about real exposure. Either (a) close the operational fix (remediate the upstream findings), (b) establish properly-tested compensating controls with documented test cadence, (c) generate auditor-ready policy exceptions with named owners, expiry, and compensating controls, OR (d) escalate to board-level acknowledgement of the framework-lag posture."
449
+ },
450
+ "framework_gap_mapping": [
451
+ {
452
+ "finding_id": "compound-theater-iso-27001",
453
+ "framework": "iso-27001-2022",
454
+ "claimed_control": "A.8.8 + A.8.30 + A.5.19 + A.5.20 + A.8.16 + A.8.24 + A.8.25 — patch management, outsourced development, supplier relationships, monitoring, cryptography",
455
+ "actual_gap": "ISO 27001:2022 published before FIPS 203/204/205 finalization (2024-08), before MCP standardization, before SesameOp documentation. No scheduled amendment publication. Compound: ISO-certified org passes audit while exposed to KEV-listed LPE, unsigned MCP, AI-API C2, classical-only crypto.",
456
+ "required_control": "Amendment cycle to add: (a) KEV-fast-path patch sub-control to A.8.8, (b) AI tool plugin authorization sub-control under A.8.30 with signed-manifest requirement, (c) cryptographic algorithm currency sub-control in A.8.24 with sunset dates, (d) AI-API egress baseline sub-control under A.8.16."
457
+ },
458
+ {
459
+ "finding_id": "compound-theater-soc2",
460
+ "framework": "soc2",
461
+ "claimed_control": "CC6 + CC7 + CC9 — logical access, system operations / anomaly detection, vendor risk",
462
+ "actual_gap": "TSC last updated 2017 with 2022 points-of-focus. No AI/MCP/PQC-specific criteria. Compound: SOC 2 clean opinion across all current AI threat classes.",
463
+ "required_control": "TSC amendment adding: AI service-account abuse as access-control consideration; AI-API egress baseline as anomaly detection sub-objective; developer-installed AI tool plugins as vendor inventory completeness sub-objective."
464
+ },
465
+ {
466
+ "finding_id": "compound-theater-nist-800-53",
467
+ "framework": "nist-800-53",
468
+ "claimed_control": "SI-2 + SA-12 + SC-7 + SC-8 + SC-13 + SI-3 + AC-2 + CM-7 + IA-5",
469
+ "actual_gap": "Rev 5.1.1 catalog has no MCP, no AI-API C2 baseline, no PQC algorithm-currency sub-control, no AI-generated-code provenance. Multiple controls implicated in compound theater on a single host.",
470
+ "required_control": "Rev 5.2 or 6.0 catalog cycle adding: KEV-fast-path variant under SI-2; AI tool plugin authorization control class; AI-API behavioral baseline under SI-3; PQC algorithm-currency under SC-13."
471
+ },
472
+ {
473
+ "finding_id": "jurisdiction-without-framework-mapping",
474
+ "framework": "nis2",
475
+ "claimed_control": "Art.21 — risk management measures",
476
+ "actual_gap": "Org operates in EU jurisdiction without NIS2 framework mapping. Treated as out-of-scope while regulator treats org as in-scope.",
477
+ "required_control": "Mandatory addition of NIS2 to control-mapping matrix for any org with EU operational footprint. Cross-walk to NIS2 Art.21(2)(a-i) per-measure required."
478
+ },
479
+ {
480
+ "finding_id": "jurisdiction-without-framework-mapping",
481
+ "framework": "in-cert",
482
+ "claimed_control": "Apr 2022 Directions — 6h cyber-incident reporting",
483
+ "actual_gap": "Aggressive 6h notification window. Orgs operating in India without CERT-In mapping miss the notification on every incident.",
484
+ "required_control": "Mandatory addition of CERT-In Directions to incident-response plan for any org with Indian operational footprint."
485
+ },
486
+ {
487
+ "finding_id": "exception-register-without-discipline",
488
+ "framework": "iso-27001-2022",
489
+ "claimed_control": "A.5.36 — Compliance with policies, rules and standards",
490
+ "actual_gap": "Exception register entries lack expiry / named owner / tested compensating controls. Indefinite exceptions = open-ended risk.",
491
+ "required_control": "Mandatory exception template requiring expiry date, named risk-acceptance owner at authority level matching RWEP, tested compensating controls with last-test date, re-evaluation triggers."
492
+ }
493
+ ],
494
+ "escalation_criteria": [
495
+ { "condition": "compound-theater == true", "action": "raise_severity" },
496
+ { "condition": "jurisdiction-without-framework == true AND upstream_finding.rwep >= 75", "action": "notify_legal" },
497
+ { "condition": "audit-clean-with-active-finding == true AND any active_finding.kev_listed == true", "action": "notify_legal" },
498
+ { "condition": "blast_radius_score >= 4", "action": "page_on_call" },
499
+ { "condition": "ai-use-without-ai-controls == true", "action": "raise_severity" },
500
+ { "condition": "any compliance_theater_check.verdict == 'theater' AND blast_radius_score >= 3", "action": "trigger_playbook", "target_playbook": "sbom" }
501
+ ]
502
+ },
503
+
504
+ "validate": {
505
+ "remediation_paths": [
506
+ {
507
+ "id": "close-operational-fix",
508
+ "description": "Where upstream findings remain unremediated, escalate the upstream playbook's validate-phase remediation paths to the responsible team with a deadline tied to the relevant framework's notification clock.",
509
+ "preconditions": ["upstream_findings_actionable == true"],
510
+ "priority": 1,
511
+ "compensating_controls": [],
512
+ "estimated_time_hours": 16
513
+ },
514
+ {
515
+ "id": "establish-tested-compensating-controls",
516
+ "description": "For each framework lag declaration without compensating control: establish a documented compensating control with explicit test cadence. First test within 30 days of establishment; ongoing test cadence at least quarterly.",
517
+ "preconditions": ["compensating_control_design_feasible == true"],
518
+ "priority": 2,
519
+ "compensating_controls": ["test_cadence_recorded_in_change_management"],
520
+ "estimated_time_hours": 24
521
+ },
522
+ {
523
+ "id": "exception-register-cleanup",
524
+ "description": "Audit the exception register. For each entry lacking expiry / named owner / tested compensating controls: either (a) bring into compliance with the exception template, or (b) close the exception by remediating the underlying issue, or (c) escalate to next-higher authority for re-acceptance.",
525
+ "preconditions": ["exception_register_exists == true"],
526
+ "priority": 3,
527
+ "compensating_controls": ["exception_review_cadence_documented"],
528
+ "estimated_time_hours": 8
529
+ },
530
+ {
531
+ "id": "jurisdictional-framework-mapping",
532
+ "description": "Extend control-mapping matrix to include every binding framework for the org's operational jurisdictions. Cross-walk per-control to NIS2 / DORA / EU AI Act / CAF / Essential 8 / APRA / MAS TRM / NISC / CERT-In / OSFI B-10 as applicable.",
533
+ "preconditions": ["jurisdictional_footprint_documented == true"],
534
+ "priority": 4,
535
+ "compensating_controls": ["mapping_review_cadence_documented"],
536
+ "estimated_time_hours": 40
537
+ },
538
+ {
539
+ "id": "ai-controls-operational",
540
+ "description": "Make AI controls operational: MCP server trust (per mcp.json), prompt-injection access control, AI-API egress baseline (per ai-api.json), AI-generated code provenance, model-weights supply chain integrity (per sbom.json).",
541
+ "preconditions": ["ai_in_production == true"],
542
+ "priority": 5,
543
+ "compensating_controls": [],
544
+ "estimated_time_hours": 80
545
+ },
546
+ {
547
+ "id": "board-level-acknowledgement",
548
+ "description": "Where multiple framework-gap declarations cannot be closed within compliance windows: escalate to board-level acknowledgement of the GRC posture with documented framework-lag declaration and accepted residual risk.",
549
+ "preconditions": ["remediation_paths[1..5] cannot close all findings within compliance windows", "board_acceptance_obtainable == true"],
550
+ "priority": 6,
551
+ "compensating_controls": ["board_review_cadence_documented", "executive_summary_for_each_framework_lag"],
552
+ "estimated_time_hours": 16
553
+ }
554
+ ],
555
+ "validation_tests": [
556
+ {
557
+ "id": "no-theater-fingerprints-fire",
558
+ "test": "Re-run all six theater fingerprints. Confirm none fires (or remaining fingerprints have documented benign-pattern matches).",
559
+ "expected_result": "Zero theater fingerprints fire OR all firing fingerprints have documented benign matches.",
560
+ "test_type": "functional"
561
+ },
562
+ {
563
+ "id": "compensating-controls-tested",
564
+ "test": "For each framework lag with compensating control: verify last test date is within cadence AND test result is success.",
565
+ "expected_result": "All compensating controls tested within cadence; all tests passing.",
566
+ "test_type": "functional"
567
+ },
568
+ {
569
+ "id": "exception-register-discipline",
570
+ "test": "Sample 20% of exception register entries. Verify each has explicit expiry, named owner at correct authority level, tested compensating controls with last-test date, re-evaluation triggers.",
571
+ "expected_result": "100% of sampled entries meet template requirements.",
572
+ "test_type": "functional"
573
+ },
574
+ {
575
+ "id": "jurisdiction-coverage",
576
+ "test": "Compare jurisdictional footprint to framework mapping matrix. Confirm every regulated jurisdiction has its binding framework mapped.",
577
+ "expected_result": "100% jurisdictional coverage.",
578
+ "test_type": "functional"
579
+ },
580
+ {
581
+ "id": "framework-lag-declared",
582
+ "test": "For each upstream finding's framework_lag_declaration: verify the org's risk register acknowledges the lag with named owner.",
583
+ "expected_result": "All declared lags acknowledged in risk register.",
584
+ "test_type": "functional"
585
+ },
586
+ {
587
+ "id": "audit-cycle-regression",
588
+ "test": "Re-run the playbook against the next audit cycle's evidence. Confirm theater fingerprints continue not to fire.",
589
+ "expected_result": "Zero theater fingerprints fire in subsequent audit cycle.",
590
+ "test_type": "regression"
591
+ }
592
+ ],
593
+ "residual_risk_statement": {
594
+ "risk": "Framework lag is structural and persistent. Even with all theater fingerprints closed at one point in time, new threat classes (new CVEs, new AI/agentic attack patterns, new PQC standards) emerge faster than frameworks can amend. The GRC posture is therefore an ongoing program, not a checkpoint.",
595
+ "why_remains": "Frameworks publish on annual-to-quintennial cycles. Operational threats publish on hour-to-day cycles. The structural gap cannot be closed by re-audit; only by sustained compensating control + exception discipline + program-level acknowledgement of the lag at board level.",
596
+ "acceptance_level": "board",
597
+ "compensating_controls_in_place": ["continuous_upstream_playbook_execution", "monthly_theater_fingerprint_re-test", "quarterly_compensating_controls_test", "annual_board_review_of_framework_lag_register", "named_owner_per_framework_lag_at_ciso_level"]
598
+ },
599
+ "evidence_requirements": [
600
+ {
601
+ "evidence_type": "scan_report",
602
+ "description": "Compound theater verdict report mapping each fired fingerprint to upstream findings, implicated framework controls, and remediation status.",
603
+ "retention_period": "7_years",
604
+ "framework_satisfied": ["nist-800-53-CA-7", "iso-27001-2022-A.5.36", "soc2-CC1", "nis2-art21", "dora-art5"]
605
+ },
606
+ {
607
+ "evidence_type": "attestation",
608
+ "description": "Signed exceptd attestation file with evidence_hash, count of theater fingerprints fired at detection, count post-remediation, RWEP delta, list of newly-mapped frameworks for any added jurisdictions.",
609
+ "retention_period": "7_years",
610
+ "framework_satisfied": ["nist-800-53-CA-7", "iso-27001-2022-A.5.36", "nis2-art21", "dora-art5"]
611
+ },
612
+ {
613
+ "evidence_type": "config_diff",
614
+ "description": "Before/after diff of control-mapping matrix and exception register showing additions, expirations, ownership changes.",
615
+ "retention_period": "7_years",
616
+ "framework_satisfied": ["nist-800-53-CM-3", "iso-27001-2022-A.5.36"]
617
+ },
618
+ {
619
+ "evidence_type": "ticket_reference",
620
+ "description": "Board-acceptance record (where path 6 invoked): signed board resolution acknowledging framework lag with named owner and re-evaluation cadence.",
621
+ "retention_period": "7_years",
622
+ "framework_satisfied": ["nist-800-53-CA-7", "iso-27001-2022-A.5.36", "nis2-art21", "dora-art5", "uk-caf-principle-a"]
623
+ }
624
+ ],
625
+ "regression_trigger": [
626
+ { "condition": "new_upstream_playbook_finding == true", "interval": "on_event" },
627
+ { "condition": "new_framework_amendment_published == true", "interval": "on_event" },
628
+ { "condition": "new_jurisdiction_entered == true", "interval": "on_event" },
629
+ { "condition": "monthly", "interval": "30d" },
630
+ { "condition": "audit_cycle_begin", "interval": "on_event" }
631
+ ]
632
+ },
633
+
634
+ "close": {
635
+ "evidence_package": {
636
+ "bundle_format": "csaf-2.0",
637
+ "contents": ["scan_report", "attestation", "config_diff", "framework_gap_mapping", "compliance_theater_verdict", "residual_risk_statement"],
638
+ "destination": "grc_platform_api",
639
+ "signed": true
640
+ },
641
+ "learning_loop": {
642
+ "enabled": true,
643
+ "lesson_template": {
644
+ "attack_vector": "Compliance theater — audit-clean opinions over operational threat exposure. Pattern recurs across SOC 2 / ISO 27001 / NIST 800-53 / NIS2 / DORA / EU AI Act regardless of audit quality, because framework lag is structural.",
645
+ "control_gap": "Frameworks publish on annual-to-quintennial cycles; operational threats publish on hour-to-day cycles. Audit evidence (control presence) is decoupled from operational reality (control sufficiency against current TTPs). Theater is the modal state, not the exception.",
646
+ "framework_gap": "All 20 frameworks in scope are structurally insufficient for at least one upstream-playbook threat class. ISO 27001:2022 / SOC 2 TSC / PCI DSS 4.0 are longest-laggard for AI/MCP/PQC. NIST / NIS2 / DORA / EU AI Act / EU CRA lag by 90-365 days. UK CAF / AU Essential 8 are partially forward-compatible. Jurisdictional frameworks (MAS TRM, FISC, CERT-In, OSFI B-10) vary by sector.",
647
+ "new_control_requirement": "Sustained GRC program with: (a) continuous upstream-playbook execution, (b) monthly theater fingerprint re-test, (c) quarterly compensating-controls test, (d) annual board review of framework-lag register, (e) named owner per framework lag at CISO level. Theater detection cannot be one-shot; it is a recurring obligation."
648
+ },
649
+ "feeds_back_to_skills": ["framework-gap-analysis", "compliance-theater", "global-grc", "policy-exception-gen", "zeroday-gap-learn", "security-maturity-tiers"]
650
+ },
651
+ "notification_actions": [
652
+ {
653
+ "obligation_ref": "EU/NIS2 Art.21 720h",
654
+ "deadline": "computed_at_runtime",
655
+ "recipient": "internal_legal",
656
+ "evidence_attached": ["compliance_theater_verdicts", "framework_gap_mapping", "exception_register", "risk_acceptance_records"],
657
+ "draft_notification": "NIS2 Art.21 governance evidence submission: ${entity_name} attests its risk management measures per Art.21(2)(a-i). Theater fingerprints fired at last assessment: ${theater_count}; remediation status: ${remediation_summary}. Framework lag declarations: ${lag_count}. Named owners: ${named_owners}."
658
+ },
659
+ {
660
+ "obligation_ref": "EU/DORA Art.5 720h",
661
+ "deadline": "computed_at_runtime",
662
+ "recipient": "internal_legal",
663
+ "evidence_attached": ["ict_risk_governance_evidence", "framework_lag_declarations", "compensating_controls_register"],
664
+ "draft_notification": "DORA Art.5 ICT governance submission: ${entity_name} (financial entity) attests ICT risk management framework per Art.5. Framework lag declarations: ${lag_summary}. Compensating controls tested within cadence: ${tested_count}/${total_count}. Board-acceptance record: ${board_record_ref}."
665
+ },
666
+ {
667
+ "obligation_ref": "EU/NIS2 Art.23 24h",
668
+ "deadline": "computed_at_runtime",
669
+ "recipient": "internal_legal",
670
+ "evidence_attached": ["theater_detected_summary", "affected_controls", "interim_compensating_control_record"],
671
+ "draft_notification": "NIS2 Art.23 24-hour early-warning notification: compliance-theater finding confirmed on ${affected_controls}. Underlying upstream findings: ${upstream_finding_refs}. Interim compensating controls: ${compensating_controls}. Full assessment to follow within 72 hours per Art.23(4)."
672
+ },
673
+ {
674
+ "obligation_ref": "UK/NCSC CAF Principle B 8760h",
675
+ "deadline": "computed_at_runtime",
676
+ "recipient": "internal_legal",
677
+ "evidence_attached": ["caf_outcome_assessment", "gap_register", "remediation_roadmap"],
678
+ "draft_notification": "NCSC CAF Principle B (Protecting against cyber attack) outcome assessment: ${entity_name} attests outcome achievement. Gap register: ${gap_register_summary}. Remediation roadmap: ${roadmap_summary}."
679
+ },
680
+ {
681
+ "obligation_ref": "AU/APRA CPS 234 72h",
682
+ "deadline": "computed_at_runtime",
683
+ "recipient": "regulator_email",
684
+ "evidence_attached": ["materiality_assessment", "remediation_completed_evidence"],
685
+ "draft_notification": "APRA CPS 234 notification: material information security incident — compliance theater detected on ${affected_controls}. Materiality justification: ${materiality_justification}. Remediation summary: ${remediation_summary}."
686
+ },
687
+ {
688
+ "obligation_ref": "SG/MAS TRM Notice 8760h",
689
+ "deadline": "computed_at_runtime",
690
+ "recipient": "internal_legal",
691
+ "evidence_attached": ["technology_risk_management_evidence", "gap_register"],
692
+ "draft_notification": "MAS TRM Notice attestation: ${entity_name} (FI) attests technology risk management framework. Identified gaps: ${gap_summary}. Remediation roadmap: ${roadmap_summary}."
693
+ }
694
+ ],
695
+ "exception_generation": {
696
+ "trigger_condition": "remediation_blocked == true OR (multiple_framework_lag_simultaneous == true AND board_acknowledgement_required == true)",
697
+ "exception_template": {
698
+ "scope": "Framework lag(s) ${framework_list} cannot be closed within compliance windows. Affected upstream findings: ${affected_findings}. Multiple-framework structural insufficiency requires board-level acknowledgement.",
699
+ "duration": "until_next_audit",
700
+ "compensating_controls": ["sustained_continuous_upstream_playbook_execution", "monthly_theater_fingerprint_re-test", "quarterly_compensating_controls_test_with_documented_results", "annual_board_review_of_framework_lag_register", "named_owner_per_framework_lag_at_ciso_level", "engagement_with_framework_standards_bodies_for_amendment_advocacy"],
701
+ "risk_acceptance_owner": "board",
702
+ "auditor_ready_language": "Pursuant to the organization's enterprise risk management framework and the governance obligations of NIST 800-53 CA-7 (Continuous Monitoring), ISO 27001:2022 A.5.36 (Compliance with policies, rules and standards), NIS2 Art.21 (Risk management measures), DORA Art.5 (Governance and organisation), and UK NCSC CAF Principle A (Managing security risk), the organization records a board-level acknowledgement of structural framework lag across ${framework_list}. The accepted lag class is: framework controls published on annual-to-quintennial cycles cannot keep pace with operational threats publishing on hour-to-day cycles. The organization accepts that current framework controls do not adequately address the operational threats documented in exceptd playbooks ${upstream_playbook_refs}, that this gap is documented in ${exceptd_framework_gap_mapping_ref}, and that the organization's compensating controls during the exception window are: ${compensating_controls}. Detection coverage: continuous upstream playbook execution with theater fingerprint re-test on monthly cadence. Engagement plan: ${standards_engagement_plan}. Risk accepted by the Board on ${acceptance_date}. Time-bound until ${duration_expiry} (next audit cycle, OR ${default_365d_expiry}, whichever is first). Re-evaluation triggers: new framework amendment publication, new upstream-playbook finding above RWEP 75, new jurisdiction entered, OR scheduled expiry."
703
+ }
704
+ },
705
+ "regression_schedule": {
706
+ "next_run": "computed_at_runtime",
707
+ "trigger": "both",
708
+ "notify_on_skip": true
709
+ }
710
+ }
711
+ },
712
+
713
+ "directives": [
714
+ {
715
+ "id": "correlate-all-upstream-findings",
716
+ "title": "Correlate all upstream playbook findings to framework gaps and theater fingerprints",
717
+ "applies_to": { "always": true }
718
+ },
719
+ {
720
+ "id": "baseline-framework-gap-inventory",
721
+ "title": "Baseline framework-gap inventory when no upstream findings available",
722
+ "applies_to": { "always": true }
723
+ }
724
+ ]
725
+ }