iris-security-core 0.1.2__tar.gz → 0.1.3__tar.gz
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.
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/PKG-INFO +1 -1
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/__init__.py +1 -1
- iris_security_core-0.1.3/iris_core/compliance/bundles/colorado_ai_act.py +343 -0
- iris_security_core-0.1.3/iris_core/compliance/bundles/colorado_chatbot.py +91 -0
- iris_security_core-0.1.3/iris_core/compliance/bundles/colorado_health_ai.py +92 -0
- iris_security_core-0.1.3/iris_core/compliance/bundles/colorado_mental_health_ai.py +101 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/registry.py +28 -5
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/engine/cedar.py +18 -19
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/engine/compiler.py +5 -4
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/models/passport.py +6 -2
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_security_core.egg-info/PKG-INFO +1 -1
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_security_core.egg-info/SOURCES.txt +3 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/pyproject.toml +1 -1
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_colorado_compliance.py +125 -18
- iris_security_core-0.1.2/iris_core/compliance/bundles/colorado_ai_act.py +0 -162
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/README.md +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/bundles/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/bundles/fedramp.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/bundles/gdpr.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/bundles/hipaa.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/bundles/nist_ai_rmf.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/bundles/soc2.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/compliance/license.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/cost/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/cost/counter.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/cost/pricing.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/cost/tracker.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dev_trust.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/discovery/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/discovery/scanner.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dlp/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dlp/enforcement.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dlp/patterns.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dlp/redactor.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dlp/scanner.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/dlp/types.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/drift/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/drift/detector.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/drift/notifier.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/engine/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/evidence/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/evidence/vault.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/models/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/models/policy.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/models/region.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/rbac/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/rbac/context.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/rbac/registry.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/runner.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/tests/__init__.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/tests/cross_region_bypass_tests.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/tests/data_exfil_tests.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/tests/permission_escalation_tests.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/tests/policy_consistency_tests.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/tests/prompt_injection_tests.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_core/redteam/types.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_security_core.egg-info/dependency_links.txt +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_security_core.egg-info/requires.txt +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/iris_security_core.egg-info/top_level.txt +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/setup.cfg +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_compiler_backend.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_cost.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_dlp.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_drift.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_fedramp.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_license_gate.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_nist_ai_rmf.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_rbac.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_redteam.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_scanner.py +0 -0
- {iris_security_core-0.1.2 → iris_security_core-0.1.3}/tests/test_vault_retention.py +0 -0
|
@@ -5,7 +5,7 @@ No network access required. Cedar evaluation is in-process.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
# ── Package version ────────────────────────────────────────────────────────────
|
|
8
|
-
__version__ = "0.1.
|
|
8
|
+
__version__ = "0.1.3"
|
|
9
9
|
|
|
10
10
|
# ── Public API ─────────────────────────────────────────────────────────────────
|
|
11
11
|
from iris_core.models.passport import AgentPassport, DataClassification, Environment
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Colorado AI Act compliance bundles.
|
|
3
|
+
|
|
4
|
+
SB 24-205 (original) was superseded by SB 26-189, signed May 14, 2026.
|
|
5
|
+
The current bundle (colorado-ai-act) reflects SB 26-189, effective January 1, 2027.
|
|
6
|
+
The original bundle is retained as colorado-ai-act-original for historical audit trail.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
from typing import List, Dict, Any
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
COLORADO_AI_ACT_ORIGINAL: Dict[str, Any] = {
|
|
14
|
+
"bundle_id": "colorado-ai-act-sb24-205",
|
|
15
|
+
"full_name": "Colorado AI Act (SB 24-205)",
|
|
16
|
+
"status": "SUPERSEDED",
|
|
17
|
+
"superseded_by": "colorado-ai-act-sb26-189",
|
|
18
|
+
"superseded_date": "2026-05-14",
|
|
19
|
+
"warning": (
|
|
20
|
+
"SB 24-205 was replaced by SB 26-189 signed May 14, 2026. "
|
|
21
|
+
"This bundle is retained for historical audit trail purposes only. "
|
|
22
|
+
"Use colorado-ai-act for current compliance requirements."
|
|
23
|
+
),
|
|
24
|
+
"effective_date": "2026-07-01",
|
|
25
|
+
"jurisdiction": "Colorado, USA",
|
|
26
|
+
"iris_version": "0.1.0",
|
|
27
|
+
"rules": [
|
|
28
|
+
{
|
|
29
|
+
"rule_id": "CO-001",
|
|
30
|
+
"name": "High-risk AI inventory",
|
|
31
|
+
"severity": "CRITICAL",
|
|
32
|
+
"description": (
|
|
33
|
+
"Developers of high-risk AI systems must maintain an inventory "
|
|
34
|
+
"of all deployed systems."
|
|
35
|
+
),
|
|
36
|
+
"iris_control": "AgentPassport.is_high_risk_ai = True",
|
|
37
|
+
"how_iris_satisfies": (
|
|
38
|
+
"Every agent with is_high_risk_ai=True is automatically inventoried "
|
|
39
|
+
"in the IRIS agent registry with full provenance."
|
|
40
|
+
),
|
|
41
|
+
"check": "passport.is_high_risk_ai == True and passport.agent_id is not None",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"rule_id": "CO-002",
|
|
45
|
+
"name": "Impact assessment required",
|
|
46
|
+
"severity": "CRITICAL",
|
|
47
|
+
"description": (
|
|
48
|
+
"High-risk AI systems must have a completed impact assessment "
|
|
49
|
+
"before production deployment."
|
|
50
|
+
),
|
|
51
|
+
"iris_control": "EvidenceVault.impact_assessment entry",
|
|
52
|
+
"how_iris_satisfies": (
|
|
53
|
+
"IRIS generates and records impact assessments in the Evidence Vault. "
|
|
54
|
+
"Production deployment is blocked until the assessment is complete."
|
|
55
|
+
),
|
|
56
|
+
"check": "passport.evidence_vault_id is not None",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"rule_id": "CO-003",
|
|
60
|
+
"name": "Transparency disclosure",
|
|
61
|
+
"severity": "HIGH",
|
|
62
|
+
"description": (
|
|
63
|
+
"Consumers must be informed when AI systems make or substantially "
|
|
64
|
+
"assist in consequential decisions affecting them."
|
|
65
|
+
),
|
|
66
|
+
"iris_control": "policy-intent.md transparency disclosure",
|
|
67
|
+
"how_iris_satisfies": (
|
|
68
|
+
"IRIS auto-generates a policy-intent.md for every agent that serves "
|
|
69
|
+
"as the Colorado AI Act transparency disclosure. "
|
|
70
|
+
"It is committed to the GitOps repo and versioned."
|
|
71
|
+
),
|
|
72
|
+
"check": "passport.intent_ref is not None",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"rule_id": "CO-004",
|
|
76
|
+
"name": "Consumer opt-out",
|
|
77
|
+
"severity": "HIGH",
|
|
78
|
+
"description": (
|
|
79
|
+
"Consumers must be able to opt out of consequential AI decisions "
|
|
80
|
+
"and request human review."
|
|
81
|
+
),
|
|
82
|
+
"iris_control": "context.user_consent_logged = True + HITL gate",
|
|
83
|
+
"how_iris_satisfies": (
|
|
84
|
+
"IRIS enforces user_consent_logged context for agents handling "
|
|
85
|
+
"consequential decisions. The HITL gate provides the human review path."
|
|
86
|
+
),
|
|
87
|
+
"check": "context.user_consent_logged == True for consequential actions",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"rule_id": "CO-005",
|
|
91
|
+
"name": "Non-discrimination",
|
|
92
|
+
"severity": "CRITICAL",
|
|
93
|
+
"description": (
|
|
94
|
+
"High-risk AI systems must not discriminate against consumers "
|
|
95
|
+
"based on protected characteristics."
|
|
96
|
+
),
|
|
97
|
+
"iris_control": "Dynamic Guardrail Engine (Phase 2)",
|
|
98
|
+
"how_iris_satisfies": (
|
|
99
|
+
"Phase 2: IRIS Dynamic Guardrail Engine monitors agent outputs "
|
|
100
|
+
"for discriminatory patterns and blocks non-compliant responses."
|
|
101
|
+
),
|
|
102
|
+
"check": "dynamic_guardrail.discrimination_check == PASS",
|
|
103
|
+
"phase": 2,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"rule_id": "CO-006",
|
|
107
|
+
"name": "Annual review",
|
|
108
|
+
"severity": "MEDIUM",
|
|
109
|
+
"description": (
|
|
110
|
+
"High-risk AI systems must be reviewed and re-assessed annually."
|
|
111
|
+
),
|
|
112
|
+
"iris_control": "EvidenceVault.review_schedule",
|
|
113
|
+
"how_iris_satisfies": (
|
|
114
|
+
"IRIS tracks the last_reviewed_at date on the AgentPassport and "
|
|
115
|
+
"alerts the security engineer when an annual review is due."
|
|
116
|
+
),
|
|
117
|
+
"check": "passport.last_reviewed_at within 365 days",
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
"high_risk_domains": [
|
|
121
|
+
"education",
|
|
122
|
+
"employment",
|
|
123
|
+
"financial_services",
|
|
124
|
+
"government",
|
|
125
|
+
"healthcare",
|
|
126
|
+
"housing",
|
|
127
|
+
"insurance",
|
|
128
|
+
"legal_services",
|
|
129
|
+
],
|
|
130
|
+
"iris_coverage": {
|
|
131
|
+
"phase_1": ["CO-001", "CO-002", "CO-003", "CO-004", "CO-006"],
|
|
132
|
+
"phase_2": ["CO-005"],
|
|
133
|
+
"coverage_percent_phase_1": 83,
|
|
134
|
+
"coverage_percent_phase_2": 100,
|
|
135
|
+
},
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
COLORADO_AI_ACT_SB26189: Dict[str, Any] = {
|
|
140
|
+
"bundle_id": "colorado-ai-act",
|
|
141
|
+
"full_name": "Colorado AI Act — SB 26-189 (Replacement)",
|
|
142
|
+
"supersedes": "colorado-ai-act-sb24-205",
|
|
143
|
+
"signed_date": "2026-05-14",
|
|
144
|
+
"effective_date": "2027-01-01",
|
|
145
|
+
"enforcement_note": (
|
|
146
|
+
"Enforcement contingent on AG rulemaking. "
|
|
147
|
+
"Practical enforcement expected no earlier than late 2027. "
|
|
148
|
+
"Federal court stay also extends to this legislation."
|
|
149
|
+
),
|
|
150
|
+
"jurisdiction": "Colorado, USA",
|
|
151
|
+
"iris_version": "0.2.0",
|
|
152
|
+
"key_changes_from_original": [
|
|
153
|
+
(
|
|
154
|
+
"Eliminated annual impact assessments (CO-002 removed as legal "
|
|
155
|
+
"requirement — retained as IRIS best practice)"
|
|
156
|
+
),
|
|
157
|
+
(
|
|
158
|
+
"Eliminated duty to avoid algorithmic discrimination (CO-005 "
|
|
159
|
+
"removed as legal requirement)"
|
|
160
|
+
),
|
|
161
|
+
"Eliminated risk management programs",
|
|
162
|
+
(
|
|
163
|
+
"Renamed coverage from 'AI systems' to 'automated "
|
|
164
|
+
"decision-making technology' (ADMT)"
|
|
165
|
+
),
|
|
166
|
+
"Added 3-year record retention requirement (NEW: CO-RR-001)",
|
|
167
|
+
"Added right-to-cure: 60 days to fix violations (NEW)",
|
|
168
|
+
"Clarified developer vs deployer liability separation",
|
|
169
|
+
],
|
|
170
|
+
"rules": [
|
|
171
|
+
{
|
|
172
|
+
"rule_id": "CO-001",
|
|
173
|
+
"name": "ADMT inventory — know what you are deploying",
|
|
174
|
+
"severity": "HIGH",
|
|
175
|
+
"status": "ACTIVE",
|
|
176
|
+
"description": (
|
|
177
|
+
"Deployers must know which automated decision-making technology "
|
|
178
|
+
"systems they use to make or materially influence consequential "
|
|
179
|
+
"decisions about Colorado consumers."
|
|
180
|
+
),
|
|
181
|
+
"iris_control": "AgentPassport registration",
|
|
182
|
+
"how_iris_satisfies": (
|
|
183
|
+
"Every agent registered in IRIS is automatically inventoried with "
|
|
184
|
+
"its owner, team, data classification, and consequential decision flag."
|
|
185
|
+
),
|
|
186
|
+
"check": "passport.agent_id is not None and passport.owner != ''",
|
|
187
|
+
"legal_ref": "SB 26-189 — Deployer obligations",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"rule_id": "CO-002",
|
|
191
|
+
"name": "Impact assessment (best practice — not legally required)",
|
|
192
|
+
"severity": "MEDIUM",
|
|
193
|
+
"status": "BEST_PRACTICE",
|
|
194
|
+
"legal_status": (
|
|
195
|
+
"SB 26-189 removed mandatory impact assessments. "
|
|
196
|
+
"IRIS retains this as a best practice because it satisfies "
|
|
197
|
+
"NIST AI RMF MAP-1.5 and prepares organizations for other "
|
|
198
|
+
"state laws that still require assessments."
|
|
199
|
+
),
|
|
200
|
+
"iris_control": "Evidence Vault impact assessment entry",
|
|
201
|
+
"how_iris_satisfies": (
|
|
202
|
+
"iris compliance assess generates a structured impact assessment "
|
|
203
|
+
"stored in the Evidence Vault."
|
|
204
|
+
),
|
|
205
|
+
"check": "passport.evidence_vault_id is not None",
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"rule_id": "CO-003",
|
|
209
|
+
"name": "Consumer notice — disclosure before or at time of use",
|
|
210
|
+
"severity": "HIGH",
|
|
211
|
+
"status": "ACTIVE",
|
|
212
|
+
"description": (
|
|
213
|
+
"Deployers must provide consumers with notice before or at the time "
|
|
214
|
+
"a covered ADMT tool is used to make or materially influence a "
|
|
215
|
+
"consequential decision."
|
|
216
|
+
),
|
|
217
|
+
"iris_control": "policy-intent.md transparency disclosure",
|
|
218
|
+
"how_iris_satisfies": (
|
|
219
|
+
"IRIS auto-generates a policy-intent.md that serves as the technical "
|
|
220
|
+
"transparency disclosure. Organizations must also implement "
|
|
221
|
+
"consumer-facing notices in their application layer."
|
|
222
|
+
),
|
|
223
|
+
"check": "passport.intent_ref is not None",
|
|
224
|
+
"implementation_note": (
|
|
225
|
+
"IRIS satisfies the technical documentation requirement. "
|
|
226
|
+
"Organizations must separately implement consumer-facing UI notices."
|
|
227
|
+
),
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"rule_id": "CO-004",
|
|
231
|
+
"name": "Post-adverse-action notice and appeal rights",
|
|
232
|
+
"severity": "HIGH",
|
|
233
|
+
"status": "ACTIVE",
|
|
234
|
+
"description": (
|
|
235
|
+
"If ADMT contributes to an unfavorable decision affecting a Colorado "
|
|
236
|
+
"consumer, the consumer must receive information about the decision "
|
|
237
|
+
"and how to appeal it."
|
|
238
|
+
),
|
|
239
|
+
"iris_control": "HITL gate + user_consent_logged context",
|
|
240
|
+
"how_iris_satisfies": (
|
|
241
|
+
"The IRIS HITL gate provides the human review path. "
|
|
242
|
+
"user_consent_logged enforces the consent gate before consequential "
|
|
243
|
+
"decisions."
|
|
244
|
+
),
|
|
245
|
+
"check": "context.user_consent_logged == True for consequential actions",
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"rule_id": "CO-RR-001",
|
|
249
|
+
"name": "3-year record retention (NEW in SB 26-189)",
|
|
250
|
+
"severity": "HIGH",
|
|
251
|
+
"status": "ACTIVE",
|
|
252
|
+
"description": (
|
|
253
|
+
"Deployers must retain records of covered ADMT tool usage for "
|
|
254
|
+
"three years."
|
|
255
|
+
),
|
|
256
|
+
"iris_control": "Evidence Vault retention policy",
|
|
257
|
+
"how_iris_satisfies": (
|
|
258
|
+
"Evidence Vault Pro configures retention to 3 years minimum for "
|
|
259
|
+
"agents tagged colorado-ai-act. Free tier retains 30 days locally."
|
|
260
|
+
),
|
|
261
|
+
"check": "evidence_vault.retention_days >= 1095",
|
|
262
|
+
"free_tier_note": (
|
|
263
|
+
"Free tier (30-day local retention) does NOT satisfy this requirement. "
|
|
264
|
+
"Enterprise Pro tier required for full legal compliance."
|
|
265
|
+
),
|
|
266
|
+
"upgrade_message": (
|
|
267
|
+
"3-year record retention requires IRIS Pro. "
|
|
268
|
+
"iris license activate <your-key>"
|
|
269
|
+
),
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"rule_id": "CO-DEV-001",
|
|
273
|
+
"name": "Developer documentation obligations",
|
|
274
|
+
"severity": "MEDIUM",
|
|
275
|
+
"status": "ACTIVE",
|
|
276
|
+
"description": (
|
|
277
|
+
"Developers must provide deployers with documentation about intended "
|
|
278
|
+
"uses, known harmful uses, training materials, limitations, and "
|
|
279
|
+
"risk notices."
|
|
280
|
+
),
|
|
281
|
+
"iris_control": "policy-intent.md + passport.yaml",
|
|
282
|
+
"how_iris_satisfies": (
|
|
283
|
+
"IRIS policy-intent.md and passport.yaml together constitute the "
|
|
284
|
+
"developer documentation package."
|
|
285
|
+
),
|
|
286
|
+
"check": "passport.intent_ref is not None and passport.description != ''",
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
"covered_domains": [
|
|
290
|
+
"employment",
|
|
291
|
+
"financial_services",
|
|
292
|
+
"housing",
|
|
293
|
+
"health_care",
|
|
294
|
+
"insurance",
|
|
295
|
+
"education",
|
|
296
|
+
"government_services",
|
|
297
|
+
"legal_services",
|
|
298
|
+
],
|
|
299
|
+
"admt_coverage": {
|
|
300
|
+
"likely_covered": [
|
|
301
|
+
"AI ranking job applicants",
|
|
302
|
+
"AI-driven tenant screening",
|
|
303
|
+
"AI loan scoring",
|
|
304
|
+
"AI insurance underwriting recommendations",
|
|
305
|
+
"AI health care prioritization tools",
|
|
306
|
+
],
|
|
307
|
+
"likely_not_covered": [
|
|
308
|
+
"Spellcheck or grammar tools",
|
|
309
|
+
"Internal productivity copilots",
|
|
310
|
+
"Basic analytics dashboards",
|
|
311
|
+
"General customer support chatbots",
|
|
312
|
+
"Simple workflow automation",
|
|
313
|
+
"Cybersecurity and fraud detection tools",
|
|
314
|
+
],
|
|
315
|
+
},
|
|
316
|
+
"iris_coverage": {
|
|
317
|
+
"active_rules": ["CO-001", "CO-003", "CO-004", "CO-RR-001", "CO-DEV-001"],
|
|
318
|
+
"best_practice_rules": ["CO-002"],
|
|
319
|
+
"removed_from_original": ["CO-005", "CO-006"],
|
|
320
|
+
"coverage_percent": 100,
|
|
321
|
+
"pro_required_for": ["CO-RR-001"],
|
|
322
|
+
},
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
def get_colorado_rules() -> Dict[str, Any]:
|
|
327
|
+
"""Return the current Colorado AI Act bundle (SB 26-189)."""
|
|
328
|
+
return COLORADO_AI_ACT_SB26189
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
def get_colorado_original_rules() -> Dict[str, Any]:
|
|
332
|
+
"""Return the superseded SB 24-205 bundle for historical audit trail."""
|
|
333
|
+
return COLORADO_AI_ACT_ORIGINAL
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
def get_phase_1_rules() -> List[Dict[str, Any]]:
|
|
337
|
+
coverage = COLORADO_AI_ACT_SB26189["iris_coverage"]
|
|
338
|
+
active_ids = coverage["active_rules"] + coverage.get("best_practice_rules", [])
|
|
339
|
+
return [r for r in COLORADO_AI_ACT_SB26189["rules"] if r["rule_id"] in active_ids]
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
def is_high_risk_domain(domain: str) -> bool:
|
|
343
|
+
return domain.lower().replace(" ", "_") in COLORADO_AI_ACT_SB26189["covered_domains"]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Colorado HB 26-1263 — Chatbot Safety compliance bundle.
|
|
3
|
+
|
|
4
|
+
Effective: January 1, 2027.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Any, Dict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
COLORADO_CHATBOT_RULES: Dict[str, Any] = {
|
|
13
|
+
"bundle_id": "colorado-chatbot",
|
|
14
|
+
"full_name": "Colorado Chatbot Safety — HB 26-1263",
|
|
15
|
+
"effective_date": "2027-01-01",
|
|
16
|
+
"jurisdiction": "Colorado, USA",
|
|
17
|
+
"iris_version": "0.2.0",
|
|
18
|
+
"rules": [
|
|
19
|
+
{
|
|
20
|
+
"rule_id": "CHAT-001",
|
|
21
|
+
"name": "Age estimation for conversational AI services",
|
|
22
|
+
"severity": "HIGH",
|
|
23
|
+
"status": "ACTIVE",
|
|
24
|
+
"description": (
|
|
25
|
+
"Operators must estimate user age and apply appropriate protections."
|
|
26
|
+
),
|
|
27
|
+
"iris_control": "passport.allowed_user_roles (restrict minors)",
|
|
28
|
+
"how_iris_satisfies": (
|
|
29
|
+
"IRIS passport allowed_user_roles enforces age-appropriate access "
|
|
30
|
+
"restrictions for conversational AI agents."
|
|
31
|
+
),
|
|
32
|
+
"check": "passport.allowed_user_roles configured for minor protection",
|
|
33
|
+
"legal_ref": "HB 26-1263 — Age estimation",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"rule_id": "CHAT-002",
|
|
37
|
+
"name": "AI disclosure to users identified as minors",
|
|
38
|
+
"severity": "HIGH",
|
|
39
|
+
"status": "ACTIVE",
|
|
40
|
+
"description": (
|
|
41
|
+
"Conversational AI must regularly disclose AI status to users "
|
|
42
|
+
"identified as minors."
|
|
43
|
+
),
|
|
44
|
+
"iris_control": "policy-intent.md transparency disclosure",
|
|
45
|
+
"how_iris_satisfies": (
|
|
46
|
+
"IRIS policy-intent.md includes AI disclosure language for "
|
|
47
|
+
"minor-facing conversational agents."
|
|
48
|
+
),
|
|
49
|
+
"check": "passport.intent_ref is not None",
|
|
50
|
+
"legal_ref": "HB 26-1263 — AI disclosure",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"rule_id": "CHAT-003",
|
|
54
|
+
"name": "No sexually explicit content for minors",
|
|
55
|
+
"severity": "CRITICAL",
|
|
56
|
+
"status": "ACTIVE",
|
|
57
|
+
"description": (
|
|
58
|
+
"ADMT operators must not generate sexually explicit content for "
|
|
59
|
+
"users identified as minors."
|
|
60
|
+
),
|
|
61
|
+
"iris_control": "DLP scanner + content guardrails",
|
|
62
|
+
"how_iris_satisfies": (
|
|
63
|
+
"IRIS DLP scanner and content guardrails block sexually explicit "
|
|
64
|
+
"output for minor-identified sessions."
|
|
65
|
+
),
|
|
66
|
+
"check": "dlp_scanner.enabled == True and content_guardrails.active == True",
|
|
67
|
+
"legal_ref": "HB 26-1263 — Content restrictions",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"rule_id": "CHAT-004",
|
|
71
|
+
"name": "Crisis response protocols",
|
|
72
|
+
"severity": "CRITICAL",
|
|
73
|
+
"status": "ACTIVE",
|
|
74
|
+
"description": (
|
|
75
|
+
"When users express suicidal ideation or self-harm intent, the system "
|
|
76
|
+
"must have documented crisis response protocols."
|
|
77
|
+
),
|
|
78
|
+
"iris_control": "HITL gate configured for crisis keywords",
|
|
79
|
+
"how_iris_satisfies": (
|
|
80
|
+
"IRIS HITL gate routes crisis-keyword detections to human review "
|
|
81
|
+
"with documented escalation protocols."
|
|
82
|
+
),
|
|
83
|
+
"check": "hitl_gate.crisis_keywords_configured == True",
|
|
84
|
+
"legal_ref": "HB 26-1263 — Crisis response",
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def get_colorado_chatbot_rules() -> Dict[str, Any]:
|
|
91
|
+
return COLORADO_CHATBOT_RULES
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Colorado HB 26-1139 — AI in Health Insurance compliance bundle.
|
|
3
|
+
|
|
4
|
+
Effective: January 1, 2027.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Any, Dict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
COLORADO_HEALTH_AI_RULES: Dict[str, Any] = {
|
|
13
|
+
"bundle_id": "colorado-health-ai",
|
|
14
|
+
"full_name": "Colorado AI in Health Insurance — HB 26-1139",
|
|
15
|
+
"effective_date": "2027-01-01",
|
|
16
|
+
"jurisdiction": "Colorado, USA",
|
|
17
|
+
"iris_version": "0.2.0",
|
|
18
|
+
"rules": [
|
|
19
|
+
{
|
|
20
|
+
"rule_id": "HLTH-001",
|
|
21
|
+
"name": "No AI-only coverage decisions",
|
|
22
|
+
"severity": "CRITICAL",
|
|
23
|
+
"status": "ACTIVE",
|
|
24
|
+
"description": (
|
|
25
|
+
"Health insurers cannot base coverage decisions solely on group data "
|
|
26
|
+
"collected by AI systems."
|
|
27
|
+
),
|
|
28
|
+
"iris_control": "user_consent_logged + HITL gate for coverage decisions",
|
|
29
|
+
"how_iris_satisfies": (
|
|
30
|
+
"IRIS enforces user_consent_logged and HITL gate review before "
|
|
31
|
+
"any AI-influenced coverage determination is finalized."
|
|
32
|
+
),
|
|
33
|
+
"check": "context.user_consent_logged == True for coverage decisions",
|
|
34
|
+
"legal_ref": "HB 26-1139 — Coverage decisions",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"rule_id": "HLTH-002",
|
|
38
|
+
"name": "Individual medical history consideration",
|
|
39
|
+
"severity": "HIGH",
|
|
40
|
+
"status": "ACTIVE",
|
|
41
|
+
"description": (
|
|
42
|
+
"Insurers must consider a patient's individual medical and clinical "
|
|
43
|
+
"history in any AI-influenced coverage determination."
|
|
44
|
+
),
|
|
45
|
+
"iris_control": "passport tool_permissions must include clinician-review",
|
|
46
|
+
"how_iris_satisfies": (
|
|
47
|
+
"IRIS tool_permissions require clinician-review tool access for "
|
|
48
|
+
"agents making coverage determinations."
|
|
49
|
+
),
|
|
50
|
+
"check": "passport.tool_permissions includes clinician-review",
|
|
51
|
+
"legal_ref": "HB 26-1139 — Individual consideration",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"rule_id": "HLTH-003",
|
|
55
|
+
"name": "Licensed clinician review for medical necessity denials",
|
|
56
|
+
"severity": "CRITICAL",
|
|
57
|
+
"status": "ACTIVE",
|
|
58
|
+
"description": (
|
|
59
|
+
"Denials based on medical necessity must be reviewed by a licensed "
|
|
60
|
+
"clinician competent to evaluate the specific clinical issues."
|
|
61
|
+
),
|
|
62
|
+
"iris_control": 'HITL gate with reviewer_role = "licensed-clinician"',
|
|
63
|
+
"how_iris_satisfies": (
|
|
64
|
+
"IRIS HITL gate requires licensed-clinician reviewer role for "
|
|
65
|
+
"medical necessity denial workflows."
|
|
66
|
+
),
|
|
67
|
+
"check": 'hitl_gate.reviewer_role == "licensed-clinician"',
|
|
68
|
+
"legal_ref": "HB 26-1139 — Medical necessity review",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"rule_id": "HLTH-004",
|
|
72
|
+
"name": "AI use disclosure to state division",
|
|
73
|
+
"severity": "HIGH",
|
|
74
|
+
"status": "ACTIVE",
|
|
75
|
+
"description": (
|
|
76
|
+
"Covered entities must disclose to the state division which "
|
|
77
|
+
"utilization review functions use AI."
|
|
78
|
+
),
|
|
79
|
+
"iris_control": "iris evidence report generates disclosure document",
|
|
80
|
+
"how_iris_satisfies": (
|
|
81
|
+
"iris evidence report generates a structured AI utilization "
|
|
82
|
+
"disclosure document for state division filing."
|
|
83
|
+
),
|
|
84
|
+
"check": "passport.evidence_vault_id is not None",
|
|
85
|
+
"legal_ref": "HB 26-1139 — State disclosure",
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def get_colorado_health_ai_rules() -> Dict[str, Any]:
|
|
92
|
+
return COLORADO_HEALTH_AI_RULES
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Colorado HB 26-1195 — AI in Mental Health Services compliance bundle.
|
|
3
|
+
|
|
4
|
+
Effective: August 12, 2026.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Any, Dict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
COLORADO_MENTAL_HEALTH_AI_RULES: Dict[str, Any] = {
|
|
13
|
+
"bundle_id": "colorado-mental-health-ai",
|
|
14
|
+
"full_name": "Colorado AI in Mental Health Services — HB 26-1195",
|
|
15
|
+
"effective_date": "2026-08-12",
|
|
16
|
+
"jurisdiction": "Colorado, USA",
|
|
17
|
+
"iris_version": "0.2.0",
|
|
18
|
+
"rules": [
|
|
19
|
+
{
|
|
20
|
+
"rule_id": "MH-001",
|
|
21
|
+
"name": "No AI chatbot direct patient communication",
|
|
22
|
+
"severity": "CRITICAL",
|
|
23
|
+
"status": "ACTIVE",
|
|
24
|
+
"description": (
|
|
25
|
+
"Licensed mental health clinicians may not use AI chatbots to "
|
|
26
|
+
"communicate directly with patients."
|
|
27
|
+
),
|
|
28
|
+
"iris_control": (
|
|
29
|
+
"passport tool_permissions must NOT include "
|
|
30
|
+
"direct-patient-communication for AI agents"
|
|
31
|
+
),
|
|
32
|
+
"how_iris_satisfies": (
|
|
33
|
+
"IRIS blocks direct-patient-communication tool permissions on "
|
|
34
|
+
"AI agents tagged for mental health services."
|
|
35
|
+
),
|
|
36
|
+
"check": (
|
|
37
|
+
"passport.tool_permissions does NOT include "
|
|
38
|
+
"direct-patient-communication"
|
|
39
|
+
),
|
|
40
|
+
"legal_ref": "HB 26-1195 — Direct patient communication",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"rule_id": "MH-002",
|
|
44
|
+
"name": "No AI-generated treatment plans without human review",
|
|
45
|
+
"severity": "CRITICAL",
|
|
46
|
+
"status": "ACTIVE",
|
|
47
|
+
"description": (
|
|
48
|
+
"AI may not generate treatment plans without human clinician review."
|
|
49
|
+
),
|
|
50
|
+
"iris_control": "HITL gate required for all treatment-plan actions",
|
|
51
|
+
"how_iris_satisfies": (
|
|
52
|
+
"IRIS HITL gate blocks treatment-plan generation until a licensed "
|
|
53
|
+
"clinician approves the output."
|
|
54
|
+
),
|
|
55
|
+
"check": "hitl_gate.required_for treatment-plan actions",
|
|
56
|
+
"legal_ref": "HB 26-1195 — Treatment plans",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"rule_id": "MH-003",
|
|
60
|
+
"name": "Patient consent for AI transcription",
|
|
61
|
+
"severity": "HIGH",
|
|
62
|
+
"status": "ACTIVE",
|
|
63
|
+
"description": (
|
|
64
|
+
"Patient consent is required for AI transcription during sessions."
|
|
65
|
+
),
|
|
66
|
+
"iris_control": "user_consent_logged = True for transcription actions",
|
|
67
|
+
"how_iris_satisfies": (
|
|
68
|
+
"IRIS enforces user_consent_logged before any AI transcription "
|
|
69
|
+
"action during clinical sessions."
|
|
70
|
+
),
|
|
71
|
+
"check": "context.user_consent_logged == True for transcription actions",
|
|
72
|
+
"legal_ref": "HB 26-1195 — Transcription consent",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"rule_id": "MH-004",
|
|
76
|
+
"name": "AI permissible for administrative tasks only (without consent)",
|
|
77
|
+
"severity": "HIGH",
|
|
78
|
+
"status": "ACTIVE",
|
|
79
|
+
"description": (
|
|
80
|
+
"Without explicit patient consent, AI use is restricted to "
|
|
81
|
+
"administrative tasks only."
|
|
82
|
+
),
|
|
83
|
+
"iris_control": (
|
|
84
|
+
"tool_permissions limited to admin-only tools unless consent is logged"
|
|
85
|
+
),
|
|
86
|
+
"how_iris_satisfies": (
|
|
87
|
+
"IRIS restricts tool_permissions to admin-only tools when "
|
|
88
|
+
"user_consent_logged is False for mental health agents."
|
|
89
|
+
),
|
|
90
|
+
"check": (
|
|
91
|
+
"tool_permissions limited to admin-only unless "
|
|
92
|
+
"context.user_consent_logged == True"
|
|
93
|
+
),
|
|
94
|
+
"legal_ref": "HB 26-1195 — Administrative use",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def get_colorado_mental_health_ai_rules() -> Dict[str, Any]:
|
|
101
|
+
return COLORADO_MENTAL_HEALTH_AI_RULES
|