Record approved hourly runtime rollout and native verification
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
This commit is contained in:
tegwick 2026-10-15 20:57:08 +02:00
parent 9c4b1d7285
commit 1ae0fe337a
8 changed files with 312 additions and 6 deletions

View file

@ -0,0 +1,30 @@
{
"at": "2026-10-15T18:54:13.416550+00:00",
"integrity": "ok",
"schema_version": 5,
"table_counts": {
"approvals": 54,
"entries": 47,
"outbox": 90
},
"sha256": "c338e008865c59d2b583a7236c531450dc4eaa0bf97681bc33b7d438b9867cf4",
"local_copy": "/tmp/nk-wp-0035-approval-backup/pre-frame.sqlite",
"local_mode": "0o600",
"persistent_path": "/data/nk-wp-0035-pre-frame-20261015.sqlite",
"owner_engine_isolated_backup_verify": {
"expected_schema_version": 5,
"foreign_key_violations": 0,
"integrity": [
"ok"
],
"ok": true,
"persistent": true,
"required_tables": {
"approvals": true,
"entries": true,
"outbox": true
},
"schema_current": true,
"schema_version": 5
}
}

View file

@ -0,0 +1,57 @@
{
"storage": {
"schema_version": 5,
"expected_schema_version": 5,
"schema_current": true,
"persistent": true,
"required_tables": {
"approvals": true,
"entries": true,
"outbox": true
},
"integrity": [
"ok"
],
"foreign_key_violations": 0,
"ok": true
},
"outbox": {
"total": 91,
"pending": 0,
"max_age_seconds": 0,
"attempts": 101,
"failed_pending": 0,
"counts": {
"issuance": 47,
"use": 11,
"supersession": 0,
"revocation": 0,
"heartbeat": 33
}
},
"table_counts": {
"approvals": 54,
"entries": 47,
"outbox": 91
},
"recent_heartbeat_rows": [
{
"created_at": "2026-10-15T18:54:55+00:00",
"drained_at": "2026-10-15T18:54:55+00:00",
"attempts": 1
},
{
"created_at": "2026-10-14T23:03:46+00:00",
"drained_at": "2026-10-14T23:03:46+00:00",
"attempts": 1
}
],
"readiness": 200,
"anonymous_refusal": 401,
"at": "2026-10-15T18:55:27.962077+00:00",
"pod_uid": "423398d8-9705-4ab5-8b2d-aaa4f590d3a1",
"image": "forgejo.coulomb.social/coulomb/approval-engine@sha256:251941a5cb2724b57cc32cff6b693b1ab0be695bee4f56f02d51961189c0fa49",
"heartbeat_seconds": 3600,
"frame_digest": "d15e092387f128ffdfd00b9815707a05ff77c5bb0ba4d9a428fbc37b8c440b67",
"ready": true
}

View file

@ -1,6 +1,6 @@
{
"workplan": "NK-WP-0035",
"status": "source-verified; operational acceptance pending",
"status": "hourly runtime bindings deployed and verified; operational observer acceptance pending",
"profile_status": "proposed",
"live_observer_proved": false,
"source_files": {
@ -51,9 +51,9 @@
"source_requested_bound_seconds": 7200,
"receiver_grace_factor": 1.5,
"live_steps": [
"Verify generated one-hour frame bindings, current runtime/source pins and separately approved rollout scope",
"Complete: founder approved timing-only rollout; Approval Engine backup/restart and Qonto candidate/promotion verified on unchanged images",
"Review exact protected-registry metadata-only patch preserving credentials and all unrelated entries",
"Founder approves exact runtime change; use governed owner custody with contained session and CAS/readback",
"Obtain separate approval for exact registry metadata change; use governed owner custody with contained session and CAS/readback",
"Receiver reload under owner change gate; prove actual per-class registration and class-isolated heartbeats",
"Emit/drain actual lifecycle transitions under owner-scoped authority; correlate occurrence, acknowledgment and receiver acceptance windows including lag and duplicates",
"Independent readback/count comparison and missing-class/lag findings; retain value-safe receipts"
@ -80,7 +80,7 @@
"observer_acceptance": "KG-WP-0005-T03 then QONTO-WP-0006-T03",
"historical_receipt_limit": "Source-path capture with startup and deny; not independent collector/feed acceptance",
"source_interval_seconds": 3600,
"runtime_status": "source settings prepared; not deployed in this session"
"runtime_status": "rapp-qonto-00010 promoted to 100 percent after candidate health, denial and source-count checks; periodic-hour and independent collector observation pending"
},
"local_identity": {
"status": "explicit incompatibility retained",
@ -126,5 +126,15 @@
"registered_wait_frames": 2,
"effective_deadline_frames": 3,
"decision_id": "1ac5a70f-082e-4d8f-9ac8-59e4c175da02"
},
"runtime_rollout": {
"approval": "Explicit founder reply: i approve, following timing-only rollout proposal",
"approval_engine_receipt": "approval-engine-frame-rollout.json",
"backup_receipt": "approval-engine-frame-backup.json",
"qonto_candidate_receipt": "rapp-qonto-frame-candidate.json",
"qonto_rollout_receipt": "rapp-qonto-frame-rollout.json",
"receiver_registry_changed": false,
"registered_2f_and_effective_3f_live": false,
"periodic_hour_observed": false
}
}

View file

@ -0,0 +1,78 @@
{
"candidate_revision": "rapp-qonto-00010",
"baseline_revision": "rapp-qonto-00009",
"image": "forgejo.coulomb.social/coulomb/rapp-qonto@sha256:2e42b5e665a19ffa3b3ae8109a8aab64f5485329f72810be063263ff5086cb3f",
"heartbeat_seconds": 3600,
"pod_uid": "3576cdd4-06a9-4641-856d-7ff690bb4dea",
"health": {
"status": "ok",
"service": "qonto-assistant",
"version": "0.1.0",
"policy_file": "/usr/local/lib/python3.12/site-packages/qonto_assistant/policy/qonto-v1.yaml"
},
"before": {
"stream_id": "qonto-assistant.audit",
"stream_instance_id": "fc354245-9cc0-4849-8f6e-cfdf3d69c2fc",
"instance_started_at": "2026-10-15T18:54:38+00:00",
"snapshot_at": "2026-10-15T18:54:56+00:00",
"last_stream_sequence": 1,
"last_heartbeat_at": "2026-10-15T18:54:39+00:00",
"source_transition_counts": {
"audit.allow": 0,
"audit.deny": 0
},
"since_last_heartbeat_counts": {
"audit.allow": 0,
"audit.deny": 0
}
},
"after": {
"stream_id": "qonto-assistant.audit",
"stream_instance_id": "fc354245-9cc0-4849-8f6e-cfdf3d69c2fc",
"instance_started_at": "2026-10-15T18:54:38+00:00",
"snapshot_at": "2026-10-15T18:54:56+00:00",
"last_stream_sequence": 2,
"last_heartbeat_at": "2026-10-15T18:54:39+00:00",
"source_transition_counts": {
"audit.allow": 0,
"audit.deny": 1
},
"since_last_heartbeat_counts": {
"audit.allow": 0,
"audit.deny": 1
}
},
"deny_status": 403,
"events": [
{
"stream_id": "qonto-assistant.audit",
"stream_instance_id": "fc354245-9cc0-4849-8f6e-cfdf3d69c2fc",
"stream_sequence": 1,
"event_class": "audit.heartbeat",
"reason": "startup",
"timestamp": "2026-10-15T18:54:39+00:00",
"source_transition_counts": {
"audit.allow": 0,
"audit.deny": 0
},
"window_transition_counts": {
"audit.allow": 0,
"audit.deny": 0
}
},
{
"stream_id": "qonto-assistant.audit",
"stream_instance_id": "fc354245-9cc0-4849-8f6e-cfdf3d69c2fc",
"stream_sequence": 2,
"event_class": "audit.deny",
"timestamp": "2026-10-15T18:54:56+00:00",
"qonto_http_status": null,
"deny_reason": "authz_denied",
"decision": "deny",
"request_id": "ff67b156-1672-4afe-b1c0-f846c3aa5e85"
}
],
"source_counts_match_direct_capture": true,
"qonto_call_by_deny_probe": false,
"observation_boundary": "Direct Kubernetes logs and source snapshots; independent collector and periodic-hour observation not established."
}

View file

@ -0,0 +1,22 @@
[
{
"op": "test",
"path": "/metadata/uid",
"value": "a665e1d0-3ada-4b27-ac56-a8d452499003"
},
{
"op": "test",
"path": "/metadata/resourceVersion",
"value": "75772109"
},
{
"op": "replace",
"path": "/spec/traffic",
"value": [
{
"revisionName": "rapp-qonto-00010",
"percent": 100
}
]
}
]

View file

@ -0,0 +1,57 @@
{
"captured_at": "2026-10-15T18:56:02.381691+00:00",
"baseline_revision": "rapp-qonto-00009",
"promoted_revision": "rapp-qonto-00010",
"traffic": [
{
"latestRevision": false,
"percent": 100,
"revisionName": "rapp-qonto-00010"
}
],
"ready": true,
"main_health": {
"status": "ok",
"service": "qonto-assistant",
"version": "0.1.0",
"policy_file": "/usr/local/lib/python3.12/site-packages/qonto_assistant/policy/qonto-v1.yaml"
},
"before": {
"stream_id": "qonto-assistant.audit",
"stream_instance_id": "fc354245-9cc0-4849-8f6e-cfdf3d69c2fc",
"instance_started_at": "2026-10-15T18:54:38+00:00",
"snapshot_at": "2026-10-15T18:55:49+00:00",
"last_stream_sequence": 2,
"last_heartbeat_at": "2026-10-15T18:54:39+00:00",
"source_transition_counts": {
"audit.allow": 0,
"audit.deny": 1
},
"since_last_heartbeat_counts": {
"audit.allow": 0,
"audit.deny": 1
}
},
"after": {
"stream_id": "qonto-assistant.audit",
"stream_instance_id": "fc354245-9cc0-4849-8f6e-cfdf3d69c2fc",
"instance_started_at": "2026-10-15T18:54:38+00:00",
"snapshot_at": "2026-10-15T18:55:50+00:00",
"last_stream_sequence": 3,
"last_heartbeat_at": "2026-10-15T18:54:39+00:00",
"source_transition_counts": {
"audit.allow": 0,
"audit.deny": 2
},
"since_last_heartbeat_counts": {
"audit.allow": 0,
"audit.deny": 2
}
},
"deny_status": 403,
"candidate_evidence": "rapp-qonto-frame-candidate.json",
"qonto_call_by_probe": false,
"heartbeat_seconds": 3600,
"independent_collector_acceptance": false,
"hourly_periodic_observation": false
}

View file

@ -0,0 +1,19 @@
{
"captured_at": "2026-10-15T18:56:40.337038+00:00",
"cluster_uid": "a553c742-0115-43d4-99a4-a5ca56fe0786",
"explicit_user_approval": "i approve",
"scope": "Prepared hourly timing rollout, verified backup and controlled Approval Engine restart; Qonto zero-traffic candidate verification followed by promotion",
"scope_checks": [
{
"resource": "approval-engine",
"only_authorized_timing_annotation_and_qonto_traffic_changed": true
},
{
"resource": "rapp-qonto",
"only_authorized_timing_annotation_and_qonto_traffic_changed": true
}
],
"receiver_registry_mutated": false,
"secrets_read_or_rotated": false,
"temporary_probe_pods_deleted": true
}