NK-WP-0035-T04: attended receiver readback; presence 3/3, counts refused by reconciliation source scope
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 4101@bnt-lap001
Assistant-Session: bc7d2ce5-6f32-45f1-83e5-0dcbb8e610a7
This commit is contained in:
tegwick 2026-10-23 10:56:40 +02:00
parent 7e1c073c72
commit 5a8958bf08
2 changed files with 46 additions and 1 deletions

View file

@ -0,0 +1,32 @@
{
"captured_counts": {
"audit.deny": 1,
"audit.heartbeat": 2
},
"event_presence": {
"28dad6de11fb25fe6e0e145351f047360d6898afb53afd4cd677e560ec69132a": true,
"6a9f34445e13062e38ab309a6fc800dc9a2fa24cb8a46ecd919ae18fe9409874": true,
"dfa71caeddb9633af2719fb9596a8ffb308f722cd12b385f18473116e6c4dc39": true
},
"findings": [
"reconciliation returned 403: source_not_allowed"
],
"means": "agreement proves neither completeness nor King's Guard acceptance",
"payloads_retained": false,
"receiver_counts": {},
"request": {
"event_ids": [
"28dad6de11fb25fe6e0e145351f047360d6898afb53afd4cd677e560ec69132a",
"6a9f34445e13062e38ab309a6fc800dc9a2fa24cb8a46ecd919ae18fe9409874",
"dfa71caeddb9633af2719fb9596a8ffb308f722cd12b385f18473116e6c4dc39"
],
"since": "2026-10-15T19:36:16+00:00",
"source": "qonto-assistant",
"stream_instance_id": "b351fa6b-e0d6-4f88-b7c9-6bacb1a112b7",
"tenant": "tenant:friendly:binky",
"until": "2026-10-15T20:37:23+00:00"
},
"schema": "nk-wp-0035-receiver-readback/v1",
"token_retained": false,
"verdict": "diverge"
}

View file

@ -90,7 +90,7 @@ Python compilation and `git diff --check` pass.
id: NK-WP-0035-T04
status: wait
priority: high
blocking_reason: "Elapsed-hour capture done 2026-10-15 (3 events, receiver readback captured). Waiting on an independent receiver readback under a fresh attended operator OIDC login, then King's Guard acceptance (KG-WP-0005-T03, wait) and QONTO-WP-0006-T03."
blocking_reason: "Elapsed-hour capture done 2026-10-15 (3 events, receiver readback captured). Readback run 2026-10-23: presence 3/3, counts refused 403 source_not_allowed (operator reader scoped to user-engine); waiting on audit-core's cross-source count path and a rerun, then King's Guard acceptance (KG-WP-0005-T03, wait) and QONTO-WP-0006-T03."
state_hub_task_id: "e3fbc8b8-00d5-57ce-ba0c-19b58044c950"
```
@ -442,6 +442,19 @@ token. A class-name mapping difference between source and receiver shows up as
port-forward. The receipt then goes to King's Guard (KG-WP-0005-T03) and
qonto-assistant (QONTO-WP-0006-T03).
2026-10-23: the readback was run attended by the founder (fresh KeyCape OIDC/MFA login to OpenBao,
role platform-admin, through port-forward; token in a 0600 temp file, deleted afterwards, OpenBao
session revoked). [Receipt](../docs/evidence/2026-10-15-cadence-adoption/receiver-readback-20261023.json):
verdict `diverge` with one finding, `reconciliation returned 403: source_not_allowed`.
Event presence is 3/3, with source and tenant matching. Counts were not obtained: audit-core
`/v1/reconciliation` admits only an identity's own sources (`permits_source`), and the
operator reader is registered for `user-engine`. This is an authorization-scope result, not a
data mismatch. audit-core's own routing comment ("cross-source counts stay behind
may_read") reads the other way, so the question went to audit-core: either permit cross-source
counts for a full-scope may_read reader, or name the sanctioned independent counting path.
Rerun the same helper once that is answered. The receipt still goes to King's Guard as
presence-only evidence. T04 stays wait.
## Automate staged receiver derivation without sibling mutations
```task