feat(trace,file-history): add tracing instrumentation and diagnostic hints
Add structured tracing spans to trace and file-history pipelines so debug logging (-vv) shows path resolution counts, MR match counts, and discussion counts at each stage. This makes empty-result debugging straightforward. Add a hints field to TraceResult and FileHistoryResult that carries machine-readable diagnostic strings explaining *why* results may be empty (e.g., "Run 'lore sync' to fetch MR file changes"). The CLI renders these as info lines; robot mode includes them in JSON when non-empty. Also: fix filter_map(Result::ok) → collect::<Result> in trace.rs (same pattern fixed in prior commit for file_history/path_resolver), and switch conn.prepare → conn.prepare_cached for the MR query. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -50,17 +50,23 @@ pub fn print_trace(result: &TraceResult) {
|
||||
);
|
||||
}
|
||||
|
||||
// Show searched paths when there are renames but no chains
|
||||
if result.trace_chains.is_empty() {
|
||||
println!(
|
||||
"\n {} {}",
|
||||
Icons::info(),
|
||||
Theme::dim().render("No trace chains found for this file.")
|
||||
);
|
||||
println!(
|
||||
" {}",
|
||||
Theme::dim()
|
||||
.render("Hint: Run 'lore sync' to fetch MR file changes and cross-references.")
|
||||
);
|
||||
if !result.renames_followed && result.resolved_paths.len() == 1 {
|
||||
println!(
|
||||
" {} Searched: {}",
|
||||
Icons::info(),
|
||||
Theme::dim().render(&result.resolved_paths[0])
|
||||
);
|
||||
}
|
||||
for hint in &result.hints {
|
||||
println!(" {} {}", Icons::info(), Theme::dim().render(hint));
|
||||
}
|
||||
println!();
|
||||
return;
|
||||
}
|
||||
@@ -195,6 +201,7 @@ pub fn print_trace_json(result: &TraceResult, elapsed_ms: u64, line_requested: O
|
||||
"elapsed_ms": elapsed_ms,
|
||||
"total_chains": result.total_chains,
|
||||
"renames_followed": result.renames_followed,
|
||||
"hints": if result.hints.is_empty() { None } else { Some(&result.hints) },
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user