net-kingdom/workplans/NK-WP-0050-playwright-consumer-registration.md
tegwick d042d7f4d2
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Workplan triage: NK-WP-0048/0050 blocked, NK-WP-0011 backlog, NK-WP-0053 pulled forward
NK-WP-0053 drill and G1 review run now with the first admin MFA run instead of
at the 2027-01-31 deadline; the quarterly repeat moves to disaster-control's
restore-proof register once the workplan closes.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 308701@bnt-lap001
Assistant-Session: 5548e447-444c-4dcc-bed1-05c16eebfe56
2026-10-28 09:15:06 +01:00

110 lines
5.4 KiB
Markdown

---
id: NK-WP-0050
type: workplan
title: "Register Playwright human and agent consumers through governed identity delivery"
domain: infotech
repo: net-kingdom
status: blocked
flavor: implementation
owner: codex
topic_slug: netkingdom
created: "2026-10-13"
updated: "2026-10-28"
depends_on: []
related: [CUST-WP-0080, RPF-WP-0056, RAPP-PLAYWRIGHT-WP-0004]
state_hub_workstream_id: "06ba98d5-609e-5aaa-9bf7-4c4f4460e377"
---
Accept NetKingdom's concrete implementation request
`c6b4dfb0-44d5-4f12-8854-2c38ab6dc454` (original
`94a0096c-f34c-463c-b336-b13cf629b968`). This is the missing registration-owner
implementation, not another cross-owner coordination plan. Coordination remains
CUST-WP-0080-T05; Platform and provider retain consumer/service acceptance.
Initial eligibility of all identified platform humans and coding agents is
already decided. Do not request another membership approval or reuse a shared
admin identity, kubeconfig, SSH identity or existing OpenBao credential.
> **Blocked 2026-10-28** (founder triage): T02 waits on Platform custody/delivery and the real
> agent records, T03 on CUST-WP-0080-T05 acceptance. No NetKingdom-side step remains open.
> Return to `active` when Platform custody is in place.
## Prepare exact registrations and preservation checks
```task
id: NK-WP-0050-T01
status: done
priority: high
state_hub_task_id: "64893d94-9717-5812-b8e3-7cabe095fcdc"
```
`docs/playwright-registration.md` owns the bounded registration contract.
`sso-mfa/k8s/keycape/playwright-registration.py` constructs the exact public
PKCE record and distinct per-agent confidential registrations from existing
identity references, with dedicated audience/scope and 15-minute agent lifetime.
It reuses the existing byte-preserving registry adapter, refuses drift/shared
references/unreviewed audience registrations and bounds the existing human
issuer lifetime without modifying it. CLI emits only source proposals; no
credential access, live mutation or fabricated SecurityCaseType acceptance.
Verified: nine new compiler/merge tests and 64 existing registration tests pass.
The broader 159-test directory run passed 157 and failed two unchanged short-window
OpenBao input tests; all seven tests in that module passed unchanged on rerun.
Native KeyCape config/startup suites and the generated-registration token/JWKS
fixture pass against committed issuer source 1344fc80e56315c5c99f58993f9ee02ce79e8a76.
Public output exactly matches Platform's candidate. Synthetic identity references
and local fixtures are not issuer-owner or real consumer acceptance.
## Deliver custody integration and guarded registration activation
```task
id: NK-WP-0050-T02
status: progress
priority: high
depends_on: [NK-WP-0050-T01]
state_hub_task_id: "a9dadd07-f136-5dc7-9229-7a9dbb941f0d"
```
Resolve the exact real agent records and Platform custody/delivery source task;
add protected registration/config/Deployment integration using existing owner
operations, exact source/object/revision bindings, pinned native check-config,
created-only provenance, readback and guarded rollback. Prepare the concrete
action before any needed privileged approval. Source work can proceed while
owner acceptance is collected; custody and live grants must not be invented.
Neither compiler output nor another client's acceptance authorizes live apply.
2026-10-13: private activation patch preparation implemented in
`playwright-activation.py`. Original/candidate registry and Deployment state bind
an exact proposal digest. Ordered stop/configure/resume avoids a registry/env
startup race in the single-Recreate issuer. Native verifier digest checks, fresh
object UID/resource-version/data/spec conditions, complete pod-quiescence checks,
readback and exact original-state rollback retain pre-existing registrations and
bindings. No mutation occurs from this module; the protected executor owns fresh
reads, admitted custody, actual approval and live acceptance. Source tests cover
partial recovery and independent RFC 6902 patch application; native KeyCape
check-config accepts both synthetic configurations. Real identity/custody owner
returns, executor/recovery-state integration, exact current image verification
and the supervised maintenance action remain open.
Follow-up review reproduced two collision gaps: implicit client-ID audience and
different env names referencing the same proposed agent Secret/key. Both are now
refused; two new regressions failed before repair and pass afterward. This does
not establish isolation outside the observed registry/issuer environment.
## Verify issuer and real consumer acceptance
```task
id: NK-WP-0050-T03
status: wait
priority: high
depends_on: [NK-WP-0050-T02, RPF-WP-0056-T03]
blocking_reason: "Await owner-scoped registry/custody activation, native cluster authentication and individual transport, then real human and agent acceptance under CUST-WP-0080-T05."
state_hub_task_id: "5a3aaf57-de5c-5a03-bc99-9bcf2fc5d95e"
```
Retain real human/agent issuance and identity/tenant/audience/scope/expiry proof,
native negative cases, preserved existing login, renewal, removal and active
connection termination. Hand the exact receipts to RPF-WP-0056-T03 and provider
RAPP-PLAYWRIGHT-WP-0004-T01/T03. Do not introduce a reciprocal prerequisite on
Platform activation: T02 owns issuer preparation/activation, T03 consumes final
Platform end-to-end acceptance. Close only after the registration owner's
requirements are proven; hand any residuals to live work records first.