shouldDowngradeToMisc($passable)) { $result = new CategorizationResult( Category::OTHER_MISC, 0.65, 'group_only_low_signal', [ 'group_match' => $passable->bestResult->matchedBy, 'misc_analysis' => $passable->miscAnalysis, ] ); if ($passable->debug) { $passable->allResults[$this->getName()] = [ 'category_id' => $result->categoryId, 'confidence' => $result->confidence, 'matched_by' => $result->matchedBy, ]; } $passable->bestResult = $result; $passable->lockToMisc(); } return $next($passable); } protected function categorize(ReleaseContext $context): CategorizationResult { return $this->noMatch(); } private function shouldDowngradeToMisc(CategorizationPassable $passable): bool { return ! $passable->lockedToMisc && ($passable->miscAnalysis['lowSignal'] ?? false) === true && str_starts_with($passable->bestResult->matchedBy, 'group_name_'); } }