summary) ? $snapshot->summary : []; $payload = [ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'evidence_snapshot_id' => (int) $snapshot->getKey(), 'snapshot_fingerprint' => (string) $snapshot->fingerprint, 'snapshot_completeness' => (string) $snapshot->completeness_state, 'dimension_states' => collect(Arr::wrap($summary['dimensions'] ?? [])) ->map(static fn (mixed $dimension): array => [ 'key' => (string) data_get($dimension, 'key'), 'state' => (string) data_get($dimension, 'state'), 'required' => (bool) data_get($dimension, 'required', false), ]) ->sortBy('key') ->values() ->all(), 'counts' => [ 'finding_count' => (int) ($summary['finding_count'] ?? 0), 'report_count' => (int) ($summary['report_count'] ?? 0), 'operation_count' => (int) ($summary['operation_count'] ?? 0), ], ]; return hash('sha256', json_encode($payload, JSON_THROW_ON_ERROR)); } }