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

@ -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