approval-engine/cadence.yaml
tegwick 24a5ecd56b Add bounded source reconciliation counts and clarify receiver dependencies
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a1046e-fdbf-7b93-a267-5f72b9b24526
2026-10-04 11:34:42 +02:00

196 lines
7.5 KiB
YAML

{
"schema_version": "0.1",
"declaration_id": "approval-engine-emission-cadence-v0.1",
"source": "approval-engine",
"sources": [
{
"source_id": "approval-engine:issuance",
"source_system": "approval-engine",
"event_class": "issuance",
"form": "heartbeat-or-reconciliation",
"reconciliation": {
"compare_local": "committed outbox issuance occurrence-time counts in the chosen since/until window; drained and pending are separated, local acknowledgment-window counts are distinct",
"compare_observed": "audit-core accepted action=approval.issuance counts for source=approval-engine, tenant=tenant:platform and identical since/until bounds; receiver windows use acceptance time, requiring explicit drain-lag, duplicate-acknowledgment and boundary accounting before comparison",
"divergence": "finding",
"undrained_local": "lag-not-divergence"
},
"extensions": {
"netkingdom": {
"evidence_class": "load-bearing",
"rate_monitoring": "forbidden"
},
"approval-engine": {
"action": "approval.issuance"
}
},
"heartbeat": {
"event_class": "audit-core.heartbeat",
"interval_seconds": 86400,
"assertion": "nothing-to-report",
"missing": "finding",
"extensions": {
"approval-engine": {
"asserted_class": "issuance",
"requested_observer_max_gap_seconds": 172800,
"observer_registration_status": "pending"
}
}
}
},
{
"source_id": "approval-engine:use",
"source_system": "approval-engine",
"event_class": "use",
"form": "heartbeat-or-reconciliation",
"reconciliation": {
"compare_local": "committed outbox use occurrence-time counts in the chosen since/until window; drained and pending are separated, local acknowledgment-window counts are distinct",
"compare_observed": "audit-core accepted action=approval.use counts for source=approval-engine, tenant=tenant:platform and identical since/until bounds; receiver windows use acceptance time, requiring explicit drain-lag, duplicate-acknowledgment and boundary accounting before comparison",
"divergence": "finding",
"undrained_local": "lag-not-divergence"
},
"extensions": {
"netkingdom": {
"evidence_class": "load-bearing",
"rate_monitoring": "forbidden"
},
"approval-engine": {
"action": "approval.use"
}
},
"heartbeat": {
"event_class": "audit-core.heartbeat",
"interval_seconds": 86400,
"assertion": "nothing-to-report",
"missing": "finding",
"extensions": {
"approval-engine": {
"asserted_class": "use",
"requested_observer_max_gap_seconds": 172800,
"observer_registration_status": "pending"
}
}
}
},
{
"source_id": "approval-engine:supersession",
"source_system": "approval-engine",
"event_class": "supersession",
"form": "heartbeat-or-reconciliation",
"reconciliation": {
"compare_local": "committed outbox supersession occurrence-time counts in the chosen since/until window; drained and pending are separated, local acknowledgment-window counts are distinct",
"compare_observed": "audit-core accepted action=approval.supersession counts for source=approval-engine, tenant=tenant:platform and identical since/until bounds; receiver windows use acceptance time, requiring explicit drain-lag, duplicate-acknowledgment and boundary accounting before comparison",
"divergence": "finding",
"undrained_local": "lag-not-divergence"
},
"extensions": {
"netkingdom": {
"evidence_class": "load-bearing",
"rate_monitoring": "forbidden"
},
"approval-engine": {
"action": "approval.supersession"
}
},
"heartbeat": {
"event_class": "audit-core.heartbeat",
"interval_seconds": 86400,
"assertion": "nothing-to-report",
"missing": "finding",
"extensions": {
"approval-engine": {
"asserted_class": "supersession",
"requested_observer_max_gap_seconds": 172800,
"observer_registration_status": "pending"
}
}
}
},
{
"source_id": "approval-engine:revocation",
"source_system": "approval-engine",
"event_class": "revocation",
"form": "heartbeat-or-reconciliation",
"reconciliation": {
"compare_local": "committed outbox revocation occurrence-time counts in the chosen since/until window; drained and pending are separated, local acknowledgment-window counts are distinct",
"compare_observed": "audit-core accepted action=approval.revocation counts for source=approval-engine, tenant=tenant:platform and identical since/until bounds; receiver windows use acceptance time, requiring explicit drain-lag, duplicate-acknowledgment and boundary accounting before comparison",
"divergence": "finding",
"undrained_local": "lag-not-divergence"
},
"extensions": {
"netkingdom": {
"evidence_class": "load-bearing",
"rate_monitoring": "forbidden"
},
"approval-engine": {
"action": "approval.revocation"
}
},
"heartbeat": {
"event_class": "audit-core.heartbeat",
"interval_seconds": 86400,
"assertion": "nothing-to-report",
"missing": "finding",
"extensions": {
"approval-engine": {
"asserted_class": "revocation",
"requested_observer_max_gap_seconds": 172800,
"observer_registration_status": "pending"
}
}
}
},
{
"source_id": "approval-engine:heartbeat",
"source_system": "approval-engine",
"event_class": "heartbeat",
"form": "heartbeat-or-reconciliation",
"reconciliation": {
"compare_local": "committed outbox heartbeat occurrence-time counts in the chosen since/until window; drained and pending are separated, local acknowledgment-window counts are distinct",
"compare_observed": "audit-core accepted action=audit-core.heartbeat counts for source=approval-engine, tenant=tenant:platform and identical since/until bounds; receiver windows use acceptance time, requiring explicit drain-lag, duplicate-acknowledgment and boundary accounting before comparison",
"divergence": "finding",
"undrained_local": "lag-not-divergence"
},
"extensions": {
"netkingdom": {
"evidence_class": "load-bearing",
"rate_monitoring": "forbidden"
},
"approval-engine": {
"action": "audit-core.heartbeat"
}
}
}
],
"extensions": {
"approval-engine": {
"lag_bound": {
"outbox_depth": 100,
"outbox_age_seconds": 3600,
"exceed": "finding",
"enforcement_status": "observer-delivery-pending"
},
"inventory": {
"load_bearing": [
"issuance",
"use",
"supersession",
"revocation",
"heartbeat"
],
"rare_load_bearing": [
"issuance",
"use",
"supersession",
"revocation"
],
"attributive": []
},
"contract": {
"owner": "info-tech-canon",
"document_version": "0.2.0",
"status": "candidate",
"schema_sha256": "6d52692eb1e4d1325e0d6062d95acded98beddaae5bcfe24c6f0e91f1b6be6ae"
}
}
}
}