Finish RPF-WP-0059: independent Qonto readback captured; collector silent since 2026-10-15 20:36Z.
All checks were successful
CCR intake gate / gate (push) Successful in 4m14s
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 4s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 236506@bnt-lap001
Assistant-Session: 09087018-91e1-48c5-ab2f-acfbb62c92e4
This commit is contained in:
codex 2026-11-03 22:01:07 +01:00
parent 22cfdb72e4
commit 3a68eaca8a
3 changed files with 125 additions and 5 deletions

View file

@ -39,7 +39,7 @@
| workplan | RPF-WP-0056 | blocked | — | workplans/RPF-WP-0056-playwright-consumer-admission.md |
| workplan | RPF-WP-0057 | finished | — | workplans/RPF-WP-0057-sign-in-diagnosis-caller-proof.md |
| workplan | RPF-WP-0058 | finished | — | workplans/RPF-WP-0058-reuse-private-source-reader.md |
| workplan | RPF-WP-0059 | active | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| workplan | RPF-WP-0059 | finished | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| workplan | RPF-WP-0060 | blocked | — | workplans/RPF-WP-0060-browser-case-platform-bindings.md |
| workplan | RPF-WP-0061 | active | — | workplans/RPF-WP-0061-self-service-ccr-intake.md |
| workplan | RPF-WP-0062 | finished | — | workplans/RPF-WP-0062-custodian-agent-observer-identity.md |
@ -191,7 +191,7 @@
| task | RPF-WP-0059-T01 | done | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| task | RPF-WP-0059-T02 | done | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| task | RPF-WP-0059-T03 | done | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| task | RPF-WP-0059-T04 | wait | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| task | RPF-WP-0059-T04 | done | — | workplans/RPF-WP-0059-hourly-cadence-receiver-custody.md |
| task | RPF-WP-0060-T01 | wait | — | workplans/RPF-WP-0060-browser-case-platform-bindings.md |
| task | RPF-WP-0060-T02 | done | — | workplans/RPF-WP-0060-browser-case-platform-bindings.md |
| task | RPF-WP-0060-T03 | wait | — | workplans/RPF-WP-0060-browser-case-platform-bindings.md |

View file

@ -0,0 +1,91 @@
{
"schema_version": "platform.independent-cadence-readback/v1",
"status": "independent_custody_readback_complete",
"credential_values_emitted": false,
"observed_at": "2026-11-03T21:00:14.822896+00:00",
"receiver": {
"image": "forgejo.coulomb.social/coulomb/audit-core@sha256:304cfb83daa873e5790a2f262f6c4ccd56498b6e9e1a390368dcf0d407256300",
"deployment_uid": "b85fe3d0-75c9-4e0d-8c34-c6f1df0881bb",
"deployment_resource_version": "84752659",
"pod_uid": "61709182-dfd1-455f-9049-f3a2d49a8211",
"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
}
},
"reader_name": "operator",
"registry_version": 18,
"reconciliation": {
"source": "qonto-assistant",
"tenant": "tenant:friendly:binky",
"since": "2026-10-15T19:36:00+00:00",
"until": "2026-11-03T21:00:04+00:00",
"counts": [
{
"class": "audit-core.heartbeat",
"count": 2
},
{
"class": "audit.deny",
"count": 1
}
],
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"basis": "independent_reader",
"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."
},
"stream_findings": [
{
"kind": "missing_heartbeat",
"sender": "rapp-qonto-collector",
"source": "qonto-assistant",
"class": "audit.deny",
"expected_within_seconds": 7200,
"last_seen": "2026-10-15T20:36:30+00:00",
"overdue_seconds": 1632236
}
],
"events": [
{
"event_id": "28dad6de11fb25fe6e0e145351f047360d6898afb53afd4cd677e560ec69132a",
"source": "qonto-assistant",
"tenant": "tenant:friendly:binky",
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"stream_sequence": 1,
"type": "audit-core.heartbeat",
"accepted_at": "2026-10-15T19:36:30+00:00",
"observed_at": "2026-10-15T19:36:17+00:00",
"covered_event_classes": [
"audit.deny"
],
"independent_custody_readback": true
},
{
"event_id": "6a9f34445e13062e38ab309a6fc800dc9a2fa24cb8a46ecd919ae18fe9409874",
"source": "qonto-assistant",
"tenant": "tenant:friendly:binky",
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"stream_sequence": 2,
"type": "audit.deny",
"accepted_at": "2026-10-15T19:36:30+00:00",
"observed_at": "2026-10-15T19:36:17+00:00",
"covered_event_classes": [],
"independent_custody_readback": true
}
],
"scope": "bounded same-instance accepted custody; source-global findings require active-instance interpretation",
"helper_sha256": "9c25e901ffb34df87227ad074c7f73e9cd2e9fecf18ab49f886151b8d11d992f"
}

View file

@ -4,7 +4,7 @@ type: workplan
title: "Admit hourly receiver cadence and exact Qonto collector custody"
domain: financials
repo: railiance-platform
status: active
status: finished
owner: codex
topic_slug: railiance-platform
created: "2026-10-15"
@ -64,9 +64,8 @@ resume on interruption. No live effect or secret read occurred in preparation.
```task
id: RPF-WP-0059-T04
status: wait
status: done
priority: high
blocking_reason: "Independent reconciliation needs an audit-core release containing d46e89e (AUDIT-WP-0013-T06); the deployed b479801b refuses independent readers with source_not_allowed. Founder-run release: AUDIT-WP-0013-T07."
state_hub_task_id: "7d8e5315-9470-5596-a865-d451284f6f50"
```
@ -119,3 +118,33 @@ Git in `~/cadence-readback/`. Rerun the same command after AUDIT-WP-0013-T07.
A new receiver release will also move the reviewed image pin in
`scripts/audit-core-recovery-preflight.py` (RAILIANCE-WP-0024 owner contract)
again, so the next attended recovery window needs a fresh owner round.
### Independent readback captured; collector silent — 2026-11-03
After AUDIT-WP-0013-T07 released receiver `sha256:304cfb83…` (built from
audit-core `8185893`, which contains `d46e89e`), the founder reran the
readback, and it completed (`independent_custody_readback_complete`; reader
`operator`, basis `independent_reader`, no credential emitted).
Results for instance `b351fa6b…`, window 2026-10-15T19:36Z to
2026-11-03T21:00Z:
- Reconciliation counts only 2 `audit-core.heartbeat` and 1 `audit.deny`.
- The source-global stream finding is `missing_heartbeat` for sender
`rapp-qonto-collector`, class `audit.deny`, last seen
2026-10-15T20:36:30Z, overdue by 1,632,236 s (about 18.9 days).
- The exact-id reads of sequence 1 and 2 match source, tenant, instance and
sequence.
The collector heartbeated once after the first hour and then stopped. No
collector instance has emitted for this source since. This is the observer
finding the evidence exists to produce, and it belongs to the Qonto runtime
owner. Platform custody, the receiver and the finding surface worked. Receipt:
`docs/evidence/2026-11-03-qonto-independent-readback/qonto-independent-readback.json`
(sha256 `959a1112…555a`).
By founder decision, Platform's T04 part (coordination and the independent
capture) is done and RPF-WP-0059 is finished. Operational acceptance and the
silence finding are handed to King's Guard (KG-WP-0005-T03), Qonto
(QONTO-WP-0006-T03) and the runtime owner (rapp-qonto). Profile acceptance is
not claimed: the evidence is negative until the collector is restored and
re-observed.