user-engine/workplans/USER-WP-0029-tenant-admin-journeys.md
tegwick 1127f852dd
Some checks failed
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 20s
Account journey acceptance / journeys (push) Failing after 0s
Implement role-based account journeys with database and browser acceptance suites
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a092fe-13b1-7f12-ac74-7d258af4d79c
2026-09-13 12:20:02 +02:00

1.6 KiB

id type title domain repo status owner topic_slug created updated
USER-WP-0029 workplan Tenant administrator journeys and lifecycle isolation communication user-engine active codex communication 2026-09-13 2026-09-13

Implements docs/account-journeys.md under USER-WP-0027. A passing local suite is not evidence that an external provider flow works live.

Authorize target before provider calls

id: USER-WP-0029-T01
status: done
priority: high

T01/T03/T04/T06: reject non-admin and wrong-tenant user IDs before provisioning/recovery/lifecycle calls; bind invitation operations to route tenant; protect shared identities from global tenant-scoped mutation.

Confirm lifecycle changes and protect admin succession

id: USER-WP-0029-T02
status: done
priority: high

T06/T08: preview target/scope/action, CSRF-bound confirmation, reject stale state and last-admin removal, provide cancel and recovery. Keep domain/API guards as well as UI checks. Document concurrency/external propagation limits.

Explain onboarding and delivery state

id: USER-WP-0029-T03
status: done
priority: high

T02/T03/T04/T07: show actual directory login separately from display name, account state, provider uncertainty, invitation delivery status and appropriate next steps; prevent duplicate rows from workload memberships.

Validation: 210 database-enabled regression tests passed with no skips, including independent-connection last-admin protection and nested bootstrap rollback. Thirteen isolated Chromium checks passed. Provider OTP and application access integration remain explicitly open; no complete-journey claim is inferred.