feat: observability logs across entire query + compaction pipeline
CI / CI (pull_request) Successful in 11m38s

All components now emit target="observability" structured logs:

chunk_optimizer:
  event=chunk_optimize: input, after_threshold_filter, after_dedup,
    dedup_removed, selected, budget_bytes

result_compressor:
  event=result_compress: input_count, estimated_bytes, compressed_bytes,
    budget_bytes, strategy

query_router:
  event=query_route: route, candidates, prefiltered, selected, latency_ms

cache_alignment:
  event=cache_preload: preloaded, cache_hits, cache_misses, hit_ratio

full_pipeline:
  event=full_pipeline_complete: query, candidates, prefiltered, optimized,
    dedup_removed, boosts_applied, cache_hit_ratio, budget_bytes, total_ms

compaction:
  event=compaction_complete: mode, duration_ms, duplicate_edges_deleted,
    stale_facts_deleted, semantic_merged, llm_calls, bytes_freed

781 tests pass.
This commit is contained in:
2026-09-10 10:25:40 +09:00
parent bd3303f7fa
commit a616c0ebc2
6 changed files with 95 additions and 2 deletions
+16 -1
View File
@@ -211,17 +211,32 @@ impl ChunkOptimizer {
/// End-to-end optimization pipeline
pub fn optimize(&self, chunks: Vec<OptimizableChunk>) -> (Vec<OptimizableChunk>, SelectionMetrics) {
let input_count = chunks.len();
// Step 1: Filter by threshold
let filtered = self.threshold_filter.filter(chunks.clone());
let after_filter = filtered.len();
// Step 2: Deduplicate
let (deduplicated, dedup_removed) = self.deduplicator.deduplicate(filtered);
let after_dedup = deduplicated.len();
// Step 3: Select within budget
let (selected, mut metrics) = self.budget_selector.select(deduplicated);
metrics.dedup_removed = dedup_removed;
tracing::info!(
target: "observability",
event = "chunk_optimize",
input = input_count,
after_threshold_filter = after_filter,
after_dedup = after_dedup,
dedup_removed = dedup_removed,
selected = selected.len(),
budget_bytes = metrics.total_bytes,
"Chunk optimization complete"
);
(selected, metrics)
}
}