audit-core/deploy/senders-scope.yaml
tegwick 70e4044128
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Register informed-decision.memo.posed for the platform tenant.
Accept the retained pose envelope and refuse packet, brief, and secret
content. Heartbeat and reconciliation follow the existing load-bearing
class pattern. This does not connect the sink or claim runtime readiness.

Assistant: grok
Assistant-Session: 01a10329-31cb-78d3-b7a3-787a69c89d54
2026-10-03 21:18:13 +02:00

75 lines
2.1 KiB
YAML

# Non-secret sender scope (AUDIT-WP-0006-T05). Tokens stay in Secret
# audit-core-senders. This ConfigMap is the authority for tenants/sources
# so an ExternalSecret refresh cannot revert user-engine to a single tenant.
# Keep in lockstep with deploy/senders-scope.json.
#
# The overlay only ever applies to a sender the Secret already carries, so an
# entry here for a sender with no token yet is inert. That is what makes the
# approval-engine entry safe to land ahead of its credential.
#
# evidence_kind may be raised here (attributive -> load-bearing) but never
# lowered: a ConfigMap refresh must not be able to drop a source's §9.6
# atomicity and detection obligations without anyone deciding to.
---
apiVersion: v1
kind: ConfigMap
metadata:
name: audit-core-senders-scope
namespace: audit-core
labels:
app.kubernetes.io/name: audit-core
data:
senders-scope.json: |
[
{
"name": "user-engine",
"sources": [
"user-engine"
],
"tenants": [
"*"
],
"may_write": true,
"may_read": false
},
{
"name": "tenant-engine",
"sources": [
"tenant-engine"
],
"tenants": [
"*"
],
"may_write": true,
"may_read": false,
"evidence_kind": "attributive",
"completeness_trade": "outbox drains after commit, not inside the mutation transaction; declared at tenant-engine/docs/evidence-emission.md"
},
{
"name": "approval-engine",
"sources": [
"approval-engine"
],
"tenants": [
"tenant:platform"
],
"may_write": true,
"may_read": false,
"evidence_kind": "load-bearing"
},
{
"name": "informed-decision",
"sources": [
"informed-decision"
],
"tenants": [
"tenant:platform"
],
"may_write": true,
"may_read": false,
"evidence_kind": "load-bearing",
"heartbeat_classes": {
"informed-decision.memo.posed": 86400
}
}
]