filter(static fn (mixed $row): bool => is_array($row) && is_string($row['type'] ?? null)) ->map(static fn (array $row): string => (string) $row['type']) ->unique() ->values() ->all(); foreach ($types as $type) { $resource = config("graph_contracts.types.{$type}.resource"); expect($resource) ->toBeString("Missing graph contract resource for {$type}") ->not->toBe(''); } }); it('Spec081 keeps required assignment contract paths for hydrated configuration policies', function (): void { $assignmentHydrationTypes = [ 'settingsCatalogPolicy', 'endpointSecurityPolicy', 'securityBaselinePolicy', ]; foreach ($assignmentHydrationTypes as $type) { $path = config("graph_contracts.types.{$type}.assignments_list_path"); expect($path) ->toBeString("Missing assignments_list_path contract for {$type}") ->not->toBe(''); } });