2026-09-13 12:20:02 +02:00
{
"schema_version" : 1 ,
"journeys" : [
{
"id" : "U01" ,
"role" : "user" ,
"implementation" : "implemented" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_anonymous_and_expired_sessions_have_login_without_logout" ,
"test_account_clarity.AccountClarityTests.test_authenticated_roles_have_logout_without_login"
] ,
"remaining" : ""
} ,
{
"id" : "U02" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_web.PortalApplicationTests.test_expired_browser_session_and_provider_outage_fail_closed" ,
"test_account_recovery.AccountRecoveryTests.test_failed_callback_has_clean_recovery_and_no_loop"
] ,
"remaining" : "KEY-WP-0035: actual no-factor/enrolled login needs provider credential and policy rollout."
} ,
{
"id" : "U03" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_web.PortalApplicationTests.test_browser_invitation_acceptance_and_onboarding_status" ,
"test_web.PortalApplicationTests.test_invitation_lifecycle_is_versioned_and_replay_safe"
] ,
"remaining" : "Live notification delivery and invited-person acceptance remain unverified."
} ,
{
"id" : "U04" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_journey_roles.UserJourneys.test_password_handoff_names_actual_login_and_failure_can_retry"
] ,
"remaining" : "Provider password reset is separately tested in net-kingdom; live email recovery remains unresolved."
} ,
{
"id" : "U05" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_otp_help_is_available_without_portal_login_and_never_claims_activation"
] ,
"remaining" : "Portal boundary only. KEY-WP-0035 owns factor presence/AAL2 enforcement; live enrollment, cancel, replacement and lost-factor recovery await approved provider credential/contract."
} ,
{
"id" : "U06" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_otp_help_is_available_without_portal_login_and_never_claims_activation"
] ,
"remaining" : "Portal boundary only. KEY-WP-0035 owns factor presence/AAL2 enforcement; live enrollment, cancel, replacement and lost-factor recovery await approved provider credential/contract."
} ,
{
"id" : "U07" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_otp_help_is_available_without_portal_login_and_never_claims_activation"
] ,
"remaining" : "Portal boundary only. KEY-WP-0035 owns factor presence/AAL2 enforcement; live enrollment, cancel, replacement and lost-factor recovery await approved provider credential/contract."
} ,
{
"id" : "U08" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_otp_help_is_available_without_portal_login_and_never_claims_activation"
] ,
"remaining" : "Portal boundary only. KEY-WP-0035 owns factor presence/AAL2 enforcement; live enrollment, cancel, replacement and lost-factor recovery await approved provider credential/contract."
} ,
{
"id" : "U09" ,
"role" : "user" ,
"implementation" : "partial" ,
"tests" : [
"test_account_recovery.AccountRecoveryTests.test_account_workload_list_is_scoped_to_current_user"
] ,
"remaining" : "USER-WP-0028-T02/USER-WP-0026-T03: authoritative application catalogue and access requests not implemented."
} ,
{
"id" : "U10" ,
"role" : "user" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_wrong_shared_identity_recovery_does_not_claim_a_known_session" ,
"test_portal_navigation.PortalNavigationTests.test_navigation_does_not_leak_between_operator_member_and_anonymous"
] ,
"remaining" : "Authenticated multi-identity/tenant switching must be verified against live issuer."
} ,
{
"id" : "U11" ,
"role" : "user" ,
"implementation" : "implemented" ,
"tests" : [
"test_account_recovery.AccountRecoveryTests.test_shared_logout_clears_portal_then_uses_provider_confirmation" ,
"test_portal_navigation.PortalNavigationTests.test_get_logout_only_confirms_and_bad_csrf_does_not_end_session" ,
"test_portal_navigation.PortalNavigationTests.test_expired_session_logout_clears_stale_cookie"
] ,
"remaining" : ""
} ,
{
"id" : "U12" ,
"role" : "user" ,
"implementation" : "implemented" ,
"tests" : [
"test_account_clarity.AccountClarityTests.test_browser_denial_is_recoverable_while_api_remains_json" ,
"test_account_recovery.AccountRecoveryTests.test_recovery_is_public_and_never_trusts_query_identity"
] ,
"remaining" : ""
} ,
{
"id" : "U13" ,
"role" : "user" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.UserJourneys.test_profile_validation_keeps_safe_input_and_retry_saves" ,
"test_web.PortalApplicationTests.test_browser_invitation_acceptance_and_onboarding_status"
] ,
"remaining" : ""
} ,
{
"id" : "T01" ,
"role" : "tenant_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.TenantAdminJourneys.test_wrong_role_or_tenant_never_calls_provider" ,
"test_journey_roles.TenantAdminJourneys.test_audit_is_tenant_scoped_and_never_dumps_payload"
] ,
"remaining" : ""
} ,
{
"id" : "T02" ,
"role" : "tenant_admin" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_web.PortalApplicationTests.test_invitation_lifecycle_is_versioned_and_replay_safe" ,
"test_journey_roles.TenantAdminJourneys.test_invalid_role_cannot_create_partial_account" ,
"test_journey_roles.TenantAdminJourneys.test_invitation_delivery_reports_queue_failure_and_adapter_acceptance"
] ,
"remaining" : "Local invitation queue/failure/adapter-acceptance states are implemented. Actual receipt by the invited person remains live provider acceptance under U03."
} ,
{
"id" : "T03" ,
"role" : "tenant_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.UserJourneys.test_password_handoff_names_actual_login_and_failure_can_retry" ,
"test_web.PortalApplicationTests.test_admin_form_requires_csrf_and_supports_two_step_provisioning"
] ,
"remaining" : ""
} ,
{
"id" : "T04" ,
"role" : "tenant_admin" ,
"implementation" : "external-blocked" ,
"tests" : [
"test_journey_roles.UserJourneys.test_password_handoff_names_actual_login_and_failure_can_retry" ,
"test_journey_roles.TenantAdminJourneys.test_provider_failure_retains_local_state_and_retry_recovers"
] ,
"remaining" : "Provider-owned lost-factor recovery still unverified; password setup assistance is supported."
} ,
{
"id" : "T05" ,
"role" : "tenant_admin" ,
"implementation" : "partial" ,
"tests" : [
"test_journey_roles.TenantAdminJourneys.test_invalid_role_cannot_create_partial_account"
] ,
"remaining" : "Tenant roles are managed; authoritative application-specific grant/revoke integration remains USER-WP-0028-T02."
} ,
{
"id" : "T06" ,
"role" : "tenant_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.TenantAdminJourneys.test_confirmation_cancel_tamper_and_stale_state" ,
"test_journey_roles.TenantAdminJourneys.test_tenant_removal_preserves_shared_identity_and_other_account" ,
"test_journey_roles.TenantAdminJourneys.test_provider_failure_retains_local_state_and_retry_recovers" ,
"test_journey_roles.TenantAdminJourneys.test_disabled_account_cannot_be_reactivated_by_password_setup"
] ,
"remaining" : ""
} ,
{
"id" : "T07" ,
"role" : "tenant_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_web.PortalApplicationTests.test_admin_form_requires_csrf_and_supports_two_step_provisioning"
] ,
"remaining" : "Provider factor/password evidence remains explicitly unavailable; provider verification is tracked under U05-U08."
} ,
{
"id" : "T08" ,
"role" : "tenant_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.TenantAdminJourneys.test_last_admin_protected_then_successor_allows_transition" ,
"test_journey_roles.TenantAdminJourneys.test_admin_succession_promote_then_demote_with_confirmation" ,
"test_journey_roles.TenantAdminJourneys.test_audit_is_tenant_scoped_and_never_dumps_payload" ,
"test_journey_roles.TenantAdminJourneys.test_concurrent_admin_suspensions_keep_one_active_admin"
] ,
"remaining" : "Disposable PostgreSQL cross-connection/rollback suite also passed; run its separate opt-in suite for DB changes."
} ,
{
"id" : "P01" ,
"role" : "platform_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_portal_navigation.PortalNavigationTests.test_operator_can_reach_administration_without_personal_membership" ,
"test_portal_navigation.PortalNavigationTests.test_existing_tenant_user_navigation_preserves_authority"
] ,
"remaining" : ""
} ,
{
"id" : "P02" ,
"role" : "platform_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.PlatformAdminJourneys.test_bootstrap_retry_does_not_duplicate_first_admin" ,
"test_web.PortalApplicationTests.test_platform_tenant_authority_denial_is_redacted_and_creates_no_admin" ,
"test_journey_roles.PlatformAdminJourneys.test_partial_first_admin_setup_rolls_back_and_retry_finishes"
] ,
"remaining" : "Local bootstrap is atomic and retryable; tenant creation remains delegated to its authority."
} ,
{
"id" : "P03" ,
"role" : "platform_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_portal_navigation.PortalNavigationTests.test_ambiguous_or_unknown_short_names_do_not_guess_a_tenant" ,
"test_portal_navigation.PortalNavigationTests.test_existing_tenant_is_selectable_and_short_name_resolves"
] ,
"remaining" : ""
} ,
{
"id" : "P04" ,
"role" : "platform_admin" ,
2026-09-13 21:19:13 +02:00
"implementation" : "implemented" ,
2026-09-13 12:20:02 +02:00
"tests" : [
2026-09-13 14:14:10 +02:00
"test_journey_roles.PlatformAdminJourneys.test_recovery_uses_tenant_access_and_keeps_global_identity_operations_unused" ,
2026-09-13 21:19:13 +02:00
"test_platform_support.PlatformSupportJourneys.test_recovery_denied_before_preview_and_operator_sees_factor_boundary" ,
"test_factor_recovery_journey.FactorRecoveryJourney.test_role_csrf_and_freshness_denied_before_provider" ,
"test_factor_recovery_journey.FactorRecoveryJourney.test_preview_cancel_apply_retry_and_secret_not_rendered" ,
"test_factor_recovery_journey.FactorRecoveryJourney.test_stepup_requests_fresh_mfa_and_binds_return"
2026-09-13 12:20:02 +02:00
] ,
2026-09-13 21:19:13 +02:00
"remaining" : ""
2026-09-13 12:20:02 +02:00
} ,
{
"id" : "P05" ,
"role" : "platform_admin" ,
2026-09-13 22:31:16 +02:00
"implementation" : "implemented" ,
2026-09-13 12:20:02 +02:00
"tests" : [
2026-09-13 14:14:10 +02:00
"test_journey_roles.PlatformAdminJourneys.test_delivery_denial_redaction_retry_and_completed_guard" ,
2026-09-13 22:31:16 +02:00
"test_platform_support.PlatformSupportJourneys.test_service_capabilities_distinguish_configuration_from_health" ,
"test_service_operations.ServiceOperations.test_one_confirmed_delivery_and_completed_retry_guard" ,
"test_service_operations.ServiceOperations.test_role_csrf_and_stale_confirmation_cannot_submit" ,
"test_service_operations.ServiceOperations.test_failure_releases_claim_and_retry_is_available" ,
"test_service_operations.ServiceOperations.test_crashed_claim_reconciles_under_event_guard" ,
"test_service_operations.ServiceOperations.test_missing_mail_lane_never_marks_an_invitation_accepted" ,
"test_service_operations.ServiceOperations.test_status_is_checked_bounded_and_never_claims_receipt" ,
"test_service_operations.ServiceOperations.test_selected_mail_evidence_is_safe_and_read_only"
2026-09-13 12:20:02 +02:00
] ,
2026-09-13 22:31:16 +02:00
"remaining" : ""
2026-09-13 12:20:02 +02:00
} ,
{
"id" : "P06" ,
"role" : "platform_admin" ,
2026-09-14 00:10:24 +02:00
"implementation" : "implemented" ,
2026-09-13 12:20:02 +02:00
"tests" : [
2026-09-14 00:10:24 +02:00
"test_authentication_policy.AuthenticationPolicyJourney.test_aal1_account_access_does_not_grant_administration" ,
"test_authentication_policy.AuthenticationPolicyJourney.test_role_csrf_and_stale_mfa_deny_before_policy_service" ,
"test_authentication_policy.AuthenticationPolicyJourney.test_review_explains_lockout_scope_rollback_and_receipts" ,
"test_authentication_policy.AuthenticationPolicyJourney.test_outage_is_redacted_and_current_status_is_retryable" ,
"test_authentication_policy.AuthenticationPolicyJourney.test_policy_stepup_binds_only_supported_return_path"
2026-09-13 12:20:02 +02:00
] ,
2026-09-14 00:10:24 +02:00
"remaining" : ""
2026-09-13 12:20:02 +02:00
} ,
{
"id" : "P07" ,
"role" : "platform_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.PlatformAdminJourneys.test_tenant_retirement_requires_confirmation_and_stale_confirmation_fails" ,
"test_web.PortalApplicationTests.test_platform_tenant_lifecycle_is_delegated_to_the_authority"
] ,
"remaining" : ""
} ,
{
"id" : "P08" ,
"role" : "platform_admin" ,
"implementation" : "implemented" ,
"tests" : [
"test_journey_roles.PlatformAdminJourneys.test_delivery_denial_redaction_retry_and_completed_guard" ,
2026-09-13 14:14:10 +02:00
"test_journey_roles.TenantAdminJourneys.test_audit_is_tenant_scoped_and_never_dumps_payload" ,
"test_platform_support.PlatformSupportJourneys.test_operator_correlates_actions_and_delivery_without_raw_content" ,
"test_platform_support.PlatformSupportJourneys.test_activity_denies_nonoperators_and_mutations" ,
"test_platform_support.PlatformSupportJourneys.test_exact_filters_apply_before_display_limit_and_missing_is_explicit" ,
"test_platform_support.PlatformSupportJourneys.test_filter_values_are_escaped_and_bounded"
2026-09-13 12:20:02 +02:00
] ,
"remaining" : ""
}
]
}