Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
118 lines
3.9 KiB
YAML
118 lines
3.9 KiB
YAML
# Source-owned cadence; coordination timings generated from coordination-engine/config/coordination-frame.json
|
|
schema_version: '0.1'
|
|
declaration_id: qonto-assistant.audit.v1
|
|
source: qonto-assistant
|
|
stream_id: qonto-assistant.audit
|
|
sources:
|
|
- source_id: qonto-assistant.audit.allow
|
|
source_system: qonto-assistant
|
|
event_class: audit.allow
|
|
form: heartbeat-or-reconciliation
|
|
heartbeat:
|
|
event_class: audit.heartbeat
|
|
interval: PT3600S
|
|
assertion: nothing-to-report
|
|
missing: finding
|
|
extensions: &id001
|
|
qonto-assistant:
|
|
assertion_scope: no-deny-transitions-in-window
|
|
active_instance_only: true
|
|
extensions:
|
|
netkingdom:
|
|
evidence_class: attributive
|
|
completeness_claimed: false
|
|
reconciliation:
|
|
compare_local: source_transition_counts.audit.allow
|
|
compare_observed: evidence_counts.audit.allow
|
|
divergence: finding
|
|
undrained_local: lag-not-divergence
|
|
- source_id: qonto-assistant.audit.deny
|
|
source_system: qonto-assistant
|
|
event_class: audit.deny
|
|
form: heartbeat-or-reconciliation
|
|
heartbeat:
|
|
event_class: audit.heartbeat
|
|
interval: PT3600S
|
|
assertion: nothing-to-report
|
|
missing: finding
|
|
extensions: *id001
|
|
extensions:
|
|
netkingdom:
|
|
evidence_class: load-bearing
|
|
completeness_claimed: false
|
|
rate_monitoring: forbidden
|
|
reconciliation:
|
|
compare_local: source_transition_counts.audit.deny
|
|
compare_observed: evidence_counts.audit.deny
|
|
divergence: finding
|
|
undrained_local: lag-not-divergence
|
|
- source_id: qonto-assistant.audit.heartbeat
|
|
source_system: qonto-assistant
|
|
event_class: audit.heartbeat
|
|
form: heartbeat-or-reconciliation
|
|
heartbeat:
|
|
event_class: audit.heartbeat
|
|
interval: PT3600S
|
|
assertion: nothing-to-report
|
|
missing: finding
|
|
extensions: *id001
|
|
extensions:
|
|
netkingdom:
|
|
evidence_class: load-bearing
|
|
completeness_claimed: false
|
|
extensions:
|
|
netkingdom:
|
|
contract_digest: b08b4d95fc4b0bd3
|
|
contract_document_version: 0.2.0
|
|
coordination_frame:
|
|
ref: coordination-engine/config/coordination-frame.json
|
|
sha256: d15e092387f128ffdfd00b9815707a05ff77c5bb0ba4d9a428fbc37b8c440b67
|
|
frame_seconds: 3600
|
|
heartbeat_frames: 1
|
|
registered_wait_frames: 2
|
|
effective_deadline_frames: 3
|
|
qonto-assistant:
|
|
transport: structured-stdout
|
|
instance_boundary: process
|
|
ordering:
|
|
instance_field: stream_instance_id
|
|
sequence_field: stream_sequence
|
|
sequence_starts_at: 1
|
|
gap: finding
|
|
reset: permitted-only-when-stream_instance_id-changes
|
|
heartbeat:
|
|
event_class: audit.heartbeat
|
|
interval: PT3600S
|
|
interval_config: QONTO_AUDIT_HEARTBEAT_INTERVAL_SECONDS
|
|
default_interval_seconds: 3600
|
|
lifecycle:
|
|
startup: required
|
|
periodic_while_process_active: required
|
|
shutdown: best-effort
|
|
quiet_assertion: nothing-to-report
|
|
active_instance_missing: finding
|
|
scale_to_zero_semantics: 'No periodic heartbeat is promised while no process
|
|
instance exists. Observers track each stream_instance_id from its startup
|
|
heartbeat until a shutdown heartbeat or expiry after a missing active-instance
|
|
cadence.
|
|
|
|
'
|
|
reconciliation:
|
|
source_counts_field: source_transition_counts
|
|
window_counts_field: window_transition_counts
|
|
counted_classes:
|
|
- audit.allow
|
|
- audit.deny
|
|
snapshot_endpoint: /v1/audit/reconciliation
|
|
compare_observed: 'Count received request events by event_class and stream_instance_id,
|
|
then compare them with the heartbeat source counts and stream sequence.
|
|
|
|
'
|
|
divergence: finding
|
|
undrained_local: lag-not-divergence
|
|
persistence: process-local
|
|
event_context:
|
|
identity_binding_field: identity_binding
|
|
egress_destination_field: egress_destination
|
|
qonto_egress_destination: qonto-thirdparty-api
|
|
operational_acceptance: pending-audit-core-sender-mapping-and-independent-observer
|