feat(audit): publish sequenced heartbeat and reconciliation evidence

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06ec5-7e2b-7743-ac08-719e1b0f42e2
This commit is contained in:
tegwick 2026-09-05 01:39:48 +02:00
parent fce60099c4
commit b9349782f4
32 changed files with 839 additions and 111 deletions

View file

@ -416,8 +416,13 @@ Suggested audit envelope:
```yaml
request_id: req-...
timestamp: ...
event_class: audit.allow | audit.deny
stream_id: qonto-assistant.audit
stream_instance_id: ...
stream_sequence: ...
actor: agt-... / workload id
tenant_id: binky
identity_binding: self_asserted | key_cape_jwt
capability: list_transactions
protocol: rest | mcp
decision: allow | deny
@ -426,9 +431,15 @@ policy_version: 1
latency_ms: ...
qonto_http_status: ...
result_count: ...
egress_destination: qonto-thirdparty-api
# never: Authorization header, API_KEY, OpenBao token, full IBAN by default
```
The load-bearing `audit.deny` class uses the source-owned cadence and
reconciliation contract in `specs/audit-emission-cadence.yaml`. Heartbeats
carry cumulative and per-window source transition counts; observers compare
those counts and per-instance sequence numbers with received records.
### 4.11 Operational guardrails (v1, not "later if we remember")
Basic safety and reliability controls belong in Phase 1 because one noisy