railiance-platform/docs/adr/ADR-0006-playwright-consumer-group.md
codex 60101b0932 Activate Playwright pilot with scoped consumer group and native evidence
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a13690-09e0-7cd1-964b-ec83cdbcd348
2026-10-13 20:55:31 +02:00

2.6 KiB

id title status revision owner date last_reviewed review_interval
RPLAT-ADR-0006 ADR-0006 — Give Playwright consumers a dedicated namespace-scoped group accepted 1.0 railiance-platform 2026-10-13 2026-10-13 6m

Context

rapp-playwright's published private pilot has a namespace Role but deliberately no consumer binding. The user requested establishing a group during the Platform open-work review. Existing cluster documentation provides administrative access; the live binding inventory contains no non-system consumer group.

Decision

Establish Kubernetes RBAC group subject playwright-consumers, bound only to the package-owned playwright-consumer Role in namespace playwright. Platform owns the RoleBinding; rapp-playwright retains the Role and workload source. The initial membership policy includes all identified platform humans and coding agents, as explicitly directed by the user. No per-use-case membership restriction is introduced now. The identity/cluster owners must implement an authenticated group claim for those entities before general consumer availability is accepted.

Consequences

The Role permits pod get/list, pod port-forward creation and get of Deployment playwright. It grants no Secrets, pod exec, workload writes, identity impersonation or other namespaces. The namespace must remain dedicated to this service because pod discovery and forwarding cover all its pods. Membership confers browser-job submission for the reviewed trusted targets; it does not authorize private targets, hostile pages or mutually untrusted tenant workloads.

Kubernetes has no separate Group object to create. This establishes an RBAC subject and permissions, not a KeyCape group, login integration or membership. Administrator impersonation can verify the permission boundary but cannot prove consumer authentication. RPF-WP-0056 retains those outstanding acceptance steps.

Rollback removes only the Platform RoleBinding after reviewing its exact live identity; it does not delete the Namespace, workload or artifact PVC. Existing port-forwards require separate termination when revoking a consumer's active access. Do not treat removal of a binding as proof that a running tunnel closed.

Alternatives considered

Binding all authenticated users would broaden browser access beyond the human/coding-agent identity population. Sharing the administrator kubeconfig would convey unrelated cluster authority. Both are rejected. Selecting OIDC configuration or issuing client certificates without an owner-supported membership route remains outside this bounded group-binding change.