Accept native Qonto sender admission and hourly receiver registration
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 21:41:46 +02:00
parent 1269a0efc6
commit 2e97f37c01
10 changed files with 323 additions and 5 deletions

View file

@ -73,3 +73,15 @@ isolates instances but does not detect gaps on its own.
AUDIT-WP-0013-T05 and NK-WP-0035 remain open until actual accepted records,
duplicate/refusal/reconciliation receipts and independent observer evidence
are available. Local tests and this prepared ingress are not those receipts.
## Native registration follow-up — 2026-10-15
The initial prepared/source and old-artifact observations above are historical.
Current b479801b (source5227fb1) passed its native capability gate; migration0007
completed. The guarded protected registry metadata update15→16, ESO projection
and receiver reload succeeded. Existing Approval credentials/scope and sibling
senders were preserved. Approval cadence and four waits7200 are now loaded;
Qonto collector native heartbeat/deny admission and own counts/refusals passed.
Local metadata evidence is in `docs/evidence/2026-10-15-cadence-admission/`.
These receipts do not claim independent operational acceptance, four fresh
Approval heartbeat observations or an actual hourly periodic Qonto observation.

View file

@ -164,3 +164,19 @@ confirmation of a flex-auth tenant-A identity with no tenant-B authority.
asm-t08's surface owner owes component revision, identities, window and technique.
These remain owner inputs; no field or authorization is fabricated. Original
AUDIT-WP-0008-T05 remains done for its historical accepted scope.
## Qonto native admission update — 2026-10-15
AUDIT-WP-0013-T05 is complete for its bounded sender-native admission. The source
frame is now3600 seconds, receiver wait7200 and effective deadline10800. Sender
rapp-qonto-collector/source qonto-assistant/tenant tenant:friendly:binky remains
write-only, explicit redact, with canonical mixed per-class classification.
The compatible b479801b receiver release and migration0007 are live. Protected
registry CAS15→16 preserved other senders and all incumbent credentials; ESO
projection and receiver runtime configuration match. Actual same-instance
heartbeat/deny delivery, duplicates, scoped reconciliation and wrong-source,
wrong-tenant, archive-read and invalid-bearer refusals passed. Durable first202
receipts persisted across collector replacement. See the local
`docs/evidence/2026-10-15-cadence-admission/index.json` and workplan acceptance
note for exact limitations. Native allow delivery is not claimed. Independent
KG operational acceptance and real elapsed hourly observation remain separate.

View file

@ -0,0 +1,13 @@
{
"source": "net-kingdom/docs/evidence/2026-10-15-cadence-adoption",
"sha256": {
"receiver-custody-live.json": "4c50005289cd331fa22d49f8b828e3fd21a4e7077ce855724185051a97baa502",
"qonto-collector-native-admission.json": "573ce4d63af36f2a770cc032150ab3f45a4e507585b45312cacc0db4d8995cc9",
"qonto-collector-restart-persistence.json": "afebe361f85c2558e9c9f9e004cafd7b6d547ca53b0089af103fd17b8b4e5903",
"receiver-migration-completed.json": "83116b8864f3212296b89f3d5af9bafb84a43dd666788a8fcf91c4d74ffa02f0",
"receiver-cadence-release-native.json": "661731e6deb4b550104e1541427fdfdd0b088d33056fc86542796c7c2068b1cb",
"receiver-pre-release-backup-completed.json": "8186dc959bf8516f775116f6c23c4f46f67e5bd56d9fbd3d8dafc3b5a74b4e5d"
},
"scope": "sender-native admission, receiver release and protected registry delivery; independent operational acceptance remains pending",
"credential_values_emitted": false
}

View file

@ -0,0 +1,59 @@
{
"own_reconciliation_status": 200,
"own_reconciliation": {
"source": "qonto-assistant",
"tenant": "tenant:friendly:binky",
"since": "2026-10-15T19:36:00+00:00",
"until": "2026-10-15T19:37:05.369346+00:00",
"counts": [
{
"class": "audit-core.heartbeat",
"count": 1
},
{
"class": "audit.deny",
"count": 1
}
],
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"means": "the count of events audit-core accepted and stored in this window. Divergence from the source's own count is a finding for the source; agreement proves neither completeness nor that any event occurred."
},
"duplicate_status": 200,
"wrong_source_status": 400,
"wrong_tenant_status": 400,
"read_refusal_status": 403,
"invalid_bearer_status": 401,
"global_pending_count": 0,
"instance_receipts": [
{
"accepted_at": "2026-10-15T19:36:30.769604+00:00",
"covered_event_classes": [
"audit.deny"
],
"event_id": "28dad6de11fb25fe6e0e145351f047360d6898afb53afd4cd677e560ec69132a",
"source": "qonto-assistant",
"status_code": 202,
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"stream_sequence": 1,
"tenant": "tenant:friendly:binky",
"type": "audit-core.heartbeat"
},
{
"accepted_at": "2026-10-15T19:36:30.861014+00:00",
"covered_event_classes": [],
"event_id": "6a9f34445e13062e38ab309a6fc800dc9a2fa24cb8a46ecd919ae18fe9409874",
"source": "qonto-assistant",
"status_code": 202,
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"stream_sequence": 2,
"tenant": "tenant:friendly:binky",
"type": "audit.deny"
}
],
"observed_at": "2026-10-15T19:37:03.422744+00:00",
"credential_values_emitted": false,
"source": "qonto-assistant",
"tenant": "tenant:friendly:binky",
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"independent_readback": false
}

View file

@ -0,0 +1,37 @@
{
"receipts": [
{
"accepted_at": "2026-10-15T19:36:30.769604+00:00",
"covered_event_classes": [
"audit.deny"
],
"event_id": "28dad6de11fb25fe6e0e145351f047360d6898afb53afd4cd677e560ec69132a",
"source": "qonto-assistant",
"status_code": 202,
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"stream_sequence": 1,
"tenant": "tenant:friendly:binky",
"type": "audit-core.heartbeat"
},
{
"accepted_at": "2026-10-15T19:36:30.861014+00:00",
"covered_event_classes": [],
"event_id": "6a9f34445e13062e38ab309a6fc800dc9a2fa24cb8a46ecd919ae18fe9409874",
"source": "qonto-assistant",
"status_code": 202,
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"stream_sequence": 2,
"tenant": "tenant:friendly:binky",
"type": "audit.deny"
}
],
"pending_count": 0,
"started_at": "2026-10-15T19:37:41.503622+00:00",
"pod_uid_before": "1a39bd4b-19dc-4c1f-adaa-56a11423d945",
"native_admission_receipt": "qonto-collector-native-admission.json",
"pod_uid_after": "92ef9104-469c-4b28-a0cc-f781f53bb26e",
"observed_at": "2026-10-15T19:38:35.874453+00:00",
"first_202_receipts_preserved": true,
"pvc": "rapp-qonto-audit-outbox",
"image": "forgejo.coulomb.social/coulomb/rapp-qonto-audit-collector@sha256:82bfd4100e14ddb2cefc4acc02b6b74609846b4a26ad40d9089ed564693f250a"
}

View file

@ -0,0 +1,23 @@
{
"image": "forgejo.coulomb.social/coulomb/audit-core@sha256:b479801b0bc76df66a36a85376c45aaf399c6d82feade9ba81430b774c4a8271",
"deployment_uid": "b85fe3d0-75c9-4e0d-8c34-c6f1df0881bb",
"deployment_resource_version": "75784583",
"pod_uid": "22e4df05-dfb0-4e70-8d5a-5a5950c860bd",
"capabilities": {
"load_bearing": true,
"redact": true,
"write_only": true,
"source_exact": true,
"tenant_exact": true
},
"synthetic_probe_only": true,
"credential_reads": 0,
"cadence_instance_capabilities": {
"cadence_registration": true,
"sqlite_instance_filter": true,
"postgres_instance_filter": true,
"synthetic_cadence_parse": true,
"synthetic_heartbeat_parse": true,
"synthetic_exact_scope": true
}
}

View file

@ -0,0 +1,87 @@
{
"schema_version": "platform.cadence-custody/v1",
"status": "delivered_pending_native_producer_and_independent_acceptance",
"credential_values_emitted": false,
"started_at": "2026-10-15T19:35:14.571483+00:00",
"packet_sha256": "81478f43abd2dbcb924966e9a3404e26bc226c91f2921b493ef0d5e2c23d4729",
"receiver_before": {
"image": "forgejo.coulomb.social/coulomb/audit-core@sha256:b479801b0bc76df66a36a85376c45aaf399c6d82feade9ba81430b774c4a8271",
"deployment_uid": "b85fe3d0-75c9-4e0d-8c34-c6f1df0881bb",
"deployment_resource_version": "75784583",
"pod_uid": "22e4df05-dfb0-4e70-8d5a-5a5950c860bd",
"capabilities": {
"load_bearing": true,
"redact": true,
"write_only": true,
"source_exact": true,
"tenant_exact": true
},
"synthetic_probe_only": true,
"credential_reads": 0,
"cadence_instance_capabilities": {
"cadence_registration": true,
"sqlite_instance_filter": true,
"postgres_instance_filter": true,
"synthetic_cadence_parse": true,
"synthetic_heartbeat_parse": true,
"synthetic_exact_scope": true
}
},
"phase": "delivery",
"registry_version_before": 15,
"custody_version": 1,
"custody_request_id": "77a526ef-dbcc-147d-b98b-a339f4efcd62",
"approval": {
"sender": "approval-engine",
"source": "approval-engine",
"tenant": "tenant:platform",
"may_read": false,
"emission_cadence_sha256": "cc58c8d53ebf50acf540d73b7607d579942bda7734c3e8722108e9c9204af655",
"heartbeat_classes": {
"issuance": 7200,
"use": 7200,
"supersession": 7200,
"revocation": 7200
},
"effective_deadline_seconds": 10800,
"changed": true,
"credentials_preserved": true,
"other_registry_fields_preserved": true
},
"registry_request_id": "47ca933d-4a5d-699b-c474-094947f78fb9",
"registry_version_after": 16,
"registry_readback_matches": true,
"other_senders_preserved": true,
"approval_credentials_preserved": true,
"reader_exact_path_negatives_and_revocation": true,
"wrong_identity_denied": true,
"coding_agent_deny_wins": true,
"projection_matches": true,
"receiver_registry_projection_matches": true,
"receiver_after": {
"image": "forgejo.coulomb.social/coulomb/audit-core@sha256:b479801b0bc76df66a36a85376c45aaf399c6d82feade9ba81430b774c4a8271",
"deployment_uid": "b85fe3d0-75c9-4e0d-8c34-c6f1df0881bb",
"deployment_resource_version": "75785764",
"pod_uid": "8333754a-eca0-4dd0-9230-72e41bb1e632",
"capabilities": {
"load_bearing": true,
"redact": true,
"write_only": true,
"source_exact": true,
"tenant_exact": true
},
"synthetic_probe_only": true,
"credential_reads": 0,
"cadence_instance_capabilities": {
"cadence_registration": true,
"sqlite_instance_filter": true,
"postgres_instance_filter": true,
"synthetic_cadence_parse": true,
"synthetic_heartbeat_parse": true,
"synthetic_exact_scope": true
}
},
"receiver_reloaded": true,
"receiver_runtime_registry_matches": true,
"completed_at": "2026-10-15T19:35:47.205117+00:00"
}

View file

@ -0,0 +1,31 @@
{
"job": "audit-core-migrate-nk-wp-0035-r3",
"uid": "ba24c60e-ceb6-4cc2-b8c4-840381deea53",
"status": {
"completionTime": "2026-10-15T19:31:33Z",
"conditions": [
{
"lastProbeTime": "2026-10-15T19:31:33Z",
"lastTransitionTime": "2026-10-15T19:31:33Z",
"message": "Reached expected number of succeeded pods",
"reason": "CompletionsReached",
"status": "True",
"type": "SuccessCriteriaMet"
},
{
"lastProbeTime": "2026-10-15T19:31:33Z",
"lastTransitionTime": "2026-10-15T19:31:33Z",
"message": "Reached expected number of succeeded pods",
"reason": "CompletionsReached",
"status": "True",
"type": "Complete"
}
],
"ready": 0,
"startTime": "2026-10-15T19:31:24Z",
"succeeded": 1,
"terminating": 0,
"uncountedTerminatedPods": {}
},
"image": "forgejo.coulomb.social/coulomb/audit-core@sha256:b479801b0bc76df66a36a85376c45aaf399c6d82feade9ba81430b774c4a8271"
}

View file

@ -0,0 +1,9 @@
{
"name": "platform-pg-nk-wp-0035-pre-cadence",
"uid": "a9789e86-6d8a-414a-a805-404185863f64",
"phase": "completed",
"startedAt": "2026-10-15T19:27:07Z",
"stoppedAt": "2026-10-15T19:27:24Z",
"method": "barmanObjectStore",
"cluster": "platform-pg"
}

View file

@ -78,10 +78,8 @@ Optional stream_instance_id on GET /v1/reconciliation selects exact retained det
```task
id: AUDIT-WP-0013-T05
status: wait
status: done
priority: high
blocking_reason: "rapp-qonto must supply the actual collector binding, scope/selectors, mapping/lag rules and receiver receipts; qonto-assistant must approve classification and per-class cadence."
blocked_on: message-from:rapp-qonto
state_hub_task_id: "76b59808-abc3-5b8d-b31a-e3fb611f2cbe"
```
@ -98,5 +96,38 @@ and process-instance filtering; database migration ledger is0006, source adds
additive0007-import-receipts. Current-source receiver release/migration is therefore
required before registration acceptance. See docs/cadence-registration.md for
execution gates. No protected registry was fetched or changed, no sender token
was minted and no live resource was mutated by this readiness work. T05 stays
wait pending source delivery and actual native custody/mapping receipts.
was minted and no live resource was mutated by this readiness work. The readiness note above describes the initial state; the native admission
follow-up below supersedes that T05 waiting state.
### Native Qonto receiver admission accepted, 2026-10-15
T05 is done for sender-native custody and mapping admission. Independent
KG-WP-0005-T03 operational acceptance is deliberately separate and remains open.
The protected registry CAS advanced15→16 with exact readback, preserving every
existing sender/credential/scope and unrelated KV field. Approval Engine's full
source declaration SHA256cc58c8d53ebf50acf540d73b7607d579942bda7734c3e8722108e9c9204af655
and issuance/use/supersession/revocation waits7200 are delivered and loaded after
receiver reload. Effective deadline is10800 with grace1.5; this registration
receipt is not yet evidence of four fresh Approval heartbeat observations.
Receiver b479801b (built from5227fb1) is ready with native cadence/heartbeat and
both-backend process-instance capabilities verified. Migration0007 completed
after the narrow DNS/PostgreSQL migration egress repair (source1269a0e). The
complete local PostgreSQL suite passed333 tests with no skips or failures.
Actual collector image82bfd410 captured source qonto-assistant in approved tenant
tenant:friendly:binky. Instanceb351fa6b-e0d6-4f88-b7c9-6bacb1a112b7 has original
sequence1 audit.heartbeat mapped one-to-one to audit-core.heartbeat covering
audit.deny and sequence2 audit.deny; both accepted202. Same-instance own
reconciliation returns one of each, duplicate200, wrong source400, wrong
tenant400, archive read403 and invalid bearer401. Pending queue0; first202
receipts survived collector pod replacement using its persistent outbox.
Audit.allow mapping/classification remains source-tested; no native allow
record or bank operation is claimed by this bounded receipt.
Exact metadata receipts and SHA256 index are retained in
docs/evidence/2026-10-15-cadence-admission/. These are native sender receipts,
not independent receiver readback. Real elapsed hourly observation, independent
active-instance/class-silence/sequence/count/lag assessment and Approval lifecycle
acceptance remain with NK-WP-0035/KG-WP-0005. Source-global receiver findings must
not misclassify intentional Qonto scale-to-zero as an active-instance omission.