From 6c071e7248583523e3cabf06765da2f2a4fa2012 Mon Sep 17 00:00:00 2001 From: Silo Server Developer Date: Thu, 28 May 2026 02:51:13 +0200 Subject: [PATCH] diag(matcher): debug-log provider search query + per-provider result counts Adds DEBUG logs in the ModeInitialMatch search path: each provider's result count for the query, and the assembled raw/candidate totals. Lets us see when a provider search returns zero ('no metadata found') vs a scoring/tie issue. Zero behavior change. --- internal/metadata/service.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/metadata/service.go b/internal/metadata/service.go index db4d5f0a..4b699f87 100644 --- a/internal/metadata/service.go +++ b/internal/metadata/service.go @@ -886,6 +886,12 @@ func (s *MetadataService) processInternal(ctx context.Context, req ProcessReques "provider", p.Slug(), "error", err) continue } + slog.Debug("metadata: provider search result", + "provider", p.Slug(), + "query_title", searchQuery.Title, + "query_year", searchQuery.Year, + "result_count", len(results), + ) for _, result := range results { if searchResultConflictsWithTrustedIDs(accumulatedIDs, result.ProviderIDs) { slog.Warn("metadata: skipping conflicting search result", @@ -902,6 +908,12 @@ func (s *MetadataService) processInternal(ctx context.Context, req ProcessReques } candidates := NormalizeCandidates(allResults, contentType) + slog.Debug("metadata: search candidates assembled", + "query_title", searchQuery.Title, + "query_year", searchQuery.Year, + "raw_results", len(allResults), + "candidates", len(candidates), + ) providerPriority := make([]string, 0, len(itemChain)) for _, p := range itemChain { providerPriority = append(providerPriority, p.Slug())