Accept native Qonto sender admission and hourly receiver registration
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
This commit is contained in:
parent
1269a0efc6
commit
2e97f37c01
10 changed files with 323 additions and 5 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
13
docs/evidence/2026-10-15-cadence-admission/index.json
Normal file
13
docs/evidence/2026-10-15-cadence-admission/index.json
Normal 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
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue