Files
OBLITERATUS/docs/checkpoints/schemas/checkpoint-trust-policy-v1.schema.json

135 lines
5.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://obliteratus.dev/schemas/checkpoint-trust-policy-v1.schema.json",
"title": "OBLITERATUS Checkpoint Trust Policy v1",
"type": "object",
"additionalProperties": false,
"required": ["schema_id", "schema_version", "policy_id", "operation_level", "requested_state_scope", "adapter", "source", "runtime", "isolation", "resources", "output", "authorization", "evidence"],
"properties": {
"schema_id": {"const": "obliteratus.checkpoint-trust-policy"},
"schema_version": {"const": "1.0.0"},
"policy_id": {"$ref": "#/$defs/id"},
"operation_level": {"enum": ["trusted_metadata", "trusted_conversion"]},
"requested_state_scope": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/id"}},
"adapter": {
"type": "object",
"additionalProperties": false,
"required": ["capability_id", "adapter_id", "adapter_version", "adapter_digest"],
"properties": {
"capability_id": {"$ref": "#/$defs/id"},
"adapter_id": {"$ref": "#/$defs/id"},
"adapter_version": {"$ref": "#/$defs/id"},
"adapter_digest": {"$ref": "#/$defs/digest"}
}
},
"source": {
"type": "object",
"additionalProperties": false,
"required": ["root_id", "inventory_digest", "files"],
"properties": {
"root_id": {"$ref": "#/$defs/id"},
"inventory_digest": {"$ref": "#/$defs/digest"},
"files": {
"type": "array",
"minItems": 1,
"maxItems": 1000000,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["file_id", "relative_path", "size_bytes", "sha256", "observation_id"],
"properties": {
"file_id": {"$ref": "#/$defs/id"},
"relative_path": {"type": "string", "minLength": 1, "maxLength": 4096, "not": {"pattern": "(^/|(^|/)\\.\\.(/|$))"}},
"size_bytes": {"$ref": "#/$defs/nonNegativeInt64"},
"sha256": {"$ref": "#/$defs/digest"},
"observation_id": {"$ref": "#/$defs/id"}
}
}
}
}
},
"runtime": {
"type": "object",
"additionalProperties": false,
"required": ["framework", "framework_version", "dependency_identity", "runtime_digest"],
"properties": {
"framework": {"$ref": "#/$defs/id"},
"framework_version": {"$ref": "#/$defs/id"},
"dependency_identity": {"$ref": "#/$defs/digest"},
"runtime_digest": {"$ref": "#/$defs/digest"}
}
},
"isolation": {
"type": "object",
"additionalProperties": false,
"required": ["profile_id", "profile_version", "profile_digest", "required_capabilities"],
"properties": {
"profile_id": {"$ref": "#/$defs/id"},
"profile_version": {"$ref": "#/$defs/id"},
"profile_digest": {"$ref": "#/$defs/digest"},
"required_capabilities": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {"enum": ["unprivileged", "no_new_privs", "read_only_source", "root_isolation", "private_scratch", "network_denied", "ipc_isolated", "environment_allowlist", "fd_allowlist", "syscall_policy", "resource_limits", "device_denied", "core_dumps_disabled", "bounded_cleanup"]}
}
}
},
"resources": {
"type": "object",
"additionalProperties": false,
"required": ["wall_time_seconds", "cpu_seconds", "memory_bytes", "processes", "threads", "open_files", "input_bytes", "header_bytes", "message_bytes", "scratch_bytes", "output_bytes"],
"properties": {
"wall_time_seconds": {"$ref": "#/$defs/positiveInt64"},
"cpu_seconds": {"$ref": "#/$defs/positiveInt64"},
"memory_bytes": {"$ref": "#/$defs/positiveInt64"},
"processes": {"$ref": "#/$defs/positiveInt64"},
"threads": {"$ref": "#/$defs/positiveInt64"},
"open_files": {"$ref": "#/$defs/positiveInt64"},
"input_bytes": {"$ref": "#/$defs/positiveInt64"},
"header_bytes": {"$ref": "#/$defs/positiveInt64"},
"message_bytes": {"$ref": "#/$defs/positiveInt64"},
"scratch_bytes": {"$ref": "#/$defs/positiveInt64"},
"output_bytes": {"$ref": "#/$defs/nonNegativeInt64"}
}
},
"output": {
"type": "object",
"additionalProperties": false,
"required": ["root_id", "staging_policy"],
"properties": {
"root_id": {"type": ["string", "null"], "minLength": 1, "maxLength": 512},
"staging_policy": {"enum": ["none", "private_sibling_atomic"]}
}
},
"authorization": {
"type": "object",
"additionalProperties": false,
"required": ["event_id", "actor_role", "created_at", "expires_at", "single_use_nonce", "single_use"],
"properties": {
"event_id": {"$ref": "#/$defs/id"},
"actor_role": {"$ref": "#/$defs/id"},
"created_at": {"type": "string", "format": "date-time"},
"expires_at": {"type": "string", "format": "date-time"},
"single_use_nonce": {"type": "string", "minLength": 32, "maxLength": 256},
"single_use": {"const": true}
}
},
"evidence": {
"type": "object",
"additionalProperties": false,
"required": ["candidate_commit", "policy_digest"],
"properties": {
"candidate_commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
"policy_digest": {"$ref": "#/$defs/digest"}
}
}
},
"$defs": {
"id": {"type": "string", "minLength": 1, "maxLength": 512},
"digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"},
"nonNegativeInt64": {"type": "integer", "minimum": 0, "maximum": 9223372036854775807},
"positiveInt64": {"type": "integer", "minimum": 1, "maximum": 9223372036854775807}
}
}