$outcomes */ public static function fromOutcomes(array $outcomes): self { $selector = $outcomes[TenantOperabilityQuestion::SelectorEligibility->value] ?? null; $discoverability = $outcomes[TenantOperabilityQuestion::AdministrativeDiscoverability->value] ?? null; $archive = $outcomes[TenantOperabilityQuestion::ArchiveEligibility->value] ?? null; $restore = $outcomes[TenantOperabilityQuestion::RestoreEligibility->value] ?? null; $resumeOnboarding = $outcomes[TenantOperabilityQuestion::ResumeOnboardingEligibility->value] ?? null; $canonical = $outcomes[TenantOperabilityQuestion::CanonicalLinkedRecordViewability->value] ?? null; $lifecycle = $selector?->lifecycle ?? $discoverability?->lifecycle ?? $archive?->lifecycle ?? $restore?->lifecycle ?? $resumeOnboarding?->lifecycle ?? $canonical?->lifecycle ?? TenantLifecycle::Active; return new self( lifecycle: $lifecycle, canViewTenantSurface: $discoverability?->allowed ?? $lifecycle->canViewTenantSurface(), canSelectAsContext: $selector?->allowed ?? $lifecycle->canSelectAsContext(), canOperate: $lifecycle->canOperate(), canArchive: $archive?->allowed ?? $lifecycle->canArchive(), canRestore: $restore?->allowed ?? $lifecycle->canRestore(), canResumeOnboarding: $resumeOnboarding?->allowed ?? $lifecycle->canResumeOnboarding(), canReferenceInWorkspaceMonitoring: $canonical?->allowed ?? $lifecycle->canReferenceInWorkspaceMonitoring(), ); } public function allowsAction(string $actionKey): bool { return match ($actionKey) { 'resume_onboarding' => $this->canResumeOnboarding, 'archive' => $this->canArchive, 'restore' => $this->canRestore, default => false, }; } public function primaryManagementActionKey(bool $preferOnboarding = false): ?string { if ($preferOnboarding && $this->canResumeOnboarding) { return 'resume_onboarding'; } if ($this->canRestore) { return 'restore'; } if ($this->canArchive) { return 'archive'; } return null; } }