docs: define reporting governance adapter interface

This commit is contained in:
Eve
2026-05-07 22:37:43 +08:00
parent 6584bc16a8
commit 6b04aa3b74
3 changed files with 1116 additions and 0 deletions

View File

@@ -0,0 +1,391 @@
{
"$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"
}
}
}
}
}