Expand portal onboarding and administration
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

This commit is contained in:
tegwick 2026-08-08 23:09:23 +02:00
parent 3d334479e9
commit 8229c6dd33
17 changed files with 1601 additions and 32 deletions

View file

@ -4,11 +4,11 @@ type: workplan
title: "Expand user-engine portal beyond the proven Binky MVP"
domain: communication
repo: user-engine
status: backlog
status: active
owner: codex
topic_slug: netkingdom
created: "2026-07-30"
updated: "2026-07-30"
updated: "2026-08-08"
depends_on:
- USER-WP-0020
state_hub_workstream_id: "ba217f48-5fa5-4178-9c79-73aa225f3f2e"
@ -23,7 +23,7 @@ holding the proven production MVP open. Activate according to tenant demand.
```task
id: USER-WP-0021-T01
status: todo
status: progress
priority: high
state_hub_task_id: "342299b8-d9a3-408d-bf0d-914496714d5f"
```
@ -32,11 +32,25 @@ Add invitation claim/resend/expiry, platform tenant management and recovery
routes, optimistic concurrency, complete OpenAPI schemas, and durable outbox
delivery/replay/dead-letter operations.
2026-08-08 increment: durable invitations now carry expiry and an optimistic
version. The API supports tenant create/list, version-gated resend/expire, and
authenticated claim with terminal-state and stale-version rejection. Outbox
state now covers attempts, bounded failures, delivery, replay, and dead-letter
through the store abstraction. OpenAPI 0.2 documents invitation and removal
operations. Platform recovery breadth and an outbox operator transport remain.
2026-08-08 follow-up: a provider-neutral `TenantManagementPort` now supports
platform-operator tenant creation with optional first-admin preparation. A
redacted recovery route recreates or reconciles provider identity state and
reactivates tenant lifecycle, while authenticated operator routes dispatch and
replay durable outbox events. Ordinary tenant users are denied these routes.
Broader tenant update/retirement operations remain.
## T02 - Expand self-service onboarding UX
```task
id: USER-WP-0021-T02
status: todo
status: done
priority: medium
state_hub_task_id: "dc548cfb-db7c-4cbd-864f-2effeebc3dbd"
```
@ -45,11 +59,34 @@ Add invitation acceptance, email-verification status, consent/profile,
tenant-selection, and fully resumable onboarding screens while keeping
password and MFA material on provider-owned surfaces.
2026-08-08 increment: invitation claim is now a first-class authenticated API
operation and preserves the provider-owned credential boundary. Dedicated
browser screens for the fully resumable journey remain.
2026-08-08 browser increment: authenticated users can review and accept an
invitation through a CSRF-protected flow, then land on a responsive onboarding
status screen showing provider verification, tenant memberships, and journey
state. Acceptance binds the verified OIDC email to the invitation address.
Consent/profile editing and tenant switching remain.
2026-08-08 completion increment: self-service profile completion and versioned
consent are now durable, audited, and emitted through the outbox; verified
email remains immutable. Membership-scoped tenant selection is available for
onboarding views, and a PKCE reauthentication handoff carries a tenant hint so
the identity provider—not browser state—changes authoritative tenant context.
Interactive completion of subsystem-owned journey steps remains.
2026-08-08 completion: users can complete active user-engine-owned onboarding
steps through API or CSRF-protected browser controls. Journey ownership is
checked before mutation. Password, MFA, and other subsystem-owned steps expose
handoff status only and cannot be completed from user-engine; their callbacks
resume the durable journey. This completes the self-service onboarding scope.
## T03 - Expand administration UX
```task
id: USER-WP-0021-T03
status: todo
status: done
priority: high
state_hub_task_id: "3e0b41ee-6159-46a4-a9fe-c5b6d714cc2a"
```
@ -57,11 +94,38 @@ state_hub_task_id: "3e0b41ee-6159-46a4-a9fe-c5b6d714cc2a"
Add platform tenant creation, first-admin bootstrap, invitation/recovery
management, account removal, and redacted lifecycle-gap diagnostics.
2026-08-08 increment: account removal now uses the provider-neutral
deprovisioning port and disables the tenant lifecycle record. Platform
creation/bootstrap and recovery UI remain.
2026-08-08 follow-up: platform APIs now create tenants through the tenant
authority, prepare the first administrator, and perform redacted identity
recovery. Browser administration screens for these operations remain.
2026-08-08 browser increment: tenant administrators can create, inspect,
resend, and expire invitations with versioned CSRF-protected forms, and remove
accounts through the provider-neutral deprovisioning boundary.
2026-08-08 platform-browser increment: platform operators have a responsive,
CSRF-protected tenant-creation screen with optional first-admin preparation
and a direct handoff to tenant administration. Redacted recovery and
lifecycle-gap browser diagnostics remain.
2026-08-08 recovery-browser increment: platform operators can inspect redacted
lifecycle-gap categories and invoke CSRF-protected identity recovery from the
tenant member view. Recovery recreates a missing provider link or reconciles
an existing identity, then restores the tenant lifecycle record without
showing credentials, factor evidence, or provider error bodies.
2026-08-08 completion: tenant and platform browser surfaces now cover every
listed administration operation while retaining tenant boundaries, CSRF,
provider-neutral lifecycle ports, and redacted diagnostics.
## T04 - Complete broad security and accessibility conformance
```task
id: USER-WP-0021-T04
status: todo
status: done
priority: high
state_hub_task_id: "fb59245e-6989-4bd9-b72a-68e53ea9f0af"
```
@ -71,6 +135,32 @@ outage, partial failure, audit-redaction, keyboard/screen-reader, and
mobile/desktop conformance. Preserve existing cross-tenant and escalation
denial gates.
2026-08-08 increment: conformance covers invitation conflicts, resend/expiry,
outbox provider failure, replay, dead-letter, successful recovery, and
provider-neutral account removal. Browser accessibility breadth remains.
2026-08-08 follow-up: conformance now also proves ordinary-user denial of the
platform surface and the positive platform tenant/bootstrap, recovery, and
outbox delivery workflow.
2026-08-08 browser increment: conformance proves CSRF enforcement, invitation
email binding, successful browser claim and onboarding redirect, responsive
viewport metadata, focus-visible controls, semantic landmarks, and invitation
and removal administration controls.
2026-08-08 self-service/recovery increment: conformance additionally covers
durable consent/profile completion, immutable verified email, tenant-hinted
OIDC reauthentication, platform recovery controls, and redacted lifecycle-gap
presentation.
2026-08-08 completion: the automated matrix covers duplicate, explicitly
expired, revoked, and replayed invitations; stale versions; expired sessions;
provider outage and unchanged lifecycle state; bounded error/audit surfaces;
cross-tenant and platform denial; semantic headings/landmarks; visible keyboard
focus; responsive viewport/mobile tables; provider handoff denial; and
desktop/browser positive flows. The full suite passes 115 tests with three
provider integration tests skipped when their external service is absent.
## T05 - Trigger enterprise federation planning only on demand
```task