@bluefly/openstandardagents 0.2.8 → 0.2.9
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/.env.example +1 -1
- package/.github/AGENTS.md +245 -0
- package/.github/agents/github-issue-triage.ossa.yaml +99 -0
- package/.github/agents/github-pr-triage.ossa.yaml +137 -0
- package/.github/workflows/issue-sync-to-gitlab.yml +138 -0
- package/.github/workflows/pr-triage-to-gitlab.yml +164 -0
- package/.version.json +1 -1
- package/.wiki-config.json +1 -1
- package/CHANGELOG.md +33 -0
- package/CONTRIBUTING.md +102 -3
- package/README.md +17 -10
- package/dist/services/release-automation/schemas/release.schema.js +1 -1
- package/dist/services/release-automation/webhook.service.js +3 -3
- package/dist/services/release-automation/webhook.service.js.map +1 -1
- package/dist/services/runtime/claude/claude-adapter.d.ts +1 -1
- package/dist/services/runtime/claude/claude-adapter.d.ts.map +1 -1
- package/dist/services/runtime/claude/claude-adapter.js +1 -1
- package/dist/services/runtime/claude/claude-adapter.js.map +1 -1
- package/dist/spec/v0.2.9/a2a-protocol.md +1337 -0
- package/dist/spec/v0.2.9/agent.md +1946 -0
- package/dist/spec/v0.2.9/capabilities/index.yaml +25 -0
- package/dist/spec/v0.2.9/capabilities/memory.yaml +251 -0
- package/dist/spec/v0.2.9/capability-schema.md +576 -0
- package/dist/spec/v0.2.9/compliance-profiles.md +533 -0
- package/dist/spec/v0.2.9/conformance-testing.md +1527 -0
- package/dist/spec/v0.2.9/gitlab-duo-integration.md +621 -0
- package/dist/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
- package/dist/spec/v0.2.9/runtime-semantics.md +464 -0
- package/dist/spec/v0.2.9/security-model.md +1245 -0
- package/dist/spec/v0.2.9/semantic-conventions.md +347 -0
- package/dist/spec/v0.2.9/types.ts +522 -0
- package/dist/types/policy.d.ts +377 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/policy.js +84 -0
- package/dist/types/policy.js.map +1 -0
- package/dist/utils/version.js +1 -1
- package/docs/specs/policy-dsl.md +925 -0
- package/examples/adk-integration/code-review-workflow.yml +1 -1
- package/examples/adk-integration/customer-support.yml +1 -1
- package/examples/adk-integration/data-pipeline.yml +1 -1
- package/examples/advanced/reasoning-agent.yaml +136 -0
- package/examples/advanced/workflows/hybrid-model-strategy.yaml +1 -1
- package/examples/agent-manifests/critics/critic-agent.yaml +1 -1
- package/examples/agent-manifests/governors/governor-agent.yaml +1 -1
- package/examples/agent-manifests/integrators/integrator-agent.yaml +1 -1
- package/examples/agent-manifests/judges/judge-agent.yaml +1 -1
- package/examples/agent-manifests/monitors/monitor-agent.yaml +1 -1
- package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +1 -1
- package/examples/agent-manifests/sample-compliant-agent.yaml +1 -1
- package/examples/agent-manifests/workers/worker-agent.yaml +1 -1
- package/examples/agents-md/code-agent.ossa.json +100 -0
- package/examples/agents-md/monorepo-agent.ossa.yaml +180 -0
- package/examples/anthropic/claude-assistant.ossa.json +1 -1
- package/examples/autogen/multi-agent.ossa.json +1 -1
- package/examples/claude-code/code-reviewer.ossa.yaml +1 -1
- package/examples/claude-code/ossa-validator.ossa.yaml +2 -2
- package/examples/common_npm/agent-router.ossa.yaml +1 -1
- package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +1 -1
- package/examples/crewai/research-team.ossa.json +1 -1
- package/examples/cursor/code-review-agent.ossa.json +1 -1
- package/examples/drupal/gitlab-ml-recommender.ossa.yaml +1 -1
- package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +1 -1
- package/examples/extensions/agents-md-v1.yml +175 -0
- package/examples/extensions/drupal-v1.yml +1 -1
- package/examples/extensions/kagent-v1.yml +1 -1
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +4 -4
- package/examples/kagent/compliance-validator.ossa.yaml +1 -1
- package/examples/kagent/cost-optimizer.ossa.yaml +1 -1
- package/examples/kagent/documentation-agent.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +1 -1
- package/examples/kagent/k8s-troubleshooter.ossa.yaml +1 -1
- package/examples/kagent/security-scanner.ossa.yaml +1 -1
- package/examples/langchain/chain-agent.ossa.json +1 -1
- package/examples/langflow/workflow-agent.ossa.json +1 -1
- package/examples/langgraph/state-machine-agent.ossa.json +1 -1
- package/examples/llamaindex/rag-agent.ossa.json +1 -1
- package/examples/migration-guides/from-langchain-to-ossa.yaml +4 -4
- package/examples/multi-agent/conditional-router.ossa.yaml +1 -1
- package/examples/multi-agent/parallel-execution.ossa.yaml +1 -1
- package/examples/multi-agent/sequential-pipeline.ossa.yaml +1 -1
- package/examples/openai/basic-agent.ossa.yaml +1 -1
- package/examples/openai/multi-tool-agent.ossa.json +1 -1
- package/examples/openai/swarm-agent.ossa.json +1 -1
- package/examples/production/document-analyzer-openai.yml +1 -1
- package/examples/quickstart/support-agent.ossa.yaml +1 -1
- package/examples/templates/ossa-compliance.yaml +1 -1
- package/examples/vercel/edge-agent.ossa.json +1 -1
- package/llms.txt +1 -1
- package/package.json +5 -3
- package/scripts/README.md +25 -0
- package/scripts/compliance-audit.ts +796 -0
- package/scripts/generate-agents-catalog.ts +2 -1
- package/scripts/generate-api-docs.ts +2 -1
- package/scripts/generate-examples-docs.ts +2 -1
- package/scripts/generate-llms-ctx.sh +2 -2
- package/spec/v0.2.9/a2a-protocol.md +1337 -0
- package/spec/v0.2.9/agent.md +1946 -0
- package/spec/v0.2.9/capabilities/index.yaml +25 -0
- package/spec/v0.2.9/capabilities/memory.yaml +251 -0
- package/spec/v0.2.9/capability-schema.md +576 -0
- package/spec/v0.2.9/compliance-profiles.md +533 -0
- package/spec/v0.2.9/conformance-testing.md +1527 -0
- package/spec/v0.2.9/gitlab-duo-integration.md +621 -0
- package/spec/v0.2.9/ossa-0.2.9.schema.json +3699 -0
- package/spec/v0.2.9/runtime-semantics.md +464 -0
- package/spec/v0.2.9/security-model.md +1245 -0
- package/spec/v0.2.9/semantic-conventions.md +347 -0
- package/spec/v0.2.9/types.ts +522 -0
- package/test-results/junit.xml +184 -146
- package/.github/workflows/pr-comment.yml +0 -33
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
# OSSA Compliance Profiles
|
|
2
|
+
|
|
3
|
+
**Version**: 0.2.9
|
|
4
|
+
**Status**: Draft
|
|
5
|
+
**Last Updated**: 2025-12-04
|
|
6
|
+
|
|
7
|
+
This document defines formal compliance profiles for OSSA agents targeting enterprise adoption.
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Compliance profiles define mandatory agent configurations for regulatory frameworks. When an agent declares a compliance profile, the runtime MUST enforce all profile requirements.
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
apiVersion: ossa/v0.2.9
|
|
15
|
+
kind: Agent
|
|
16
|
+
metadata:
|
|
17
|
+
name: healthcare-assistant
|
|
18
|
+
spec:
|
|
19
|
+
compliance:
|
|
20
|
+
profiles:
|
|
21
|
+
- hipaa
|
|
22
|
+
- soc2-type2
|
|
23
|
+
audit:
|
|
24
|
+
enabled: true
|
|
25
|
+
retention_days: 2555 # 7 years
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Profile Schema
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
interface ComplianceProfile {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
framework: 'FedRAMP' | 'SOC2' | 'HIPAA' | 'GDPR' | 'PCI-DSS' | 'ISO27001';
|
|
37
|
+
level?: string;
|
|
38
|
+
version: string;
|
|
39
|
+
|
|
40
|
+
requirements: {
|
|
41
|
+
state?: StateRequirements;
|
|
42
|
+
observability?: ObservabilityRequirements;
|
|
43
|
+
tools?: ToolRequirements;
|
|
44
|
+
security?: SecurityRequirements;
|
|
45
|
+
data?: DataRequirements;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
controls: ControlMapping[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface ControlMapping {
|
|
52
|
+
id: string; // Framework control ID (e.g., "AC-2")
|
|
53
|
+
description: string; // Control description
|
|
54
|
+
mapping: string; // OSSA spec path
|
|
55
|
+
validation: string; // Validation rule
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## FedRAMP Moderate Profile
|
|
62
|
+
|
|
63
|
+
**Framework**: FedRAMP (Federal Risk and Authorization Management Program)
|
|
64
|
+
**Level**: Moderate (110 controls)
|
|
65
|
+
**Use Case**: Federal agency deployments, government contractors
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
id: fedramp-moderate
|
|
69
|
+
name: FedRAMP Moderate Baseline
|
|
70
|
+
framework: FedRAMP
|
|
71
|
+
level: Moderate
|
|
72
|
+
version: "2024.1"
|
|
73
|
+
|
|
74
|
+
requirements:
|
|
75
|
+
state:
|
|
76
|
+
encryption:
|
|
77
|
+
required: true
|
|
78
|
+
algorithm: AES-256-GCM
|
|
79
|
+
key_management: FIPS-140-2
|
|
80
|
+
storage:
|
|
81
|
+
allowed_regions:
|
|
82
|
+
- us-east-1
|
|
83
|
+
- us-west-2
|
|
84
|
+
- us-gov-west-1
|
|
85
|
+
data_residency: US
|
|
86
|
+
|
|
87
|
+
observability:
|
|
88
|
+
audit_logging:
|
|
89
|
+
required: true
|
|
90
|
+
retention_days: 2555 # 7 years
|
|
91
|
+
immutable: true
|
|
92
|
+
tracing:
|
|
93
|
+
required: true
|
|
94
|
+
pii_redaction: true
|
|
95
|
+
|
|
96
|
+
tools:
|
|
97
|
+
authentication:
|
|
98
|
+
required: true
|
|
99
|
+
types_allowed:
|
|
100
|
+
- mtls
|
|
101
|
+
- oauth2
|
|
102
|
+
- saml
|
|
103
|
+
mfa_required: true
|
|
104
|
+
network:
|
|
105
|
+
egress_filtering: true
|
|
106
|
+
allowed_domains_only: true
|
|
107
|
+
|
|
108
|
+
security:
|
|
109
|
+
vulnerability_scanning: required
|
|
110
|
+
penetration_testing: annual
|
|
111
|
+
incident_response: 1h
|
|
112
|
+
|
|
113
|
+
controls:
|
|
114
|
+
- id: AC-2
|
|
115
|
+
description: Account Management
|
|
116
|
+
mapping: spec.security.authentication
|
|
117
|
+
validation: authentication.required == true
|
|
118
|
+
|
|
119
|
+
- id: AC-3
|
|
120
|
+
description: Access Enforcement
|
|
121
|
+
mapping: spec.autonomy.approval_required
|
|
122
|
+
validation: approval_required == true for privileged_tools
|
|
123
|
+
|
|
124
|
+
- id: AU-2
|
|
125
|
+
description: Audit Events
|
|
126
|
+
mapping: spec.observability.logging
|
|
127
|
+
validation: logging.level in ['info', 'debug']
|
|
128
|
+
|
|
129
|
+
- id: AU-3
|
|
130
|
+
description: Content of Audit Records
|
|
131
|
+
mapping: spec.observability.logging.structured
|
|
132
|
+
validation: structured == true
|
|
133
|
+
|
|
134
|
+
- id: AU-9
|
|
135
|
+
description: Protection of Audit Information
|
|
136
|
+
mapping: spec.observability.logging.immutable
|
|
137
|
+
validation: immutable == true
|
|
138
|
+
|
|
139
|
+
- id: AU-11
|
|
140
|
+
description: Audit Record Retention
|
|
141
|
+
mapping: spec.observability.logging.retention_days
|
|
142
|
+
validation: retention_days >= 2555
|
|
143
|
+
|
|
144
|
+
- id: SC-8
|
|
145
|
+
description: Transmission Confidentiality
|
|
146
|
+
mapping: spec.tools[*].source.tls
|
|
147
|
+
validation: all tools use TLS 1.3
|
|
148
|
+
|
|
149
|
+
- id: SC-13
|
|
150
|
+
description: Cryptographic Protection
|
|
151
|
+
mapping: spec.state.encryption
|
|
152
|
+
validation: encryption.algorithm in ['AES-256-GCM', 'ChaCha20-Poly1305']
|
|
153
|
+
|
|
154
|
+
- id: SC-28
|
|
155
|
+
description: Protection of Information at Rest
|
|
156
|
+
mapping: spec.state.encryption.at_rest
|
|
157
|
+
validation: at_rest == true
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## SOC 2 Type II Profile
|
|
163
|
+
|
|
164
|
+
**Framework**: SOC 2 (Service Organization Control 2)
|
|
165
|
+
**Type**: Type II (operational effectiveness over time)
|
|
166
|
+
**Use Case**: SaaS providers, enterprise B2B
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
id: soc2-type2
|
|
170
|
+
name: SOC 2 Type II
|
|
171
|
+
framework: SOC2
|
|
172
|
+
level: Type II
|
|
173
|
+
version: "2024.1"
|
|
174
|
+
|
|
175
|
+
requirements:
|
|
176
|
+
state:
|
|
177
|
+
encryption:
|
|
178
|
+
required: true
|
|
179
|
+
algorithm: AES-256-GCM
|
|
180
|
+
backup:
|
|
181
|
+
required: true
|
|
182
|
+
frequency: daily
|
|
183
|
+
retention_days: 90
|
|
184
|
+
|
|
185
|
+
observability:
|
|
186
|
+
audit_logging:
|
|
187
|
+
required: true
|
|
188
|
+
retention_days: 365
|
|
189
|
+
tamper_evident: true
|
|
190
|
+
monitoring:
|
|
191
|
+
required: true
|
|
192
|
+
alerting: true
|
|
193
|
+
metrics:
|
|
194
|
+
required: true
|
|
195
|
+
availability_tracking: true
|
|
196
|
+
|
|
197
|
+
tools:
|
|
198
|
+
authentication:
|
|
199
|
+
required: true
|
|
200
|
+
types_allowed:
|
|
201
|
+
- oauth2
|
|
202
|
+
- api_key
|
|
203
|
+
- jwt
|
|
204
|
+
rate_limiting:
|
|
205
|
+
required: true
|
|
206
|
+
|
|
207
|
+
security:
|
|
208
|
+
access_control: rbac
|
|
209
|
+
change_management: required
|
|
210
|
+
incident_response: 4h
|
|
211
|
+
|
|
212
|
+
data:
|
|
213
|
+
classification: required
|
|
214
|
+
retention_policy: required
|
|
215
|
+
disposal: secure_delete
|
|
216
|
+
|
|
217
|
+
controls:
|
|
218
|
+
# Security (Common Criteria)
|
|
219
|
+
- id: CC6.1
|
|
220
|
+
description: Logical and Physical Access Controls
|
|
221
|
+
mapping: spec.security.authentication
|
|
222
|
+
validation: authentication.required == true
|
|
223
|
+
|
|
224
|
+
- id: CC6.2
|
|
225
|
+
description: System Access Authorization
|
|
226
|
+
mapping: spec.autonomy.approval_required
|
|
227
|
+
validation: privileged operations require approval
|
|
228
|
+
|
|
229
|
+
- id: CC6.3
|
|
230
|
+
description: Access Removal
|
|
231
|
+
mapping: spec.security.session.timeout_seconds
|
|
232
|
+
validation: timeout_seconds <= 3600
|
|
233
|
+
|
|
234
|
+
# Availability
|
|
235
|
+
- id: A1.1
|
|
236
|
+
description: System Availability
|
|
237
|
+
mapping: spec.reliability.circuit_breaker
|
|
238
|
+
validation: circuit_breaker.enabled == true
|
|
239
|
+
|
|
240
|
+
- id: A1.2
|
|
241
|
+
description: Recovery Procedures
|
|
242
|
+
mapping: spec.reliability.fallback
|
|
243
|
+
validation: fallback defined for critical tools
|
|
244
|
+
|
|
245
|
+
# Processing Integrity
|
|
246
|
+
- id: PI1.1
|
|
247
|
+
description: Processing Integrity
|
|
248
|
+
mapping: spec.constraints.validation
|
|
249
|
+
validation: input/output validation enabled
|
|
250
|
+
|
|
251
|
+
# Confidentiality
|
|
252
|
+
- id: C1.1
|
|
253
|
+
description: Confidential Information Protection
|
|
254
|
+
mapping: spec.state.encryption
|
|
255
|
+
validation: encryption.required == true
|
|
256
|
+
|
|
257
|
+
- id: C1.2
|
|
258
|
+
description: Confidential Information Disposal
|
|
259
|
+
mapping: spec.state.ttl
|
|
260
|
+
validation: ttl defined for sensitive state
|
|
261
|
+
|
|
262
|
+
# Privacy
|
|
263
|
+
- id: P1.1
|
|
264
|
+
description: Privacy Notice
|
|
265
|
+
mapping: spec.safety.content_filtering
|
|
266
|
+
validation: pii_detection enabled
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## HIPAA Profile
|
|
272
|
+
|
|
273
|
+
**Framework**: HIPAA (Health Insurance Portability and Accountability Act)
|
|
274
|
+
**Use Case**: Healthcare, PHI handling
|
|
275
|
+
|
|
276
|
+
```yaml
|
|
277
|
+
id: hipaa
|
|
278
|
+
name: HIPAA Compliance
|
|
279
|
+
framework: HIPAA
|
|
280
|
+
version: "2024.1"
|
|
281
|
+
|
|
282
|
+
requirements:
|
|
283
|
+
state:
|
|
284
|
+
encryption:
|
|
285
|
+
required: true
|
|
286
|
+
algorithm: AES-256-GCM
|
|
287
|
+
phi_specific: true
|
|
288
|
+
storage:
|
|
289
|
+
phi_isolation: true
|
|
290
|
+
access_logging: true
|
|
291
|
+
retention:
|
|
292
|
+
minimum_days: 2190 # 6 years
|
|
293
|
+
|
|
294
|
+
observability:
|
|
295
|
+
audit_logging:
|
|
296
|
+
required: true
|
|
297
|
+
retention_days: 2190
|
|
298
|
+
phi_access_logging: true
|
|
299
|
+
immutable: true
|
|
300
|
+
tracing:
|
|
301
|
+
required: true
|
|
302
|
+
phi_redaction: mandatory
|
|
303
|
+
|
|
304
|
+
tools:
|
|
305
|
+
authentication:
|
|
306
|
+
required: true
|
|
307
|
+
types_allowed:
|
|
308
|
+
- mtls
|
|
309
|
+
- oauth2
|
|
310
|
+
mfa_required: true
|
|
311
|
+
phi_access:
|
|
312
|
+
minimum_necessary: true
|
|
313
|
+
access_justification: required
|
|
314
|
+
|
|
315
|
+
security:
|
|
316
|
+
workforce_training: required
|
|
317
|
+
business_associate_agreement: required
|
|
318
|
+
incident_response: 24h
|
|
319
|
+
breach_notification: 60d
|
|
320
|
+
|
|
321
|
+
data:
|
|
322
|
+
phi_detection: required
|
|
323
|
+
de_identification: available
|
|
324
|
+
consent_tracking: required
|
|
325
|
+
|
|
326
|
+
controls:
|
|
327
|
+
# Administrative Safeguards
|
|
328
|
+
- id: 164.308(a)(1)
|
|
329
|
+
description: Security Management Process
|
|
330
|
+
mapping: spec.security
|
|
331
|
+
validation: security block fully configured
|
|
332
|
+
|
|
333
|
+
- id: 164.308(a)(3)
|
|
334
|
+
description: Workforce Security
|
|
335
|
+
mapping: spec.security.authentication
|
|
336
|
+
validation: authentication.mfa_required == true
|
|
337
|
+
|
|
338
|
+
- id: 164.308(a)(4)
|
|
339
|
+
description: Information Access Management
|
|
340
|
+
mapping: spec.autonomy.approval_required
|
|
341
|
+
validation: phi_access requires approval
|
|
342
|
+
|
|
343
|
+
# Physical Safeguards
|
|
344
|
+
- id: 164.310(d)(1)
|
|
345
|
+
description: Device and Media Controls
|
|
346
|
+
mapping: spec.state.encryption
|
|
347
|
+
validation: encryption.at_rest == true
|
|
348
|
+
|
|
349
|
+
# Technical Safeguards
|
|
350
|
+
- id: 164.312(a)(1)
|
|
351
|
+
description: Access Control
|
|
352
|
+
mapping: spec.security.authentication
|
|
353
|
+
validation: unique user identification
|
|
354
|
+
|
|
355
|
+
- id: 164.312(b)
|
|
356
|
+
description: Audit Controls
|
|
357
|
+
mapping: spec.observability.logging
|
|
358
|
+
validation: phi_access_logging == true
|
|
359
|
+
|
|
360
|
+
- id: 164.312(c)(1)
|
|
361
|
+
description: Integrity
|
|
362
|
+
mapping: spec.observability.logging.immutable
|
|
363
|
+
validation: immutable == true
|
|
364
|
+
|
|
365
|
+
- id: 164.312(d)
|
|
366
|
+
description: Person or Entity Authentication
|
|
367
|
+
mapping: spec.security.authentication
|
|
368
|
+
validation: authentication.required == true
|
|
369
|
+
|
|
370
|
+
- id: 164.312(e)(1)
|
|
371
|
+
description: Transmission Security
|
|
372
|
+
mapping: spec.tools[*].source.tls
|
|
373
|
+
validation: all tools use TLS 1.2+
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## GDPR Profile
|
|
379
|
+
|
|
380
|
+
**Framework**: GDPR (General Data Protection Regulation)
|
|
381
|
+
**Use Case**: EU citizen data processing
|
|
382
|
+
|
|
383
|
+
```yaml
|
|
384
|
+
id: gdpr
|
|
385
|
+
name: GDPR Compliance
|
|
386
|
+
framework: GDPR
|
|
387
|
+
version: "2024.1"
|
|
388
|
+
|
|
389
|
+
requirements:
|
|
390
|
+
state:
|
|
391
|
+
encryption:
|
|
392
|
+
required: true
|
|
393
|
+
storage:
|
|
394
|
+
allowed_regions:
|
|
395
|
+
- eu-west-1
|
|
396
|
+
- eu-central-1
|
|
397
|
+
- eu-north-1
|
|
398
|
+
data_residency: EU
|
|
399
|
+
retention:
|
|
400
|
+
purpose_limitation: true
|
|
401
|
+
right_to_erasure: true
|
|
402
|
+
|
|
403
|
+
observability:
|
|
404
|
+
audit_logging:
|
|
405
|
+
required: true
|
|
406
|
+
retention_days: 365
|
|
407
|
+
personal_data_logging: minimized
|
|
408
|
+
consent_tracking:
|
|
409
|
+
required: true
|
|
410
|
+
|
|
411
|
+
tools:
|
|
412
|
+
data_processing:
|
|
413
|
+
purpose_specification: required
|
|
414
|
+
consent_verification: required
|
|
415
|
+
third_party:
|
|
416
|
+
dpa_required: true
|
|
417
|
+
transfer_mechanism: required
|
|
418
|
+
|
|
419
|
+
security:
|
|
420
|
+
data_protection_officer: recommended
|
|
421
|
+
privacy_impact_assessment: required
|
|
422
|
+
breach_notification: 72h
|
|
423
|
+
|
|
424
|
+
data:
|
|
425
|
+
personal_data_detection: required
|
|
426
|
+
anonymization: available
|
|
427
|
+
pseudonymization: available
|
|
428
|
+
data_portability: required
|
|
429
|
+
right_to_access: required
|
|
430
|
+
right_to_rectification: required
|
|
431
|
+
right_to_erasure: required
|
|
432
|
+
|
|
433
|
+
controls:
|
|
434
|
+
# Lawfulness of Processing
|
|
435
|
+
- id: Article 6
|
|
436
|
+
description: Lawfulness of Processing
|
|
437
|
+
mapping: spec.safety.content_filtering
|
|
438
|
+
validation: consent_verification enabled
|
|
439
|
+
|
|
440
|
+
# Rights of Data Subject
|
|
441
|
+
- id: Article 15
|
|
442
|
+
description: Right of Access
|
|
443
|
+
mapping: spec.state.export
|
|
444
|
+
validation: data_export capability available
|
|
445
|
+
|
|
446
|
+
- id: Article 17
|
|
447
|
+
description: Right to Erasure
|
|
448
|
+
mapping: spec.state.delete
|
|
449
|
+
validation: delete capability available
|
|
450
|
+
|
|
451
|
+
- id: Article 20
|
|
452
|
+
description: Right to Data Portability
|
|
453
|
+
mapping: spec.state.export
|
|
454
|
+
validation: standard format export available
|
|
455
|
+
|
|
456
|
+
# Data Protection by Design
|
|
457
|
+
- id: Article 25
|
|
458
|
+
description: Data Protection by Design
|
|
459
|
+
mapping: spec.state.encryption
|
|
460
|
+
validation: encryption.required == true
|
|
461
|
+
|
|
462
|
+
# Security of Processing
|
|
463
|
+
- id: Article 32
|
|
464
|
+
description: Security of Processing
|
|
465
|
+
mapping: spec.security
|
|
466
|
+
validation: encryption and access control configured
|
|
467
|
+
|
|
468
|
+
# Data Breach Notification
|
|
469
|
+
- id: Article 33
|
|
470
|
+
description: Breach Notification
|
|
471
|
+
mapping: spec.observability.alerting
|
|
472
|
+
validation: breach_detection alerting configured
|
|
473
|
+
|
|
474
|
+
# Data Protection Impact Assessment
|
|
475
|
+
- id: Article 35
|
|
476
|
+
description: DPIA Required
|
|
477
|
+
mapping: metadata.annotations.dpia_completed
|
|
478
|
+
validation: dpia_completed == true for high-risk processing
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
## Validation CLI
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
# Validate agent against compliance profile
|
|
487
|
+
ossa validate --profile hipaa manifest.yaml
|
|
488
|
+
|
|
489
|
+
# Validate against multiple profiles
|
|
490
|
+
ossa validate --profile hipaa,soc2-type2 manifest.yaml
|
|
491
|
+
|
|
492
|
+
# Generate compliance report
|
|
493
|
+
ossa compliance-report --format pdf manifest.yaml
|
|
494
|
+
|
|
495
|
+
# List available profiles
|
|
496
|
+
ossa profiles list
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
## Runtime Enforcement
|
|
502
|
+
|
|
503
|
+
When an agent declares compliance profiles, the runtime MUST:
|
|
504
|
+
|
|
505
|
+
1. **Validate at startup**: Check all requirements before agent becomes ready
|
|
506
|
+
2. **Enforce at runtime**: Block non-compliant operations
|
|
507
|
+
3. **Audit all access**: Log all data access per audit requirements
|
|
508
|
+
4. **Report violations**: Emit alerts for compliance violations
|
|
509
|
+
|
|
510
|
+
```typescript
|
|
511
|
+
interface ComplianceEnforcement {
|
|
512
|
+
// Called before agent initialization
|
|
513
|
+
validateCompliance(manifest: AgentManifest): ComplianceResult;
|
|
514
|
+
|
|
515
|
+
// Called before each operation
|
|
516
|
+
enforcePolicy(operation: Operation, context: Context): boolean;
|
|
517
|
+
|
|
518
|
+
// Called after each operation
|
|
519
|
+
auditOperation(operation: Operation, result: Result): void;
|
|
520
|
+
|
|
521
|
+
// Called on violation
|
|
522
|
+
reportViolation(violation: Violation): void;
|
|
523
|
+
}
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## References
|
|
529
|
+
|
|
530
|
+
- [NIST SP 800-53](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final) - FedRAMP control families
|
|
531
|
+
- [AICPA SOC 2](https://www.aicpa.org/interestareas/frc/assuranceadvisoryservices/sorhome) - Trust Services Criteria
|
|
532
|
+
- [HHS HIPAA](https://www.hhs.gov/hipaa/index.html) - Security and Privacy Rules
|
|
533
|
+
- [GDPR](https://gdpr.eu/) - EU Data Protection Regulation
|