Keep vault roots off ./data/dev and reject unknown types or sensitive payloads before staging. Co-authored-by: Cursor <cursoragent@cursor.com>
68 lines
2.5 KiB
JSON
68 lines
2.5 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://agent-system.local/schemas/fav-manifest-v1.json",
|
|
"title": "FAV Manifest",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"artifact_schema_version",
|
|
"artifact_uuid",
|
|
"artifact_type",
|
|
"logical_resource_id",
|
|
"environment",
|
|
"project_external_key",
|
|
"source_event_id",
|
|
"payload_members",
|
|
"terminal_evidence",
|
|
"vault_storage_identity",
|
|
"manifest_sha256"
|
|
],
|
|
"properties": {
|
|
"artifact_schema_version": { "type": "string", "pattern": "^1\\.[0-9]+$" },
|
|
"artifact_uuid": { "type": "string", "minLength": 8 },
|
|
"artifact_type": { "type": "string", "enum": ["agent_commit", "sealed_version", "approved_document", "freeform_publish", "assistant_reply"] },
|
|
"logical_resource_id": { "type": "string", "minLength": 1 },
|
|
"environment": { "type": "string", "enum": ["dev", "test", "main"] },
|
|
"project_id": { "type": "integer" },
|
|
"project_external_key": { "type": "string", "minLength": 1 },
|
|
"source_event_id": { "type": "string", "minLength": 1 },
|
|
"source_event_kind": { "type": "string" },
|
|
"source_snapshot_id": { "type": ["integer", "null"] },
|
|
"source_message_id": { "type": ["integer", "null"] },
|
|
"source_run_id": { "type": "string" },
|
|
"payload_members": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["name", "media_type", "byte_size", "sha256", "required"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"media_type": { "type": "string" },
|
|
"byte_size": { "type": "integer", "minimum": 0 },
|
|
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
"required": { "type": "boolean" }
|
|
}
|
|
}
|
|
},
|
|
"terminal_evidence": {
|
|
"type": "object",
|
|
"required": ["state", "decided_at", "policy_version"],
|
|
"properties": {
|
|
"state": { "type": "string" },
|
|
"decided_at": { "type": "string" },
|
|
"actor_ref": { "type": "string" },
|
|
"policy_version": { "type": "string" }
|
|
}
|
|
},
|
|
"lineage": { "type": "object" },
|
|
"retention_class": { "type": "string" },
|
|
"sensitivity": { "type": "string" },
|
|
"encryption_key_ref": { "type": "string" },
|
|
"vault_storage_identity": { "type": "string", "minLength": 8 },
|
|
"publisher_version": { "type": "string" },
|
|
"published_at": { "type": "string" },
|
|
"manifest_sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
|
}
|
|
}
|