392 lines
10 KiB
JSON
392 lines
10 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://cowbay.org/schemas/reporting-governance/adapter-capabilities.schema.json",
|
|
"title": "Reporting Governance Adapter Capabilities",
|
|
"description": "Machine-readable capability descriptor for reporting-governance runtime adapters.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"apiVersion",
|
|
"kind",
|
|
"metadata",
|
|
"runtime",
|
|
"compatibility",
|
|
"capabilities"
|
|
],
|
|
"properties": {
|
|
"apiVersion": {
|
|
"type": "string",
|
|
"const": "reporting-governance/v1alpha1"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"const": "AdapterCapabilities"
|
|
},
|
|
"metadata": {
|
|
"$ref": "#/$defs/metadata"
|
|
},
|
|
"runtime": {
|
|
"$ref": "#/$defs/runtime"
|
|
},
|
|
"compatibility": {
|
|
"$ref": "#/$defs/compatibility"
|
|
},
|
|
"capabilities": {
|
|
"$ref": "#/$defs/capabilities"
|
|
},
|
|
"defaults": {
|
|
"$ref": "#/$defs/defaults"
|
|
},
|
|
"notes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
}
|
|
},
|
|
"$defs": {
|
|
"nonEmptyString": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"stringArray": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
}
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"id",
|
|
"title",
|
|
"version"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"title": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"version": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"owner": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"summary": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"tags": {
|
|
"$ref": "#/$defs/stringArray"
|
|
}
|
|
}
|
|
},
|
|
"runtime": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"name",
|
|
"mode"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"hook",
|
|
"watchdog",
|
|
"queue",
|
|
"bridge",
|
|
"sender_binding",
|
|
"orchestrator",
|
|
"hybrid"
|
|
]
|
|
},
|
|
"surfaces": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"hook",
|
|
"watchdog",
|
|
"queue",
|
|
"dispatcher",
|
|
"bridge",
|
|
"sender_binding",
|
|
"orchestrator",
|
|
"scheduler",
|
|
"storage"
|
|
]
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"entrypoint": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
}
|
|
}
|
|
},
|
|
"compatibility": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"plugin_spec_versions"
|
|
],
|
|
"properties": {
|
|
"plugin_spec_versions": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
}
|
|
},
|
|
"event_schema": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"evidence_schema": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"decision_schema": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"capabilities_schema": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
}
|
|
}
|
|
},
|
|
"supportLevel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"none",
|
|
"partial",
|
|
"full"
|
|
]
|
|
},
|
|
"truthState": {
|
|
"type": "string",
|
|
"enum": [
|
|
"prepared",
|
|
"queued",
|
|
"dispatched",
|
|
"pending_external_send",
|
|
"acked",
|
|
"blocked"
|
|
]
|
|
},
|
|
"ioSupport": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"supported"
|
|
],
|
|
"properties": {
|
|
"supported": {
|
|
"type": "boolean"
|
|
},
|
|
"level": {
|
|
"$ref": "#/$defs/supportLevel"
|
|
},
|
|
"notes": {
|
|
"$ref": "#/$defs/stringArray"
|
|
}
|
|
}
|
|
},
|
|
"truthModel": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"delivery_states",
|
|
"ack_requires_proven_send"
|
|
],
|
|
"properties": {
|
|
"delivery_states": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"$ref": "#/$defs/truthState"
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"ack_requires_proven_send": {
|
|
"type": "boolean"
|
|
},
|
|
"pending_external_send_supported": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"observationCapabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"task_lifecycle",
|
|
"subagent_lifecycle",
|
|
"checkpoint_obligations",
|
|
"outgoing_report_attempts",
|
|
"watchdog_state",
|
|
"queue_spool_receipts"
|
|
],
|
|
"properties": {
|
|
"task_lifecycle": { "$ref": "#/$defs/ioSupport" },
|
|
"subagent_lifecycle": { "$ref": "#/$defs/ioSupport" },
|
|
"checkpoint_obligations": { "$ref": "#/$defs/ioSupport" },
|
|
"outgoing_report_attempts": { "$ref": "#/$defs/ioSupport" },
|
|
"watchdog_state": { "$ref": "#/$defs/ioSupport" },
|
|
"queue_spool_receipts": { "$ref": "#/$defs/ioSupport" }
|
|
}
|
|
},
|
|
"normalizationCapabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"canonical_events",
|
|
"canonical_evidence",
|
|
"decision_inputs",
|
|
"correlation_propagation"
|
|
],
|
|
"properties": {
|
|
"canonical_events": { "$ref": "#/$defs/ioSupport" },
|
|
"canonical_evidence": { "$ref": "#/$defs/ioSupport" },
|
|
"decision_inputs": { "$ref": "#/$defs/ioSupport" },
|
|
"correlation_propagation": { "$ref": "#/$defs/ioSupport" }
|
|
}
|
|
},
|
|
"enforcementCapabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"block_transition",
|
|
"rewrite_message",
|
|
"annotate_placeholder",
|
|
"force_checkpoint",
|
|
"request_review",
|
|
"downgrade_status",
|
|
"escalate"
|
|
],
|
|
"properties": {
|
|
"block_transition": { "$ref": "#/$defs/ioSupport" },
|
|
"rewrite_message": { "$ref": "#/$defs/ioSupport" },
|
|
"annotate_placeholder": { "$ref": "#/$defs/ioSupport" },
|
|
"force_checkpoint": { "$ref": "#/$defs/ioSupport" },
|
|
"request_review": { "$ref": "#/$defs/ioSupport" },
|
|
"downgrade_status": { "$ref": "#/$defs/ioSupport" },
|
|
"escalate": { "$ref": "#/$defs/ioSupport" }
|
|
}
|
|
},
|
|
"notificationCapabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"queue_items",
|
|
"spool_handoff",
|
|
"sender_binding",
|
|
"direct_send",
|
|
"receipts",
|
|
"final_delivery_proof",
|
|
"truth_model"
|
|
],
|
|
"properties": {
|
|
"queue_items": { "$ref": "#/$defs/ioSupport" },
|
|
"spool_handoff": { "$ref": "#/$defs/ioSupport" },
|
|
"sender_binding": { "$ref": "#/$defs/ioSupport" },
|
|
"direct_send": { "$ref": "#/$defs/ioSupport" },
|
|
"receipts": { "$ref": "#/$defs/ioSupport" },
|
|
"final_delivery_proof": { "$ref": "#/$defs/ioSupport" },
|
|
"truth_model": { "$ref": "#/$defs/truthModel" }
|
|
}
|
|
},
|
|
"watchdogCapabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"scheduler_installation",
|
|
"watchdog_evaluation",
|
|
"watchdog_event_emission",
|
|
"operator_recovery_path",
|
|
"watchdog_closure"
|
|
],
|
|
"properties": {
|
|
"scheduler_installation": { "$ref": "#/$defs/ioSupport" },
|
|
"watchdog_evaluation": { "$ref": "#/$defs/ioSupport" },
|
|
"watchdog_event_emission": { "$ref": "#/$defs/ioSupport" },
|
|
"operator_recovery_path": { "$ref": "#/$defs/ioSupport" },
|
|
"watchdog_closure": { "$ref": "#/$defs/ioSupport" }
|
|
}
|
|
},
|
|
"storageCapabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"persist_events",
|
|
"persist_evidence",
|
|
"persist_decisions",
|
|
"persist_receipts",
|
|
"preserve_original_attempted_message"
|
|
],
|
|
"properties": {
|
|
"persist_events": { "$ref": "#/$defs/ioSupport" },
|
|
"persist_evidence": { "$ref": "#/$defs/ioSupport" },
|
|
"persist_decisions": { "$ref": "#/$defs/ioSupport" },
|
|
"persist_receipts": { "$ref": "#/$defs/ioSupport" },
|
|
"preserve_original_attempted_message": { "$ref": "#/$defs/ioSupport" }
|
|
}
|
|
},
|
|
"capabilities": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"observation",
|
|
"normalization",
|
|
"enforcement",
|
|
"notification_path",
|
|
"watchdog",
|
|
"storage"
|
|
],
|
|
"properties": {
|
|
"observation": {
|
|
"$ref": "#/$defs/observationCapabilities"
|
|
},
|
|
"normalization": {
|
|
"$ref": "#/$defs/normalizationCapabilities"
|
|
},
|
|
"enforcement": {
|
|
"$ref": "#/$defs/enforcementCapabilities"
|
|
},
|
|
"notification_path": {
|
|
"$ref": "#/$defs/notificationCapabilities"
|
|
},
|
|
"watchdog": {
|
|
"$ref": "#/$defs/watchdogCapabilities"
|
|
},
|
|
"storage": {
|
|
"$ref": "#/$defs/storageCapabilities"
|
|
}
|
|
}
|
|
},
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"reporting_mode": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"channel": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
},
|
|
"policy_ids": {
|
|
"$ref": "#/$defs/stringArray"
|
|
},
|
|
"watchdog_policy_id": {
|
|
"$ref": "#/$defs/nonEmptyString"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|