workspace_id) ? (int) $tenant->workspace_id : null; if ($workspaceId === null) { throw new InvalidArgumentException('Tenant-scoped audit events require tenant workspace_id.'); } return $this->auditRecorder->record( action: $action, context: $context, workspace: $tenant->workspace, tenant: $tenant, actor: AuditActorSnapshot::fromLegacy( type: $actorType ?? AuditActorType::infer($action instanceof AuditActionId ? $action->value : $action, $actorId, $actorEmail, $actorName, $context), id: $actorId, email: $actorEmail, label: $actorName, ), target: new AuditTargetSnapshot( type: $resourceType, id: $resourceId, label: $targetLabel, ), outcome: $status, recordedAt: CarbonImmutable::now(), summary: $summary, operationRunId: $operationRunId, ); } }