Record native receiver custody and prepare actual Approval lifecycle readback
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
This commit is contained in:
parent
ce5344da69
commit
6e24b09eaa
8 changed files with 372 additions and 40 deletions
|
|
@ -42,6 +42,21 @@ that deployed gate.
|
|||
|
||||
Run `apply` only inside the existing attended Warden platform-admin `--exec`
|
||||
envelope. Use credential routing first; do not export a token into a shell.
|
||||
Before starting OIDC, remove all three ambient token aliases from the launcher
|
||||
environment without reading or printing their values:
|
||||
|
||||
```bash
|
||||
env -u BAO_TOKEN -u VAULT_TOKEN -u OPENBAO_TOKEN \
|
||||
warden access openbao-platform-admin-login --exec -- \
|
||||
python3 /home/worsch/railiance-platform/scripts/cadence_receiver_custody.py apply <reviewed-arguments>
|
||||
```
|
||||
|
||||
This is required for the custody and fresh observer-readback launches. The
|
||||
initial native attempt demonstrated that OPENBAO_TOKEN is not scrubbed by the
|
||||
existing Warden wrapper; the contained helper correctly refused it. Session
|
||||
self-revocation was confirmed and no custody mutation occurred in that attempt.
|
||||
Do not inspect, copy or relax the guard for an ambient credential.
|
||||
|
||||
The owner wrapper must preserve its independent exit/self-revocation receipt.
|
||||
The contained command is:
|
||||
|
||||
|
|
@ -126,9 +141,12 @@ The sanitized event projection includes instance/sequence, action, observed
|
|||
and accepted timestamps, and exact heartbeat coverage. Actual custody
|
||||
accepted_at can distinguish a duplicate delivery receipt from original custody
|
||||
time; a collector duplicate200 is not itself first-acceptance timing proof.
|
||||
Approval Engine source/tenant is also allowed, but this helper requires an
|
||||
instance-bearing source record and therefore cannot substitute for its
|
||||
historical instance-free lifecycle acceptance path.
|
||||
Approval Engine source/tenant is also allowed; omit --instance for its
|
||||
instance-free lifecycle records. The helper does not invent process identity
|
||||
or sequence for Approval and labels its conclusion as a bounded source
|
||||
lifecycle acceptance window. Qonto still requires an explicit exact instance.
|
||||
Receiver-normalized timezone spelling is compared by timestamp semantics;
|
||||
source, tenant and actual instance bindings remain exact.
|
||||
|
||||
Exit0 reports `independent_custody_readback_complete`, which proves only the
|
||||
bounded supplied custody reads. The source snapshot, contiguous startup/
|
||||
|
|
|
|||
|
|
@ -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,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"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue