From b704e33188499332d69b8c00cd76797804e3e891 Mon Sep 17 00:00:00 2001 From: Taylor Eernisse Date: Sun, 8 Feb 2026 14:33:53 -0500 Subject: [PATCH] feat(sync): surface MR diff fetch/fail counters in sync output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds mr_diffs_fetched and mr_diffs_failed fields to IngestResult and SyncResult, threads them through the orchestrator aggregation, includes them in the structured tracing span and human-readable sync summary. Previously MR diff failures were silently swallowed — now they appear alongside resource event counts for full pipeline observability. Co-Authored-By: Claude Opus 4.6 --- src/cli/commands/ingest.rs | 4 ++++ src/cli/commands/sync.rs | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/cli/commands/ingest.rs b/src/cli/commands/ingest.rs index e9a7f63..fd27a1a 100644 --- a/src/cli/commands/ingest.rs +++ b/src/cli/commands/ingest.rs @@ -42,6 +42,8 @@ pub struct IngestResult { pub notes_upserted: usize, pub resource_events_fetched: usize, pub resource_events_failed: usize, + pub mr_diffs_fetched: usize, + pub mr_diffs_failed: usize, } #[derive(Debug, Default, Clone, Serialize)] @@ -606,6 +608,8 @@ async fn run_ingest_inner( total.mrs_skipped_discussion_sync += result.mrs_skipped_discussion_sync; total.resource_events_fetched += result.resource_events_fetched; total.resource_events_failed += result.resource_events_failed; + total.mr_diffs_fetched += result.mr_diffs_fetched; + total.mr_diffs_failed += result.mr_diffs_failed; } } } diff --git a/src/cli/commands/sync.rs b/src/cli/commands/sync.rs index 391fcd9..c3d747e 100644 --- a/src/cli/commands/sync.rs +++ b/src/cli/commands/sync.rs @@ -35,6 +35,8 @@ pub struct SyncResult { pub discussions_fetched: usize, pub resource_events_fetched: usize, pub resource_events_failed: usize, + pub mr_diffs_fetched: usize, + pub mr_diffs_failed: usize, pub documents_regenerated: usize, pub documents_embedded: usize, } @@ -152,6 +154,8 @@ pub async fn run_sync( result.discussions_fetched += mrs_result.discussions_fetched; result.resource_events_fetched += mrs_result.resource_events_fetched; result.resource_events_failed += mrs_result.resource_events_failed; + result.mr_diffs_fetched += mrs_result.mr_diffs_fetched; + result.mr_diffs_failed += mrs_result.mr_diffs_failed; spinner.finish_and_clear(); if signal.is_cancelled() { @@ -264,6 +268,8 @@ pub async fn run_sync( discussions = result.discussions_fetched, resource_events = result.resource_events_fetched, resource_events_failed = result.resource_events_failed, + mr_diffs = result.mr_diffs_fetched, + mr_diffs_failed = result.mr_diffs_failed, docs = result.documents_regenerated, embedded = result.documents_embedded, "Sync pipeline complete" @@ -287,6 +293,12 @@ pub fn print_sync( " Discussions fetched: {}", result.discussions_fetched ); + if result.mr_diffs_fetched > 0 || result.mr_diffs_failed > 0 { + println!(" MR diffs fetched: {}", result.mr_diffs_fetched); + if result.mr_diffs_failed > 0 { + println!(" MR diffs failed: {}", result.mr_diffs_failed); + } + } if result.resource_events_fetched > 0 || result.resource_events_failed > 0 { println!( " Resource events fetched: {}",