From 129825b41d38aa1c2b16e5d0a922a31ea1677d3e Mon Sep 17 00:00:00 2001 From: ualtinok Date: Wed, 5 Aug 2026 20:17:57 +0200 Subject: [PATCH 1/3] probe: name every path spelling in the entry-point membership decision --- .../src/callgraph_store/dead_code_projection.rs | 10 ++++++++++ crates/aft/src/inspect/entry_points.rs | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/crates/aft/src/callgraph_store/dead_code_projection.rs b/crates/aft/src/callgraph_store/dead_code_projection.rs index 29f78940..a3197056 100644 --- a/crates/aft/src/callgraph_store/dead_code_projection.rs +++ b/crates/aft/src/callgraph_store/dead_code_projection.rs @@ -277,6 +277,16 @@ fn outbound_calls_from_store( fn entry_points_for_files(project_root: &Path, files: &[PathBuf]) -> BTreeSet { let resolved_entry_points = crate::inspect::resolve_entry_points(project_root); + // CI probe instrumentation (probe branch only): name every path spelling + // feeding the membership decision so the Windows-only miss is attributable. + eprintln!("PROBE projection root = {}", project_root.display()); + for file in files { + eprintln!( + "PROBE file = {} | is_entry_point = {}", + file.display(), + resolved_entry_points.is_entry_point(file) + ); + } files .iter() .filter(|file| resolved_entry_points.is_entry_point(file)) diff --git a/crates/aft/src/inspect/entry_points.rs b/crates/aft/src/inspect/entry_points.rs index b660053b..19cf2a42 100644 --- a/crates/aft/src/inspect/entry_points.rs +++ b/crates/aft/src/inspect/entry_points.rs @@ -784,7 +784,20 @@ fn insert_resolved_entry_point( fn contains_path(paths: &BTreeSet, file: &Path) -> bool { let snapshot = snapshot_path(file); - paths.contains(&snapshot) || paths.contains(&normalize_path(file)) + let hit = paths.contains(&snapshot) || paths.contains(&normalize_path(file)); + if !hit { + // CI probe instrumentation (probe branch only). + eprintln!("PROBE contains_path MISS for {}", file.display()); + eprintln!("PROBE snapshot form = {}", snapshot.display()); + eprintln!( + "PROBE normalize form = {}", + normalize_path(file).display() + ); + for p in paths.iter() { + eprintln!("PROBE set entry = {}", p.display()); + } + } + hit } fn snapshot_path(path: &Path) -> PathBuf { From b6f22b464e202abe8b00f83ea89b808a2342469a Mon Sep 17 00:00:00 2001 From: ualtinok Date: Wed, 5 Aug 2026 20:32:26 +0200 Subject: [PATCH 2/3] probe: dump verdict-side liveness inputs --- crates/aft/src/inspect/scanners/dead_code.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/crates/aft/src/inspect/scanners/dead_code.rs b/crates/aft/src/inspect/scanners/dead_code.rs index 567366e9..671f09bb 100644 --- a/crates/aft/src/inspect/scanners/dead_code.rs +++ b/crates/aft/src/inspect/scanners/dead_code.rs @@ -584,6 +584,26 @@ fn materialize_dead_code_contributions( group_outbound_calls_by_caller_file(project_root, &snapshot.outbound_calls); let oxc_by_file = oxc_verdicts_by_file(project_root, snapshot, &parsed, public_api_files); + // CI probe instrumentation (probe branch only): dump the verdict inputs + // for the Cargo-bin liveness decision. + eprintln!("PROBE2 verdict project_root = {}", project_root.display()); + for f in &liveness_root_files { + eprintln!("PROBE2 liveness_root_rel = {f}"); + } + for (f, exports) in &executable_root_exports_by_file { + eprintln!("PROBE2 exec_root_rel = {f} exports = {exports:?}"); + } + for (key, calls) in &outbound_calls_by_caller_file { + for call in calls.iter().take(4) { + eprintln!( + "PROBE2 outbound key = {} | caller_file = {} | callee = {}", + key.display(), + call.caller_file.display(), + call.callee_name + ); + } + } + parsed .into_iter() .map(|mut contribution| { From b77f7a744e406d26df5dd6ef5c1601f6a1b46970 Mon Sep 17 00:00:00 2001 From: ualtinok Date: Wed, 5 Aug 2026 20:40:05 +0200 Subject: [PATCH 3/3] probe: correct the outbound-call field name --- crates/aft/src/inspect/scanners/dead_code.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/aft/src/inspect/scanners/dead_code.rs b/crates/aft/src/inspect/scanners/dead_code.rs index 671f09bb..f108b163 100644 --- a/crates/aft/src/inspect/scanners/dead_code.rs +++ b/crates/aft/src/inspect/scanners/dead_code.rs @@ -596,10 +596,10 @@ fn materialize_dead_code_contributions( for (key, calls) in &outbound_calls_by_caller_file { for call in calls.iter().take(4) { eprintln!( - "PROBE2 outbound key = {} | caller_file = {} | callee = {}", + "PROBE2 outbound key = {} | caller_file = {} | target = {}", key.display(), call.caller_file.display(), - call.callee_name + call.target ); } }