Record the custody owner's confirmations and guard a receipt against misreading
railiance-platform replied on all three open threads. Recording what they add rather than what we already knew. T02: they reached the same reading of the verifier receipt independently and add human_client_consume_denied: true for both clients, confirm the verifier ran twice (activation and post-rollout) at generation 38 with the signing key unchanged, and state T02 can close against that receipt. They also correct our framing, rightly: the packet says client-side retrieval is unadmitted, which stays true, but the attended operator path is not a client-side read and never required one. This task had been treating those as the same constraint. T04: the live approval clients mean this repo now holds a committed receipt that looks like rotation evidence and is not. Both owners independently state the same two gaps -- no real predecessor rotation, no observed wall-clock expiry. Recorded in T04 rather than only in T02, because verify-client's predecessor rejection is now implemented and unproven, which is a different state from missing or done, and T04 is where that distinction belongs. Answered their open question on CCR-2026-0020, which has no named presenting actor. As issuer: the registration carries both approval:create and approval:approve, so one presenter can create an entry and approve it. That is a separation-of-duties property of the holder, not a defect in the token -- KeyCape issues the grants approval-engine asked for. Recorded both shapes KeyCape can support, and that who holds it is approval-engine's decision and the doctrine question gate-house's, not ours. Also narrowed the operations note: the deployed config has not been written since the activation, so the inspected state is the state that will boot. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016uV8zoCKpA1WRAxsKRYbdH Assistant: claude-code Assistant-Model: opus Assistant-Process: 1182213@bnt-lap001 Assistant-Session: 966597b9-ae61-46a4-8b9e-1594ab3ec4ad
This commit is contained in:
parent
5ae80d341f
commit
7a73352368
4 changed files with 75 additions and 2 deletions
|
|
@ -280,6 +280,37 @@ anyone. Predecessor rejection is implemented and unit-tested in
|
|||
`keycape verify-client`; it has not been run against a real rotation, which is
|
||||
KEY-WP-0014-T04's territory and still has no admitted execution authority.
|
||||
|
||||
**Independently confirmed by the custody owner, 2026-09-09** (railiance-platform
|
||||
`ae6ff4bc`, `570e6746`). They reached the same reading from their own side and
|
||||
add one datum this record did not carry: `human_client_consume_denied: true` for
|
||||
both clients, alongside the signature, exact-claim, lifetime, excess-scope and
|
||||
wrong-secret results. They confirm the verifier ran twice — once during
|
||||
activation and again after rollout — at deployment generation 38, single ready
|
||||
replica, signing key unchanged, no credential values emitted, and state that T02
|
||||
can be closed against that receipt rather than against a run KeyCape cannot make.
|
||||
|
||||
They also correct one thing in our framing, and they are right: the packet says
|
||||
*client-side retrieval* is unadmitted, which remains true, but the attended
|
||||
operator path is not a client-side read and never required one. The two are
|
||||
distinct and this task had been treating them as the same constraint.
|
||||
|
||||
**Do not cite this receipt as rotation evidence.** Both owners now state the same
|
||||
two gaps independently: `real_predecessor_rotation_tested: false` and
|
||||
`observed_wall_clock_expiry: false`. Neither is a T02 acceptance criterion, and
|
||||
neither is closed by anything recorded here — see KEY-WP-0014-T04.
|
||||
|
||||
**Client-side retrieval is prepared but still unadmitted.** CCR-2026-0019
|
||||
(secrets-engine reader) and CCR-2026-0020 (approval-engine-operator reader) are
|
||||
`in_flight` under RPF-WP-0035-T06. 0020 has no named presenting actor in any
|
||||
owner source, and railiance-platform left it undetermined rather than guessing —
|
||||
correctly. KeyCape's view, asked for as the issuer of the identity and recorded
|
||||
in `docs/approval-engine-provisioning-request.yaml`, is that the registration as
|
||||
issued carries both `approval:create` and `approval:approve`, so a single
|
||||
presenter can create and then approve the same entry. That is a
|
||||
separation-of-duties question about who may hold the credential, not a defect in
|
||||
the token: KeyCape issues the grants approval-engine requested. The decision is
|
||||
approval-engine's and the doctrine question is gate-house's.
|
||||
|
||||
## Assign and register the human approver browser client
|
||||
|
||||
```task
|
||||
|
|
|
|||
|
|
@ -212,3 +212,18 @@ be worse than the imprecision. No reply needed on that point.
|
|||
T04 stays `wait`: the rotation authority now has a named owner
|
||||
(railiance-platform, transport `secrets-engine exec`) but does not yet exist, and
|
||||
nothing here changed a route.
|
||||
|
||||
2026-09-09, guarding against a misreading that is now easy to make. The approval
|
||||
clients went live and `docs/evidence/2026-09-09-keycape-verifier-admission.json`
|
||||
records a passing verifier run, so there is now a committed receipt in this repo
|
||||
that looks like rotation evidence and is not. It records
|
||||
`real_predecessor_rotation_tested: false` and `observed_wall_clock_expiry: false`,
|
||||
and under `limits`, `actual_predecessor_rotation_observed: false` and
|
||||
`wall_clock_jwt_expiry_observed: false`. railiance-platform stated the same two
|
||||
gaps unprompted from their side (`ae6ff4bc`): "do not cite this receipt as
|
||||
rotation evidence."
|
||||
|
||||
So `keycape verify-client`'s predecessor rejection has been exercised only
|
||||
against unit tests and a first provisioning where predecessor and successor were
|
||||
never distinct. Rotation step 4 is implemented and unproven, which is a different
|
||||
state from either "missing" or "done", and T04 is where that distinction lives.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue