SYMBOL INDEX (290824 symbols across 2447 files) FILE: bv-graph-wasm/src/algorithms/articulation.rs function articulation_points (line 29) | pub fn articulation_points(graph: &DiGraph) -> Vec { function tarjan_dfs (line 71) | fn tarjan_dfs( function build_undirected_neighbors (line 116) | fn build_undirected_neighbors(graph: &DiGraph) -> Vec> { function bridges (line 136) | pub fn bridges(graph: &DiGraph) -> Vec<(usize, usize)> { function bridge_dfs (line 170) | fn bridge_dfs( function test_articulation_empty (line 207) | fn test_articulation_empty() { function test_articulation_single_node (line 214) | fn test_articulation_single_node() { function test_articulation_two_nodes (line 222) | fn test_articulation_two_nodes() { function test_articulation_chain (line 234) | fn test_articulation_chain() { function test_articulation_triangle (line 250) | fn test_articulation_triangle() { function test_articulation_star (line 266) | fn test_articulation_star() { function test_articulation_bowtie (line 285) | fn test_articulation_bowtie() { function test_articulation_bridge_chain (line 318) | fn test_articulation_bridge_chain() { function test_bridges_chain (line 337) | fn test_bridges_chain() { function test_bridges_triangle (line 352) | fn test_bridges_triangle() { function test_articulation_disconnected (line 367) | fn test_articulation_disconnected() { FILE: bv-graph-wasm/src/algorithms/betweenness.rs function betweenness (line 17) | pub fn betweenness(graph: &DiGraph) -> Vec { function betweenness_approx (line 49) | pub fn betweenness_approx(graph: &DiGraph, sample_size: usize, seed: Opt... function single_source_betweenness (line 84) | fn single_source_betweenness(graph: &DiGraph, source: usize, bc: &mut [f... function sample_nodes (line 135) | fn sample_nodes(n: usize, k: usize, seed: Option) -> Vec { function recommend_sample_size (line 169) | pub fn recommend_sample_size(node_count: usize) -> usize { function test_betweenness_empty (line 183) | fn test_betweenness_empty() { function test_betweenness_single_node (line 190) | fn test_betweenness_single_node() { function test_betweenness_two_nodes (line 199) | fn test_betweenness_two_nodes() { function test_betweenness_line (line 213) | fn test_betweenness_line() { function test_betweenness_diamond (line 233) | fn test_betweenness_diamond() { function test_betweenness_star_inward (line 260) | fn test_betweenness_star_inward() { function test_betweenness_cycle (line 283) | fn test_betweenness_cycle() { function test_betweenness_approx_fallback (line 301) | fn test_betweenness_approx_fallback() { function test_betweenness_approx_deterministic (line 320) | fn test_betweenness_approx_deterministic() { function test_betweenness_chain (line 339) | fn test_betweenness_chain() { function test_recommend_sample_size (line 365) | fn test_recommend_sample_size() { FILE: bv-graph-wasm/src/algorithms/coverage.rs type CoverageItem (line 14) | pub struct CoverageItem { type CoverageResult (line 23) | pub struct CoverageResult { function coverage_set (line 45) | pub fn coverage_set(graph: &DiGraph, limit: usize) -> CoverageResult { function coverage_set_default (line 128) | pub fn coverage_set_default(graph: &DiGraph) -> CoverageResult { function coverage_nodes (line 133) | pub fn coverage_nodes(graph: &DiGraph, limit: usize) -> Vec { function make_graph (line 145) | fn make_graph(edges: &[(usize, usize)]) -> DiGraph { function test_empty_graph (line 162) | fn test_empty_graph() { function test_single_edge (line 172) | fn test_single_edge() { function test_star_graph (line 184) | fn test_star_graph() { function test_chain_graph (line 198) | fn test_chain_graph() { function test_limit_respected (line 211) | fn test_limit_respected() { function test_coverage_ratio (line 220) | fn test_coverage_ratio() { function test_bidirectional_edges (line 231) | fn test_bidirectional_edges() { FILE: bv-graph-wasm/src/algorithms/critical_path.rs function critical_path_heights (line 19) | pub fn critical_path_heights(graph: &DiGraph) -> Vec { function critical_path_nodes (line 48) | pub fn critical_path_nodes(graph: &DiGraph) -> Vec { function critical_path_length (line 65) | pub fn critical_path_length(graph: &DiGraph) -> f64 { function test_empty_graph (line 76) | fn test_empty_graph() { function test_single_node (line 83) | fn test_single_node() { function test_linear_chain (line 91) | fn test_linear_chain() { function test_diamond (line 107) | fn test_diamond() { function test_parallel_chains (line 131) | fn test_parallel_chains() { function test_cyclic_graph (line 155) | fn test_cyclic_graph() { function test_critical_path_nodes (line 171) | fn test_critical_path_nodes() { function test_multiple_critical_path_nodes (line 186) | fn test_multiple_critical_path_nodes() { function test_wide_graph (line 206) | fn test_wide_graph() { FILE: bv-graph-wasm/src/algorithms/cycles.rs type SCCResult (line 13) | pub struct SCCResult { function tarjan_scc (line 26) | pub fn tarjan_scc(graph: &DiGraph) -> SCCResult { function has_cycles (line 110) | pub fn has_cycles(graph: &DiGraph) -> bool { function enumerate_cycles (line 125) | pub fn enumerate_cycles(graph: &DiGraph, max_cycles: usize) -> Vec... type CycleBreakItem (line 270) | pub struct CycleBreakItem { type CycleBreakResult (line 287) | pub struct CycleBreakResult { function cycle_break_suggestions (line 309) | pub fn cycle_break_suggestions( function quick_cycle_break_edges (line 393) | pub fn quick_cycle_break_edges(graph: &DiGraph, limit: usize) -> Vec Self { function eigenvector (line 31) | pub fn eigenvector(graph: &DiGraph, config: &EigenvectorConfig) -> Vec Vec { function test_eigenvector_empty (line 95) | fn test_eigenvector_empty() { function test_eigenvector_single_node (line 102) | fn test_eigenvector_single_node() { function test_eigenvector_chain (line 112) | fn test_eigenvector_chain() { function test_eigenvector_cycle (line 134) | fn test_eigenvector_cycle() { function test_eigenvector_star (line 155) | fn test_eigenvector_star() { function test_eigenvector_hub_with_cycle (line 175) | fn test_eigenvector_hub_with_cycle() { function test_eigenvector_diamond (line 200) | fn test_eigenvector_diamond() { function test_eigenvector_unit_length (line 228) | fn test_eigenvector_unit_length() { function test_eigenvector_disconnected (line 248) | fn test_eigenvector_disconnected() { function test_eigenvector_convergence (line 267) | fn test_eigenvector_convergence() { FILE: bv-graph-wasm/src/algorithms/hits.rs type HITSConfig (line 14) | pub struct HITSConfig { method default (line 22) | fn default() -> Self { type HITSResult (line 32) | pub struct HITSResult { function hits (line 55) | pub fn hits(graph: &DiGraph, config: &HITSConfig) -> HITSResult { function hits_default (line 123) | pub fn hits_default(graph: &DiGraph) -> HITSResult { function normalize_l2 (line 128) | fn normalize_l2(vec: &mut [f64]) { function test_hits_empty (line 142) | fn test_hits_empty() { function test_hits_single_node (line 150) | fn test_hits_single_node() { function test_hits_chain (line 159) | fn test_hits_chain() { function test_hits_star_hub (line 182) | fn test_hits_star_hub() { function test_hits_star_authority (line 208) | fn test_hits_star_authority() { function test_hits_bipartite (line 234) | fn test_hits_bipartite() { function test_hits_cycle (line 259) | fn test_hits_cycle() { function test_hits_scores_normalized (line 284) | fn test_hits_scores_normalized() { function test_hits_convergence (line 315) | fn test_hits_convergence() { FILE: bv-graph-wasm/src/algorithms/k_paths.rs type CriticalPath (line 12) | pub struct CriticalPath { type KPathsResult (line 21) | pub struct KPathsResult { function k_critical_paths (line 45) | pub fn k_critical_paths(graph: &DiGraph, k: usize) -> KPathsResult { function k_critical_paths_default (line 121) | pub fn k_critical_paths_default(graph: &DiGraph) -> KPathsResult { function k_path_nodes (line 126) | pub fn k_path_nodes(graph: &DiGraph, k: usize) -> Vec> { function make_graph (line 138) | fn make_graph(edges: &[(usize, usize)]) -> DiGraph { function test_empty_graph (line 155) | fn test_empty_graph() { function test_single_node (line 163) | fn test_single_node() { function test_single_edge (line 172) | fn test_single_edge() { function test_chain (line 183) | fn test_chain() { function test_diamond (line 196) | fn test_diamond() { function test_multiple_paths (line 208) | fn test_multiple_paths() { function test_k_limit (line 222) | fn test_k_limit() { function test_cycle_returns_empty (line 231) | fn test_cycle_returns_empty() { FILE: bv-graph-wasm/src/algorithms/kcore.rs function kcore (line 16) | pub fn kcore(graph: &DiGraph) -> Vec { function degeneracy (line 90) | pub fn degeneracy(graph: &DiGraph) -> u32 { function nodes_in_kcore (line 95) | pub fn nodes_in_kcore(graph: &DiGraph, k: u32) -> Vec { function test_kcore_empty (line 109) | fn test_kcore_empty() { function test_kcore_single_node (line 116) | fn test_kcore_single_node() { function test_kcore_chain (line 124) | fn test_kcore_chain() { function test_kcore_triangle (line 147) | fn test_kcore_triangle() { function test_kcore_star (line 166) | fn test_kcore_star() { function test_kcore_clique_with_pendant (line 187) | fn test_kcore_clique_with_pendant() { function test_kcore_disconnected (line 225) | fn test_kcore_disconnected() { function test_degeneracy (line 237) | fn test_degeneracy() { function test_nodes_in_kcore (line 251) | fn test_nodes_in_kcore() { function test_kcore_diamond (line 275) | fn test_kcore_diamond() { FILE: bv-graph-wasm/src/algorithms/pagerank.rs type PageRankConfig (line 9) | pub struct PageRankConfig { method default (line 19) | fn default() -> Self { function pagerank (line 34) | pub fn pagerank(graph: &DiGraph, config: &PageRankConfig) -> Vec { function pagerank_default (line 96) | pub fn pagerank_default(graph: &DiGraph) -> Vec { function test_pagerank_empty (line 105) | fn test_pagerank_empty() { function test_pagerank_single_node (line 112) | fn test_pagerank_single_node() { function test_pagerank_chain (line 122) | fn test_pagerank_chain() { function test_pagerank_cycle (line 138) | fn test_pagerank_cycle() { function test_pagerank_star (line 155) | fn test_pagerank_star() { function test_pagerank_two_chains (line 180) | fn test_pagerank_two_chains() { function test_pagerank_sum_to_one (line 200) | fn test_pagerank_sum_to_one() { function test_pagerank_dangling_nodes (line 220) | fn test_pagerank_dangling_nodes() { function test_pagerank_convergence (line 241) | fn test_pagerank_convergence() { function test_pagerank_diamond (line 267) | fn test_pagerank_diamond() { FILE: bv-graph-wasm/src/algorithms/parallel_cut.rs type ParallelCutItem (line 11) | pub struct ParallelCutItem { type ParallelCutResult (line 22) | pub struct ParallelCutResult { function parallel_cut_suggestions (line 43) | pub fn parallel_cut_suggestions( function parallel_cut_default (line 107) | pub fn parallel_cut_default(graph: &DiGraph, closed_set: &[bool]) -> Par... function unblock_ranking (line 113) | pub fn unblock_ranking(graph: &DiGraph, closed_set: &[bool], limit: usiz... function make_graph (line 144) | fn make_graph(edges: &[(usize, usize)]) -> DiGraph { function test_empty_graph (line 161) | fn test_empty_graph() { function test_single_node (line 171) | fn test_single_node() { function test_chain_no_gain (line 183) | fn test_chain_no_gain() { function test_fork_has_gain (line 195) | fn test_fork_has_gain() { function test_partially_closed (line 209) | fn test_partially_closed() { function test_diamond_with_one_closed (line 224) | fn test_diamond_with_one_closed() { function test_multiple_forks (line 237) | fn test_multiple_forks() { function test_limit_respected (line 252) | fn test_limit_respected() { function test_current_actionable_count (line 271) | fn test_current_actionable_count() { FILE: bv-graph-wasm/src/algorithms/slack.rs function slack (line 24) | pub fn slack(graph: &DiGraph) -> Vec { function zero_slack_nodes (line 80) | pub fn zero_slack_nodes(graph: &DiGraph) -> Vec { function total_float (line 90) | pub fn total_float(graph: &DiGraph) -> f64 { function test_slack_empty (line 99) | fn test_slack_empty() { function test_slack_single_node (line 106) | fn test_slack_single_node() { function test_slack_chain (line 115) | fn test_slack_chain() { function test_slack_parallel_chains (line 132) | fn test_slack_parallel_chains() { function test_slack_diamond (line 157) | fn test_slack_diamond() { function test_slack_with_shortcut (line 183) | fn test_slack_with_shortcut() { function test_slack_branch_with_different_lengths (line 209) | fn test_slack_branch_with_different_lengths() { function test_slack_cyclic (line 242) | fn test_slack_cyclic() { function test_zero_slack_nodes (line 258) | fn test_zero_slack_nodes() { function test_total_float (line 279) | fn test_total_float() { function test_slack_non_negative (line 296) | fn test_slack_non_negative() { FILE: bv-graph-wasm/src/algorithms/subgraph.rs function extract_subgraph (line 23) | pub fn extract_subgraph(graph: &DiGraph, node_indices: &[usize]) -> DiGr... function extract_subgraph_by_ids (line 60) | pub fn extract_subgraph_by_ids(graph: &DiGraph, ids: &[&str]) -> DiGraph { function reachable_subgraph_from (line 69) | pub fn reachable_subgraph_from(graph: &DiGraph, source: usize) -> DiGraph { function reachable_from (line 78) | pub fn reachable_from(graph: &DiGraph, source: usize) -> Vec { function reachable_to (line 109) | pub fn reachable_to(graph: &DiGraph, target: usize) -> Vec { function dependency_cone (line 137) | pub fn dependency_cone(graph: &DiGraph, node: usize) -> Vec { function test_subgraph_empty (line 155) | fn test_subgraph_empty() { function test_subgraph_single_node (line 163) | fn test_subgraph_single_node() { function test_subgraph_preserves_edges (line 175) | fn test_subgraph_preserves_edges() { function test_subgraph_drops_external_edges (line 193) | fn test_subgraph_drops_external_edges() { function test_subgraph_diamond (line 209) | fn test_subgraph_diamond() { function test_subgraph_by_ids (line 237) | fn test_subgraph_by_ids() { function test_reachable_from (line 251) | fn test_reachable_from() { function test_reachable_to (line 279) | fn test_reachable_to() { function test_dependency_cone (line 299) | fn test_dependency_cone() { function test_reachable_subgraph (line 319) | fn test_reachable_subgraph() { function test_subgraph_runs_algorithms (line 341) | fn test_subgraph_runs_algorithms() { function test_subgraph_invalid_indices (line 363) | fn test_subgraph_invalid_indices() { function test_subgraph_duplicate_indices (line 374) | fn test_subgraph_duplicate_indices() { FILE: bv-graph-wasm/src/algorithms/topk_set.rs type TopKSetItem (line 13) | pub struct TopKSetItem { type TopKSetResult (line 24) | pub struct TopKSetResult { function topk_set (line 50) | pub fn topk_set(graph: &DiGraph, closed_set: &[bool], k: usize) -> TopKS... function topk_set_default (line 122) | pub fn topk_set_default(graph: &DiGraph, closed_set: &[bool]) -> TopKSet... function make_graph (line 130) | fn make_graph(edges: &[(usize, usize)]) -> DiGraph { function test_empty_graph (line 147) | fn test_empty_graph() { function test_single_node (line 155) | fn test_single_node() { function test_simple_chain (line 165) | fn test_simple_chain() { function test_fork_pattern (line 179) | fn test_fork_pattern() { function test_multiple_hubs (line 191) | fn test_multiple_hubs() { function test_submodularity (line 207) | fn test_submodularity() { function test_partially_closed (line 219) | fn test_partially_closed() { function test_limit_respected (line 232) | fn test_limit_respected() { function test_deterministic (line 247) | fn test_deterministic() { function test_monotonic_marginal_gains (line 261) | fn test_monotonic_marginal_gains() { function test_open_nodes_count (line 278) | fn test_open_nodes_count() { function test_all_closed (line 288) | fn test_all_closed() { function test_deep_cascade (line 298) | fn test_deep_cascade() { FILE: bv-graph-wasm/src/algorithms/topo.rs type TopoSortResult (line 11) | pub struct TopoSortResult { function topological_sort (line 29) | pub fn topological_sort(graph: &DiGraph) -> Option> { function is_dag (line 67) | pub fn is_dag(graph: &DiGraph) -> bool { function topological_sort_result (line 72) | pub fn topological_sort_result(graph: &DiGraph) -> TopoSortResult { function test_empty_graph (line 87) | fn test_empty_graph() { function test_single_node (line 94) | fn test_single_node() { function test_linear_chain (line 102) | fn test_linear_chain() { function test_diamond (line 116) | fn test_diamond() { function test_cycle_detection (line 142) | fn test_cycle_detection() { function test_self_loop (line 157) | fn test_self_loop() { function test_disconnected (line 168) | fn test_disconnected() { function test_is_dag (line 193) | fn test_is_dag() { function test_deterministic (line 209) | fn test_deterministic() { FILE: bv-graph-wasm/src/graph.rs type DiGraph (line 10) | pub struct DiGraph { method new (line 40) | pub fn new() -> DiGraph { method with_capacity (line 52) | pub fn with_capacity(node_capacity: usize, edge_capacity: usize) -> Di... method add_node (line 65) | pub fn add_node(&mut self, id: &str) -> usize { method add_edge (line 79) | pub fn add_edge(&mut self, from: usize, to: usize) { method node_count (line 97) | pub fn node_count(&self) -> usize { method edge_count (line 103) | pub fn edge_count(&self) -> usize { method density (line 108) | pub fn density(&self) -> f64 { method node_id (line 120) | pub fn node_id(&self, idx: usize) -> Option { method node_idx (line 126) | pub fn node_idx(&self, id: &str) -> Option { method node_ids (line 132) | pub fn node_ids(&self) -> JsValue { method out_degree (line 138) | pub fn out_degree(&self, node: usize) -> usize { method in_degree (line 144) | pub fn in_degree(&self, node: usize) -> usize { method out_degrees (line 150) | pub fn out_degrees(&self) -> JsValue { method in_degrees (line 157) | pub fn in_degrees(&self) -> JsValue { method to_json (line 164) | pub fn to_json(&self) -> String { method from_json (line 174) | pub fn from_json(json: &str) -> Result { method successors (line 189) | pub fn successors(&self, node: usize) -> JsValue { method predecessors (line 195) | pub fn predecessors(&self, node: usize) -> JsValue { method topological_sort (line 203) | pub fn topological_sort(&self) -> JsValue { method is_dag (line 213) | pub fn is_dag(&self) -> bool { method critical_path_heights (line 221) | pub fn critical_path_heights(&self) -> JsValue { method critical_path_nodes (line 229) | pub fn critical_path_nodes(&self) -> JsValue { method critical_path_length (line 237) | pub fn critical_path_length(&self) -> f64 { method pagerank (line 245) | pub fn pagerank(&self, damping: f64, max_iterations: u32) -> JsValue { method pagerank_default (line 258) | pub fn pagerank_default(&self) -> JsValue { method eigenvector (line 267) | pub fn eigenvector(&self, iterations: u32) -> JsValue { method eigenvector_default (line 279) | pub fn eigenvector_default(&self) -> JsValue { method betweenness (line 289) | pub fn betweenness(&self) -> JsValue { method betweenness_approx (line 299) | pub fn betweenness_approx(&self, sample_size: usize) -> JsValue { method hits (line 308) | pub fn hits(&self, tolerance: f64, max_iterations: u32) -> JsValue { method hits_default (line 320) | pub fn hits_default(&self) -> JsValue { method kcore (line 330) | pub fn kcore(&self) -> JsValue { method degeneracy (line 338) | pub fn degeneracy(&self) -> u32 { method articulation_points (line 347) | pub fn articulation_points(&self) -> JsValue { method bridges (line 357) | pub fn bridges(&self) -> JsValue { method tarjan_scc (line 366) | pub fn tarjan_scc(&self) -> JsValue { method has_cycles (line 374) | pub fn has_cycles(&self) -> bool { method enumerate_cycles (line 382) | pub fn enumerate_cycles(&self, max_cycles: usize) -> JsValue { method cycle_break_suggestions (line 392) | pub fn cycle_break_suggestions(&self, limit: usize, max_cycles_to_enum... method quick_cycle_break_edges (line 402) | pub fn quick_cycle_break_edges(&self, limit: usize) -> JsValue { method slack (line 413) | pub fn slack(&self) -> JsValue { method total_float (line 421) | pub fn total_float(&self) -> f64 { method coverage_set (line 430) | pub fn coverage_set(&self, limit: usize) -> JsValue { method coverage_set_default (line 438) | pub fn coverage_set_default(&self) -> JsValue { method coverage_nodes (line 446) | pub fn coverage_nodes(&self, limit: usize) -> JsValue { method k_critical_paths (line 455) | pub fn k_critical_paths(&self, k: usize) -> JsValue { method k_critical_paths_default (line 463) | pub fn k_critical_paths_default(&self) -> JsValue { method parallel_cut_suggestions (line 473) | pub fn parallel_cut_suggestions(&self, closed_set: &[u8], limit: usize... method parallel_cut_default (line 483) | pub fn parallel_cut_default(&self, closed_set: &[u8]) -> JsValue { method unblock_ranking (line 494) | pub fn unblock_ranking(&self, closed_set: &[u8], limit: usize) -> JsVa... method subgraph (line 504) | pub fn subgraph(&self, indices: &[usize]) -> DiGraph { method reachable_from (line 511) | pub fn reachable_from(&self, source: usize) -> JsValue { method reachable_to (line 519) | pub fn reachable_to(&self, target: usize) -> JsValue { method dependency_cone (line 527) | pub fn dependency_cone(&self, node: usize) -> JsValue { method blockers (line 540) | pub fn blockers(&self, node: usize) -> JsValue { method dependents (line 549) | pub fn dependents(&self, node: usize) -> JsValue { method actionable_nodes (line 558) | pub fn actionable_nodes(&self, closed_set: &[u8]) -> JsValue { method open_blockers (line 568) | pub fn open_blockers(&self, node: usize, closed_set: &[u8]) -> JsValue { method open_blocker_count (line 578) | pub fn open_blocker_count(&self, node: usize, closed_set: &[u8]) -> us... method what_if_close (line 592) | pub fn what_if_close(&self, node: usize, closed_set: &[u8]) -> JsValue { method what_if_close_batch (line 602) | pub fn what_if_close_batch(&self, nodes: &[usize], closed_set: &[u8]) ... method top_what_if (line 613) | pub fn top_what_if(&self, closed_set: &[u8], limit: usize) -> JsValue { method all_what_if (line 624) | pub fn all_what_if(&self, closed_set: &[u8], limit: usize) -> JsValue { method topk_set (line 640) | pub fn topk_set(&self, closed_set: &[u8], k: usize) -> JsValue { method topk_set_default (line 650) | pub fn topk_set_default(&self, closed_set: &[u8]) -> JsValue { method successors_slice (line 661) | pub(crate) fn successors_slice(&self, node: usize) -> &[usize] { method predecessors_slice (line 666) | pub(crate) fn predecessors_slice(&self, node: usize) -> &[usize] { method edges (line 671) | pub(crate) fn edges(&self) -> impl Iterator + '_ { method edges_vec (line 679) | fn edges_vec(&self) -> Vec<(usize, usize)> { method len (line 684) | pub(crate) fn len(&self) -> usize { method is_empty (line 690) | pub(crate) fn is_empty(&self) -> bool { type GraphSnapshot (line 31) | pub struct GraphSnapshot { method default (line 696) | fn default() -> Self { function test_new_graph (line 706) | fn test_new_graph() { function test_add_node_idempotent (line 713) | fn test_add_node_idempotent() { function test_add_edge_idempotent (line 722) | fn test_add_edge_idempotent() { function test_degrees (line 732) | fn test_degrees() { function test_density (line 751) | fn test_density() { function test_json_roundtrip (line 766) | fn test_json_roundtrip() { FILE: bv-graph-wasm/src/lib.rs function init (line 29) | pub fn init() { function version (line 36) | pub fn version() -> String { FILE: bv-graph-wasm/src/reachability.rs function reachable_from (line 11) | pub fn reachable_from(graph: &DiGraph, source: usize) -> Vec { function reachable_to (line 39) | pub fn reachable_to(graph: &DiGraph, target: usize) -> Vec { function blockers (line 67) | pub fn blockers(graph: &DiGraph, node: usize) -> Vec { function dependents (line 73) | pub fn dependents(graph: &DiGraph, node: usize) -> Vec { function is_actionable (line 79) | pub fn is_actionable(graph: &DiGraph, node: usize, closed_set: &[bool]) ... function actionable_nodes (line 88) | pub fn actionable_nodes(graph: &DiGraph, closed_set: &[bool]) -> Vec Self { function what_if_close (line 48) | pub fn what_if_close(graph: &DiGraph, node: usize, closed_set: &[bool]) ... function count_cascade (line 100) | fn count_cascade(graph: &DiGraph, roots: &[usize], initial_closed: &[boo... type TopWhatIfEntry (line 152) | pub struct TopWhatIfEntry { function top_what_if (line 168) | pub fn top_what_if(graph: &DiGraph, closed_set: &[bool], limit: usize) -... function all_what_if (line 201) | pub fn all_what_if(graph: &DiGraph, closed_set: &[bool], limit: usize) -... function what_if_close_batch (line 238) | pub fn what_if_close_batch( function test_what_if_empty (line 298) | fn test_what_if_empty() { function test_what_if_single_node (line 306) | fn test_what_if_single_node() { function test_what_if_simple_chain (line 315) | fn test_what_if_simple_chain() { function test_what_if_diamond (line 336) | fn test_what_if_diamond() { function test_what_if_partial_close (line 362) | fn test_what_if_partial_close() { function test_what_if_multi_blocker_not_ready (line 381) | fn test_what_if_multi_blocker_not_ready() { function test_what_if_already_closed (line 399) | fn test_what_if_already_closed() { function test_what_if_wide_fanout (line 412) | fn test_what_if_wide_fanout() { function test_what_if_deep_cascade (line 431) | fn test_what_if_deep_cascade() { function test_top_what_if (line 449) | fn test_top_what_if() { function test_top_what_if_limit (line 481) | fn test_top_what_if_limit() { function test_what_if_batch_simple (line 496) | fn test_what_if_batch_simple() { function test_what_if_batch_cascade (line 514) | fn test_what_if_batch_cascade() { function test_all_what_if (line 540) | fn test_all_what_if() { function test_what_if_cycle_handling (line 557) | fn test_what_if_cycle_handling() { function test_what_if_disconnected_components (line 579) | fn test_what_if_disconnected_components() { function test_cascade_order (line 604) | fn test_cascade_order() { FILE: bv-graph-wasm/tests/golden_test.rs type TestGraphFile (line 17) | struct TestGraphFile { type GoldenMetrics (line 27) | struct GoldenMetrics { function load_test_graph (line 48) | fn load_test_graph(path: &Path) -> (DiGraph, TestGraphFile) { function load_golden_metrics (line 64) | fn load_golden_metrics(path: &Path) -> GoldenMetrics { function assert_float_eq (line 70) | fn assert_float_eq(actual: f64, expected: f64, tolerance: f64, name: &st... function validate_array_against_map (line 80) | fn validate_array_against_map( constant TESTDATA_DIR (line 103) | const TESTDATA_DIR: &str = "../testdata"; function graph_and_golden_paths (line 105) | fn graph_and_golden_paths(name: &str) -> (std::path::PathBuf, std::path:... function skip_if_missing (line 111) | fn skip_if_missing(graph_path: &Path, golden_path: &Path) -> bool { function test_golden_chain_10_basic (line 124) | fn test_golden_chain_10_basic() { function test_golden_diamond_5_basic (line 136) | fn test_golden_diamond_5_basic() { function test_golden_star_10_basic (line 149) | fn test_golden_star_10_basic() { function test_golden_cycle_5_detection (line 162) | fn test_golden_cycle_5_detection() { function test_golden_complex_20_basic (line 174) | fn test_golden_complex_20_basic() { function test_golden_chain_10_pagerank (line 190) | fn test_golden_chain_10_pagerank() { function test_golden_diamond_5_pagerank (line 202) | fn test_golden_diamond_5_pagerank() { function test_golden_star_10_pagerank (line 214) | fn test_golden_star_10_pagerank() { function test_golden_complex_20_pagerank (line 226) | fn test_golden_complex_20_pagerank() { function test_golden_chain_10_betweenness (line 242) | fn test_golden_chain_10_betweenness() { function test_golden_diamond_5_betweenness (line 254) | fn test_golden_diamond_5_betweenness() { function test_golden_complex_20_betweenness (line 266) | fn test_golden_complex_20_betweenness() { function test_golden_chain_10_critical_path (line 282) | fn test_golden_chain_10_critical_path() { function test_golden_diamond_5_critical_path (line 294) | fn test_golden_diamond_5_critical_path() { function test_golden_complex_20_critical_path (line 306) | fn test_golden_complex_20_critical_path() { function test_eigenvector_sum_to_one (line 329) | fn test_eigenvector_sum_to_one() { function test_eigenvector_non_negative (line 349) | fn test_eigenvector_non_negative() { function test_golden_chain_10_hits (line 369) | fn test_golden_chain_10_hits() { function test_golden_star_10_hits (line 382) | fn test_golden_star_10_hits() { function test_golden_chain_10_kcore (line 399) | fn test_golden_chain_10_kcore() { function test_golden_chain_10_slack (line 420) | fn test_golden_chain_10_slack() { function test_golden_diamond_5_slack (line 434) | fn test_golden_diamond_5_slack() { function test_golden_all_density (line 452) | fn test_golden_all_density() { function test_golden_cycle_5_pagerank (line 473) | fn test_golden_cycle_5_pagerank() { function test_golden_degrees (line 489) | fn test_golden_degrees() { FILE: cmd/bv/burndown_test.go function TestCalculateBurndownAt_OnTrackWithProgress (line 10) | func TestCalculateBurndownAt_OnTrackWithProgress(t *testing.T) { function TestCalculateBurndownAt_NoProgressSetsOnTrackFalse (line 64) | func TestCalculateBurndownAt_NoProgressSetsOnTrackFalse(t *testing.T) { FILE: cmd/bv/main.go type flagHelpSection (line 52) | type flagHelpSection struct function isOneOf (line 182) | func isOneOf(name string, values ...string) bool { function hasAnyPrefix (line 191) | func hasAnyPrefix(name string, prefixes ...string) bool { type modifierFlagRule (line 200) | type modifierFlagRule struct type enumFlagRule (line 205) | type enumFlagRule struct type primaryCommandGroup (line 210) | type primaryCommandGroup struct function validateModifierFlags (line 214) | func validateModifierFlags(flags *flag.FlagSet, rules []modifierFlagRule... function validateEnumFlags (line 229) | func validateEnumFlags(flags *flag.FlagSet, rules []enumFlagRule) error { function validateExclusivePrimaryCommands (line 260) | func validateExclusivePrimaryCommands(flags *flag.FlagSet, groups []prim... function activePrimaryFlags (line 277) | func activePrimaryFlags(flags *flag.FlagSet, names []string) []string { function joinAllowedValues (line 287) | func joinAllowedValues(values []string) string { function hasActiveRequiredFlag (line 291) | func hasActiveRequiredFlag(flags *flag.FlagSet, names ...string) bool { function isFlagActive (line 300) | func isFlagActive(flags *flag.FlagSet, name string) bool { function formatRequiredFlags (line 318) | func formatRequiredFlags(names []string) string { function newRootCommand (line 333) | func newRootCommand(run func() error) *cobra.Command { function rewriteSingleDashLongFlags (line 358) | func rewriteSingleDashLongFlags(args []string, flags *flag.FlagSet) []st... function printRootHelp (line 380) | func printRootHelp(cmd *cobra.Command) { function collectFlagNames (line 402) | func collectFlagNames(flags *flag.FlagSet, seen map[string]bool, match f... function markFlagNamesSeen (line 413) | func markFlagNamesSeen(seen map[string]bool, names []string) { function printFlagSection (line 419) | func printFlagSection(out io.Writer, allFlags *flag.FlagSet, title strin... function main (line 439) | func main() { function runTUIProgram (line 4464) | func runTUIProgram(m ui.Model) error { function countEdges (line 4534) | func countEdges(issues []model.Issue) int { function loadBackgroundModeFromUserConfig (line 4546) | func loadBackgroundModeFromUserConfig() (bool, bool) { function printDiffSummary (line 4573) | func printDiffSummary(diff *analysis.SnapshotDiff, since string) { function repeatChar (line 4684) | func repeatChar(c rune, n int) string { function formatCycle (line 4693) | func formatCycle(cycle []string) string { function naturalLess (line 4706) | func naturalLess(s1, s2 string) bool { function applyRecipeFilters (line 4744) | func applyRecipeFilters(issues []model.Issue, r *recipe.Recipe) []model.... function applyRecipeSort (line 4911) | func applyRecipeSort(issues []model.Issue, r *recipe.Recipe) []model.Iss... function runProfileStartup (line 4958) | func runProfileStartup(issues []model.Issue, loadDuration time.Duration,... function printProfileReport (line 5024) | func printProfileReport(profile *analysis.StartupProfile, loadDuration, ... function printMetricLine (line 5077) | func printMetricLine(name string, duration time.Duration, timedOut, comp... function printCyclesLine (line 5090) | func printCyclesLine(profile *analysis.StartupProfile) { function formatDuration (line 5107) | func formatDuration(d time.Duration) string { function getSizeTier (line 5115) | func getSizeTier(nodeCount int) string { function generateProfileRecommendations (line 5129) | func generateProfileRecommendations(profile *analysis.StartupProfile, lo... function filterByRepo (line 5185) | func filterByRepo(issues []model.Issue, repoFilter string) []model.Issue { function buildMetricItems (line 5231) | func buildMetricItems(metrics map[string]float64, limit int) []baseline.... function buildAttentionReason (line 5256) | func buildAttentionReason(score analysis.LabelAttentionScore) string { function copyViewerAssets (line 5293) | func copyViewerAssets(outputDir, title string) error { function maybeBuildHybridWasmAssets (line 5370) | func maybeBuildHybridWasmAssets(assetsDir string) error { function findViewerAssetsDir (line 5398) | func findViewerAssetsDir() string { function copyFile (line 5426) | func copyFile(src, dst string) error { function copyFileWithTitleAndCacheBusting (line 5447) | func copyFileWithTitleAndCacheBusting(src, dst, title string) error { function copyDir (line 5469) | func copyDir(src, dst string) error { function generateREADME (line 5504) | func generateREADME(bundlePath, title, pagesURL string, issues []model.I... function truncateTitle (line 5746) | func truncateTitle(title string, maxLen int) string { function escapeMarkdownTableCell (line 5758) | func escapeMarkdownTableCell(s string) string { function runPreviewServer (line 5767) | func runPreviewServer(dir string, liveReload bool) error { function runPagesWizard (line 5775) | func runPagesWizard(beadsPath string) error { type pagesSource (line 5978) | type pagesSource struct type pagesSourceCandidate (line 5985) | type pagesSourceCandidate struct function resolvePagesSource (line 5990) | func resolvePagesSource(config *export.WizardConfig, beadsPath string) (... function isSuspiciousIssueCount (line 6053) | func isSuspiciousIssueCount(current, expected int) bool { function findBetterPagesSource (line 6067) | func findBetterPagesSource(config *export.WizardConfig, current pagesSou... function discoverBeadsDirs (line 6186) | func discoverBeadsDirs(root string, maxDepth int) []string { function countIssuesInBeadsDir (line 6233) | func countIssuesInBeadsDir(beadsDir string) (int, error) { type beadsMetadata (line 6272) | type beadsMetadata struct function metadataPreferredSource (line 6277) | func metadataPreferredSource(beadsDir string) (string, datasource.Source... function loadIssuesFromBeadsDir (line 6308) | func loadIssuesFromBeadsDir(beadsDir string) ([]model.Issue, error) { function absInt (line 6332) | func absInt(v int) int { type BurndownOutput (line 6340) | type BurndownOutput struct type ScopeChangeEvent (line 6362) | type ScopeChangeEvent struct type sprintSnapshot (line 6369) | type sprintSnapshot struct type scopeCommit (line 6375) | type scopeCommit struct function computeSprintScopeChanges (line 6382) | func computeSprintScopeChanges(repoPath string, sprint *model.Sprint, is... function parseGitHeaderLine (line 6542) | func parseGitHeaderLine(line string) (sha string, ts time.Time, ok bool) { function parseSprintJSONLine (line 6557) | func parseSprintJSONLine(line string) (sprintSnapshot, bool) { function setDifference (line 6568) | func setDifference(a, b []string) []string { function calculateBurndownAt (line 6589) | func calculateBurndownAt(sprint *model.Sprint, issues []model.Issue, now... function generateDailyBurndown (line 6688) | func generateDailyBurndown(sprint *model.Sprint, issues []model.Issue, n... function generateIdealLine (line 6718) | func generateIdealLine(sprint *model.Sprint, totalIssues int) []model.Bu... function generateJQHelpers (line 6744) | func generateJQHelpers() string { type TimeTravelHistory (line 6828) | type TimeTravelHistory struct type TimeTravelCommit (line 6834) | type TimeTravelCommit struct function generateHistoryForExport (line 6843) | func generateHistoryForExport(issues []model.Issue) (*TimeTravelHistory,... type RobotEnvelope (line 6973) | type RobotEnvelope struct type RobotMeta (line 6982) | type RobotMeta struct function NewRobotEnvelope (line 6990) | func NewRobotEnvelope(dataHash string) RobotEnvelope { type robotEncoder (line 6999) | type robotEncoder interface type toonRobotEncoder (line 7003) | type toonRobotEncoder struct method Encode (line 7007) | func (e *toonRobotEncoder) Encode(v any) error { function newJSONRobotEncoder (line 7040) | func newJSONRobotEncoder(w io.Writer) *json.Encoder { function newRobotEncoder (line 7052) | func newRobotEncoder(w io.Writer) robotEncoder { function resolveRobotOutputFormat (line 7059) | func resolveRobotOutputFormat(cli string) string { function resolveToonEncodeOptionsFromEnv (line 7073) | func resolveToonEncodeOptionsFromEnv() toon.EncodeOptions { function estimateTokens (line 7095) | func estimateTokens(s string) int { function generateRobotDocs (line 7106) | func generateRobotDocs(topic string) map[string]interface{} { type RobotSchemas (line 7365) | type RobotSchemas struct function generateRobotSchemas (line 7373) | func generateRobotSchemas() RobotSchemas { FILE: cmd/bv/main_robot_test.go function TestRobotPlanAndPriorityIncludeMetadata (line 14) | func TestRobotPlanAndPriorityIncludeMetadata(t *testing.T) { function buildTestBinary (line 87) | func buildTestBinary(t *testing.T) string { function TestTOONOutputFormat (line 100) | func TestTOONOutputFormat(t *testing.T) { function TestTOONRoundTrip (line 140) | func TestTOONRoundTrip(t *testing.T) { function TestTOONTokenStats (line 195) | func TestTOONTokenStats(t *testing.T) { function TestTOONSchemaOutput (line 232) | func TestTOONSchemaOutput(t *testing.T) { function containsKeyValuePattern (line 260) | func containsKeyValuePattern(s string) bool { FILE: cmd/bv/main_test.go function runCommandWithTimeout (line 18) | func runCommandWithTimeout(t *testing.T, dir, exe string, args ...string... function TestFilterByRepo_CaseInsensitiveAndFlexibleSeparators (line 40) | func TestFilterByRepo_CaseInsensitiveAndFlexibleSeparators(t *testing.T) { function TestRobotFlagsOutputJSON (line 68) | func TestRobotFlagsOutputJSON(t *testing.T) { function TestCLIFlagCompatibility (line 121) | func TestCLIFlagCompatibility(t *testing.T) { function TestModifierFlagValidation (line 186) | func TestModifierFlagValidation(t *testing.T) { function TestApplyRecipeFilters_ActionableAndHasBlockers (line 251) | func TestApplyRecipeFilters_ActionableAndHasBlockers(t *testing.T) { function TestApplyRecipeFilters_TitleAndPrefix (line 283) | func TestApplyRecipeFilters_TitleAndPrefix(t *testing.T) { function TestApplyRecipeFilters_TagsAndDates (line 301) | func TestApplyRecipeFilters_TagsAndDates(t *testing.T) { function TestApplyRecipeFilters_DatesBlockersAndPrefix (line 322) | func TestApplyRecipeFilters_DatesBlockersAndPrefix(t *testing.T) { function TestApplyRecipeSort_DefaultsAndFields (line 348) | func TestApplyRecipeSort_DefaultsAndFields(t *testing.T) { function TestFormatCycle (line 403) | func TestFormatCycle(t *testing.T) { function ptrBool (line 414) | func ptrBool(b bool) *bool { return &b } function writeTestBeadsFixture (line 416) | func writeTestBeadsFixture(t *testing.T, dir string) { function repoRoot (line 434) | func repoRoot(t *testing.T) string { FILE: cmd/bv/profile_test.go function captureStdout (line 16) | func captureStdout(t *testing.T, f func()) string { function TestFormatDurationAndSizeTier (line 30) | func TestFormatDurationAndSizeTier(t *testing.T) { function TestGenerateProfileRecommendations (line 51) | func TestGenerateProfileRecommendations(t *testing.T) { function TestPrintMetricAndCyclesLines (line 77) | func TestPrintMetricAndCyclesLines(t *testing.T) { function TestPrintCyclesLineSkipped (line 92) | func TestPrintCyclesLineSkipped(t *testing.T) { function TestPrintDiffSummaryAndRepeatChar (line 102) | func TestPrintDiffSummaryAndRepeatChar(t *testing.T) { function TestPrintProfileReport (line 134) | func TestPrintProfileReport(t *testing.T) { function TestBuildMetricItems (line 162) | func TestBuildMetricItems(t *testing.T) { function TestRepeatChar (line 175) | func TestRepeatChar(t *testing.T) { function TestPrintDiffSummary (line 181) | func TestPrintDiffSummary(t *testing.T) { function TestRunProfileStartupJSON (line 206) | func TestRunProfileStartupJSON(t *testing.T) { FILE: cmd/bv/robot_registry.go type RobotCommand (line 29) | type RobotCommand struct type RobotContext (line 39) | type RobotContext struct method StdoutOrDefault (line 188) | func (ctx RobotContext) StdoutOrDefault() io.Writer { method StderrOrDefault (line 195) | func (ctx RobotContext) StderrOrDefault() io.Writer { method EncoderOrDefault (line 202) | func (ctx RobotContext) EncoderOrDefault() robotEncoder { method WorkDirOrDefault (line 209) | func (ctx RobotContext) WorkDirOrDefault() (string, error) { method ProjectDirOrDefault (line 216) | func (ctx RobotContext) ProjectDirOrDefault() (string, error) { method BaselinePathOrDefault (line 223) | func (ctx RobotContext) BaselinePathOrDefault() (string, error) { type RobotRegistry (line 59) | type RobotRegistry struct method Register (line 234) | func (r *RobotRegistry) Register(cmd RobotCommand) { method AnyActive (line 260) | func (r *RobotRegistry) AnyActive() bool { method ActiveCommands (line 269) | func (r *RobotRegistry) ActiveCommands() []RobotCommand { method DispatchFlag (line 279) | func (r *RobotRegistry) DispatchFlag(flagName string, ctx RobotContext... method Validate (line 2745) | func (r *RobotRegistry) Validate() error { type robotHandlerExitError (line 65) | type robotHandlerExitError struct method Error (line 78) | func (e *robotHandlerExitError) Error() string { method Unwrap (line 88) | func (e *robotHandlerExitError) Unwrap() error { type robotDispatchResult (line 71) | type robotDispatchResult struct type phaseOneRobotHandlerConfig (line 95) | type phaseOneRobotHandlerConfig struct type phaseTwoRobotHandlerConfig (line 106) | type phaseTwoRobotHandlerConfig struct type phaseThreeRobotHandlerConfig (line 136) | type phaseThreeRobotHandlerConfig struct function newRobotRegistry (line 184) | func newRobotRegistry() RobotRegistry { function dispatchRobotFlagResult (line 298) | func dispatchRobotFlagResult(registry *RobotRegistry, flagName string, c... function dispatchRobotFlagOrExit (line 326) | func dispatchRobotFlagOrExit(registry *RobotRegistry, flagName string, c... function newReportedRobotHandlerExit (line 343) | func newReportedRobotHandlerExit(exitCode int) error { function writeRobotHelp (line 351) | func writeRobotHelp(out io.Writer) error { function registerPhaseOneRobotHandlers (line 424) | func registerPhaseOneRobotHandlers(registry *RobotRegistry, cfg phaseOne... function registerPhaseTwoRobotHandlers (line 562) | func registerPhaseTwoRobotHandlers(registry *RobotRegistry, cfg phaseTwo... function registerPhaseThreeRobotHandlers (line 1275) | func registerPhaseThreeRobotHandlers(registry *RobotRegistry, cfg phaseT... function handleRobotLabelHealth (line 1360) | func handleRobotLabelHealth(ctx RobotContext) error { function handleRobotLabelFlow (line 1388) | func handleRobotLabelFlow(ctx RobotContext) error { function handleRobotLabelAttention (line 1414) | func handleRobotLabelAttention(ctx RobotContext, cfg phaseThreeRobotHand... function handleRobotInsights (line 1483) | func handleRobotInsights(ctx RobotContext, cfg phaseThreeRobotHandlerCon... function handleRobotTriage (line 1641) | func handleRobotTriage(ctx RobotContext, cfg phaseThreeRobotHandlerConfi... function handleRobotHistory (line 1792) | func handleRobotHistory(ctx RobotContext, cfg phaseThreeRobotHandlerConf... function resolveCorrelationBeadsPath (line 1864) | func resolveCorrelationBeadsPath(workDir string) (string, string, error) { function buildCorrelationBeadInfos (line 1876) | func buildCorrelationBeadInfos(issues []model.Issue) []correlation.BeadI... function generateCorrelationReport (line 1888) | func generateCorrelationReport(workDir string, issues []model.Issue, opt... function loadCorrelationFeedbackStore (line 1900) | func loadCorrelationFeedbackStore(workDir string) (*correlation.Feedback... function parseCorrelationArg (line 1912) | func parseCorrelationArg(arg string) (string, string, error) { function handleRobotCorrelationStats (line 1920) | func handleRobotCorrelationStats(ctx RobotContext) error { function handleRobotExplainCorrelation (line 1937) | func handleRobotExplainCorrelation(ctx RobotContext, cfg phaseThreeRobot... function handleRobotCorrelationFeedback (line 1989) | func handleRobotCorrelationFeedback(ctx RobotContext, cfg phaseThreeRobo... function handleRobotFileRelations (line 2064) | func handleRobotFileRelations(ctx RobotContext, cfg phaseThreeRobotHandl... function handleRobotOrphans (line 2129) | func handleRobotOrphans(ctx RobotContext, cfg phaseThreeRobotHandlerConf... function handleRobotFileBeads (line 2188) | func handleRobotFileBeads(ctx RobotContext, cfg phaseThreeRobotHandlerCo... function handleRobotImpact (line 2242) | func handleRobotImpact(ctx RobotContext, cfg phaseThreeRobotHandlerConfi... function handleRobotRelated (line 2294) | func handleRobotRelated(ctx RobotContext, cfg phaseThreeRobotHandlerConf... function handleRobotBlockerChain (line 2377) | func handleRobotBlockerChain(ctx RobotContext, cfg phaseThreeRobotHandle... function handleRobotImpactNetwork (line 2406) | func handleRobotImpactNetwork(ctx RobotContext, cfg phaseThreeRobotHandl... function handleRobotCausality (line 2473) | func handleRobotCausality(ctx RobotContext, cfg phaseThreeRobotHandlerCo... function handleRobotSprintShow (line 2537) | func handleRobotSprintShow(ctx RobotContext, cfg phaseThreeRobotHandlerC... function handleRobotCapacity (line 2572) | func handleRobotCapacity(ctx RobotContext, cfg phaseThreeRobotHandlerCon... function normalizeRobotFlagName (line 2778) | func normalizeRobotFlagName(name string) string { function normalizeRobotFlagNames (line 2782) | func normalizeRobotFlagNames(names []string) []string { function formatRobotFlag (line 2797) | func formatRobotFlag(name string) string { function joinRobotFlags (line 2805) | func joinRobotFlags(names []string) string { function hasAnyRobotFlag (line 2813) | func hasAnyRobotFlag(active map[string]struct{}, names []string) bool { function robotFlagActive (line 2822) | func robotFlagActive(flagPtr interface{}) bool { function robotValueActive (line 2842) | func robotValueActive(value reflect.Value) bool { FILE: cmd/bv/robot_registry_test.go function TestRobotRegistryValidate_RejectsModifierAlone (line 10) | func TestRobotRegistryValidate_RejectsModifierAlone(t *testing.T) { function TestRobotRegistryAnyActive_MatchesOldLogic (line 65) | func TestRobotRegistryAnyActive_MatchesOldLogic(t *testing.T) { function TestRobotRegistryDispatchFlag_RunsActiveHandler (line 148) | func TestRobotRegistryDispatchFlag_RunsActiveHandler(t *testing.T) { function TestDispatchRobotFlagResult_ReturnsComposableOutcome (line 190) | func TestDispatchRobotFlagResult_ReturnsComposableOutcome(t *testing.T) { function TestWriteRobotHelp_ReturnsWriterError (line 283) | func TestWriteRobotHelp_ReturnsWriterError(t *testing.T) { function TestWriteRobotHelp_ReturnsWriterErrorAfterIntro (line 293) | func TestWriteRobotHelp_ReturnsWriterErrorAfterIntro(t *testing.T) { function ptrTo (line 311) | func ptrTo[T any](v T) *T { type failingWriter (line 315) | type failingWriter struct method Write (line 319) | func (w failingWriter) Write([]byte) (int, error) { type failAfterNWritesWriter (line 323) | type failAfterNWritesWriter struct method Write (line 329) | func (w *failAfterNWritesWriter) Write(p []byte) (int, error) { FILE: cmd/bv/search_output.go type robotSearchResult (line 13) | type robotSearchResult struct type robotSearchOutput (line 21) | type robotSearchOutput struct function writeRobotSearchOutput (line 39) | func writeRobotSearchOutput(w io.Writer, out robotSearchOutput) error { function applySearchConfigOverrides (line 44) | func applySearchConfigOverrides(cfg search.SearchConfig, modeFlag, prese... function resolveSearchWeights (line 74) | func resolveSearchWeights(cfg search.SearchConfig) (search.Weights, sear... function buildHybridScores (line 86) | func buildHybridScores(results []search.SearchResult, scorer search.Hybr... function isLikelyIssueID (line 108) | func isLikelyIssueID(query string) bool { function promoteExactSearchResult (line 112) | func promoteExactSearchResult(query string, results []search.SearchResul... function promoteExactHybridResult (line 131) | func promoteExactHybridResult(query string, results []search.HybridScore... FILE: internal/datasource/diff.go type SourceDiff (line 10) | type SourceDiff struct method HasInconsistencies (line 35) | func (d SourceDiff) HasInconsistencies() bool { method Summary (line 40) | func (d SourceDiff) Summary() string { type StatusDifference (line 28) | type StatusDifference struct type DiffOptions (line 82) | type DiffOptions struct function DefaultDiffOptions (line 92) | func DefaultDiffOptions() DiffOptions { function DetectInconsistencies (line 101) | func DetectInconsistencies(issuesA, issuesB []model.Issue, sourceA, sour... function CompareSources (line 161) | func CompareSources(sourceA, sourceB DataSource, opts DiffOptions) (*Sou... function loadIssuesFromSource (line 179) | func loadIssuesFromSource(source DataSource) ([]model.Issue, error) { function CheckAllSourcesConsistent (line 184) | func CheckAllSourcesConsistent(sources []DataSource, opts DiffOptions) (... type InconsistencyReport (line 213) | type InconsistencyReport struct function GenerateInconsistencyReport (line 225) | func GenerateInconsistencyReport(sources []DataSource, opts DiffOptions)... FILE: internal/datasource/jsonl.go type JSONLReader (line 13) | type JSONLReader struct method LoadIssues (line 26) | func (r *JSONLReader) LoadIssues() ([]model.Issue, error) { method LoadIssuesFiltered (line 42) | func (r *JSONLReader) LoadIssuesFiltered(filter func(*model.Issue) boo... method CountIssues (line 60) | func (r *JSONLReader) CountIssues() (int, error) { method GetIssueByID (line 69) | func (r *JSONLReader) GetIssueByID(id string) (*model.Issue, error) { method GetLastModified (line 84) | func (r *JSONLReader) GetLastModified() (time.Time, error) { method Close (line 107) | func (r *JSONLReader) Close() error { function NewJSONLReader (line 18) | func NewJSONLReader(source DataSource) (*JSONLReader, error) { FILE: internal/datasource/load.go function LoadIssues (line 18) | func LoadIssues(repoPath string) ([]model.Issue, error) { function LoadIssuesFromDir (line 35) | func LoadIssuesFromDir(beadsDir string) ([]model.Issue, error) { function loadSmart (line 50) | func loadSmart(beadsDir, repoPath string) ([]model.Issue, error) { function LoadFromSource (line 74) | func LoadFromSource(source DataSource) ([]model.Issue, error) { FILE: internal/datasource/reader.go type IssueReader (line 14) | type IssueReader interface function NewReader (line 37) | func NewReader(source DataSource) (IssueReader, error) { FILE: internal/datasource/reader_test.go type readerFactory (line 16) | type readerFactory struct function readerFactories (line 22) | func readerFactories() []readerFactory { function TestReaderContract_LoadIssues (line 61) | func TestReaderContract_LoadIssues(t *testing.T) { function TestReaderContract_LoadIssuesFiltered (line 85) | func TestReaderContract_LoadIssuesFiltered(t *testing.T) { function TestReaderContract_LoadIssuesFiltered_Nil (line 102) | func TestReaderContract_LoadIssuesFiltered_Nil(t *testing.T) { function TestReaderContract_CountIssues (line 117) | func TestReaderContract_CountIssues(t *testing.T) { function TestReaderContract_GetIssueByID (line 132) | func TestReaderContract_GetIssueByID(t *testing.T) { function TestReaderContract_GetLastModified (line 169) | func TestReaderContract_GetLastModified(t *testing.T) { function TestNewReader_UnknownType (line 184) | func TestNewReader_UnknownType(t *testing.T) { function createContractTestSQLiteDB (line 194) | func createContractTestSQLiteDB(t *testing.T, path string) { function createContractTestJSONL (line 258) | func createContractTestJSONL(t *testing.T, path string) { FILE: internal/datasource/select.go type SelectionOptions (line 14) | type SelectionOptions struct function DefaultSelectionOptions (line 31) | func DefaultSelectionOptions() SelectionOptions { type SelectionResult (line 42) | type SelectionResult struct function SelectBestSource (line 54) | func SelectBestSource(sources []DataSource) (DataSource, error) { function SelectBestSourceWithOptions (line 59) | func SelectBestSourceWithOptions(sources []DataSource, opts SelectionOpt... function SelectBestSourceDetailed (line 68) | func SelectBestSourceDetailed(sources []DataSource, opts SelectionOption... function buildSelectionReason (line 141) | func buildSelectionReason(selected DataSource, candidates []DataSource, ... function SelectWithFallback (line 190) | func SelectWithFallback(sources []DataSource, loadFunc func(DataSource) ... FILE: internal/datasource/source.go type SourceType (line 17) | type SourceType constant SourceTypeSQLite (line 21) | SourceTypeSQLite SourceType = "sqlite" constant SourceTypeJSONLWorktree (line 23) | SourceTypeJSONLWorktree SourceType = "jsonl_worktree" constant SourceTypeJSONLLocal (line 25) | SourceTypeJSONLLocal SourceType = "jsonl_local" constant PrioritySQLite (line 30) | PrioritySQLite = 100 constant PriorityJSONLWorktree (line 31) | PriorityJSONLWorktree = 80 constant PriorityJSONLLocal (line 32) | PriorityJSONLLocal = 50 type DataSource (line 36) | type DataSource struct method String (line 56) | func (s DataSource) String() string { type DiscoveryOptions (line 66) | type DiscoveryOptions struct function DiscoverSources (line 82) | func DiscoverSources(opts DiscoveryOptions) ([]DataSource, error) { function resolveBeadsDBPath (line 176) | func resolveBeadsDBPath(dbPath string) string { function discoverSQLiteSources (line 192) | func discoverSQLiteSources(beadsDir string, opts DiscoveryOptions) ([]Da... function discoverLocalJSONLSources (line 215) | func discoverLocalJSONLSources(beadsDir string, opts DiscoveryOptions) (... function discoverWorktreeSources (line 267) | func discoverWorktreeSources(repoPath string, opts DiscoveryOptions) ([]... FILE: internal/datasource/source_test.go function TestDiscoverSources_OnlySQLite (line 14) | func TestDiscoverSources_OnlySQLite(t *testing.T) { function TestDiscoverSources_OnlyJSONL (line 55) | func TestDiscoverSources_OnlyJSONL(t *testing.T) { function TestDiscoverSources_Multiple (line 95) | func TestDiscoverSources_Multiple(t *testing.T) { function TestDiscoverSources_Empty (line 144) | func TestDiscoverSources_Empty(t *testing.T) { function TestValidateSQLite_Valid (line 165) | func TestValidateSQLite_Valid(t *testing.T) { function TestValidateSQLite_Empty (line 189) | func TestValidateSQLite_Empty(t *testing.T) { function TestValidateSQLite_Corrupted (line 213) | func TestValidateSQLite_Corrupted(t *testing.T) { function TestValidateSQLite_WrongSchema (line 238) | func TestValidateSQLite_WrongSchema(t *testing.T) { function TestValidateJSONL_Valid (line 270) | func TestValidateJSONL_Valid(t *testing.T) { function TestValidateJSONL_Empty (line 300) | func TestValidateJSONL_Empty(t *testing.T) { function TestValidateJSONL_PartialCorrupt (line 327) | func TestValidateJSONL_PartialCorrupt(t *testing.T) { function TestValidateJSONL_HeavyCorrupt (line 363) | func TestValidateJSONL_HeavyCorrupt(t *testing.T) { function TestValidateJSONL_MissingFields (line 400) | func TestValidateJSONL_MissingFields(t *testing.T) { function TestSelectBestSource_SingleValid (line 424) | func TestSelectBestSource_SingleValid(t *testing.T) { function TestSelectBestSource_FresherWins (line 446) | func TestSelectBestSource_FresherWins(t *testing.T) { function TestSelectBestSource_PriorityTiebreaker (line 476) | func TestSelectBestSource_PriorityTiebreaker(t *testing.T) { function TestSelectBestSource_AllInvalid (line 506) | func TestSelectBestSource_AllInvalid(t *testing.T) { function TestSelectBestSource_SkipsInvalid (line 527) | func TestSelectBestSource_SkipsInvalid(t *testing.T) { function TestFallbackChain_FirstValid (line 557) | func TestFallbackChain_FirstValid(t *testing.T) { function TestFallbackChain_SecondValid (line 595) | func TestFallbackChain_SecondValid(t *testing.T) { function TestFallbackChain_AllFail (line 636) | func TestFallbackChain_AllFail(t *testing.T) { function createTestSQLiteDB (line 665) | func createTestSQLiteDB(t *testing.T, path string) { function createEmptySQLiteDB (line 698) | func createEmptySQLiteDB(t *testing.T, path string) { FILE: internal/datasource/sqlite.go type SQLiteReader (line 16) | type SQLiteReader struct method Close (line 53) | func (r *SQLiteReader) Close() error { method hasLabelsColumn (line 62) | func (r *SQLiteReader) hasLabelsColumn() bool { method hasLabelsTable (line 86) | func (r *SQLiteReader) hasLabelsTable() bool { method LoadIssues (line 93) | func (r *SQLiteReader) LoadIssues() ([]model.Issue, error) { method LoadIssuesFiltered (line 98) | func (r *SQLiteReader) LoadIssuesFiltered(filter func(*model.Issue) bo... method loadIssuesSimple (line 232) | func (r *SQLiteReader) loadIssuesSimple(filter func(*model.Issue) bool... method loadLabelsFromTable (line 295) | func (r *SQLiteReader) loadLabelsFromTable(issueID string) []string { method loadDependencies (line 319) | func (r *SQLiteReader) loadDependencies(issueID string) []*model.Depen... method loadComments (line 344) | func (r *SQLiteReader) loadComments(issueID string) []*model.Comment { method CountIssues (line 371) | func (r *SQLiteReader) CountIssues() (int, error) { method GetIssueByID (line 381) | func (r *SQLiteReader) GetIssueByID(id string) (*model.Issue, error) { method GetLastModified (line 397) | func (r *SQLiteReader) GetLastModified() (time.Time, error) { function NewSQLiteReader (line 22) | func NewSQLiteReader(source DataSource) (*SQLiteReader, error) { function parseJSONStringArray (line 422) | func parseJSONStringArray(s string) []string { FILE: internal/datasource/validate.go type ValidationOptions (line 17) | type ValidationOptions struct function DefaultValidationOptions (line 33) | func DefaultValidationOptions() ValidationOptions { function ValidateSource (line 44) | func ValidateSource(source *DataSource) error { function ValidateSourceWithOptions (line 49) | func ValidateSourceWithOptions(source *DataSource, opts ValidationOption... function validateSQLite (line 82) | func validateSQLite(source *DataSource, opts ValidationOptions) error { function validateJSONL (line 170) | func validateJSONL(source *DataSource, opts ValidationOptions) error { function IsSourceAccessible (line 289) | func IsSourceAccessible(source *DataSource) bool { function RefreshSourceInfo (line 295) | func RefreshSourceInfo(source *DataSource) error { FILE: internal/datasource/watch.go type SourceWatcher (line 12) | type SourceWatcher struct method Start (line 86) | func (sw *SourceWatcher) Start() { method Stop (line 91) | func (sw *SourceWatcher) Stop() { method run (line 99) | func (sw *SourceWatcher) run() { method AddSource (line 167) | func (sw *SourceWatcher) AddSource(source DataSource) error { method RemoveSource (line 191) | func (sw *SourceWatcher) RemoveSource(path string) error { method Sources (line 216) | func (sw *SourceWatcher) Sources() []DataSource { type WatcherOptions (line 26) | type WatcherOptions struct function DefaultWatcherOptions (line 37) | func DefaultWatcherOptions() WatcherOptions { function NewSourceWatcher (line 46) | func NewSourceWatcher(sources []DataSource, callback func(DataSource), o... type AutoRefreshManager (line 225) | type AutoRefreshManager struct method Start (line 270) | func (m *AutoRefreshManager) Start() { method Stop (line 275) | func (m *AutoRefreshManager) Stop() { method CurrentSource (line 280) | func (m *AutoRefreshManager) CurrentSource() DataSource { method handleChange (line 290) | func (m *AutoRefreshManager) handleChange(changed DataSource) { method ForceRefresh (line 334) | func (m *AutoRefreshManager) ForceRefresh() error { type AutoRefreshOptions (line 235) | type AutoRefreshOptions struct function NewAutoRefreshManager (line 245) | func NewAutoRefreshManager(sources []DataSource, opts AutoRefreshOptions... FILE: pkg/agents/blurb.go constant BlurbVersion (line 14) | BlurbVersion = 2 constant BlurbStartMarker (line 17) | BlurbStartMarker = "" constant BlurbEndMarker (line 20) | BlurbEndMarker = "" constant AgentBlurb (line 24) | AgentBlurb = ` function ContainsBlurb (line 150) | func ContainsBlurb(content string) bool { function ContainsLegacyBlurb (line 157) | func ContainsLegacyBlurb(content string) bool { function ContainsAnyBlurb (line 173) | func ContainsAnyBlurb(content string) bool { function GetBlurbVersion (line 178) | func GetBlurbVersion(content string) int { function NeedsUpdate (line 191) | func NeedsUpdate(content string) bool { function AppendBlurb (line 202) | func AppendBlurb(content string) string { function RemoveBlurb (line 213) | func RemoveBlurb(content string) string { function RemoveLegacyBlurb (line 233) | func RemoveLegacyBlurb(content string) string { function UpdateBlurb (line 268) | func UpdateBlurb(content string) string { FILE: pkg/agents/blurb_test.go function TestContainsBlurb (line 8) | func TestContainsBlurb(t *testing.T) { function TestGetBlurbVersion (line 46) | func TestGetBlurbVersion(t *testing.T) { function TestAppendBlurb (line 84) | func TestAppendBlurb(t *testing.T) { function TestRemoveBlurb (line 116) | func TestRemoveBlurb(t *testing.T) { function TestRemoveBlurbNoBlurb (line 135) | func TestRemoveBlurbNoBlurb(t *testing.T) { function TestUpdateBlurb (line 145) | func TestUpdateBlurb(t *testing.T) { function TestNeedsUpdate (line 167) | func TestNeedsUpdate(t *testing.T) { function TestAgentBlurbContent (line 200) | func TestAgentBlurbContent(t *testing.T) { function TestSupportedAgentFiles (line 232) | func TestSupportedAgentFiles(t *testing.T) { constant LegacyBlurbContent (line 254) | LegacyBlurbContent = `### Using bv as an AI sidecar function TestContainsLegacyBlurb (line 271) | func TestContainsLegacyBlurb(t *testing.T) { function TestContainsAnyBlurb (line 314) | func TestContainsAnyBlurb(t *testing.T) { function TestRemoveLegacyBlurb (line 347) | func TestRemoveLegacyBlurb(t *testing.T) { function TestRemoveLegacyBlurbNoLegacy (line 369) | func TestRemoveLegacyBlurbNoLegacy(t *testing.T) { function TestRemoveLegacyBlurbNoTrailingBackticks (line 379) | func TestRemoveLegacyBlurbNoTrailingBackticks(t *testing.T) { function TestUpdateBlurbFromLegacy (line 417) | func TestUpdateBlurbFromLegacy(t *testing.T) { function TestNeedsUpdateLegacy (line 444) | func TestNeedsUpdateLegacy(t *testing.T) { function TestContainsLegacyBlurbEdgeCases (line 477) | func TestContainsLegacyBlurbEdgeCases(t *testing.T) { function TestRemoveLegacyBlurbEdgeCases (line 603) | func TestRemoveLegacyBlurbEdgeCases(t *testing.T) { function TestGetBlurbVersionEdgeCases (line 693) | func TestGetBlurbVersionEdgeCases(t *testing.T) { function TestRemoveBlurbEdgeCases (line 762) | func TestRemoveBlurbEdgeCases(t *testing.T) { function TestContainsAnyBlurbEdgeCases (line 819) | func TestContainsAnyBlurbEdgeCases(t *testing.T) { FILE: pkg/agents/detect.go type AgentFileDetection (line 9) | type AgentFileDetection struct method Found (line 30) | func (d AgentFileDetection) Found() bool { method NeedsBlurb (line 35) | func (d AgentFileDetection) NeedsBlurb() bool { method NeedsUpgrade (line 41) | func (d AgentFileDetection) NeedsUpgrade() bool { function DetectAgentFile (line 51) | func DetectAgentFile(workDir string) AgentFileDetection { function checkAgentFile (line 81) | func checkAgentFile(filePath, fileType string) AgentFileDetection { function DetectAgentFileInParents (line 115) | func DetectAgentFileInParents(workDir string, maxLevels int) AgentFileDe... function AgentFileExists (line 136) | func AgentFileExists(workDir string) bool { function GetPreferredAgentFilePath (line 148) | func GetPreferredAgentFilePath(workDir string) string { FILE: pkg/agents/detect_test.go function TestDetectAgentFile (line 9) | func TestDetectAgentFile(t *testing.T) { function TestAgentFileDetectionMethods (line 106) | func TestAgentFileDetectionMethods(t *testing.T) { function TestDetectAgentFileInParents (line 160) | func TestDetectAgentFileInParents(t *testing.T) { function TestAgentFileExists (line 230) | func TestAgentFileExists(t *testing.T) { function TestGetPreferredAgentFilePath (line 253) | func TestGetPreferredAgentFilePath(t *testing.T) { function TestDetectAgentFileWithLegacyBlurb (line 261) | func TestDetectAgentFileWithLegacyBlurb(t *testing.T) { function TestDetectAgentFileNotFalsePositive (line 299) | func TestDetectAgentFileNotFalsePositive(t *testing.T) { FILE: pkg/agents/file.go function AppendBlurbToFile (line 12) | func AppendBlurbToFile(filePath string) error { function UpdateBlurbInFile (line 32) | func UpdateBlurbInFile(filePath string) error { function RemoveBlurbFromFile (line 49) | func RemoveBlurbFromFile(filePath string) error { function CreateAgentFile (line 66) | func CreateAgentFile(filePath string) error { function VerifyBlurbPresent (line 79) | func VerifyBlurbPresent(filePath string) (bool, error) { function atomicWrite (line 89) | func atomicWrite(filePath string, content []byte) error { function EnsureBlurb (line 157) | func EnsureBlurb(workDir string) error { FILE: pkg/agents/file_test.go function TestAppendBlurbToFile (line 10) | func TestAppendBlurbToFile(t *testing.T) { function TestAppendBlurbToEmptyFile (line 43) | func TestAppendBlurbToEmptyFile(t *testing.T) { function TestUpdateBlurbInFile (line 67) | func TestUpdateBlurbInFile(t *testing.T) { function TestRemoveBlurbFromFile (line 98) | func TestRemoveBlurbFromFile(t *testing.T) { function TestCreateAgentFile (line 127) | func TestCreateAgentFile(t *testing.T) { function TestVerifyBlurbPresent (line 151) | func TestVerifyBlurbPresent(t *testing.T) { function TestAtomicWritePreservesPermissions (line 193) | func TestAtomicWritePreservesPermissions(t *testing.T) { function TestAtomicWriteNewFile (line 235) | func TestAtomicWriteNewFile(t *testing.T) { function TestEnsureBlurb (line 254) | func TestEnsureBlurb(t *testing.T) { function TestAppendBlurbNonExistentFile (line 319) | func TestAppendBlurbNonExistentFile(t *testing.T) { function TestAtomicWriteNoPermission (line 329) | func TestAtomicWriteNoPermission(t *testing.T) { FILE: pkg/agents/integration_test.go function TestFullFlow_Accept (line 10) | func TestFullFlow_Accept(t *testing.T) { function TestFullFlow_Decline (line 65) | func TestFullFlow_Decline(t *testing.T) { function TestFullFlow_NeverAsk (line 97) | func TestFullFlow_NeverAsk(t *testing.T) { function TestFullFlow_AlreadyHasBlurb (line 132) | func TestFullFlow_AlreadyHasBlurb(t *testing.T) { function TestFullFlow_NoAgentFile (line 156) | func TestFullFlow_NoAgentFile(t *testing.T) { function TestFullFlow_ClaudeMDFallback (line 172) | func TestFullFlow_ClaudeMDFallback(t *testing.T) { function strContains (line 194) | func strContains(s, substr string) bool { FILE: pkg/agents/prefs.go type AgentPromptPreference (line 13) | type AgentPromptPreference struct function getPrefsDir (line 34) | func getPrefsDir() (string, error) { function projectHash (line 44) | func projectHash(workDir string) (string, error) { function getPrefsPath (line 54) | func getPrefsPath(workDir string) (string, error) { function LoadAgentPromptPreference (line 68) | func LoadAgentPromptPreference(workDir string) (*AgentPromptPreference, ... function SaveAgentPromptPreference (line 90) | func SaveAgentPromptPreference(workDir string, pref AgentPromptPreferenc... function ShouldPromptForAgentFile (line 125) | func ShouldPromptForAgentFile(workDir string) bool { function RecordDecline (line 153) | func RecordDecline(workDir string, dontAskAgain bool) error { function RecordAccept (line 163) | func RecordAccept(workDir string) error { function ClearPreference (line 173) | func ClearPreference(workDir string) error { FILE: pkg/agents/prefs_test.go function TestProjectHash (line 10) | func TestProjectHash(t *testing.T) { function TestSaveAndLoadPreference (line 39) | func TestSaveAndLoadPreference(t *testing.T) { function TestShouldPromptForAgentFile (line 84) | func TestShouldPromptForAgentFile(t *testing.T) { function TestRecordDecline (line 142) | func TestRecordDecline(t *testing.T) { function TestRecordAccept (line 169) | func TestRecordAccept(t *testing.T) { function TestClearPreference (line 192) | func TestClearPreference(t *testing.T) { function TestGetPrefsDir (line 222) | func TestGetPrefsDir(t *testing.T) { function contains (line 237) | func contains(s, substr string) bool { function TestPrefsPathConsistency (line 242) | func TestPrefsPathConsistency(t *testing.T) { function TestPrefsCreateDirectory (line 265) | func TestPrefsCreateDirectory(t *testing.T) { FILE: pkg/agents/tty_guard.go function init (line 17) | func init() { function shouldSuppressTTYQueries (line 29) | func shouldSuppressTTYQueries(args []string, envRobot, envTest bool) bool { FILE: pkg/agents/tty_guard_test.go function TestShouldSuppressTTYQueries_EnvRobot (line 5) | func TestShouldSuppressTTYQueries_EnvRobot(t *testing.T) { function TestShouldSuppressTTYQueries_EnvTest (line 11) | func TestShouldSuppressTTYQueries_EnvTest(t *testing.T) { function TestShouldSuppressTTYQueries_RobotFlag (line 17) | func TestShouldSuppressTTYQueries_RobotFlag(t *testing.T) { function TestShouldSuppressTTYQueries_HelpAndVersion (line 26) | func TestShouldSuppressTTYQueries_HelpAndVersion(t *testing.T) { function TestShouldSuppressTTYQueries_TUIInvocation (line 35) | func TestShouldSuppressTTYQueries_TUIInvocation(t *testing.T) { FILE: pkg/analysis/advanced_insights.go type intHeap (line 11) | type intHeap method Len (line 13) | func (h intHeap) Len() int { return len(h) } method Less (line 14) | func (h intHeap) Less(i, j int) bool { return h[i] < h[j] } method Swap (line 15) | func (h intHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } method Push (line 17) | func (h *intHeap) Push(x any) { *h = append(*h, x.(int)) } method Pop (line 18) | func (h *intHeap) Pop() any { type AdvancedInsightsConfig (line 28) | type AdvancedInsightsConfig struct function DefaultAdvancedInsightsConfig (line 45) | func DefaultAdvancedInsightsConfig() AdvancedInsightsConfig { type AdvancedInsights (line 58) | type AdvancedInsights struct type FeatureStatus (line 85) | type FeatureStatus struct type TopKSetResult (line 94) | type TopKSetResult struct type TopKSetItem (line 103) | type TopKSetItem struct type CoverageSetResult (line 112) | type CoverageSetResult struct type CoverageItem (line 123) | type CoverageItem struct type KPathsResult (line 132) | type KPathsResult struct type CriticalPath (line 139) | type CriticalPath struct type ParallelCutResult (line 147) | type ParallelCutResult struct type ParallelCutItem (line 155) | type ParallelCutItem struct type ParallelGainResult (line 163) | type ParallelGainResult struct type ParallelGainItem (line 170) | type ParallelGainItem struct type CycleBreakResult (line 179) | type CycleBreakResult struct type CycleBreakItem (line 188) | type CycleBreakItem struct function DefaultUsageHints (line 198) | func DefaultUsageHints() map[string]string { method GenerateAdvancedInsights (line 211) | func (a *Analyzer) GenerateAdvancedInsights(config AdvancedInsightsConfi... method generateCycleBreakSuggestions (line 245) | func (a *Analyzer) generateCycleBreakSuggestions(limit int) *CycleBreakR... method countDependents (line 336) | func (a *Analyzer) countDependents(issueID string) int { method generateTopKSet (line 351) | func (a *Analyzer) generateTopKSet(k int) *TopKSetResult { method computeMarginalUnblocks (line 439) | func (a *Analyzer) computeMarginalUnblocks(issueID string, alreadyComple... method generateCoverageSet (line 494) | func (a *Analyzer) generateCoverageSet(limit int) *CoverageSetResult { method generateKPaths (line 606) | func (a *Analyzer) generateKPaths(k int, pathLengthCap int) *KPathsResult { method generateParallelCut (line 822) | func (a *Analyzer) generateParallelCut(limit int) *ParallelCutResult { FILE: pkg/analysis/advanced_insights_test.go function TestDefaultAdvancedInsightsConfig (line 9) | func TestDefaultAdvancedInsightsConfig(t *testing.T) { function TestDefaultUsageHints (line 32) | func TestDefaultUsageHints(t *testing.T) { function TestGenerateAdvancedInsightsEmpty (line 43) | func TestGenerateAdvancedInsightsEmpty(t *testing.T) { function TestGenerateAdvancedInsightsNoCycles (line 79) | func TestGenerateAdvancedInsightsNoCycles(t *testing.T) { function TestGenerateAdvancedInsightsWithCycles (line 106) | func TestGenerateAdvancedInsightsWithCycles(t *testing.T) { function TestCycleBreakSuggestionsCapping (line 136) | func TestCycleBreakSuggestionsCapping(t *testing.T) { function TestCycleBreakDeterministic (line 166) | func TestCycleBreakDeterministic(t *testing.T) { function TestPendingFeatureStatus (line 198) | func TestPendingFeatureStatus(t *testing.T) { function TestTopKSetEmpty (line 247) | func TestTopKSetEmpty(t *testing.T) { function TestTopKSetLinearChain (line 266) | func TestTopKSetLinearChain(t *testing.T) { function TestTopKSetDeterministic (line 305) | func TestTopKSetDeterministic(t *testing.T) { function TestTopKSetCapping (line 336) | func TestTopKSetCapping(t *testing.T) { function TestCoverageSetEmpty (line 363) | func TestCoverageSetEmpty(t *testing.T) { function TestCoverageSetNoEdges (line 386) | func TestCoverageSetNoEdges(t *testing.T) { function TestCoverageSetLinearChain (line 409) | func TestCoverageSetLinearChain(t *testing.T) { function TestCoverageSetHubPattern (line 442) | func TestCoverageSetHubPattern(t *testing.T) { function TestCoverageSetDeterministic (line 476) | func TestCoverageSetDeterministic(t *testing.T) { function TestCoverageSetCapping (line 509) | func TestCoverageSetCapping(t *testing.T) { function TestCoverageSetClosedIssuesIgnored (line 532) | func TestCoverageSetClosedIssuesIgnored(t *testing.T) { function TestCoverageSetSelectionSequence (line 552) | func TestCoverageSetSelectionSequence(t *testing.T) { function TestKPathsEmpty (line 574) | func TestKPathsEmpty(t *testing.T) { function TestKPathsNoEdges (line 590) | func TestKPathsNoEdges(t *testing.T) { function TestKPathsLinearChain (line 611) | func TestKPathsLinearChain(t *testing.T) { function TestKPathsMultiplePaths (line 654) | func TestKPathsMultiplePaths(t *testing.T) { function TestKPathsDeterministic (line 685) | func TestKPathsDeterministic(t *testing.T) { function TestKPathsCapping (line 728) | func TestKPathsCapping(t *testing.T) { function TestKPathsClosedIssuesIgnored (line 754) | func TestKPathsClosedIssuesIgnored(t *testing.T) { function TestKPathsPathLengthCap (line 778) | func TestKPathsPathLengthCap(t *testing.T) { function TestKPathsRankOrdering (line 810) | func TestKPathsRankOrdering(t *testing.T) { function TestKPathsDiamondGraph (line 831) | func TestKPathsDiamondGraph(t *testing.T) { function TestParallelCutEmpty (line 868) | func TestParallelCutEmpty(t *testing.T) { function TestParallelCutNoEdges (line 884) | func TestParallelCutNoEdges(t *testing.T) { function TestParallelCutLinearChainNoGain (line 905) | func TestParallelCutLinearChainNoGain(t *testing.T) { function TestParallelCutForkHasGain (line 925) | func TestParallelCutForkHasGain(t *testing.T) { function TestParallelCutMultipleForks (line 959) | func TestParallelCutMultipleForks(t *testing.T) { function TestParallelCutDeterministic (line 998) | func TestParallelCutDeterministic(t *testing.T) { function TestParallelCutCapping (line 1036) | func TestParallelCutCapping(t *testing.T) { function TestParallelCutClosedIssuesIgnored (line 1063) | func TestParallelCutClosedIssuesIgnored(t *testing.T) { function TestParallelCutMaxParallel (line 1083) | func TestParallelCutMaxParallel(t *testing.T) { function TestParallelCutDiamondNoGain (line 1105) | func TestParallelCutDiamondNoGain(t *testing.T) { FILE: pkg/analysis/articulation_test.go function TestFindArticulationPointsHandlesZeroID (line 8) | func TestFindArticulationPointsHandlesZeroID(t *testing.T) { FILE: pkg/analysis/bench_generators_test.go function generateSparseGraph (line 15) | func generateSparseGraph(n int) []model.Issue { function generateDenseGraph (line 41) | func generateDenseGraph(n int) []model.Issue { function generateChainGraph (line 67) | func generateChainGraph(n int) []model.Issue { function generateCyclicGraph (line 88) | func generateCyclicGraph(n int) []model.Issue { function generateManyCyclesGraph (line 109) | func generateManyCyclesGraph(n int) []model.Issue { function generateCompleteGraph (line 135) | func generateCompleteGraph(n int) []model.Issue { function generateDisconnectedGraph (line 160) | func generateDisconnectedGraph(n int) []model.Issue { function generateWideGraph (line 186) | func generateWideGraph(n int) []model.Issue { function generateDeepGraph (line 211) | func generateDeepGraph(n int) []model.Issue { FILE: pkg/analysis/bench_pathological_test.go function BenchmarkCycles_ManyCycles20 (line 22) | func BenchmarkCycles_ManyCycles20(b *testing.B) { function BenchmarkCycles_ManyCycles30 (line 26) | func BenchmarkCycles_ManyCycles30(b *testing.B) { function BenchmarkCycles_SingleCycle100 (line 31) | func BenchmarkCycles_SingleCycle100(b *testing.B) { function benchCycleDetection (line 35) | func benchCycleDetection(b *testing.B, issues []model.Issue) { function BenchmarkComplete_Betweenness15 (line 59) | func BenchmarkComplete_Betweenness15(b *testing.B) { function BenchmarkComplete_PageRank20 (line 71) | func BenchmarkComplete_PageRank20(b *testing.B) { function BenchmarkComplete_HITS15 (line 82) | func BenchmarkComplete_HITS15(b *testing.B) { function BenchmarkLongChain_Betweenness500 (line 95) | func BenchmarkLongChain_Betweenness500(b *testing.B) { function BenchmarkLongChain_TopoSort2000 (line 106) | func BenchmarkLongChain_TopoSort2000(b *testing.B) { function BenchmarkFullAnalysis_ManyCycles20 (line 122) | func BenchmarkFullAnalysis_ManyCycles20(b *testing.B) { function BenchmarkFullAnalysis_ManyCycles30 (line 133) | func BenchmarkFullAnalysis_ManyCycles30(b *testing.B) { function BenchmarkFullAnalysis_Complete15 (line 145) | func BenchmarkFullAnalysis_Complete15(b *testing.B) { function TestTimeoutProtection_Betweenness (line 161) | func TestTimeoutProtection_Betweenness(t *testing.T) { function TestTimeoutProtection_Cycles (line 181) | func TestTimeoutProtection_Cycles(t *testing.T) { function TestSCCPrecheck_AcyclicGraphFast (line 201) | func TestSCCPrecheck_AcyclicGraphFast(t *testing.T) { FILE: pkg/analysis/bench_realdata_test.go function findProjectBeadsDir (line 30) | func findProjectBeadsDir() (string, error) { function loadProjectBeads (line 53) | func loadProjectBeads(tb testing.TB) []model.Issue { function BenchmarkRealData_FullTriage (line 98) | func BenchmarkRealData_FullTriage(b *testing.B) { function BenchmarkRealData_TriagePhase1Only (line 114) | func BenchmarkRealData_TriagePhase1Only(b *testing.B) { function BenchmarkRealData_FullAnalysis (line 130) | func BenchmarkRealData_FullAnalysis(b *testing.B) { function BenchmarkRealData_FastAnalysis (line 144) | func BenchmarkRealData_FastAnalysis(b *testing.B) { function BenchmarkRealData_GraphBuild (line 161) | func BenchmarkRealData_GraphBuild(b *testing.B) { function BenchmarkRealData_IssueLoading (line 174) | func BenchmarkRealData_IssueLoading(b *testing.B) { FILE: pkg/analysis/bench_test.go function BenchmarkFullAnalysis_Sparse100 (line 18) | func BenchmarkFullAnalysis_Sparse100(b *testing.B) { function BenchmarkFullAnalysis_Sparse500 (line 22) | func BenchmarkFullAnalysis_Sparse500(b *testing.B) { function BenchmarkFullAnalysis_Sparse1000 (line 26) | func BenchmarkFullAnalysis_Sparse1000(b *testing.B) { function BenchmarkFullAnalysis_Dense100 (line 30) | func BenchmarkFullAnalysis_Dense100(b *testing.B) { function BenchmarkFullAnalysis_Dense500 (line 34) | func BenchmarkFullAnalysis_Dense500(b *testing.B) { function BenchmarkFullAnalysis_Chain100 (line 38) | func BenchmarkFullAnalysis_Chain100(b *testing.B) { function BenchmarkFullAnalysis_Chain500 (line 42) | func BenchmarkFullAnalysis_Chain500(b *testing.B) { function BenchmarkFullAnalysis_Chain1000 (line 46) | func BenchmarkFullAnalysis_Chain1000(b *testing.B) { function BenchmarkFullAnalysis_Wide500 (line 50) | func BenchmarkFullAnalysis_Wide500(b *testing.B) { function BenchmarkFullAnalysis_Deep500 (line 54) | func BenchmarkFullAnalysis_Deep500(b *testing.B) { function BenchmarkFullAnalysis_Disconnected500 (line 58) | func BenchmarkFullAnalysis_Disconnected500(b *testing.B) { function BenchmarkRobotTriage_Sparse500 (line 66) | func BenchmarkRobotTriage_Sparse500(b *testing.B) { function benchFullAnalysis (line 78) | func benchFullAnalysis(b *testing.B, issues []model.Issue) { function BenchmarkPageRank_Sparse100 (line 93) | func BenchmarkPageRank_Sparse100(b *testing.B) { function BenchmarkPageRank_Sparse500 (line 97) | func BenchmarkPageRank_Sparse500(b *testing.B) { function BenchmarkPageRank_Sparse1000 (line 101) | func BenchmarkPageRank_Sparse1000(b *testing.B) { function BenchmarkPageRank_Dense500 (line 105) | func BenchmarkPageRank_Dense500(b *testing.B) { function BenchmarkPageRank_Chain1000 (line 109) | func BenchmarkPageRank_Chain1000(b *testing.B) { function benchPageRank (line 113) | func benchPageRank(b *testing.B, issues []model.Issue) { function BenchmarkBetweenness_Sparse100 (line 124) | func BenchmarkBetweenness_Sparse100(b *testing.B) { function BenchmarkBetweenness_Sparse500 (line 128) | func BenchmarkBetweenness_Sparse500(b *testing.B) { function BenchmarkBetweenness_Chain500 (line 132) | func BenchmarkBetweenness_Chain500(b *testing.B) { function BenchmarkBetweenness_Dense100 (line 136) | func BenchmarkBetweenness_Dense100(b *testing.B) { function benchBetweenness (line 140) | func benchBetweenness(b *testing.B, issues []model.Issue) { function BenchmarkHITS_Sparse100 (line 151) | func BenchmarkHITS_Sparse100(b *testing.B) { function BenchmarkHITS_Sparse500 (line 155) | func BenchmarkHITS_Sparse500(b *testing.B) { function BenchmarkHITS_Dense100 (line 159) | func BenchmarkHITS_Dense100(b *testing.B) { function benchHITS (line 163) | func benchHITS(b *testing.B, issues []model.Issue) { function BenchmarkTopoSort_Sparse500 (line 177) | func BenchmarkTopoSort_Sparse500(b *testing.B) { function BenchmarkTopoSort_Chain1000 (line 181) | func BenchmarkTopoSort_Chain1000(b *testing.B) { function BenchmarkTopoSort_Deep1000 (line 185) | func BenchmarkTopoSort_Deep1000(b *testing.B) { function benchTopoSort (line 189) | func benchTopoSort(b *testing.B, issues []model.Issue) { function BenchmarkTarjanSCC_Sparse500 (line 200) | func BenchmarkTarjanSCC_Sparse500(b *testing.B) { function BenchmarkTarjanSCC_Chain1000 (line 204) | func BenchmarkTarjanSCC_Chain1000(b *testing.B) { function BenchmarkTarjanSCC_Cyclic100 (line 208) | func BenchmarkTarjanSCC_Cyclic100(b *testing.B) { function benchTarjanSCC (line 212) | func benchTarjanSCC(b *testing.B, issues []model.Issue) { function BenchmarkNewAnalyzer_Sparse500 (line 226) | func BenchmarkNewAnalyzer_Sparse500(b *testing.B) { function BenchmarkNewAnalyzer_Sparse1000 (line 236) | func BenchmarkNewAnalyzer_Sparse1000(b *testing.B) { function buildGraph (line 251) | func buildGraph(issues []model.Issue) *simple.DirectedGraph { FILE: pkg/analysis/benchmark_test.go function BenchmarkAnalyzePhase1Only (line 10) | func BenchmarkAnalyzePhase1Only(b *testing.B) { FILE: pkg/analysis/betweenness_approx.go type denseIndex (line 14) | type denseIndex struct function buildDenseIndex (line 19) | func buildDenseIndex(nodes []graph.Node) denseIndex { type cachedAdjacency (line 34) | type cachedAdjacency struct function buildCachedAdjacency (line 39) | func buildCachedAdjacency(g graph.Directed, idx denseIndex) cachedAdjace... type brandesBuffers (line 91) | type brandesBuffers struct method reset (line 169) | func (b *brandesBuffers) reset(nodeCount int) { function pooledNodesOf (line 139) | func pooledNodesOf(it graph.Nodes) []graph.Node { function putPooledNodes (line 148) | func putPooledNodes(nodes []graph.Node) { type BetweennessMode (line 218) | type BetweennessMode constant BetweennessExact (line 223) | BetweennessExact BetweennessMode = "exact" constant BetweennessApproximate (line 228) | BetweennessApproximate BetweennessMode = "approximate" constant BetweennessSkip (line 231) | BetweennessSkip BetweennessMode = "skip" type BetweennessResult (line 235) | type BetweennessResult struct function ApproxBetweenness (line 270) | func ApproxBetweenness(g graph.Directed, sampleSize int, seed int64) Bet... function sampleIndices (line 364) | func sampleIndices(n, k int, seed int64) []int { function singleSourceBetweennessDense (line 394) | func singleSourceBetweennessDense(adj cachedAdjacency, sourceIdx int, bu... function RecommendSampleSize (line 459) | func RecommendSampleSize(nodeCount, edgeCount int) int { FILE: pkg/analysis/betweenness_approx_test.go function TestApproxBetweenness_SmallGraph (line 9) | func TestApproxBetweenness_SmallGraph(t *testing.T) { function TestApproxBetweenness_LargeGraph_Approximate (line 33) | func TestApproxBetweenness_LargeGraph_Approximate(t *testing.T) { function TestApproxBetweenness_EmptyGraph (line 61) | func TestApproxBetweenness_EmptyGraph(t *testing.T) { function TestApproxBetweenness_ZeroSampleSize (line 71) | func TestApproxBetweenness_ZeroSampleSize(t *testing.T) { function TestApproxBetweenness_NegativeSampleSize (line 88) | func TestApproxBetweenness_NegativeSampleSize(t *testing.T) { function TestRecommendSampleSize (line 104) | func TestRecommendSampleSize(t *testing.T) { function TestBetweennessMode_ConfigIntegration (line 127) | func TestBetweennessMode_ConfigIntegration(t *testing.T) { function BenchmarkApproxBetweenness_500nodes_Exact (line 150) | func BenchmarkApproxBetweenness_500nodes_Exact(b *testing.B) { function BenchmarkApproxBetweenness_500nodes_Sample100 (line 159) | func BenchmarkApproxBetweenness_500nodes_Sample100(b *testing.B) { function BenchmarkApproxBetweenness_500nodes_Sample50 (line 168) | func BenchmarkApproxBetweenness_500nodes_Sample50(b *testing.B) { function generateChainGraph (line 178) | func generateChainGraph(n int) []model.Issue { function generateID (line 195) | func generateID(i int) string { FILE: pkg/analysis/buffer_pool_test.go function createTestBuffer (line 10) | func createTestBuffer() *brandesBuffers { function TestBrandesBuffersInitialization (line 28) | func TestBrandesBuffersInitialization(t *testing.T) { function TestResetClearsAllValues (line 68) | func TestResetClearsAllValues(t *testing.T) { function TestResetRetainsPredCapacity (line 118) | func TestResetRetainsPredCapacity(t *testing.T) { function TestResetTriggersResizeOnOversizedBuffers (line 148) | func TestResetTriggersResizeOnOversizedBuffers(t *testing.T) { function TestResetHandlesEmptyNodes (line 182) | func TestResetHandlesEmptyNodes(t *testing.T) { function TestPoolReturnsNonNilBuffer (line 206) | func TestPoolReturnsNonNilBuffer(t *testing.T) { function TestPoolPreallocation (line 222) | func TestPoolPreallocation(t *testing.T) { function TestPoolEvictionRecovery (line 256) | func TestPoolEvictionRecovery(t *testing.T) { function TestResetEquivalentToFreshAllocation (line 287) | func TestResetEquivalentToFreshAllocation(t *testing.T) { function TestStaleEntriesNotAccessible (line 331) | func TestStaleEntriesNotAccessible(t *testing.T) { function TestSliceCapacityRetention (line 363) | func TestSliceCapacityRetention(t *testing.T) { function TestBufferPoolConcurrentAccess (line 404) | func TestBufferPoolConcurrentAccess(t *testing.T) { function TestBufferPoolLifecycle (line 440) | func TestBufferPoolLifecycle(t *testing.T) { function TestConcurrentPoolGetPut (line 472) | func TestConcurrentPoolGetPut(t *testing.T) { FILE: pkg/analysis/cache.go constant robotAnalysisDiskCacheVersion (line 23) | robotAnalysisDiskCacheVersion = 1 constant robotAnalysisDiskCacheFileName (line 24) | robotAnalysisDiskCacheFileName = "analysis_cache.json" constant robotAnalysisDiskCacheDirName (line 25) | robotAnalysisDiskCacheDirName = "bv" constant robotAnalysisDiskCacheMaxEntries (line 26) | robotAnalysisDiskCacheMaxEntries = 10 constant robotAnalysisDiskCacheMaxAge (line 27) | robotAnalysisDiskCacheMaxAge = 24 * time.Hour constant robotAnalysisDiskCacheMaxEntrySize (line 28) | robotAnalysisDiskCacheMaxEntrySize = 10 << 20 type Cache (line 33) | type Cache struct method Get (line 63) | func (c *Cache) Get(issues []model.Issue) (*GraphStats, bool) { method GetByHash (line 71) | func (c *Cache) GetByHash(hash string) (*GraphStats, bool) { method Set (line 86) | func (c *Cache) Set(issues []model.Issue, stats *GraphStats) { method SetByHash (line 93) | func (c *Cache) SetByHash(hash string, stats *GraphStats) { method Invalidate (line 103) | func (c *Cache) Invalidate() { method SetTTL (line 113) | func (c *Cache) SetTTL(ttl time.Duration) { method Hash (line 120) | func (c *Cache) Hash() string { method Stats (line 127) | func (c *Cache) Stats() (hash string, age time.Duration, hasData bool) { constant DefaultCacheTTL (line 42) | DefaultCacheTTL = 5 * time.Minute function GetGlobalCache (line 50) | func GetGlobalCache() *Cache { function NewCache (line 55) | func NewCache(ttl time.Duration) *Cache { function ComputeDataHash (line 140) | func ComputeDataHash(issues []model.Issue) string { type IssueFingerprint (line 307) | type IssueFingerprint struct type IssueDiff (line 314) | type IssueDiff struct function ComputeIssueFingerprint (line 324) | func ComputeIssueFingerprint(issue model.Issue) IssueFingerprint { function ComputeIssueDiff (line 333) | func ComputeIssueDiff(oldIssues, newIssues []model.Issue) IssueDiff { function computeIssueContentHash (line 382) | func computeIssueContentHash(issue model.Issue) string { function computeIssueDependencyHash (line 443) | func computeIssueDependencyHash(issue model.Issue) string { function writeStringHash (line 488) | func writeStringHash(w io.Writer, v string) { function writeStringPtrHash (line 495) | func writeStringPtrHash(w io.Writer, v *string) { function writeIntHash (line 502) | func writeIntHash(w io.Writer, v int) { function writeIntPtrHash (line 507) | func writeIntPtrHash(w io.Writer, v *int) { function writeInt64Hash (line 514) | func writeInt64Hash(w io.Writer, v int64) { function writeTimeHash (line 519) | func writeTimeHash(w io.Writer, t time.Time) { function writeTimePtrHash (line 526) | func writeTimePtrHash(w io.Writer, t *time.Time) { function ComputeConfigHash (line 534) | func ComputeConfigHash(config *AnalysisConfig) string { type CachedAnalyzer (line 545) | type CachedAnalyzer struct method SetConfig (line 572) | func (ca *CachedAnalyzer) SetConfig(config *AnalysisConfig) { method AnalyzeAsync (line 578) | func (ca *CachedAnalyzer) AnalyzeAsync(ctx context.Context) *GraphStats { method Analyze (line 604) | func (ca *CachedAnalyzer) Analyze() GraphStats { method DataHash (line 639) | func (ca *CachedAnalyzer) DataHash() string { method WasCacheHit (line 644) | func (ca *CachedAnalyzer) WasCacheHit() bool { function NewCachedAnalyzer (line 558) | func NewCachedAnalyzer(issues []model.Issue, cache *Cache) *CachedAnalyz... type robotAnalysisDiskCacheFile (line 648) | type robotAnalysisDiskCacheFile struct type robotAnalysisDiskCacheEntry (line 653) | type robotAnalysisDiskCacheEntry struct type graphStatsCacheBlob (line 662) | type graphStatsCacheBlob struct method toGraphStats (line 684) | func (b graphStatsCacheBlob) toGraphStats() *GraphStats { function robotDiskCacheEnabled (line 731) | func robotDiskCacheEnabled() bool { function beadsDirModTime (line 740) | func beadsDirModTime() time.Time { function robotAnalysisDiskCachePath (line 790) | func robotAnalysisDiskCachePath(create bool) (string, error) { function readRobotDiskCacheLocked (line 807) | func readRobotDiskCacheLocked(f *os.File) robotAnalysisDiskCacheFile { function writeRobotDiskCacheLocked (line 826) | func writeRobotDiskCacheLocked(f *os.File, cf robotAnalysisDiskCacheFile... function pruneRobotDiskCacheEntries (line 844) | func pruneRobotDiskCacheEntries(now time.Time, entries map[string]robotA... function evictRobotDiskCacheLRU (line 852) | func evictRobotDiskCacheLRU(entries map[string]robotAnalysisDiskCacheEnt... function getRobotDiskCachedStats (line 883) | func getRobotDiskCachedStats(fullKey string) (stats *GraphStats, xfetchR... function putRobotDiskCachedStats (line 941) | func putRobotDiskCachedStats(fullKey, dataHash, configHash string, stats... FILE: pkg/analysis/cache_extra_test.go function TestCacheSetTTLAndHash (line 10) | func TestCacheSetTTLAndHash(t *testing.T) { FILE: pkg/analysis/cache_test.go function TestComputeDataHash_Empty (line 18) | func TestComputeDataHash_Empty(t *testing.T) { function TestComputeDataHash_Deterministic (line 30) | func TestComputeDataHash_Deterministic(t *testing.T) { function TestComputeDataHash_OrderIndependent (line 44) | func TestComputeDataHash_OrderIndependent(t *testing.T) { function TestComputeDataHash_DifferentData (line 62) | func TestComputeDataHash_DifferentData(t *testing.T) { function TestComputeDataHash_Dependencies (line 79) | func TestComputeDataHash_Dependencies(t *testing.T) { function TestCache_GetSet (line 99) | func TestCache_GetSet(t *testing.T) { function TestCache_HashMismatch (line 126) | func TestCache_HashMismatch(t *testing.T) { function TestCache_TTLExpiry (line 144) | func TestCache_TTLExpiry(t *testing.T) { function TestCache_Invalidate (line 170) | func TestCache_Invalidate(t *testing.T) { function TestCache_Stats (line 196) | func TestCache_Stats(t *testing.T) { function TestCachedAnalyzer_CacheHit (line 224) | func TestCachedAnalyzer_CacheHit(t *testing.T) { function TestCachedAnalyzer_CacheMiss_DifferentData (line 259) | func TestCachedAnalyzer_CacheMiss_DifferentData(t *testing.T) { function TestCachedAnalyzer_DataHash (line 286) | func TestCachedAnalyzer_DataHash(t *testing.T) { function TestComputeIssueFingerprint_Deterministic (line 298) | func TestComputeIssueFingerprint_Deterministic(t *testing.T) { function TestComputeIssueDiff (line 338) | func TestComputeIssueDiff(t *testing.T) { function TestGlobalCache (line 393) | func TestGlobalCache(t *testing.T) { function TestRobotDiskCache_WritesAndHits (line 422) | func TestRobotDiskCache_WritesAndHits(t *testing.T) { function TestRobotDiskCache_XFetchRefreshRecomputes (line 482) | func TestRobotDiskCache_XFetchRefreshRecomputes(t *testing.T) { function TestRobotDiskCache_EvictsToMaxEntries (line 562) | func TestRobotDiskCache_EvictsToMaxEntries(t *testing.T) { FILE: pkg/analysis/config.go type AnalysisConfig (line 12) | type AnalysisConfig struct method AllPhase2Disabled (line 269) | func (c AnalysisConfig) AllPhase2Disabled() bool { method SkippedMetrics (line 299) | func (c AnalysisConfig) SkippedMetrics() []SkippedMetric { function DefaultConfig (line 52) | func DefaultConfig() AnalysisConfig { function ConfigForSize (line 86) | func ConfigForSize(nodeCount, edgeCount int) AnalysisConfig { function FullAnalysisConfig (line 215) | func FullAnalysisConfig() AnalysisConfig { function TriageConfig (line 245) | func TriageConfig() AnalysisConfig { function NoPhase2Config (line 283) | func NoPhase2Config() AnalysisConfig { type SkippedMetric (line 331) | type SkippedMetric struct constant EnvSkipPhase2 (line 338) | EnvSkipPhase2 = "BV_SKIP_PHASE2" constant EnvPhase2TimeoutSeconds (line 340) | EnvPhase2TimeoutSeconds = "BV_PHASE2_TIMEOUT_S" function ApplyEnvOverrides (line 349) | func ApplyEnvOverrides(cfg AnalysisConfig) AnalysisConfig { function envPositiveInt (line 387) | func envPositiveInt(name string) (int, bool) { function envBool (line 399) | func envBool(name string) bool { FILE: pkg/analysis/config_test.go function TestConfigForSize_SmallGraph (line 8) | func TestConfigForSize_SmallGraph(t *testing.T) { function TestConfigForSize_MediumGraph (line 37) | func TestConfigForSize_MediumGraph(t *testing.T) { function TestConfigForSize_LargeGraph_Sparse (line 60) | func TestConfigForSize_LargeGraph_Sparse(t *testing.T) { function TestConfigForSize_LargeGraph_Dense (line 77) | func TestConfigForSize_LargeGraph_Dense(t *testing.T) { function TestConfigForSize_XLGraph (line 96) | func TestConfigForSize_XLGraph(t *testing.T) { function TestConfigForSize_XLGraph_VeryDense (line 125) | func TestConfigForSize_XLGraph_VeryDense(t *testing.T) { function TestConfigForSize_XLGraph_VerySparse (line 138) | func TestConfigForSize_XLGraph_VerySparse(t *testing.T) { function TestSkippedMetrics (line 148) | func TestSkippedMetrics(t *testing.T) { function TestDefaultConfig (line 179) | func TestDefaultConfig(t *testing.T) { function TestFullAnalysisConfig (line 203) | func TestFullAnalysisConfig(t *testing.T) { function TestDefaultConfig_EnvSkipPhase2 (line 218) | func TestDefaultConfig_EnvSkipPhase2(t *testing.T) { function TestDefaultConfig_EnvPhase2TimeoutOverride (line 234) | func TestDefaultConfig_EnvPhase2TimeoutOverride(t *testing.T) { function TestDefaultConfig_EnvPhase2TimeoutInvalidIgnored (line 246) | func TestDefaultConfig_EnvPhase2TimeoutInvalidIgnored(t *testing.T) { FILE: pkg/analysis/cycle_warnings.go type CycleWarningConfig (line 13) | type CycleWarningConfig struct function DefaultCycleWarningConfig (line 24) | func DefaultCycleWarningConfig() CycleWarningConfig { function DetectCycleWarnings (line 32) | func DetectCycleWarnings(issues []model.Issue, config CycleWarningConfig... function formatCyclePath (line 128) | func formatCyclePath(cycle []string) string { function WouldCreateCycle (line 136) | func WouldCreateCycle(issues []model.Issue, fromID, toID string) (bool, ... function CheckDependencyAddition (line 194) | func CheckDependencyAddition(issues []model.Issue, fromID, toID string) ... type CycleWarningDetector (line 205) | type CycleWarningDetector struct method Detect (line 217) | func (d *CycleWarningDetector) Detect(issues []model.Issue) []Suggesti... method ValidateNewDependency (line 222) | func (d *CycleWarningDetector) ValidateNewDependency(issues []model.Is... function NewCycleWarningDetector (line 210) | func NewCycleWarningDetector(config CycleWarningConfig) *CycleWarningDet... FILE: pkg/analysis/cycle_warnings_test.go function TestDefaultCycleWarningConfig (line 11) | func TestDefaultCycleWarningConfig(t *testing.T) { function TestDetectCycleWarnings_Empty (line 22) | func TestDetectCycleWarnings_Empty(t *testing.T) { function TestDetectCycleWarnings_NoCycle (line 39) | func TestDetectCycleWarnings_NoCycle(t *testing.T) { function TestDetectCycleWarnings_SimpleCycle (line 49) | func TestDetectCycleWarnings_SimpleCycle(t *testing.T) { function TestDetectCycleWarnings_DirectCycle (line 73) | func TestDetectCycleWarnings_DirectCycle(t *testing.T) { function TestDetectCycleWarnings_MaxCycles (line 116) | func TestDetectCycleWarnings_MaxCycles(t *testing.T) { function TestDetectCycleWarnings_ConfidenceByLength (line 145) | func TestDetectCycleWarnings_ConfidenceByLength(t *testing.T) { function TestDetectCycleWarnings_MetadataIncluded (line 169) | func TestDetectCycleWarnings_MetadataIncluded(t *testing.T) { function TestFormatCyclePath (line 192) | func TestFormatCyclePath(t *testing.T) { function TestWouldCreateCycle_NoCycle (line 230) | func TestWouldCreateCycle_NoCycle(t *testing.T) { function TestWouldCreateCycle_CreatesCycle (line 241) | func TestWouldCreateCycle_CreatesCycle(t *testing.T) { function TestWouldCreateCycle_SelfLoop (line 256) | func TestWouldCreateCycle_SelfLoop(t *testing.T) { function TestWouldCreateCycle_ExistingCycle (line 273) | func TestWouldCreateCycle_ExistingCycle(t *testing.T) { function TestCheckDependencyAddition_Valid (line 283) | func TestCheckDependencyAddition_Valid(t *testing.T) { function TestCheckDependencyAddition_WouldCreateCycle (line 301) | func TestCheckDependencyAddition_WouldCreateCycle(t *testing.T) { function TestCycleWarningDetector (line 327) | func TestCycleWarningDetector(t *testing.T) { function TestCycleWarningDetector_ValidateNewDependency (line 343) | func TestCycleWarningDetector_ValidateNewDependency(t *testing.T) { function TestDetectCycleWarnings_SelfLoopConfig (line 372) | func TestDetectCycleWarnings_SelfLoopConfig(t *testing.T) { function TestDetectCycleWarnings_Determinism (line 415) | func TestDetectCycleWarnings_Determinism(t *testing.T) { function BenchmarkDetectCycleWarnings_Small (line 434) | func BenchmarkDetectCycleWarnings_Small(b *testing.B) { function BenchmarkDetectCycleWarnings_Medium (line 444) | func BenchmarkDetectCycleWarnings_Medium(b *testing.B) { function BenchmarkWouldCreateCycle_Chain (line 454) | func BenchmarkWouldCreateCycle_Chain(b *testing.B) { function BenchmarkCheckDependencyAddition (line 463) | func BenchmarkCheckDependencyAddition(b *testing.B) { FILE: pkg/analysis/dependency_suggest.go type DependencySuggestionConfig (line 12) | type DependencySuggestionConfig struct function DefaultDependencySuggestionConfig (line 39) | func DefaultDependencySuggestionConfig() DependencySuggestionConfig { type DependencyMatch (line 51) | type DependencyMatch struct function DetectMissingDependencies (line 62) | func DetectMissingDependencies(issues []model.Issue, config DependencySu... function findSharedKeys (line 258) | func findSharedKeys(m1, m2 map[string]bool) []string { function sortMatchesByConfidence (line 270) | func sortMatchesByConfidence(matches []DependencyMatch) { type DependencySuggestionDetector (line 277) | type DependencySuggestionDetector struct method Detect (line 289) | func (d *DependencySuggestionDetector) Detect(issues []model.Issue) []... function NewDependencySuggestionDetector (line 282) | func NewDependencySuggestionDetector(config DependencySuggestionConfig) ... FILE: pkg/analysis/dependency_suggest_test.go function TestDefaultDependencySuggestionConfig (line 14) | func TestDefaultDependencySuggestionConfig(t *testing.T) { function TestDependencyMatch_JSON (line 38) | func TestDependencyMatch_JSON(t *testing.T) { function TestDetectMissingDependencies_Empty (line 69) | func TestDetectMissingDependencies_Empty(t *testing.T) { function TestDetectMissingDependencies_NoSharedKeywords (line 86) | func TestDetectMissingDependencies_NoSharedKeywords(t *testing.T) { function TestDetectMissingDependencies_SharedKeywords (line 100) | func TestDetectMissingDependencies_SharedKeywords(t *testing.T) { function TestDetectMissingDependencies_ExistingDepsIgnored (line 144) | func TestDetectMissingDependencies_ExistingDepsIgnored(t *testing.T) { function TestDetectMissingDependencies_ClosedIssuesSkipped (line 183) | func TestDetectMissingDependencies_ClosedIssuesSkipped(t *testing.T) { function TestDetectMissingDependencies_TombstoneSkipped (line 210) | func TestDetectMissingDependencies_TombstoneSkipped(t *testing.T) { function TestDetectMissingDependencies_LabelOverlap (line 236) | func TestDetectMissingDependencies_LabelOverlap(t *testing.T) { function TestDetectMissingDependencies_MaxSuggestions (line 271) | func TestDetectMissingDependencies_MaxSuggestions(t *testing.T) { function TestDetectMissingDependencies_ConfidenceSorted (line 294) | func TestDetectMissingDependencies_ConfidenceSorted(t *testing.T) { function TestFindSharedKeys (line 339) | func TestFindSharedKeys(t *testing.T) { function TestSortMatchesByConfidence (line 388) | func TestSortMatchesByConfidence(t *testing.T) { function TestDependencySuggestionDetector (line 407) | func TestDependencySuggestionDetector(t *testing.T) { function TestDetectMissingDependencies_IDMentioned (line 429) | func TestDetectMissingDependencies_IDMentioned(t *testing.T) { function TestDetectMissingDependencies_DeterminismWithTimestamps (line 456) | func TestDetectMissingDependencies_DeterminismWithTimestamps(t *testing.... function BenchmarkDetectMissingDependencies_Small (line 497) | func BenchmarkDetectMissingDependencies_Small(b *testing.B) { function BenchmarkDetectMissingDependencies_Medium (line 507) | func BenchmarkDetectMissingDependencies_Medium(b *testing.B) { function BenchmarkDetectMissingDependencies_Large (line 517) | func BenchmarkDetectMissingDependencies_Large(b *testing.B) { FILE: pkg/analysis/diff.go type Snapshot (line 12) | type Snapshot struct method computeCounts (line 55) | func (s *Snapshot) computeCounts() { function NewSnapshot (line 26) | func NewSnapshot(issues []model.Issue) *Snapshot { function NewSnapshotAt (line 40) | func NewSnapshotAt(issues []model.Issue, timestamp time.Time, revision s... type SnapshotDiff (line 75) | type SnapshotDiff struct method IsEmpty (line 464) | func (d *SnapshotDiff) IsEmpty() bool { method HasSignificantChanges (line 471) | func (d *SnapshotDiff) HasSignificantChanges() bool { type ModifiedIssue (line 101) | type ModifiedIssue struct type FieldChange (line 110) | type FieldChange struct type MetricDeltas (line 117) | type MetricDeltas struct type DiffSummary (line 130) | type DiffSummary struct function CompareSnapshots (line 144) | func CompareSnapshots(from, to *Snapshot) *SnapshotDiff { function detectChanges (line 245) | func detectChanges(from, to model.Issue) []FieldChange { function compareCycles (line 344) | func compareCycles(from, to *GraphStats) (newCycles, resolvedCycles [][]... function sortCycles (line 383) | func sortCycles(cycles [][]string) { function normalizeCycle (line 390) | func normalizeCycle(cycle []string) string { function calculateMetricDeltas (line 421) | func calculateMetricDeltas(from, to *Snapshot) MetricDeltas { function avgMapValue (line 444) | func avgMapValue(m map[string]float64) float64 { function calculateSummary (line 481) | func calculateSummary(diff *SnapshotDiff) DiffSummary { function priorityString (line 531) | func priorityString(p int) string { function dependencySet (line 539) | func dependencySet(deps []*model.Dependency) map[string]bool { function stringSet (line 552) | func stringSet(strs []string) map[string]bool { function equalStringSet (line 560) | func equalStringSet(a, b map[string]bool) bool { function formatDeps (line 572) | func formatDeps(deps map[string]bool) string { function formatLabels (line 584) | func formatLabels(labels []string) string { function joinStrings (line 594) | func joinStrings(strs []string, sep string) string { function sortIssuesByID (line 605) | func sortIssuesByID(issues []model.Issue) { function sortModifiedByID (line 611) | func sortModifiedByID(modified []ModifiedIssue) { FILE: pkg/analysis/diff_extended_test.go function TestDiff_TextFieldChanges (line 12) | func TestDiff_TextFieldChanges(t *testing.T) { function TestDiff_DependencyChanges (line 65) | func TestDiff_DependencyChanges(t *testing.T) { function TestDiff_LabelChanges (line 103) | func TestDiff_LabelChanges(t *testing.T) { function TestDiff_ComplexScenario (line 133) | func TestDiff_ComplexScenario(t *testing.T) { FILE: pkg/analysis/diff_test.go function TestNewSnapshot (line 10) | func TestNewSnapshot(t *testing.T) { function TestNewSnapshotAt (line 32) | func TestNewSnapshotAt(t *testing.T) { function TestCompareSnapshots_NewIssues (line 48) | func TestCompareSnapshots_NewIssues(t *testing.T) { function TestCompareSnapshots_RemovedIssues (line 72) | func TestCompareSnapshots_RemovedIssues(t *testing.T) { function TestCompareSnapshots_ClosedIssues (line 93) | func TestCompareSnapshots_ClosedIssues(t *testing.T) { function TestCompareSnapshots_TombstoneCountsAsClosed (line 113) | func TestCompareSnapshots_TombstoneCountsAsClosed(t *testing.T) { function TestCompareSnapshots_ReopenedIssues (line 133) | func TestCompareSnapshots_ReopenedIssues(t *testing.T) { function TestDependencySetIgnoresNilAndEmpty (line 150) | func TestDependencySetIgnoresNilAndEmpty(t *testing.T) { function TestCompareSnapshots_ModifiedIssues (line 168) | func TestCompareSnapshots_ModifiedIssues(t *testing.T) { function TestCompareSnapshots_CycleChanges (line 193) | func TestCompareSnapshots_CycleChanges(t *testing.T) { function TestDetectChanges (line 217) | func TestDetectChanges(t *testing.T) { function TestNormalizeCycle (line 254) | func TestNormalizeCycle(t *testing.T) { function TestMetricDeltas (line 269) | func TestMetricDeltas(t *testing.T) { function TestDiffSummary_HealthTrend (line 295) | func TestDiffSummary_HealthTrend(t *testing.T) { function TestSnapshotDiff_IsEmpty (line 341) | func TestSnapshotDiff_IsEmpty(t *testing.T) { function TestSnapshotDiff_HasSignificantChanges (line 355) | func TestSnapshotDiff_HasSignificantChanges(t *testing.T) { function TestAvgMapValue (line 370) | func TestAvgMapValue(t *testing.T) { function TestCompareSnapshots_DependencyTypeChange (line 391) | func TestCompareSnapshots_DependencyTypeChange(t *testing.T) { FILE: pkg/analysis/duplicates.go function isClosedLikeDuplicateStatus (line 35) | func isClosedLikeDuplicateStatus(status model.Status) bool { type DuplicateConfig (line 40) | type DuplicateConfig struct function DefaultDuplicateConfig (line 59) | func DefaultDuplicateConfig() DuplicateConfig { type DuplicatePair (line 69) | type DuplicatePair struct function DetectDuplicates (line 79) | func DetectDuplicates(issues []model.Issue, config DuplicateConfig) []Su... function intersectKeywords (line 209) | func intersectKeywords(a, b []string) []string { function extractKeywords (line 225) | func extractKeywords(title, description string) []string { function sortPairsBySimilarity (line 261) | func sortPairsBySimilarity(pairs []DuplicatePair) { function truncateStringSlice (line 268) | func truncateStringSlice(s []string, max int) []string { type DuplicateDetector (line 276) | type DuplicateDetector struct method Detect (line 290) | func (d *DuplicateDetector) Detect(issues []model.Issue) []Suggestion { method LastRun (line 297) | func (d *DuplicateDetector) LastRun() time.Time { function NewDuplicateDetector (line 283) | func NewDuplicateDetector(config DuplicateConfig) *DuplicateDetector { FILE: pkg/analysis/duplicates_test.go function TestExtractKeywords_BasicExtraction (line 14) | func TestExtractKeywords_BasicExtraction(t *testing.T) { function TestExtractKeywords_FiltersShortWords (line 79) | func TestExtractKeywords_FiltersShortWords(t *testing.T) { function TestExtractKeywords_RemovesDuplicates (line 88) | func TestExtractKeywords_RemovesDuplicates(t *testing.T) { function TestExtractKeywords_EmptyInput (line 101) | func TestExtractKeywords_EmptyInput(t *testing.T) { function TestExtractKeywords_StopWordsFiltered (line 108) | func TestExtractKeywords_StopWordsFiltered(t *testing.T) { function TestDetectDuplicates_IdenticalTitles (line 119) | func TestDetectDuplicates_IdenticalTitles(t *testing.T) { function TestDetectDuplicates_IdenticalContent (line 141) | func TestDetectDuplicates_IdenticalContent(t *testing.T) { function TestDetectDuplicates_SimilarTitles (line 169) | func TestDetectDuplicates_SimilarTitles(t *testing.T) { function TestDetectDuplicates_DifferentCase (line 184) | func TestDetectDuplicates_DifferentCase(t *testing.T) { function TestDetectDuplicates_ShortGenericTitles (line 202) | func TestDetectDuplicates_ShortGenericTitles(t *testing.T) { function TestDetectDuplicates_CompletelyDifferent (line 221) | func TestDetectDuplicates_CompletelyDifferent(t *testing.T) { function TestDetectDuplicates_IgnoreClosedVsOpen (line 236) | func TestDetectDuplicates_IgnoreClosedVsOpen(t *testing.T) { function TestDetectDuplicates_SkipsTombstone (line 257) | func TestDetectDuplicates_SkipsTombstone(t *testing.T) { function TestDetectDuplicates_JaccardThreshold (line 275) | func TestDetectDuplicates_JaccardThreshold(t *testing.T) { function TestDetectDuplicates_MaxSuggestions (line 294) | func TestDetectDuplicates_MaxSuggestions(t *testing.T) { function TestDetectDuplicates_MinKeywords (line 314) | func TestDetectDuplicates_MinKeywords(t *testing.T) { function TestDetectDuplicates_SingleIssue (line 334) | func TestDetectDuplicates_SingleIssue(t *testing.T) { function TestDetectDuplicates_EmptyIssues (line 346) | func TestDetectDuplicates_EmptyIssues(t *testing.T) { function TestDetectDuplicates_SuggestionStructure (line 354) | func TestDetectDuplicates_SuggestionStructure(t *testing.T) { function TestDetectDuplicates_SortedBySimilarity (line 392) | func TestDetectDuplicates_SortedBySimilarity(t *testing.T) { function TestSortPairsBySimilarity (line 416) | func TestSortPairsBySimilarity(t *testing.T) { function TestSortPairsBySimilarity_Empty (line 433) | func TestSortPairsBySimilarity_Empty(t *testing.T) { function TestTruncateStringSlice (line 438) | func TestTruncateStringSlice(t *testing.T) { function TestDuplicateDetector_Detect (line 466) | func TestDuplicateDetector_Detect(t *testing.T) { function TestDuplicateDetector_LastRun (line 480) | func TestDuplicateDetector_LastRun(t *testing.T) { function TestDuplicateDetector_CustomConfig (line 501) | func TestDuplicateDetector_CustomConfig(t *testing.T) { function TestDefaultDuplicateConfig (line 527) | func TestDefaultDuplicateConfig(t *testing.T) { function TestDuplicatePair_Fields (line 548) | func TestDuplicatePair_Fields(t *testing.T) { function TestDetectDuplicates_RealisticScenario (line 578) | func TestDetectDuplicates_RealisticScenario(t *testing.T) { function TestDetectDuplicates_LargeIssueSet (line 613) | func TestDetectDuplicates_LargeIssueSet(t *testing.T) { FILE: pkg/analysis/e2e_startup_test.go function skipIfNotPerfTest (line 19) | func skipIfNotPerfTest(t *testing.T) { function TestE2EStartup_SmallProject (line 37) | func TestE2EStartup_SmallProject(t *testing.T) { function TestE2EStartup_MediumProject (line 55) | func TestE2EStartup_MediumProject(t *testing.T) { function TestE2EStartup_LargeProject (line 73) | func TestE2EStartup_LargeProject(t *testing.T) { function TestE2EStartup_XLProject (line 91) | func TestE2EStartup_XLProject(t *testing.T) { function TestE2EStartup_WithRealBeadsFile (line 109) | func TestE2EStartup_WithRealBeadsFile(t *testing.T) { function TestE2EStartup_PathologicalCycles (line 156) | func TestE2EStartup_PathologicalCycles(t *testing.T) { function TestE2EStartup_PathologicalDense (line 182) | func TestE2EStartup_PathologicalDense(t *testing.T) { function TestE2EStartup_NoRegression (line 208) | func TestE2EStartup_NoRegression(t *testing.T) { function generateRealisticIssues (line 279) | func generateRealisticIssues(n, avgDeps int) []model.Issue { function generateManyCyclesIssues (line 316) | func generateManyCyclesIssues(n int) []model.Issue { function generateDenseIssues (line 340) | func generateDenseIssues(n, depsPerNode int) []model.Issue { function TestPhase1Only_MediumProject (line 367) | func TestPhase1Only_MediumProject(t *testing.T) { function TestPhase1Only_LargeProject (line 397) | func TestPhase1Only_LargeProject(t *testing.T) { FILE: pkg/analysis/eta.go type ETAEstimate (line 14) | type ETAEstimate struct function EstimateETAForIssue (line 31) | func EstimateETAForIssue(issues []model.Issue, stats *GraphStats, issueI... function estimateComplexityMinutes (line 94) | func estimateComplexityMinutes(issue model.Issue, stats *GraphStats, med... function estimateVelocityMinutesPerDay (line 151) | func estimateVelocityMinutesPerDay(issues []model.Issue, issue model.Iss... function velocityMinutesPerDayForLabel (line 185) | func velocityMinutesPerDayForLabel(issues []model.Issue, label string, s... function hasLabel (line 224) | func hasLabel(labels []string, target string) bool { function estimateETAConfidence (line 237) | func estimateETAConfidence(issue model.Issue, velocitySamples int) float... function computeMedianEstimatedMinutes (line 261) | func computeMedianEstimatedMinutes(issues []model.Issue) int { function durationDays (line 283) | func durationDays(days float64) time.Duration { function clampFloat (line 290) | func clampFloat(v, lo, hi float64) float64 { FILE: pkg/analysis/eta_test.go function TestEstimateETAForIssue_Basic (line 11) | func TestEstimateETAForIssue_Basic(t *testing.T) { function TestEstimateETAForIssue_NotFound (line 54) | func TestEstimateETAForIssue_NotFound(t *testing.T) { function TestEstimateETAForIssue_WithExplicitEstimate (line 64) | func TestEstimateETAForIssue_WithExplicitEstimate(t *testing.T) { function TestEstimateETAForIssue_TypeWeights (line 101) | func TestEstimateETAForIssue_TypeWeights(t *testing.T) { function TestEstimateETAForIssue_MultipleAgents (line 128) | func TestEstimateETAForIssue_MultipleAgents(t *testing.T) { function TestEstimateETAForIssue_VelocityFromClosures (line 150) | func TestEstimateETAForIssue_VelocityFromClosures(t *testing.T) { function TestEstimateETAForIssue_DepthAffectsComplexity (line 190) | func TestEstimateETAForIssue_DepthAffectsComplexity(t *testing.T) { function TestComputeMedianEstimatedMinutes (line 224) | func TestComputeMedianEstimatedMinutes(t *testing.T) { function TestClampFloat (line 259) | func TestClampFloat(t *testing.T) { function TestDurationDays (line 271) | func TestDurationDays(t *testing.T) { function TestHasLabelETA (line 287) | func TestHasLabelETA(t *testing.T) { function TestEstimateETAForIssue_AllIssueTypes (line 305) | func TestEstimateETAForIssue_AllIssueTypes(t *testing.T) { function TestEstimateETAForIssue_ZeroAgents (line 340) | func TestEstimateETAForIssue_ZeroAgents(t *testing.T) { function TestEstimateETAForIssue_DescriptionLengthImpact (line 362) | func TestEstimateETAForIssue_DescriptionLengthImpact(t *testing.T) { function TestEstimateETAForIssue_NoLabelsConfidencePenalty (line 394) | func TestEstimateETAForIssue_NoLabelsConfidencePenalty(t *testing.T) { function TestVelocityMinutesPerDayForLabel_EdgeCases (line 423) | func TestVelocityMinutesPerDayForLabel_EdgeCases(t *testing.T) { function TestEstimateETAConfidence_AllCases (line 461) | func TestEstimateETAConfidence_AllCases(t *testing.T) { function TestEstimateETAForIssue_GlobalVelocityFallback (line 518) | func TestEstimateETAForIssue_GlobalVelocityFallback(t *testing.T) { FILE: pkg/analysis/feedback.go constant FeedbackFile (line 15) | FeedbackFile = "feedback.json" type FeedbackEvent (line 18) | type FeedbackEvent struct type WeightAdjustment (line 26) | type WeightAdjustment struct type FeedbackData (line 34) | type FeedbackData struct method Save (line 105) | func (f *FeedbackData) Save(beadsDir string) error { method RecordFeedback (line 125) | func (f *FeedbackData) RecordFeedback(issueID, action string, score fl... method updateWeightAdjustments (line 171) | func (f *FeedbackData) updateWeightAdjustments(action string, breakdow... method GetAdjustedWeights (line 218) | func (f *FeedbackData) GetAdjustedWeights() map[string]float64 { method getAdjustedWeightsLocked (line 225) | func (f *FeedbackData) getAdjustedWeightsLocked() map[string]float64 { method GetEffectiveWeights (line 234) | func (f *FeedbackData) GetEffectiveWeights() map[string]float64 { method getEffectiveWeightsLocked (line 241) | func (f *FeedbackData) getEffectiveWeightsLocked() map[string]float64 { method Reset (line 279) | func (f *FeedbackData) Reset() { method Summary (line 290) | func (f *FeedbackData) Summary() string { method ToJSON (line 320) | func (f *FeedbackData) ToJSON() FeedbackJSON { type FeedbackStats (line 45) | type FeedbackStats struct function DefaultFeedbackData (line 53) | func DefaultFeedbackData() *FeedbackData { function defaultWeightAdjustments (line 65) | func defaultWeightAdjustments() []WeightAdjustment { function LoadFeedback (line 83) | func LoadFeedback(beadsDir string) (*FeedbackData, error) { function updateRunningAverage (line 160) | func updateRunningAverage(currentAvg, newValue float64, count int) float... constant smoothingAlpha (line 169) | smoothingAlpha = 0.2 type FeedbackJSON (line 307) | type FeedbackJSON struct FILE: pkg/analysis/feedback_test.go function TestDefaultFeedbackData (line 9) | func TestDefaultFeedbackData(t *testing.T) { function TestRecordFeedback (line 27) | func TestRecordFeedback(t *testing.T) { function TestRecordIgnoreFeedback (line 62) | func TestRecordIgnoreFeedback(t *testing.T) { function TestInvalidAction (line 92) | func TestInvalidAction(t *testing.T) { function TestSaveAndLoad (line 101) | func TestSaveAndLoad(t *testing.T) { function TestLoadNonexistent (line 141) | func TestLoadNonexistent(t *testing.T) { function TestGetEffectiveWeights (line 155) | func TestGetEffectiveWeights(t *testing.T) { function TestReset (line 172) | func TestReset(t *testing.T) { function TestSummary (line 198) | func TestSummary(t *testing.T) { function TestToJSON (line 215) | func TestToJSON(t *testing.T) { function TestWeightAdjustmentBounds (line 238) | func TestWeightAdjustmentBounds(t *testing.T) { FILE: pkg/analysis/file_lock_unix.go function lockFile (line 11) | func lockFile(f *os.File) error { function unlockFile (line 15) | func unlockFile(f *os.File) error { FILE: pkg/analysis/file_lock_windows.go function lockFile (line 11) | func lockFile(f *os.File) error { function unlockFile (line 17) | func unlockFile(f *os.File) error { FILE: pkg/analysis/golden_test.go type TestGraphFile (line 14) | type TestGraphFile struct type GoldenMetrics (line 21) | type GoldenMetrics struct function loadTestGraph (line 42) | func loadTestGraph(t *testing.T, path string) []model.Issue { function TestGenerateGoldenFiles (line 93) | func TestGenerateGoldenFiles(t *testing.T) { function TestValidateGoldenFiles (line 172) | func TestValidateGoldenFiles(t *testing.T) { function validateMapFloat64 (line 247) | func validateMapFloat64(t *testing.T, name string, actual, expected map[... FILE: pkg/analysis/graph.go type StartupProfile (line 24) | type StartupProfile struct type GraphStats (line 65) | type GraphStats struct method IsPhase2Ready (line 147) | func (s *GraphStats) IsPhase2Ready() bool { method Status (line 154) | func (s *GraphStats) Status() MetricStatus { method WaitForPhase2 (line 183) | func (s *GraphStats) WaitForPhase2() { method GetPageRankScore (line 191) | func (s *GraphStats) GetPageRankScore(id string) float64 { method GetBetweennessScore (line 201) | func (s *GraphStats) GetBetweennessScore(id string) float64 { method GetEigenvectorScore (line 211) | func (s *GraphStats) GetEigenvectorScore(id string) float64 { method GetHubScore (line 221) | func (s *GraphStats) GetHubScore(id string) float64 { method GetAuthorityScore (line 231) | func (s *GraphStats) GetAuthorityScore(id string) float64 { method GetCriticalPathScore (line 241) | func (s *GraphStats) GetCriticalPathScore(id string) float64 { method PageRankValue (line 268) | func (s *GraphStats) PageRankValue(id string) (float64, bool) { method PageRankAll (line 282) | func (s *GraphStats) PageRankAll(fn func(id string, score float64) boo... method BetweennessValue (line 298) | func (s *GraphStats) BetweennessValue(id string) (float64, bool) { method BetweennessAll (line 309) | func (s *GraphStats) BetweennessAll(fn func(id string, score float64) ... method EigenvectorValue (line 324) | func (s *GraphStats) EigenvectorValue(id string) (float64, bool) { method EigenvectorAll (line 335) | func (s *GraphStats) EigenvectorAll(fn func(id string, score float64) ... method HubValue (line 350) | func (s *GraphStats) HubValue(id string) (float64, bool) { method HubsAll (line 361) | func (s *GraphStats) HubsAll(fn func(id string, score float64) bool) { method AuthorityValue (line 376) | func (s *GraphStats) AuthorityValue(id string) (float64, bool) { method AuthoritiesAll (line 387) | func (s *GraphStats) AuthoritiesAll(fn func(id string, score float64) ... method CriticalPathValue (line 402) | func (s *GraphStats) CriticalPathValue(id string) (float64, bool) { method CriticalPathAll (line 413) | func (s *GraphStats) CriticalPathAll(fn func(id string, score float64)... method CoreNumberValue (line 428) | func (s *GraphStats) CoreNumberValue(id string) (int, bool) { method CoreNumberAll (line 439) | func (s *GraphStats) CoreNumberAll(fn func(id string, core int) bool) { method SlackValue (line 454) | func (s *GraphStats) SlackValue(id string) (float64, bool) { method SlackAll (line 465) | func (s *GraphStats) SlackAll(fn func(id string, slack float64) bool) { method IsArticulationPoint (line 480) | func (s *GraphStats) IsArticulationPoint(id string) (bool, bool) { method PageRankRankValue (line 494) | func (s *GraphStats) PageRankRankValue(id string) (int, bool) { method BetweennessRankValue (line 505) | func (s *GraphStats) BetweennessRankValue(id string) (int, bool) { method EigenvectorRankValue (line 516) | func (s *GraphStats) EigenvectorRankValue(id string) (int, bool) { method HubsRankValue (line 527) | func (s *GraphStats) HubsRankValue(id string) (int, bool) { method AuthoritiesRankValue (line 538) | func (s *GraphStats) AuthoritiesRankValue(id string) (int, bool) { method CriticalPathRankValue (line 549) | func (s *GraphStats) CriticalPathRankValue(id string) (int, bool) { method InDegreeRankValue (line 560) | func (s *GraphStats) InDegreeRankValue(id string) (int, bool) { method OutDegreeRankValue (line 571) | func (s *GraphStats) OutDegreeRankValue(id string) (int, bool) { method PageRank (line 594) | func (s *GraphStats) PageRank() map[string]float64 { method Betweenness (line 609) | func (s *GraphStats) Betweenness() map[string]float64 { method Eigenvector (line 624) | func (s *GraphStats) Eigenvector() map[string]float64 { method Hubs (line 639) | func (s *GraphStats) Hubs() map[string]float64 { method Authorities (line 654) | func (s *GraphStats) Authorities() map[string]float64 { method CriticalPathScore (line 669) | func (s *GraphStats) CriticalPathScore() map[string]float64 { method CoreNumber (line 683) | func (s *GraphStats) CoreNumber() map[string]int { method ArticulationPoints (line 697) | func (s *GraphStats) ArticulationPoints() []string { method Slack (line 714) | func (s *GraphStats) Slack() map[string]float64 { method PageRankRank (line 729) | func (s *GraphStats) PageRankRank() map[string]int { method BetweennessRank (line 742) | func (s *GraphStats) BetweennessRank() map[string]int { method EigenvectorRank (line 755) | func (s *GraphStats) EigenvectorRank() map[string]int { method HubsRank (line 768) | func (s *GraphStats) HubsRank() map[string]int { method AuthoritiesRank (line 781) | func (s *GraphStats) AuthoritiesRank() map[string]int { method CriticalPathRank (line 794) | func (s *GraphStats) CriticalPathRank() map[string]int { method InDegreeRank (line 807) | func (s *GraphStats) InDegreeRank() map[string]int { method OutDegreeRank (line 820) | func (s *GraphStats) OutDegreeRank() map[string]int { method Cycles (line 835) | func (s *GraphStats) Cycles() [][]string { type MetricStatus (line 107) | type MetricStatus struct type statusEntry (line 120) | type statusEntry struct method MarshalJSON (line 128) | func (s statusEntry) MarshalJSON() ([]byte, error) { function stateFromTiming (line 161) | func stateFromTiming(enabled bool, timedOut bool) string { function betweennessReason (line 172) | func betweennessReason(cfg AnalysisConfig, isApprox bool) string { function NewGraphStatsForTest (line 851) | func NewGraphStatsForTest( constant incrementalGraphStatsCacheTTL (line 878) | incrementalGraphStatsCacheTTL = 5 * time.Minute constant incrementalGraphStatsCacheMaxEntries (line 879) | incrementalGraphStatsCacheMaxEntries = 8 type incrementalGraphStatsCacheEntry (line 882) | type incrementalGraphStatsCacheEntry struct function getIncrementalGraphStatsCache (line 892) | func getIncrementalGraphStatsCache(key string) (*GraphStats, bool) { function putIncrementalGraphStatsCache (line 911) | func putIncrementalGraphStatsCache(key string, stats *GraphStats) { function pruneIncrementalGraphStatsCacheLocked (line 927) | func pruneIncrementalGraphStatsCacheLocked(now time.Time) { type directedGraph (line 956) | type directedGraph interface type compactDirectedGraph (line 964) | type compactDirectedGraph struct method addEdge (line 983) | func (g *compactDirectedGraph) addEdge(from, to int64) { method Node (line 995) | func (g *compactDirectedGraph) Node(id int64) graph.Node { method Nodes (line 1002) | func (g *compactDirectedGraph) Nodes() graph.Nodes { method From (line 1009) | func (g *compactDirectedGraph) From(id int64) graph.Nodes { method To (line 1020) | func (g *compactDirectedGraph) To(id int64) graph.Nodes { method HasEdgeFromTo (line 1031) | func (g *compactDirectedGraph) HasEdgeFromTo(uid, vid int64) bool { method HasEdgeBetween (line 1043) | func (g *compactDirectedGraph) HasEdgeBetween(xid, yid int64) bool { method Edge (line 1047) | func (g *compactDirectedGraph) Edge(uid, vid int64) graph.Edge { method Edges (line 1057) | func (g *compactDirectedGraph) Edges() graph.Edges { function newCompactDirectedGraph (line 971) | func newCompactDirectedGraph(nodeCount int) *compactDirectedGraph { type compactNodes (line 1064) | type compactNodes struct method Next (line 1069) | func (it *compactNodes) Next() bool { method Node (line 1077) | func (it *compactNodes) Node() graph.Node { method Len (line 1084) | func (it *compactNodes) Len() int { method Reset (line 1088) | func (it *compactNodes) Reset() { type compactIDNodes (line 1092) | type compactIDNodes struct method Next (line 1098) | func (it *compactIDNodes) Next() bool { method Node (line 1106) | func (it *compactIDNodes) Node() graph.Node { method Len (line 1117) | func (it *compactIDNodes) Len() int { method Reset (line 1121) | func (it *compactIDNodes) Reset() { type compactEdges (line 1125) | type compactEdges struct method Next (line 1131) | func (it *compactEdges) Next() bool { method Edge (line 1143) | func (it *compactEdges) Edge() graph.Edge { method Len (line 1158) | func (it *compactEdges) Len() int { method Reset (line 1162) | func (it *compactEdges) Reset() { type Analyzer (line 1168) | type Analyzer struct method SetConfig (line 1180) | func (a *Analyzer) SetConfig(config *AnalysisConfig) { method graphStructureHash (line 1184) | func (a *Analyzer) graphStructureHash() string { method AnalyzeAsync (line 1329) | func (a *Analyzer) AnalyzeAsync(ctx context.Context) *GraphStats { method AnalyzeAsyncWithConfig (line 1343) | func (a *Analyzer) AnalyzeAsyncWithConfig(ctx context.Context, config ... method Analyze (line 1457) | func (a *Analyzer) Analyze() GraphStats { method AnalyzeWithConfig (line 1493) | func (a *Analyzer) AnalyzeWithConfig(config AnalysisConfig) GraphStats { method AnalyzeWithProfile (line 1529) | func (a *Analyzer) AnalyzeWithProfile(config AnalysisConfig) (*GraphSt... method computePhase1WithProfile (line 1585) | func (a *Analyzer) computePhase1WithProfile(stats *GraphStats, profile... method computePhase2WithProfile (line 1618) | func (a *Analyzer) computePhase2WithProfile(ctx context.Context, stats... method computePhase1 (line 1911) | func (a *Analyzer) computePhase1(stats *GraphStats) { method computePhase2 (line 1954) | func (a *Analyzer) computePhase2(ctx context.Context, stats *GraphStat... method computeHeights (line 1994) | func (a *Analyzer) computeHeights(sorted []graph.Node) map[string]floa... method computeCoreAndArticulation (line 2086) | func (a *Analyzer) computeCoreAndArticulation() (map[string]int, map[s... method computeSlack (line 2104) | func (a *Analyzer) computeSlack(order []string) map[string]float64 { method GetActionableIssues (line 2343) | func (a *Analyzer) GetActionableIssues() []model.Issue { method GetIssue (line 2430) | func (a *Analyzer) GetIssue(id string) *model.Issue { method GetBlockers (line 2438) | func (a *Analyzer) GetBlockers(issueID string) []string { method GetOpenBlockers (line 2456) | func (a *Analyzer) GetOpenBlockers(issueID string) []string { method GetBlockerChain (line 2502) | func (a *Analyzer) GetBlockerChain(issueID string) *BlockerChainResult { method countBlockedBy (line 2611) | func (a *Analyzer) countBlockedBy(issueID string) int { function NewAnalyzer (line 1244) | func NewAnalyzer(issues []model.Issue) *Analyzer { type undirectedAdjacency (line 2018) | type undirectedAdjacency struct method neighborsOf (line 2074) | func (a undirectedAdjacency) neighborsOf(id int64) []int64 { method degree (line 2081) | func (a undirectedAdjacency) degree(id int64) int { function newUndirectedAdjacency (line 2023) | func newUndirectedAdjacency(g directedGraph) undirectedAdjacency { function computeKCore (line 2186) | func computeKCore(adj undirectedAdjacency) map[int64]int { function findArticulationPoints (line 2278) | func findArticulationPoints(adj undirectedAdjacency) map[int64]bool { type BlockerChainEntry (line 2476) | type BlockerChainEntry struct type BlockerChainResult (line 2488) | type BlockerChainResult struct function computePageRank (line 2631) | func computePageRank(g graph.Directed, damp, tol float64) map[int64]floa... function computeEigenvector (line 2742) | func computeEigenvector(g graph.Directed) map[int64]float64 { function computeFloatRanks (line 2838) | func computeFloatRanks(m map[string]float64) map[string]int { function computeIntRanks (line 2864) | func computeIntRanks(m map[string]int) map[string]int { FILE: pkg/analysis/graph_accessor_benchmark_test.go function createLargeGraphStats (line 9) | func createLargeGraphStats(n int) *GraphStats { function BenchmarkPageRank_MapCopy (line 48) | func BenchmarkPageRank_MapCopy(b *testing.B) { function BenchmarkPageRank_SingleValue (line 65) | func BenchmarkPageRank_SingleValue(b *testing.B) { function BenchmarkBetweenness_MapCopy (line 81) | func BenchmarkBetweenness_MapCopy(b *testing.B) { function BenchmarkBetweenness_SingleValue (line 98) | func BenchmarkBetweenness_SingleValue(b *testing.B) { function BenchmarkIteration_MapCopy (line 114) | func BenchmarkIteration_MapCopy(b *testing.B) { function BenchmarkIteration_All (line 134) | func BenchmarkIteration_All(b *testing.B) { function BenchmarkMultipleAccess_MapCopy (line 155) | func BenchmarkMultipleAccess_MapCopy(b *testing.B) { function BenchmarkMultipleAccess_SingleValue (line 171) | func BenchmarkMultipleAccess_SingleValue(b *testing.B) { FILE: pkg/analysis/graph_accessor_test.go function createTestGraphStatsForAccessors (line 9) | func createTestGraphStatsForAccessors() *GraphStats { function floatEq (line 26) | func floatEq(a, b float64) bool { function TestPageRankValue (line 31) | func TestPageRankValue(t *testing.T) { function TestPageRankAll (line 67) | func TestPageRankAll(t *testing.T) { function TestPageRank_Isomorphic (line 116) | func TestPageRank_Isomorphic(t *testing.T) { function TestBetweennessValue (line 150) | func TestBetweennessValue(t *testing.T) { function TestEigenvectorValue (line 168) | func TestEigenvectorValue(t *testing.T) { function TestHubValue (line 186) | func TestHubValue(t *testing.T) { function TestAuthorityValue (line 204) | func TestAuthorityValue(t *testing.T) { function TestCriticalPathValue (line 222) | func TestCriticalPathValue(t *testing.T) { function TestRankValueAccessors (line 240) | func TestRankValueAccessors(t *testing.T) { function TestIteratorEarlyTermination (line 278) | func TestIteratorEarlyTermination(t *testing.T) { function TestCoreNumberValue (line 307) | func TestCoreNumberValue(t *testing.T) { function TestSlackValue (line 327) | func TestSlackValue(t *testing.T) { function TestIsArticulationPoint (line 355) | func TestIsArticulationPoint(t *testing.T) { FILE: pkg/analysis/graph_cycles.go function findCyclesSafe (line 12) | func findCyclesSafe(g graph.Directed, limit int) [][]graph.Node { function findOneCycleInSCC (line 58) | func findOneCycleInSCC(g graph.Directed, scc []graph.Node) []graph.Node { FILE: pkg/analysis/graph_cycles_test.go function buildTestGraph (line 12) | func buildTestGraph(nodes int, edges [][2]int) *simple.DirectedGraph { function TestFindCyclesSafe_Empty (line 28) | func TestFindCyclesSafe_Empty(t *testing.T) { function TestFindCyclesSafe_NoCycles (line 36) | func TestFindCyclesSafe_NoCycles(t *testing.T) { function TestFindCyclesSafe_SelfLoop (line 46) | func TestFindCyclesSafe_SelfLoop(t *testing.T) { function TestFindCyclesSafe_SimpleCycle (line 69) | func TestFindCyclesSafe_SimpleCycle(t *testing.T) { function TestFindCyclesSafe_DirectCycle (line 91) | func TestFindCyclesSafe_DirectCycle(t *testing.T) { function TestFindCyclesSafe_MultipleCycles (line 108) | func TestFindCyclesSafe_MultipleCycles(t *testing.T) { function TestFindCyclesSafe_Limit (line 120) | func TestFindCyclesSafe_Limit(t *testing.T) { function TestFindCyclesSafe_SortedByLength (line 135) | func TestFindCyclesSafe_SortedByLength(t *testing.T) { function TestFindCyclesSafe_Determinism (line 158) | func TestFindCyclesSafe_Determinism(t *testing.T) { function TestFindOneCycleInSCC_Empty (line 191) | func TestFindOneCycleInSCC_Empty(t *testing.T) { function TestFindOneCycleInSCC_SingleNode (line 199) | func TestFindOneCycleInSCC_SingleNode(t *testing.T) { function TestFindOneCycleInSCC_TriangleSCC (line 209) | func TestFindOneCycleInSCC_TriangleSCC(t *testing.T) { function TestFindOneCycleInSCC_LargeSCC (line 226) | func TestFindOneCycleInSCC_LargeSCC(t *testing.T) { function toGraphNodes (line 248) | func toGraphNodes(nodes []simple.Node) []graph.Node { function TestFindCyclesSafe_WithIssues (line 257) | func TestFindCyclesSafe_WithIssues(t *testing.T) { function TestFindCyclesSafe_StarTopology (line 271) | func TestFindCyclesSafe_StarTopology(t *testing.T) { function TestFindCyclesSafe_DiamondTopology (line 284) | func TestFindCyclesSafe_DiamondTopology(t *testing.T) { function BenchmarkFindCyclesSafe_Small (line 297) | func BenchmarkFindCyclesSafe_Small(b *testing.B) { function BenchmarkFindCyclesSafe_Medium (line 306) | func BenchmarkFindCyclesSafe_Medium(b *testing.B) { function BenchmarkFindCyclesSafe_Large (line 320) | func BenchmarkFindCyclesSafe_Large(b *testing.B) { function BenchmarkFindOneCycleInSCC (line 338) | func BenchmarkFindOneCycleInSCC(b *testing.B) { FILE: pkg/analysis/graph_extra_test.go function TestAnalyzerProfileAndGetters (line 12) | func TestAnalyzerProfileAndGetters(t *testing.T) { function TestAnalyzerAnalyzeWithConfigCachesPhase2 (line 39) | func TestAnalyzerAnalyzeWithConfigCachesPhase2(t *testing.T) { function TestAnalyzerAnalyzeAsync_ReusesStatsWhenGraphUnchanged (line 60) | func TestAnalyzerAnalyzeAsync_ReusesStatsWhenGraphUnchanged(t *testing.T) { function TestAnalyzerAnalyzeAsync_DoesNotReuseStatsWhenGraphChanges (line 100) | func TestAnalyzerAnalyzeAsync_DoesNotReuseStatsWhenGraphChanges(t *testi... FILE: pkg/analysis/graph_test.go function getIDs (line 14) | func getIDs(issues []model.Issue) []string { function contains (line 24) | func contains(slice []string, val string) bool { function TestGetActionableIssuesEmpty (line 33) | func TestGetActionableIssuesEmpty(t *testing.T) { function TestAnalyzeEmptyIssues (line 44) | func TestAnalyzeEmptyIssues(t *testing.T) { function TestGetActionableIssuesAllClosed (line 62) | func TestGetActionableIssuesAllClosed(t *testing.T) { function TestGetActionableIssuesSingleNoDeps (line 76) | func TestGetActionableIssuesSingleNoDeps(t *testing.T) { function TestGetActionableIssuesChainAllOpen (line 92) | func TestGetActionableIssuesChainAllOpen(t *testing.T) { function TestGetActionableIssuesChainLeafClosed (line 114) | func TestGetActionableIssuesChainLeafClosed(t *testing.T) { function TestGetActionableIssuesChainTwoClosed (line 137) | func TestGetActionableIssuesChainTwoClosed(t *testing.T) { function TestGetActionableIssuesParallelTracks (line 159) | func TestGetActionableIssuesParallelTracks(t *testing.T) { function TestGetActionableIssuesMissingBlocker (line 186) | func TestGetActionableIssuesMissingBlocker(t *testing.T) { function TestAnalyzeIgnoresNonBlockingDependencies (line 204) | func TestAnalyzeIgnoresNonBlockingDependencies(t *testing.T) { function TestGetActionableIssuesRelatedDoesntBlock (line 234) | func TestGetActionableIssuesRelatedDoesntBlock(t *testing.T) { function TestGetActionableIssuesParentChildDoesntBlock (line 253) | func TestGetActionableIssuesParentChildDoesntBlock(t *testing.T) { function TestGetActionableIssuesCycle (line 272) | func TestGetActionableIssuesCycle(t *testing.T) { function TestGetActionableIssuesCycleWithOneClosed (line 295) | func TestGetActionableIssuesCycleWithOneClosed(t *testing.T) { function TestGetActionableIssuesMultipleBlockers (line 319) | func TestGetActionableIssuesMultipleBlockers(t *testing.T) { function TestGetActionableIssuesMultipleBlockersAllClosed (line 340) | func TestGetActionableIssuesMultipleBlockersAllClosed(t *testing.T) { function TestGetActionableIssuesInProgressStatus (line 360) | func TestGetActionableIssuesInProgressStatus(t *testing.T) { function TestGetActionableIssuesBlockedStatus (line 374) | func TestGetActionableIssuesBlockedStatus(t *testing.T) { function TestGetActionableIssuesParentBlockedTransitive (line 389) | func TestGetActionableIssuesParentBlockedTransitive(t *testing.T) { function TestGetActionableIssuesParentBlockedTransitiveDeep (line 413) | func TestGetActionableIssuesParentBlockedTransitiveDeep(t *testing.T) { function TestGetActionableIssuesParentNotBlockedChildActionable (line 440) | func TestGetActionableIssuesParentNotBlockedChildActionable(t *testing.T) { function TestGetActionableIssuesParentClosedChildActionable (line 460) | func TestGetActionableIssuesParentClosedChildActionable(t *testing.T) { function TestGetActionableIssuesParentBlockedResolvedChildUnblocked (line 479) | func TestGetActionableIssuesParentBlockedResolvedChildUnblocked(t *testi... function TestGetActionableIssuesMultipleChildrenParentBlocked (line 504) | func TestGetActionableIssuesMultipleChildrenParentBlocked(t *testing.T) { function TestGetBlockers (line 533) | func TestGetBlockers(t *testing.T) { function TestGetOpenBlockers (line 553) | func TestGetOpenBlockers(t *testing.T) { function TestAnalyzeCompletesWithinTimeout (line 576) | func TestAnalyzeCompletesWithinTimeout(t *testing.T) { function TestAnalyzeNoEdgesGraph (line 613) | func TestAnalyzeNoEdgesGraph(t *testing.T) { function TestAnalyzeSparseDisconnectedGraph (line 637) | func TestAnalyzeSparseDisconnectedGraph(t *testing.T) { function TestImpactScore (line 677) | func TestImpactScore(t *testing.T) { function TestGetBlockerChain (line 724) | func TestGetBlockerChain(t *testing.T) { FILE: pkg/analysis/insights.go type InsightItem (line 9) | type InsightItem struct type Insights (line 15) | type Insights struct type VelocitySnapshot (line 34) | type VelocitySnapshot struct method GenerateInsights (line 44) | func (s *GraphStats) GenerateInsights(limit int) Insights { function findOrphans (line 102) | func findOrphans(outDegree map[string]int) []string { function getTopItems (line 116) | func getTopItems(m map[string]float64, limit int) []InsightItem { function getTopItemsInt (line 140) | func getTopItemsInt(m map[string]int, limit int) []InsightItem { function limitStrings (line 162) | func limitStrings(s []string, limit int) []string { FILE: pkg/analysis/insights_signals_test.go function TestInsightsIncludesCoreAndArticulation (line 15) | func TestInsightsIncludesCoreAndArticulation(t *testing.T) { function TestKCoreLinearChain (line 48) | func TestKCoreLinearChain(t *testing.T) { function TestKCoreTriangle (line 70) | func TestKCoreTriangle(t *testing.T) { function TestKCoreDisconnectedNodes (line 90) | func TestKCoreDisconnectedNodes(t *testing.T) { function TestArticulationLinearChain (line 111) | func TestArticulationLinearChain(t *testing.T) { function TestArticulationTriangle (line 138) | func TestArticulationTriangle(t *testing.T) { function TestSlackLinearChain (line 156) | func TestSlackLinearChain(t *testing.T) { function TestSlackParallelPaths (line 179) | func TestSlackParallelPaths(t *testing.T) { function TestSlackDiamondWithLongPath (line 208) | func TestSlackDiamondWithLongPath(t *testing.T) { function TestGraphSignalsEmptyGraph (line 242) | func TestGraphSignalsEmptyGraph(t *testing.T) { function TestGraphSignalsSingleNode (line 258) | func TestGraphSignalsSingleNode(t *testing.T) { FILE: pkg/analysis/insights_test.go function TestGenerateInsights_EmptyStats (line 13) | func TestGenerateInsights_EmptyStats(t *testing.T) { function TestGenerateInsights_WithData (line 47) | func TestGenerateInsights_WithData(t *testing.T) { function TestGenerateInsights_ZeroLimit (line 136) | func TestGenerateInsights_ZeroLimit(t *testing.T) { function TestGenerateInsights_NegativeLimit (line 158) | func TestGenerateInsights_NegativeLimit(t *testing.T) { function TestGenerateInsights_LimitExceedsItems (line 177) | func TestGenerateInsights_LimitExceedsItems(t *testing.T) { function TestGetTopItems_Empty (line 200) | func TestGetTopItems_Empty(t *testing.T) { function TestGetTopItems_SingleItem (line 207) | func TestGetTopItems_SingleItem(t *testing.T) { function TestGetTopItems_SortOrder (line 219) | func TestGetTopItems_SortOrder(t *testing.T) { function TestGetTopItems_LimitApplied (line 243) | func TestGetTopItems_LimitApplied(t *testing.T) { function TestGetTopItems_EqualValues (line 263) | func TestGetTopItems_EqualValues(t *testing.T) { function TestGetTopItems_ZeroValues (line 283) | func TestGetTopItems_ZeroValues(t *testing.T) { function TestGenerateInsights_FromRealAnalysis (line 311) | func TestGenerateInsights_FromRealAnalysis(t *testing.T) { function TestGenerateInsights_WithCycles (line 355) | func TestGenerateInsights_WithCycles(t *testing.T) { function TestInsightItem_Fields (line 394) | func TestInsightItem_Fields(t *testing.T) { function TestInsights_EmptyFields (line 412) | func TestInsights_EmptyFields(t *testing.T) { FILE: pkg/analysis/invariance_test.go function TestUnblocksInvariance_Basic (line 26) | func TestUnblocksInvariance_Basic(t *testing.T) { function TestUnblocksInvariance_MixedStatuses (line 56) | func TestUnblocksInvariance_MixedStatuses(t *testing.T) { function TestUnblocksInvariance_BlockingVsNonBlocking (line 86) | func TestUnblocksInvariance_BlockingVsNonBlocking(t *testing.T) { function TestUnblocksInvariance_MissingDependencyIDs (line 113) | func TestUnblocksInvariance_MissingDependencyIDs(t *testing.T) { function TestUnblocksInvariance_DuplicateDependencies (line 150) | func TestUnblocksInvariance_DuplicateDependencies(t *testing.T) { function TestUnblocksInvariance_PartialUnblock (line 172) | func TestUnblocksInvariance_PartialUnblock(t *testing.T) { function TestUnblocksInvariance_PartialUnblockWithClosedBlocker (line 199) | func TestUnblocksInvariance_PartialUnblockWithClosedBlocker(t *testing.T) { function TestUnblocksInvariance_Chain (line 221) | func TestUnblocksInvariance_Chain(t *testing.T) { function TestUnblocksInvariance_Diamond (line 259) | func TestUnblocksInvariance_Diamond(t *testing.T) { function TestUnblocksInvariance_DiamondWithOneMidClosed (line 296) | func TestUnblocksInvariance_DiamondWithOneMidClosed(t *testing.T) { function TestUnblocksInvariance_Cycle (line 321) | func TestUnblocksInvariance_Cycle(t *testing.T) { function TestUnblocksInvariance_Empty (line 365) | func TestUnblocksInvariance_Empty(t *testing.T) { function TestUnblocksInvariance_NonexistentID (line 374) | func TestUnblocksInvariance_NonexistentID(t *testing.T) { function TestUnblocksInvariance_Determinism (line 386) | func TestUnblocksInvariance_Determinism(t *testing.T) { function TestUnblocksInvariance_LegacyEmptyDepType (line 414) | func TestUnblocksInvariance_LegacyEmptyDepType(t *testing.T) { function TestVelocityInvariance_FixedNow (line 440) | func TestVelocityInvariance_FixedNow(t *testing.T) { function TestVelocityInvariance_EstimatedFallback (line 498) | func TestVelocityInvariance_EstimatedFallback(t *testing.T) { function TestVelocityInvariance_WeekBucketing (line 525) | func TestVelocityInvariance_WeekBucketing(t *testing.T) { function TestVelocityInvariance_AvgDaysToClose (line 565) | func TestVelocityInvariance_AvgDaysToClose(t *testing.T) { function TestVelocityInvariance_Empty (line 593) | func TestVelocityInvariance_Empty(t *testing.T) { function TestVelocityInvariance_OnlyOpenIssues (line 609) | func TestVelocityInvariance_OnlyOpenIssues(t *testing.T) { function TestVelocityInvariance_Determinism (line 628) | func TestVelocityInvariance_Determinism(t *testing.T) { function TestTriageSanity_GoldenRecommendationOrder (line 661) | func TestTriageSanity_GoldenRecommendationOrder(t *testing.T) { function stringSlicesEqual (line 731) | func stringSlicesEqual(a, b []string) bool { FILE: pkg/analysis/label_health.go type LabelHealth (line 22) | type LabelHealth struct type VelocityMetrics (line 38) | type VelocityMetrics struct type HistoricalVelocity (line 48) | type HistoricalVelocity struct method GetVelocityTrend (line 2267) | func (hv *HistoricalVelocity) GetVelocityTrend() string { method GetWeeklyAverage (line 2306) | func (hv *HistoricalVelocity) GetWeeklyAverage() float64 { type WeeklySnapshot (line 63) | type WeeklySnapshot struct type FreshnessMetrics (line 73) | type FreshnessMetrics struct type FlowMetrics (line 83) | type FlowMetrics struct type CriticalityMetrics (line 94) | type CriticalityMetrics struct type LabelDependency (line 104) | type LabelDependency struct type BlockingPair (line 113) | type BlockingPair struct type CrossLabelFlow (line 121) | type CrossLabelFlow struct type BlockageCascadeResult (line 136) | type BlockageCascadeResult struct method FormatCascadeTree (line 1302) | func (c *BlockageCascadeResult) FormatCascadeTree() string { type CascadeLevel (line 146) | type CascadeLevel struct type LabelCascadeEntry (line 153) | type LabelCascadeEntry struct type UnblockRecommendation (line 160) | type UnblockRecommendation struct type BlockageCascadeAnalysis (line 170) | type BlockageCascadeAnalysis struct method GetCascadeForLabel (line 1284) | func (r *BlockageCascadeAnalysis) GetCascadeForLabel(label string) *Bl... method GetMostImpactfulCascade (line 1294) | func (r *BlockageCascadeAnalysis) GetMostImpactfulCascade() *BlockageC... type LabelPath (line 179) | type LabelPath struct type LabelSummary (line 187) | type LabelSummary struct type LabelAnalysisResult (line 198) | type LabelAnalysisResult struct function ComputeCrossLabelFlow (line 212) | func ComputeCrossLabelFlow(issues []model.Issue, cfg LabelHealthConfig) ... function ComputeVelocityMetrics (line 338) | func ComputeVelocityMetrics(issues []model.Issue, now time.Time) Velocit... function ComputeFreshnessMetrics (line 417) | func ComputeFreshnessMetrics(issues []model.Issue, now time.Time, staleD... function ComputeLabelHealthForLabel (line 467) | func ComputeLabelHealthForLabel(label string, issues []model.Issue, cfg ... function ComputeAllLabelHealth (line 628) | func ComputeAllLabelHealth(issues []model.Issue, cfg LabelHealthConfig, ... function clampScore (line 688) | func clampScore(v int) int { constant HealthLevelHealthy (line 704) | HealthLevelHealthy = "healthy" constant HealthLevelWarning (line 705) | HealthLevelWarning = "warning" constant HealthLevelCritical (line 706) | HealthLevelCritical = "critical" constant DefaultStaleThresholdDays (line 711) | DefaultStaleThresholdDays = 14 constant HealthyThreshold (line 712) | HealthyThreshold = 70 constant WarningThreshold (line 713) | WarningThreshold = 40 constant VelocityWeight (line 714) | VelocityWeight = 0.25 constant FreshnessWeight (line 715) | FreshnessWeight = 0.25 constant FlowWeight (line 716) | FlowWeight = 0.25 constant CriticalityWeight (line 717) | CriticalityWeight = 0.25 type LabelHealthConfig (line 725) | type LabelHealthConfig struct function DefaultLabelHealthConfig (line 736) | func DefaultLabelHealthConfig() LabelHealthConfig { function HealthLevelFromScore (line 753) | func HealthLevelFromScore(score int) string { function NeedsAttention (line 764) | func NeedsAttention(health LabelHealth) bool { function ComputeCompositeHealth (line 769) | func ComputeCompositeHealth(velocity, freshness, flow, criticality int, ... function NewLabelHealth (line 780) | func NewLabelHealth(label string) LabelHealth { type LabelStats (line 808) | type LabelStats struct type LabelExtractionResult (line 821) | type LabelExtractionResult struct function ExtractLabels (line 832) | func ExtractLabels(issues []model.Issue) LabelExtractionResult { function sortLabelsByCount (line 913) | func sortLabelsByCount(stats map[string]*LabelStats) []string { function GetLabelIssues (line 939) | func GetLabelIssues(issues []model.Issue, label string) []model.Issue { function GetLabelsForIssue (line 953) | func GetLabelsForIssue(issues []model.Issue, issueID string) []string { function GetCommonLabels (line 963) | func GetCommonLabels(labelSets ...[]string) []string { function GetLabelCooccurrence (line 992) | func GetLabelCooccurrence(issues []model.Issue) map[string]map[string]int { function ComputeBlockedByLabel (line 1026) | func ComputeBlockedByLabel(issues []model.Issue, analyzer *Analyzer) map... function ComputeBlockageCascade (line 1050) | func ComputeBlockageCascade(issues []model.Issue, flow CrossLabelFlow, c... function computeSingleCascade (line 1140) | func computeSingleCascade(sourceLabel string, blockedIssues []model.Issu... type LabelSubgraph (line 1328) | type LabelSubgraph struct method GetSubgraphRoots (line 1479) | func (sg *LabelSubgraph) GetSubgraphRoots() []string { method GetSubgraphLeaves (line 1491) | func (sg *LabelSubgraph) GetSubgraphLeaves() []string { method GetCoreIssueSet (line 1503) | func (sg *LabelSubgraph) GetCoreIssueSet() map[string]bool { method IsEmpty (line 1512) | func (sg *LabelSubgraph) IsEmpty() bool { function ComputeLabelSubgraph (line 1350) | func ComputeLabelSubgraph(issues []model.Issue, label string) LabelSubgr... function HasLabel (line 1469) | func HasLabel(issue model.Issue, label string) bool { type LabelPageRankResult (line 1522) | type LabelPageRankResult struct method GetTopCoreIssues (line 1684) | func (r *LabelPageRankResult) GetTopCoreIssues(n int) []RankedIssue { method GetNormalizedScore (line 1698) | func (r *LabelPageRankResult) GetNormalizedScore(id string) float64 { type RankedIssue (line 1535) | type RankedIssue struct function ComputeLabelPageRank (line 1551) | func ComputeLabelPageRank(sg LabelSubgraph) LabelPageRankResult { function ComputeLabelPageRankFromIssues (line 1678) | func ComputeLabelPageRankFromIssues(issues []model.Issue, label string) ... type LabelCriticalPathResult (line 1708) | type LabelCriticalPathResult struct method GetCriticalPathIssues (line 1854) | func (r *LabelCriticalPathResult) GetCriticalPathIssues(sg LabelSubgra... method IsCriticalPathMember (line 1865) | func (r *LabelCriticalPathResult) IsCriticalPathMember(id string) bool { function ComputeLabelCriticalPath (line 1725) | func ComputeLabelCriticalPath(sg LabelSubgraph) LabelCriticalPathResult { function ComputeLabelCriticalPathFromIssues (line 1848) | func ComputeLabelCriticalPathFromIssues(issues []model.Issue, label stri... type LabelAttentionScore (line 1880) | type LabelAttentionScore struct type LabelAttentionResult (line 1899) | type LabelAttentionResult struct method GetTopAttentionLabels (line 2084) | func (r *LabelAttentionResult) GetTopAttentionLabels(n int) []LabelAtt... method GetLabelAttention (line 2092) | func (r *LabelAttentionResult) GetLabelAttention(label string) *LabelA... function ComputeLabelAttentionScores (line 1918) | func ComputeLabelAttentionScores(issues []model.Issue, cfg LabelHealthCo... function computeLabelAttention (line 2009) | func computeLabelAttention(label string, issues []model.Issue, issueMap ... function ComputeHistoricalVelocity (line 2108) | func ComputeHistoricalVelocity(issues []model.Issue, label string, numWe... function ComputeAllHistoricalVelocity (line 2254) | func ComputeAllHistoricalVelocity(issues []model.Issue, numWeeks int, no... FILE: pkg/analysis/label_health_test.go function TestHealthLevelFromScore (line 12) | func TestHealthLevelFromScore(t *testing.T) { function TestComputeCompositeHealth (line 33) | func TestComputeCompositeHealth(t *testing.T) { function TestDefaultLabelHealthConfig (line 63) | func TestDefaultLabelHealthConfig(t *testing.T) { function TestNewLabelHealth (line 82) | func TestNewLabelHealth(t *testing.T) { function TestNeedsAttention (line 106) | func TestNeedsAttention(t *testing.T) { function TestLabelHealthTypes (line 124) | func TestLabelHealthTypes(t *testing.T) { function TestCrossLabelFlowTypes (line 178) | func TestCrossLabelFlowTypes(t *testing.T) { function TestComputeCrossLabelFlow (line 214) | func TestComputeCrossLabelFlow(t *testing.T) { function TestLabelPath (line 268) | func TestLabelPath(t *testing.T) { function TestLabelAnalysisResult (line 285) | func TestLabelAnalysisResult(t *testing.T) { function TestExtractLabelsEmpty (line 312) | func TestExtractLabelsEmpty(t *testing.T) { function TestExtractLabelsBasic (line 326) | func TestExtractLabelsBasic(t *testing.T) { function TestExtractLabels_TombstoneCounts (line 385) | func TestExtractLabels_TombstoneCounts(t *testing.T) { function TestExtractLabelsDuplicateLabelsOnIssue (line 404) | func TestExtractLabelsDuplicateLabelsOnIssue(t *testing.T) { function TestExtractLabelsEmptyLabelString (line 423) | func TestExtractLabelsEmptyLabelString(t *testing.T) { function TestGetLabelIssues (line 439) | func TestGetLabelIssues(t *testing.T) { function TestGetLabelsForIssue (line 462) | func TestGetLabelsForIssue(t *testing.T) { function TestGetCommonLabels (line 479) | func TestGetCommonLabels(t *testing.T) { function TestGetLabelCooccurrence (line 503) | func TestGetLabelCooccurrence(t *testing.T) { function TestSortLabelsByCount (line 532) | func TestSortLabelsByCount(t *testing.T) { function TestComputeVelocityMetricsEmpty (line 555) | func TestComputeVelocityMetricsEmpty(t *testing.T) { function TestComputeVelocityMetricsWithClosures (line 576) | func TestComputeVelocityMetricsWithClosures(t *testing.T) { function TestComputeVelocityMetricsTrendImproving (line 607) | func TestComputeVelocityMetricsTrendImproving(t *testing.T) { function TestComputeVelocityMetricsTrendDeclining (line 645) | func TestComputeVelocityMetricsTrendDeclining(t *testing.T) { function TestComputeVelocityMetricsAvgDaysToClose (line 681) | func TestComputeVelocityMetricsAvgDaysToClose(t *testing.T) { function TestComputeVelocityMetrics_IgnoresNonClosedWithClosedAt (line 702) | func TestComputeVelocityMetrics_IgnoresNonClosedWithClosedAt(t *testing.... function TestComputeHistoricalVelocity_IgnoresNonClosedWithClosedAt (line 728) | func TestComputeHistoricalVelocity_IgnoresNonClosedWithClosedAt(t *testi... function TestComputeFreshnessMetricsEmpty (line 753) | func TestComputeFreshnessMetricsEmpty(t *testing.T) { function TestComputeFreshnessMetricsWithUpdates (line 768) | func TestComputeFreshnessMetricsWithUpdates(t *testing.T) { function TestComputeFreshnessMetricsOldestOpen (line 798) | func TestComputeFreshnessMetricsOldestOpen(t *testing.T) { function TestComputeFreshnessMetricsDefaultThreshold (line 818) | func TestComputeFreshnessMetricsDefaultThreshold(t *testing.T) { function TestComputeFreshnessMetricsScoreCapping (line 833) | func TestComputeFreshnessMetricsScoreCapping(t *testing.T) { function TestComputeLabelSubgraphEmpty (line 866) | func TestComputeLabelSubgraphEmpty(t *testing.T) { function TestComputeLabelSubgraphSingleLabel (line 881) | func TestComputeLabelSubgraphSingleLabel(t *testing.T) { function TestComputeLabelSubgraphWithDependencies (line 901) | func TestComputeLabelSubgraphWithDependencies(t *testing.T) { function TestComputeLabelSubgraphRootsAndLeaves (line 963) | func TestComputeLabelSubgraphRootsAndLeaves(t *testing.T) { function TestComputeLabelSubgraphAdjacency (line 998) | func TestComputeLabelSubgraphAdjacency(t *testing.T) { function TestComputeLabelSubgraphCoreIssueSet (line 1036) | func TestComputeLabelSubgraphCoreIssueSet(t *testing.T) { function TestComputeLabelSubgraphNonBlockingDeps (line 1057) | func TestComputeLabelSubgraphNonBlockingDeps(t *testing.T) { function TestHasLabel (line 1078) | func TestHasLabel(t *testing.T) { function TestComputeLabelPageRankEmpty (line 1102) | func TestComputeLabelPageRankEmpty(t *testing.T) { function TestComputeLabelPageRankSingleNode (line 1118) | func TestComputeLabelPageRankSingleNode(t *testing.T) { function TestComputeLabelPageRankChain (line 1140) | func TestComputeLabelPageRankChain(t *testing.T) { function TestComputeLabelPageRankNormalized (line 1182) | func TestComputeLabelPageRankNormalized(t *testing.T) { function TestComputeLabelPageRankCoreVsDep (line 1224) | func TestComputeLabelPageRankCoreVsDep(t *testing.T) { function TestComputeLabelPageRankGetTopCoreIssues (line 1269) | func TestComputeLabelPageRankGetTopCoreIssues(t *testing.T) { function TestComputeLabelCriticalPathEmpty (line 1316) | func TestComputeLabelCriticalPathEmpty(t *testing.T) { function TestComputeLabelCriticalPathSingleNode (line 1332) | func TestComputeLabelCriticalPathSingleNode(t *testing.T) { function TestComputeLabelCriticalPathChain (line 1350) | func TestComputeLabelCriticalPathChain(t *testing.T) { function TestComputeLabelCriticalPathDiamond (line 1402) | func TestComputeLabelCriticalPathDiamond(t *testing.T) { function TestComputeLabelCriticalPathWithExternalDeps (line 1456) | func TestComputeLabelCriticalPathWithExternalDeps(t *testing.T) { function TestComputeLabelCriticalPathCycle (line 1492) | func TestComputeLabelCriticalPathCycle(t *testing.T) { function TestComputeLabelCriticalPathIsMember (line 1526) | func TestComputeLabelCriticalPathIsMember(t *testing.T) { function TestComputeLabelCriticalPathTitles (line 1558) | func TestComputeLabelCriticalPathTitles(t *testing.T) { function TestComputeLabelCriticalPathMultipleRoots (line 1585) | func TestComputeLabelCriticalPathMultipleRoots(t *testing.T) { function TestComputeLabelAttentionScoresEmpty (line 1633) | func TestComputeLabelAttentionScoresEmpty(t *testing.T) { function TestComputeLabelAttentionScoresSingleLabel (line 1647) | func TestComputeLabelAttentionScoresSingleLabel(t *testing.T) { function TestComputeLabelAttentionScoresRanking (line 1672) | func TestComputeLabelAttentionScoresRanking(t *testing.T) { function TestComputeLabelAttentionScoresBlockImpact (line 1711) | func TestComputeLabelAttentionScoresBlockImpact(t *testing.T) { function TestComputeLabelAttentionScoresVelocity (line 1756) | func TestComputeLabelAttentionScoresVelocity(t *testing.T) { function TestComputeLabelAttentionScoresNormalized (line 1787) | func TestComputeLabelAttentionScoresNormalized(t *testing.T) { function TestComputeLabelAttentionScoresGetTop (line 1807) | func TestComputeLabelAttentionScoresGetTop(t *testing.T) { function TestComputeLabelSubgraphCircularDeps (line 1841) | func TestComputeLabelSubgraphCircularDeps(t *testing.T) { function TestComputeLabelPageRankCircularDeps (line 1890) | func TestComputeLabelPageRankCircularDeps(t *testing.T) { function TestComputeLabelAttentionScoresCircularDeps (line 1930) | func TestComputeLabelAttentionScoresCircularDeps(t *testing.T) { function TestComputeAllLabelHealthIntegration (line 1971) | func TestComputeAllLabelHealthIntegration(t *testing.T) { function TestComputeCrossLabelFlowCircularDeps (line 2034) | func TestComputeCrossLabelFlowCircularDeps(t *testing.T) { function TestLabelSubgraphNoLabels (line 2078) | func TestLabelSubgraphNoLabels(t *testing.T) { function TestLabelPageRankNoLabels (line 2095) | func TestLabelPageRankNoLabels(t *testing.T) { function TestAttentionScoresSingleLabel (line 2110) | func TestAttentionScoresSingleLabel(t *testing.T) { function TestComputeHistoricalVelocity_BasicCounting (line 2137) | func TestComputeHistoricalVelocity_BasicCounting(t *testing.T) { function TestComputeHistoricalVelocity_PeakAndTrough (line 2189) | func TestComputeHistoricalVelocity_PeakAndTrough(t *testing.T) { function TestComputeHistoricalVelocity_MovingAverages (line 2236) | func TestComputeHistoricalVelocity_MovingAverages(t *testing.T) { function TestComputeHistoricalVelocity_EmptyLabel (line 2271) | func TestComputeHistoricalVelocity_EmptyLabel(t *testing.T) { function TestHistoricalVelocity_GetVelocityTrend (line 2294) | func TestHistoricalVelocity_GetVelocityTrend(t *testing.T) { function TestHistoricalVelocity_GetWeeklyAverage (line 2354) | func TestHistoricalVelocity_GetWeeklyAverage(t *testing.T) { function TestComputeAllHistoricalVelocity (line 2372) | func TestComputeAllHistoricalVelocity(t *testing.T) { function TestComputeBlockageCascadeEmpty (line 2413) | func TestComputeBlockageCascadeEmpty(t *testing.T) { function TestComputeBlockageCascadeNoCascade (line 2430) | func TestComputeBlockageCascadeNoCascade(t *testing.T) { function TestComputeBlockageCascadeSimple (line 2451) | func TestComputeBlockageCascadeSimple(t *testing.T) { function TestComputeBlockageCascadeTransitive (line 2485) | func TestComputeBlockageCascadeTransitive(t *testing.T) { function TestBlockageCascadeResult_FormatCascadeTree (line 2524) | func TestBlockageCascadeResult_FormatCascadeTree(t *testing.T) { function TestBlockageCascadeAnalysis_GetCascadeForLabel (line 2551) | func TestBlockageCascadeAnalysis_GetCascadeForLabel(t *testing.T) { function TestBlockageCascadeAnalysis_GetMostImpactfulCascade (line 2575) | func TestBlockageCascadeAnalysis_GetMostImpactfulCascade(t *testing.T) { FILE: pkg/analysis/label_suggest.go type LabelSuggestionConfig (line 12) | type LabelSuggestionConfig struct function DefaultLabelSuggestionConfig (line 35) | func DefaultLabelSuggestionConfig() LabelSuggestionConfig { type LabelMatch (line 96) | type LabelMatch struct function SuggestLabels (line 105) | func SuggestLabels(issues []model.Issue, config LabelSuggestionConfig) [... function learnLabelMappings (line 253) | func learnLabelMappings(issues []model.Issue) map[string]map[string]int { function uniqueStrings (line 276) | func uniqueStrings(s []string) []string { function sortLabelMatchesByConfidence (line 290) | func sortLabelMatchesByConfidence(matches []LabelMatch) { type LabelSuggestionDetector (line 297) | type LabelSuggestionDetector struct method Detect (line 309) | func (d *LabelSuggestionDetector) Detect(issues []model.Issue) []Sugge... function NewLabelSuggestionDetector (line 302) | func NewLabelSuggestionDetector(config LabelSuggestionConfig) *LabelSugg... FILE: pkg/analysis/label_suggest_test.go function TestDefaultLabelSuggestionConfig (line 15) | func TestDefaultLabelSuggestionConfig(t *testing.T) { function TestBuiltinLabelMappings_Coverage (line 39) | func TestBuiltinLabelMappings_Coverage(t *testing.T) { function TestBuiltinLabelMappings_NoEmptyLabels (line 76) | func TestBuiltinLabelMappings_NoEmptyLabels(t *testing.T) { function TestSuggestLabels_EmptyIssues (line 93) | func TestSuggestLabels_EmptyIssues(t *testing.T) { function TestSuggestLabels_SkipsClosedIssues (line 107) | func TestSuggestLabels_SkipsClosedIssues(t *testing.T) { function TestSuggestLabels_BuiltinMappings (line 126) | func TestSuggestLabels_BuiltinMappings(t *testing.T) { function TestSuggestLabels_NoSuggestExistingLabels (line 158) | func TestSuggestLabels_NoSuggestExistingLabels(t *testing.T) { function TestSuggestLabels_OnlyExistingLabels (line 181) | func TestSuggestLabels_OnlyExistingLabels(t *testing.T) { function TestSuggestLabels_LearnedMappings (line 209) | func TestSuggestLabels_LearnedMappings(t *testing.T) { function TestSuggestLabels_DisabledLearnFromExisting (line 246) | func TestSuggestLabels_DisabledLearnFromExisting(t *testing.T) { function TestSuggestLabels_MinConfidenceThreshold (line 271) | func TestSuggestLabels_MinConfidenceThreshold(t *testing.T) { function TestSuggestLabels_MaxSuggestionsPerIssue (line 290) | func TestSuggestLabels_MaxSuggestionsPerIssue(t *testing.T) { function TestSuggestLabels_PrefersHighestScore (line 321) | func TestSuggestLabels_PrefersHighestScore(t *testing.T) { function TestSuggestLabels_MaxTotalSuggestions (line 356) | func TestSuggestLabels_MaxTotalSuggestions(t *testing.T) { function TestSuggestLabels_ConfidenceCapped (line 382) | func TestSuggestLabels_ConfidenceCapped(t *testing.T) { function TestSuggestLabels_SuggestionFormat (line 417) | func TestSuggestLabels_SuggestionFormat(t *testing.T) { function TestLearnLabelMappings_BasicLearning (line 470) | func TestLearnLabelMappings_BasicLearning(t *testing.T) { function TestLearnLabelMappings_SkipsUnlabeled (line 489) | func TestLearnLabelMappings_SkipsUnlabeled(t *testing.T) { function TestLearnLabelMappings_CaseInsensitive (line 506) | func TestLearnLabelMappings_CaseInsensitive(t *testing.T) { function TestLearnLabelMappings_Empty (line 522) | func TestLearnLabelMappings_Empty(t *testing.T) { function TestUniqueStrings_Basic (line 538) | func TestUniqueStrings_Basic(t *testing.T) { function TestUniqueStrings_PreservesOrder (line 587) | func TestUniqueStrings_PreservesOrder(t *testing.T) { function TestSortLabelMatchesByConfidence_Basic (line 606) | func TestSortLabelMatchesByConfidence_Basic(t *testing.T) { function TestSortLabelMatchesByConfidence_EqualValues (line 626) | func TestSortLabelMatchesByConfidence_EqualValues(t *testing.T) { function TestSortLabelMatchesByConfidence_Empty (line 641) | func TestSortLabelMatchesByConfidence_Empty(t *testing.T) { function TestSortLabelMatchesByConfidence_Single (line 649) | func TestSortLabelMatchesByConfidence_Single(t *testing.T) { function TestNewLabelSuggestionDetector (line 662) | func TestNewLabelSuggestionDetector(t *testing.T) { function TestLabelSuggestionDetector_Detect (line 681) | func TestLabelSuggestionDetector_Detect(t *testing.T) { function TestLabelSuggestionDetector_DetectEmpty (line 702) | func TestLabelSuggestionDetector_DetectEmpty(t *testing.T) { function TestSuggestLabels_RealisticScenario (line 715) | func TestSuggestLabels_RealisticScenario(t *testing.T) { function TestSuggestLabels_NoFalsePositives (line 763) | func TestSuggestLabels_NoFalsePositives(t *testing.T) { function TestSuggestLabels_MultipleKeywordMatches (line 787) | func TestSuggestLabels_MultipleKeywordMatches(t *testing.T) { function TestSuggestLabels_VeryLongLabels (line 824) | func TestSuggestLabels_VeryLongLabels(t *testing.T) { function TestSuggestLabels_SpecialCharactersInLabels (line 842) | func TestSuggestLabels_SpecialCharactersInLabels(t *testing.T) { function TestSuggestLabels_OnlyClosedIssues (line 859) | func TestSuggestLabels_OnlyClosedIssues(t *testing.T) { function TestSuggestLabels_AllLabeled (line 874) | func TestSuggestLabels_AllLabeled(t *testing.T) { function findIssue (line 900) | func findIssue(issues []model.Issue, id string) *model.Issue { function containsLabel (line 909) | func containsLabel(labels []string, label string) bool { function TestLabelMatch_Fields (line 922) | func TestLabelMatch_Fields(t *testing.T) { function BenchmarkSuggestLabels_SmallSet (line 952) | func BenchmarkSuggestLabels_SmallSet(b *testing.B) { function BenchmarkSuggestLabels_LargeSet (line 973) | func BenchmarkSuggestLabels_LargeSet(b *testing.B) { function BenchmarkLearnLabelMappings (line 998) | func BenchmarkLearnLabelMappings(b *testing.B) { function BenchmarkSortLabelMatchesByConfidence (line 1014) | func BenchmarkSortLabelMatchesByConfidence(b *testing.B) { FILE: pkg/analysis/perf_invariants_test.go function referenceUnblocksMap (line 22) | func referenceUnblocksMap(issues []model.Issue) map[string][]string { function TestBuildUnblocksMap_MatchesReference (line 104) | func TestBuildUnblocksMap_MatchesReference(t *testing.T) { function TestComputeProjectVelocity_BucketsAndEstimated (line 160) | func TestComputeProjectVelocity_BucketsAndEstimated(t *testing.T) { FILE: pkg/analysis/plan.go type PlanItem (line 10) | type PlanItem struct type ExecutionTrack (line 19) | type ExecutionTrack struct type ExecutionPlan (line 26) | type ExecutionPlan struct type PlanSummary (line 34) | type PlanSummary struct method GetExecutionPlan (line 42) | func (a *Analyzer) GetExecutionPlan() ExecutionPlan { method computeUnblocks (line 84) | func (a *Analyzer) computeUnblocks(issueID string) []string { method ComputeUnblocks (line 143) | func (a *Analyzer) ComputeUnblocks(issueID string) []string { method findConnectedComponents (line 148) | func (a *Analyzer) findConnectedComponents() map[string][]string { method buildTracks (line 213) | func (a *Analyzer) buildTracks(components map[string][]string, actionabl... method computePlanSummary (line 279) | func (a *Analyzer) computePlanSummary(actionable []model.Issue, unblocks... function generateTrackID (line 318) | func generateTrackID(n int) string { function GenerateTrackIDForTest (line 337) | func GenerateTrackIDForTest(n int) string { FILE: pkg/analysis/plan_extended_test.go function TestPlan_DiamondDependency (line 13) | func TestPlan_DiamondDependency(t *testing.T) { function TestPlan_DisconnectedComponents (line 48) | func TestPlan_DisconnectedComponents(t *testing.T) { function TestPlan_WithClosedBlockers (line 78) | func TestPlan_WithClosedBlockers(t *testing.T) { function TestPlan_ComplexPriorities (line 107) | func TestPlan_ComplexPriorities(t *testing.T) { FILE: pkg/analysis/plan_test.go function TestGetExecutionPlanEmpty (line 10) | func TestGetExecutionPlanEmpty(t *testing.T) { function TestGetExecutionPlanSingleIssue (line 22) | func TestGetExecutionPlanSingleIssue(t *testing.T) { function TestGetExecutionPlanChain (line 47) | func TestGetExecutionPlanChain(t *testing.T) { function TestGetExecutionPlanParallelTracks (line 86) | func TestGetExecutionPlanParallelTracks(t *testing.T) { function TestGetExecutionPlanPriorityOrdering (line 116) | func TestGetExecutionPlanPriorityOrdering(t *testing.T) { function TestGetExecutionPlanUnblocksCalculation (line 159) | func TestGetExecutionPlanUnblocksCalculation(t *testing.T) { function TestGenerateTrackID_Unbounded (line 197) | func TestGenerateTrackID_Unbounded(t *testing.T) { function TestGetExecutionPlanPartialUnblock (line 216) | func TestGetExecutionPlanPartialUnblock(t *testing.T) { function TestGetExecutionPlanConnectedGraph (line 251) | func TestGetExecutionPlanConnectedGraph(t *testing.T) { function TestGetExecutionPlanAllClosed (line 283) | func TestGetExecutionPlanAllClosed(t *testing.T) { function TestGetExecutionPlanCycle (line 303) | func TestGetExecutionPlanCycle(t *testing.T) { function TestGetExecutionPlanTrackHasTrackID (line 329) | func TestGetExecutionPlanTrackHasTrackID(t *testing.T) { function TestGetExecutionPlanItemHasDetails (line 346) | func TestGetExecutionPlanItemHasDetails(t *testing.T) { function TestGetExecutionPlanMissingBlocker (line 373) | func TestGetExecutionPlanMissingBlocker(t *testing.T) { function TestGetExecutionPlanRelatedTypeDoesNotBlock (line 394) | func TestGetExecutionPlanRelatedTypeDoesNotBlock(t *testing.T) { function TestGetExecutionPlanSelfReferential (line 415) | func TestGetExecutionPlanSelfReferential(t *testing.T) { function TestGetExecutionPlanMixedDepTypes (line 422) | func TestGetExecutionPlanMixedDepTypes(t *testing.T) { function TestGetExecutionPlanBlockerClosed (line 446) | func TestGetExecutionPlanBlockerClosed(t *testing.T) { function TestGetExecutionPlanLegacyDependencyGrouping (line 466) | func TestGetExecutionPlanLegacyDependencyGrouping(t *testing.T) { FILE: pkg/analysis/priority.go type ImpactScore (line 14) | type ImpactScore struct type ScoreBreakdown (line 24) | type ScoreBreakdown struct constant WeightPageRank (line 55) | WeightPageRank = 0.22 constant WeightBetweenness (line 56) | WeightBetweenness = 0.20 constant WeightBlockerRatio (line 57) | WeightBlockerRatio = 0.13 constant WeightStaleness (line 58) | WeightStaleness = 0.05 constant WeightPriorityBoost (line 59) | WeightPriorityBoost = 0.10 constant WeightTimeToImpact (line 60) | WeightTimeToImpact = 0.10 constant WeightUrgency (line 61) | WeightUrgency = 0.10 constant WeightRisk (line 62) | WeightRisk = 0.10 constant DefaultEstimatedMinutes (line 69) | DefaultEstimatedMinutes = 60 constant MaxCriticalPathDepth (line 72) | MaxCriticalPathDepth = 10.0 constant UrgencyDecayDays (line 75) | UrgencyDecayDays = 7.0 method ComputeImpactScores (line 78) | func (a *Analyzer) ComputeImpactScores() []ImpactScore { method ComputeImpactScoresAt (line 83) | func (a *Analyzer) ComputeImpactScoresAt(now time.Time) []ImpactScore { method ComputeImpactScoresFromStats (line 89) | func (a *Analyzer) ComputeImpactScoresFromStats(stats *GraphStats, now t... method ComputeImpactScore (line 218) | func (a *Analyzer) ComputeImpactScore(issueID string) *ImpactScore { method TopImpactScores (line 229) | func (a *Analyzer) TopImpactScores(n int) []ImpactScore { function computeStaleness (line 239) | func computeStaleness(updatedAt time.Time, now time.Time) float64 { function computePriorityBoost (line 261) | func computePriorityBoost(priority int) float64 { function normalize (line 277) | func normalize(v, max float64) float64 { function normalizeInt (line 285) | func normalizeInt(v, max int) float64 { function findMax (line 293) | func findMax(m map[string]float64) float64 { method computeMedianEstimatedMinutes (line 304) | func (a *Analyzer) computeMedianEstimatedMinutes() int { function computeTimeToImpact (line 327) | func computeTimeToImpact(criticalPathDepth float64, estimatedMinutes *in... function computeUrgency (line 373) | func computeUrgency(issue *model.Issue, now time.Time) (float64, string) { type WhatIfDelta (line 449) | type WhatIfDelta struct type PriorityRecommendation (line 470) | type PriorityRecommendation struct type RecommendationThresholds (line 483) | type RecommendationThresholds struct function DefaultThresholds (line 492) | func DefaultThresholds() RecommendationThresholds { method GenerateRecommendations (line 503) | func (a *Analyzer) GenerateRecommendations() []PriorityRecommendation { method GenerateRecommendationsWithThresholds (line 508) | func (a *Analyzer) GenerateRecommendationsWithThresholds(thresholds Reco... function generateRecommendation (line 571) | func generateRecommendation(score ImpactScore, unblocksCount int, core i... function scoreToPriority (line 708) | func scoreToPriority(score float64) int { function priorityToScore (line 724) | func priorityToScore(priority int) float64 { function calculateConfidence (line 740) | func calculateConfidence(signals int, strength float64, scoreDelta float... function abs (line 769) | func abs(x float64) float64 { constant MaxUnblockedIDsShown (line 777) | MaxUnblockedIDsShown = 10 method computeWhatIfDelta (line 780) | func (a *Analyzer) computeWhatIfDelta(issueID string) *WhatIfDelta { method countTransitiveUnblocks (line 841) | func (a *Analyzer) countTransitiveUnblocks(issueID string) int { function estimateDaysSaved (line 906) | func estimateDaysSaved(unblockedIDs []string, issueMap map[string]model.... function generateWhatIfExplanation (line 936) | func generateWhatIfExplanation(direct, transitive, blockedReduction int,... FILE: pkg/analysis/priority_test.go function TestComputeImpactScoresEmpty (line 11) | func TestComputeImpactScoresEmpty(t *testing.T) { function TestComputeImpactScoresSkipsClosed (line 20) | func TestComputeImpactScoresSkipsClosed(t *testing.T) { function TestComputeImpactScoresPriorityBoost (line 37) | func TestComputeImpactScoresPriorityBoost(t *testing.T) { function TestComputeImpactScoresStaleness (line 74) | func TestComputeImpactScoresStaleness(t *testing.T) { function TestComputeImpactScoresBlockerRatio (line 113) | func TestComputeImpactScoresBlockerRatio(t *testing.T) { function TestComputeImpactScoresPageRank (line 145) | func TestComputeImpactScoresPageRank(t *testing.T) { function TestComputeImpactScoresSortedDescending (line 172) | func TestComputeImpactScoresSortedDescending(t *testing.T) { function TestComputeImpactScoreSingle (line 196) | func TestComputeImpactScoreSingle(t *testing.T) { function TestTopImpactScores (line 218) | func TestTopImpactScores(t *testing.T) { function TestScoreBreakdownWeights (line 241) | func TestScoreBreakdownWeights(t *testing.T) { function TestComputeImpactScoreDetails (line 257) | func TestComputeImpactScoreDetails(t *testing.T) { function TestGenerateRecommendationsEmpty (line 281) | func TestGenerateRecommendationsEmpty(t *testing.T) { function TestGenerateRecommendationsHighImpactLowPriority (line 290) | func TestGenerateRecommendationsHighImpactLowPriority(t *testing.T) { function TestGenerateRecommendationsConfidence (line 336) | func TestGenerateRecommendationsConfidence(t *testing.T) { function TestGenerateRecommendationsWithCustomThresholds (line 369) | func TestGenerateRecommendationsWithCustomThresholds(t *testing.T) { function TestDefaultThresholds (line 408) | func TestDefaultThresholds(t *testing.T) { function TestRecommendationDirection (line 425) | func TestRecommendationDirection(t *testing.T) { function TestComputeImpactScoresTimeToImpact (line 453) | func TestComputeImpactScoresTimeToImpact(t *testing.T) { function TestComputeImpactScoresUrgency (line 488) | func TestComputeImpactScoresUrgency(t *testing.T) { function TestUrgencyLabelsRecognized (line 529) | func TestUrgencyLabelsRecognized(t *testing.T) { function TestMedianEstimatedMinutes (line 551) | func TestMedianEstimatedMinutes(t *testing.T) { function TestWhatIfDeltaDirectUnblocks (line 578) | func TestWhatIfDeltaDirectUnblocks(t *testing.T) { function TestWhatIfDeltaNoDownstream (line 624) | func TestWhatIfDeltaNoDownstream(t *testing.T) { function TestWhatIfDeltaEstimatedDays (line 645) | func TestWhatIfDeltaEstimatedDays(t *testing.T) { function TestReasoningCapAtThree (line 678) | func TestReasoningCapAtThree(t *testing.T) { function TestRecommendationsSortDeterministic (line 714) | func TestRecommendationsSortDeterministic(t *testing.T) { function TestWhatIfExplanationText (line 740) | func TestWhatIfExplanationText(t *testing.T) { function TestParallelizationGain (line 766) | func TestParallelizationGain(t *testing.T) { function TestParallelizationGainNegative (line 812) | func TestParallelizationGainNegative(t *testing.T) { function TestParallelizationGainZero (line 845) | func TestParallelizationGainZero(t *testing.T) { FILE: pkg/analysis/real_data_test.go function loadRealIssues (line 16) | func loadRealIssues(t *testing.T, filename string) []model.Issue { function TestRealData_Cass (line 51) | func TestRealData_Cass(t *testing.T) { function TestRealData_Srps (line 102) | func TestRealData_Srps(t *testing.T) { function TestRealData_ProjectBeads (line 132) | func TestRealData_ProjectBeads(t *testing.T) { function TestRealData_Combined (line 198) | func TestRealData_Combined(t *testing.T) { FILE: pkg/analysis/risk.go type RiskSignals (line 11) | type RiskSignals struct type RiskWeights (line 35) | type RiskWeights struct function DefaultRiskWeights (line 43) | func DefaultRiskWeights() RiskWeights { function ComputeRiskSignals (line 53) | func ComputeRiskSignals( function ComputeRiskSignalsWithWeights (line 63) | func ComputeRiskSignalsWithWeights( function computeFanVariance (line 102) | func computeFanVariance(issue *model.Issue, stats *GraphStats) float64 { function computeActivityChurn (line 141) | func computeActivityChurn(issue *model.Issue, now time.Time) float64 { function computeCrossRepoRisk (line 184) | func computeCrossRepoRisk(issue *model.Issue, issues map[string]model.Is... function computeStatusRisk (line 216) | func computeStatusRisk(issue *model.Issue, now time.Time) float64 { function generateRiskExplanation (line 268) | func generateRiskExplanation(signals RiskSignals) string { function joinRiskFactors (line 296) | func joinRiskFactors(factors []string) string { function computeMean (line 315) | func computeMean(values []float64) float64 { function computeStdDev (line 327) | func computeStdDev(values []float64, mean float64) float64 { function ComputeAllRiskSignals (line 341) | func ComputeAllRiskSignals( FILE: pkg/analysis/risk_test.go function TestComputeRiskSignals_EmptyIssue (line 10) | func TestComputeRiskSignals_EmptyIssue(t *testing.T) { function TestComputeRiskSignals_FanVariance (line 37) | func TestComputeRiskSignals_FanVariance(t *testing.T) { function TestComputeRiskSignals_StatusRisk (line 80) | func TestComputeRiskSignals_StatusRisk(t *testing.T) { function TestComputeAllRiskSignals_SkipsTombstone (line 155) | func TestComputeAllRiskSignals_SkipsTombstone(t *testing.T) { function TestComputeRiskSignals_ActivityChurn (line 177) | func TestComputeRiskSignals_ActivityChurn(t *testing.T) { function TestComputeRiskSignals_CrossRepoRisk (line 223) | func TestComputeRiskSignals_CrossRepoRisk(t *testing.T) { function TestComputeRiskSignals_CompositeRisk (line 262) | func TestComputeRiskSignals_CompositeRisk(t *testing.T) { function TestRiskExplanation (line 310) | func TestRiskExplanation(t *testing.T) { function stringContains (line 356) | func stringContains(s, substr string) bool { function TestDefaultRiskWeights (line 365) | func TestDefaultRiskWeights(t *testing.T) { function TestImpactScore_IncludesRisk (line 380) | func TestImpactScore_IncludesRisk(t *testing.T) { FILE: pkg/analysis/sample_integration_test.go function loadSampleIssues (line 14) | func loadSampleIssues(t *testing.T) []model.Issue { function TestExecutionPlan_OnSampleFixture (line 24) | func TestExecutionPlan_OnSampleFixture(t *testing.T) { function TestSnapshotDiff_OnSampleFixture (line 54) | func TestSnapshotDiff_OnSampleFixture(t *testing.T) { function TestGraphMetrics_OnSampleFixture (line 91) | func TestGraphMetrics_OnSampleFixture(t *testing.T) { function TestActionableTracksContainRealIDs (line 110) | func TestActionableTracksContainRealIDs(t *testing.T) { FILE: pkg/analysis/status_fullstats_test.go function TestMetricStatusAndFullStatsLimits (line 15) | func TestMetricStatusAndFullStatsLimits(t *testing.T) { function TestStatusEntryMarshalJSONMilliseconds (line 68) | func TestStatusEntryMarshalJSONMilliseconds(t *testing.T) { FILE: pkg/analysis/suggest_all.go type SuggestAllConfig (line 11) | type SuggestAllConfig struct function DefaultSuggestAllConfig (line 50) | func DefaultSuggestAllConfig() SuggestAllConfig { function GenerateAllSuggestions (line 66) | func GenerateAllSuggestions(issues []model.Issue, config SuggestAllConfi... type RobotSuggestOutput (line 125) | type RobotSuggestOutput struct type SuggestFilter (line 134) | type SuggestFilter struct function GenerateRobotSuggestOutput (line 141) | func GenerateRobotSuggestOutput(issues []model.Issue, config SuggestAllC... FILE: pkg/analysis/suggest_all_test.go function TestDefaultSuggestAllConfig (line 16) | func TestDefaultSuggestAllConfig(t *testing.T) { function TestGenerateAllSuggestions_EmptyIssues (line 62) | func TestGenerateAllSuggestions_EmptyIssues(t *testing.T) { function TestGenerateAllSuggestions_SingleIssue (line 76) | func TestGenerateAllSuggestions_SingleIssue(t *testing.T) { function TestGenerateAllSuggestions_OnlyDuplicates (line 96) | func TestGenerateAllSuggestions_OnlyDuplicates(t *testing.T) { function TestGenerateAllSuggestions_OnlyLabels (line 120) | func TestGenerateAllSuggestions_OnlyLabels(t *testing.T) { function TestGenerateAllSuggestions_OnlyCycles (line 143) | func TestGenerateAllSuggestions_OnlyCycles(t *testing.T) { function TestGenerateAllSuggestions_AllDisabled (line 178) | func TestGenerateAllSuggestions_AllDisabled(t *testing.T) { function TestGenerateAllSuggestions_MinConfidenceFilter (line 201) | func TestGenerateAllSuggestions_MinConfidenceFilter(t *testing.T) { function TestGenerateAllSuggestions_TypeFilter (line 236) | func TestGenerateAllSuggestions_TypeFilter(t *testing.T) { function TestGenerateAllSuggestions_BeadFilter (line 258) | func TestGenerateAllSuggestions_BeadFilter(t *testing.T) { function TestGenerateAllSuggestions_SortedByConfidence (line 284) | func TestGenerateAllSuggestions_SortedByConfidence(t *testing.T) { function TestGenerateAllSuggestions_MaxSuggestionsLimit (line 312) | func TestGenerateAllSuggestions_MaxSuggestionsLimit(t *testing.T) { function TestGenerateAllSuggestions_MaxSuggestionsZero (line 337) | func TestGenerateAllSuggestions_MaxSuggestionsZero(t *testing.T) { function TestGenerateAllSuggestions_NoDuplicateSuggestions (line 360) | func TestGenerateAllSuggestions_NoDuplicateSuggestions(t *testing.T) { function TestGenerateAllSuggestions_MixedSuggestionTypes (line 386) | func TestGenerateAllSuggestions_MixedSuggestionTypes(t *testing.T) { function TestGenerateAllSuggestions_DataHashPreserved (line 440) | func TestGenerateAllSuggestions_DataHashPreserved(t *testing.T) { function TestGenerateRobotSuggestOutput_Structure (line 459) | func TestGenerateRobotSuggestOutput_Structure(t *testing.T) { function TestGenerateRobotSuggestOutput_UsageHints (line 501) | func TestGenerateRobotSuggestOutput_UsageHints(t *testing.T) { function TestSuggestAllConfig_FilterTypeValues (line 533) | func TestSuggestAllConfig_FilterTypeValues(t *testing.T) { function TestGenerateAllSuggestions_AllClosedIssues (line 569) | func TestGenerateAllSuggestions_AllClosedIssues(t *testing.T) { function TestGenerateAllSuggestions_VeryLargeIssueSet (line 583) | func TestGenerateAllSuggestions_VeryLargeIssueSet(t *testing.T) { function TestGenerateAllSuggestions_UnicodeContent (line 616) | func TestGenerateAllSuggestions_UnicodeContent(t *testing.T) { function TestGenerateAllSuggestions_EmptyTitles (line 630) | func TestGenerateAllSuggestions_EmptyTitles(t *testing.T) { function TestGenerateAllSuggestions_Deterministic (line 648) | func TestGenerateAllSuggestions_Deterministic(t *testing.T) { function BenchmarkGenerateAllSuggestions_Small (line 685) | func BenchmarkGenerateAllSuggestions_Small(b *testing.B) { function BenchmarkGenerateAllSuggestions_Medium (line 706) | func BenchmarkGenerateAllSuggestions_Medium(b *testing.B) { function BenchmarkGenerateAllSuggestions_OnlyLabels (line 727) | func BenchmarkGenerateAllSuggestions_OnlyLabels(b *testing.B) { FILE: pkg/analysis/suggestions.go type SuggestionType (line 8) | type SuggestionType constant SuggestionMissingDependency (line 12) | SuggestionMissingDependency SuggestionType = "missing_dependency" constant SuggestionPotentialDuplicate (line 15) | SuggestionPotentialDuplicate SuggestionType = "potential_duplicate" constant SuggestionLabelSuggestion (line 18) | SuggestionLabelSuggestion SuggestionType = "label_suggestion" constant SuggestionStaleCleanup (line 21) | SuggestionStaleCleanup SuggestionType = "stale_cleanup" constant SuggestionCycleWarning (line 24) | SuggestionCycleWarning SuggestionType = "cycle_warning" type Suggestion (line 28) | type Suggestion struct method GetConfidenceLevel (line 84) | func (s *Suggestion) GetConfidenceLevel() ConfidenceLevel { method IsActionable (line 95) | func (s *Suggestion) IsActionable() bool { method WithRelatedBead (line 151) | func (s Suggestion) WithRelatedBead(beadID string) Suggestion { method WithAction (line 157) | func (s Suggestion) WithAction(cmd string) Suggestion { method WithMetadata (line 163) | func (s Suggestion) WithMetadata(key string, value interface{}) Sugges... type ConfidenceLevel (line 58) | type ConfidenceLevel constant ConfidenceLow (line 62) | ConfidenceLow ConfidenceLevel = "low" constant ConfidenceMedium (line 65) | ConfidenceMedium ConfidenceLevel = "medium" constant ConfidenceHigh (line 68) | ConfidenceHigh ConfidenceLevel = "high" constant ConfidenceThresholdLow (line 74) | ConfidenceThresholdLow = 0.4 constant ConfidenceThresholdHigh (line 77) | ConfidenceThresholdHigh = 0.7 constant MinConfidenceDefault (line 80) | MinConfidenceDefault = 0.3 type SuggestionSet (line 100) | type SuggestionSet struct method computeStats (line 183) | func (ss *SuggestionSet) computeStats() { method FilterByType (line 211) | func (ss *SuggestionSet) FilterByType(t SuggestionType) []Suggestion { method FilterByMinConfidence (line 222) | func (ss *SuggestionSet) FilterByMinConfidence(minConf float64) []Sugg... method HighConfidenceSuggestions (line 233) | func (ss *SuggestionSet) HighConfidenceSuggestions() []Suggestion { type SuggestionStats (line 115) | type SuggestionStats struct function NewSuggestion (line 133) | func NewSuggestion( function NewSuggestionSet (line 172) | func NewSuggestionSet(suggestions []Suggestion, dataHash string) Suggest... FILE: pkg/analysis/suggestions_test.go function TestSuggestionType_Constants (line 9) | func TestSuggestionType_Constants(t *testing.T) { function TestConfidenceLevel_Constants (line 29) | func TestConfidenceLevel_Constants(t *testing.T) { function TestConfidenceThresholds (line 46) | func TestConfidenceThresholds(t *testing.T) { function TestNewSuggestion (line 62) | func TestNewSuggestion(t *testing.T) { function TestSuggestion_GetConfidenceLevel (line 104) | func TestSuggestion_GetConfidenceLevel(t *testing.T) { function TestSuggestion_IsActionable (line 138) | func TestSuggestion_IsActionable(t *testing.T) { function TestSuggestion_WithRelatedBead (line 159) | func TestSuggestion_WithRelatedBead(t *testing.T) { function TestSuggestion_WithAction (line 180) | func TestSuggestion_WithAction(t *testing.T) { function TestSuggestion_WithMetadata (line 197) | func TestSuggestion_WithMetadata(t *testing.T) { function TestSuggestion_JSON (line 231) | func TestSuggestion_JSON(t *testing.T) { function TestNewSuggestionSet_Empty (line 270) | func TestNewSuggestionSet_Empty(t *testing.T) { function TestNewSuggestionSet_SingleSuggestion (line 290) | func TestNewSuggestionSet_SingleSuggestion(t *testing.T) { function TestNewSuggestionSet_MultipleSuggestions (line 313) | func TestNewSuggestionSet_MultipleSuggestions(t *testing.T) { function TestSuggestionSet_FilterByType (line 368) | func TestSuggestionSet_FilterByType(t *testing.T) { function TestSuggestionSet_FilterByMinConfidence (line 401) | func TestSuggestionSet_FilterByMinConfidence(t *testing.T) { function TestSuggestionSet_HighConfidenceSuggestions (line 434) | func TestSuggestionSet_HighConfidenceSuggestions(t *testing.T) { function TestSuggestionSet_JSON (line 457) | func TestSuggestionSet_JSON(t *testing.T) { function TestSuggestion_EdgeCases (line 488) | func TestSuggestion_EdgeCases(t *testing.T) { function BenchmarkNewSuggestion (line 532) | func BenchmarkNewSuggestion(b *testing.B) { function BenchmarkSuggestion_GetConfidenceLevel (line 538) | func BenchmarkSuggestion_GetConfidenceLevel(b *testing.B) { function BenchmarkSuggestion_WithMetadata (line 545) | func BenchmarkSuggestion_WithMetadata(b *testing.B) { function BenchmarkNewSuggestionSet_100 (line 552) | func BenchmarkNewSuggestionSet_100(b *testing.B) { function BenchmarkSuggestionSet_FilterByType (line 563) | func BenchmarkSuggestionSet_FilterByType(b *testing.B) { function BenchmarkSuggestionSet_FilterByMinConfidence (line 576) | func BenchmarkSuggestionSet_FilterByMinConfidence(b *testing.B) { FILE: pkg/analysis/triage.go function isClosedLikeStatus (line 14) | func isClosedLikeStatus(status model.Status) bool { type TriageResult (line 20) | type TriageResult struct type TriageMeta (line 37) | type TriageMeta struct type QuickRef (line 46) | type QuickRef struct type TopPick (line 55) | type TopPick struct type Recommendation (line 64) | type Recommendation struct type QuickWin (line 80) | type QuickWin struct type BlockerItem (line 89) | type BlockerItem struct type ProjectHealth (line 99) | type ProjectHealth struct type HealthCounts (line 107) | type HealthCounts struct type GraphHealth (line 119) | type GraphHealth struct type Velocity (line 129) | type Velocity struct type VelocityWeek (line 138) | type VelocityWeek struct function ComputeProjectVelocity (line 155) | func ComputeProjectVelocity(issues []model.Issue, now time.Time, weeks i... function isoWeekStart (line 237) | func isoWeekStart(year, isoWeek int) time.Time { function truncateToMonday (line 252) | func truncateToMonday(t time.Time) time.Time { type Staleness (line 262) | type Staleness struct type Alert (line 270) | type Alert struct type CommandHelpers (line 279) | type CommandHelpers struct function ComputeTriage (line 288) | func ComputeTriage(issues []model.Issue) TriageResult { type TriageOptions (line 293) | type TriageOptions struct type TrackRecommendationGroup (line 312) | type TrackRecommendationGroup struct type LabelRecommendationGroup (line 322) | type LabelRecommendationGroup struct function ComputeTriageWithOptions (line 331) | func ComputeTriageWithOptions(issues []model.Issue, opts TriageOptions) ... function ComputeTriageWithOptionsAndTime (line 336) | func ComputeTriageWithOptionsAndTime(issues []model.Issue, opts TriageOp... function extractDescendantSubgraph (line 383) | func extractDescendantSubgraph(issues []model.Issue, rootID string) []mo... function ComputeTriageFromAnalyzer (line 444) | func ComputeTriageFromAnalyzer(analyzer *Analyzer, stats *GraphStats, is... function ComputeStaleness (line 543) | func ComputeStaleness(history *correlation.HistoryReport, issues []model... function buildUnblocksMap (line 597) | func buildUnblocksMap(analyzer *Analyzer) map[string][]string { function computeCounts (line 682) | func computeCounts(issues []model.Issue, analyzer *Analyzer) HealthCounts { function computeCountsWithContext (line 718) | func computeCountsWithContext(issues []model.Issue, ctx *TriageContext) ... function buildRecommendationsFromTriageScores (line 749) | func buildRecommendationsFromTriageScores(scores []TriageScore, ctx *Tri... function buildQuickWins (line 794) | func buildQuickWins(scores []ImpactScore, unblocksMap map[string][]strin... function buildBlockersToClear (line 867) | func buildBlockersToClear(analyzer *Analyzer, unblocksMap map[string][]s... function buildBlockersToClearWithContext (line 926) | func buildBlockersToClearWithContext(ctx *TriageContext, unblocksMap map... function buildTopPicks (line 980) | func buildTopPicks(recommendations []Recommendation, limit int) []TopPick { function buildGraphHealth (line 1003) | func buildGraphHealth(stats *GraphStats) GraphHealth { function buildCommands (line 1022) | func buildCommands(topID string) CommandHelpers { type TriageScore (line 1049) | type TriageScore struct type TriageFactors (line 1063) | type TriageFactors struct type TriageScoringOptions (line 1072) | type TriageScoringOptions struct function DefaultTriageScoringOptions (line 1090) | func DefaultTriageScoringOptions() TriageScoringOptions { function ComputeTriageScores (line 1105) | func ComputeTriageScores(issues []model.Issue) []TriageScore { function ComputeTriageScoresWithOptions (line 1110) | func ComputeTriageScoresWithOptions(issues []model.Issue, opts TriageSco... function computeTriageScoresFromImpact (line 1126) | func computeTriageScoresFromImpact(baseScores []ImpactScore, unblocksMap... function computeSingleTriageScore (line 1158) | func computeSingleTriageScore(base ImpactScore, unblocksMap map[string][... function computeBlockerDepths (line 1223) | func computeBlockerDepths(analyzer *Analyzer, baseScores []ImpactScore) ... method GetBlockerDepth (line 1272) | func (a *Analyzer) GetBlockerDepth(issueID string) int { method getBlockerDepthRecursive (line 1278) | func (a *Analyzer) getBlockerDepthRecursive(issueID string, visited map[... function maxOf (line 1314) | func maxOf(a, b int) int { function GetTopTriageScores (line 1322) | func GetTopTriageScores(issues []model.Issue, n int) []TriageScore { type TriageReasonContext (line 1336) | type TriageReasonContext struct type TriageReasons (line 1349) | type TriageReasons struct function GenerateTriageReasons (line 1357) | func GenerateTriageReasons(ctx TriageReasonContext) TriageReasons { function formatUnblockList (line 1489) | func formatUnblockList(ids []string) string { function GenerateTriageReasonsForScore (line 1502) | func GenerateTriageReasonsForScore(score TriageScore, triageCtx *TriageC... function EnhanceRecommendationWithTriageReasons (line 1529) | func EnhanceRecommendationWithTriageReasons(rec *Recommendation, triageR... function buildRecommendationsByTrack (line 1547) | func buildRecommendationsByTrack(recs []Recommendation, analyzer *Analyz... function layerReason (line 1651) | func layerReason(depth int, totalRecs int) string { function buildRecommendationsByLabel (line 1665) | func buildRecommendationsByLabel(recs []Recommendation, unblocksMap map[... FILE: pkg/analysis/triage_context.go type TriageContext (line 27) | type TriageContext struct method lock (line 68) | func (ctx *TriageContext) lock() { method unlock (line 75) | func (ctx *TriageContext) unlock() { method Analyzer (line 84) | func (ctx *TriageContext) Analyzer() *Analyzer { method ActionableIssues (line 92) | func (ctx *TriageContext) ActionableIssues() []model.Issue { method IsActionable (line 113) | func (ctx *TriageContext) IsActionable(id string) bool { method ActionableCount (line 131) | func (ctx *TriageContext) ActionableCount() int { method BlockerDepth (line 144) | func (ctx *TriageContext) BlockerDepth(id string) int { method computeBlockerDepthInternal (line 160) | func (ctx *TriageContext) computeBlockerDepthInternal(id string, visit... method getOpenBlockersInternal (line 198) | func (ctx *TriageContext) getOpenBlockersInternal(id string) []string { method OpenBlockers (line 213) | func (ctx *TriageContext) OpenBlockers(id string) []string { method UnblocksMap (line 228) | func (ctx *TriageContext) UnblocksMap() map[string][]string { method Unblocks (line 244) | func (ctx *TriageContext) Unblocks(id string) []string { method UnblocksCount (line 249) | func (ctx *TriageContext) UnblocksCount(id string) int { method AllBlockerDepths (line 257) | func (ctx *TriageContext) AllBlockerDepths() map[string]int { method Reset (line 280) | func (ctx *TriageContext) Reset() { method GetIssue (line 295) | func (ctx *TriageContext) GetIssue(id string) *model.Issue { method IssueCount (line 300) | func (ctx *TriageContext) IssueCount() int { method Issues (line 305) | func (ctx *TriageContext) Issues() []model.Issue { function NewTriageContext (line 49) | func NewTriageContext(analyzer *Analyzer) *TriageContext { function NewTriageContextThreadSafe (line 61) | func NewTriageContextThreadSafe(analyzer *Analyzer) *TriageContext { FILE: pkg/analysis/triage_context_test.go function TestNewTriageContext (line 10) | func TestNewTriageContext(t *testing.T) { function TestNewTriageContextThreadSafe (line 29) | func TestNewTriageContextThreadSafe(t *testing.T) { function TestTriageContext_ActionableIssues (line 41) | func TestTriageContext_ActionableIssues(t *testing.T) { function TestTriageContext_IsActionable (line 95) | func TestTriageContext_IsActionable(t *testing.T) { function TestTriageContext_BlockerDepth (line 120) | func TestTriageContext_BlockerDepth(t *testing.T) { function TestTriageContext_OpenBlockers (line 266) | func TestTriageContext_OpenBlockers(t *testing.T) { function TestTriageContext_UnblocksMap (line 300) | func TestTriageContext_UnblocksMap(t *testing.T) { function TestTriageContext_Unblocks (line 398) | func TestTriageContext_Unblocks(t *testing.T) { function TestTriageContext_Reset (line 423) | func TestTriageContext_Reset(t *testing.T) { function TestTriageContext_AllBlockerDepths (line 465) | func TestTriageContext_AllBlockerDepths(t *testing.T) { function TestTriageContext_ThreadSafe (line 499) | func TestTriageContext_ThreadSafe(t *testing.T) { function TestTriageContext_Convenience (line 539) | func TestTriageContext_Convenience(t *testing.T) { function BenchmarkTriageContext_ActionableIssues (line 576) | func BenchmarkTriageContext_ActionableIssues(b *testing.B) { function BenchmarkTriageContext_BlockerDepth (line 610) | func BenchmarkTriageContext_BlockerDepth(b *testing.B) { FILE: pkg/analysis/triage_test.go function TestComputeTriage_Empty (line 11) | func TestComputeTriage_Empty(t *testing.T) { function TestComputeTriage_BasicIssues (line 25) | func TestComputeTriage_BasicIssues(t *testing.T) { function TestComputeTriage_IgnoresTombstoneIssues (line 76) | func TestComputeTriage_IgnoresTombstoneIssues(t *testing.T) { function TestComputeTriage_WithDependencies (line 127) | func TestComputeTriage_WithDependencies(t *testing.T) { function TestComputeTriage_TopPicks (line 173) | func TestComputeTriage_TopPicks(t *testing.T) { function TestComputeTriageWithOptions (line 192) | func TestComputeTriageWithOptions(t *testing.T) { function TestTriageRecommendation_Action (line 220) | func TestTriageRecommendation_Action(t *testing.T) { function TestTriageHealthCounts (line 245) | func TestTriageHealthCounts(t *testing.T) { function TestTriageGraphHealth (line 268) | func TestTriageGraphHealth(t *testing.T) { function TestTriageWithCycles (line 289) | func TestTriageWithCycles(t *testing.T) { function TestProjectVelocityComputed (line 308) | func TestProjectVelocityComputed(t *testing.T) { function TestComputeProjectVelocity_BoundaryInclusivity (line 328) | func TestComputeProjectVelocity_BoundaryInclusivity(t *testing.T) { function TestTriageEmptyCommands (line 350) | func TestTriageEmptyCommands(t *testing.T) { function TestTriageNoRecommendationsCommands (line 363) | func TestTriageNoRecommendationsCommands(t *testing.T) { function TestTriageInProgressAction (line 376) | func TestTriageInProgressAction(t *testing.T) { function TestComputeTriageScores_Empty (line 418) | func TestComputeTriageScores_Empty(t *testing.T) { function TestComputeTriageScores_BasicIssues (line 425) | func TestComputeTriageScores_BasicIssues(t *testing.T) { function TestComputeTriageScores_WithUnblocks (line 459) | func TestComputeTriageScores_WithUnblocks(t *testing.T) { function TestComputeTriageScores_QuickWin (line 507) | func TestComputeTriageScores_QuickWin(t *testing.T) { function TestComputeTriageScores_PendingFactors (line 531) | func TestComputeTriageScores_PendingFactors(t *testing.T) { function TestComputeTriageScoresWithOptions_CustomWeights (line 558) | func TestComputeTriageScoresWithOptions_CustomWeights(t *testing.T) { function TestGetBlockerDepth_NoBlockers (line 583) | func TestGetBlockerDepth_NoBlockers(t *testing.T) { function TestGetBlockerDepth_OneLevel (line 595) | func TestGetBlockerDepth_OneLevel(t *testing.T) { function TestGetBlockerDepth_Cycle (line 613) | func TestGetBlockerDepth_Cycle(t *testing.T) { function TestGetTopTriageScores (line 636) | func TestGetTopTriageScores(t *testing.T) { function TestDefaultTriageScoringOptions (line 658) | func TestDefaultTriageScoringOptions(t *testing.T) { function TestGenerateTriageReasons_EmptyContext (line 677) | func TestGenerateTriageReasons_EmptyContext(t *testing.T) { function TestGenerateTriageReasons_UnblockCascade (line 692) | func TestGenerateTriageReasons_UnblockCascade(t *testing.T) { function TestGenerateTriageReasons_LabelHealth (line 719) | func TestGenerateTriageReasons_LabelHealth(t *testing.T) { function TestGenerateTriageReasons_Staleness (line 746) | func TestGenerateTriageReasons_Staleness(t *testing.T) { function TestGenerateTriageReasons_QuickWin (line 765) | func TestGenerateTriageReasons_QuickWin(t *testing.T) { function TestGenerateTriageReasons_ClaimStatus (line 789) | func TestGenerateTriageReasons_ClaimStatus(t *testing.T) { function TestGenerateTriageReasons_BlockedBy (line 849) | func TestGenerateTriageReasons_BlockedBy(t *testing.T) { function TestGenerateTriageReasons_HighPriority (line 872) | func TestGenerateTriageReasons_HighPriority(t *testing.T) { function TestGenerateTriageReasons_GraphMetrics (line 893) | func TestGenerateTriageReasons_GraphMetrics(t *testing.T) { function TestFormatUnblockList_Empty (line 922) | func TestFormatUnblockList_Empty(t *testing.T) { function TestFormatUnblockList_Short (line 929) | func TestFormatUnblockList_Short(t *testing.T) { function TestFormatUnblockList_Long (line 936) | func TestFormatUnblockList_Long(t *testing.T) { function TestGenerateTriageReasonsForScore (line 943) | func TestGenerateTriageReasonsForScore(t *testing.T) { function TestEnhanceRecommendationWithTriageReasons (line 993) | func TestEnhanceRecommendationWithTriageReasons(t *testing.T) { function TestEnhanceRecommendationWithTriageReasons_NilRec (line 1016) | func TestEnhanceRecommendationWithTriageReasons_NilRec(t *testing.T) { function contains (line 1022) | func contains(s, substr string) bool { function findSubstring (line 1027) | func findSubstring(s, substr string) bool { function TestTriageGroupByTrack_Empty (line 1040) | func TestTriageGroupByTrack_Empty(t *testing.T) { function TestTriageGroupByTrack_SingleTrack (line 1049) | func TestTriageGroupByTrack_SingleTrack(t *testing.T) { function TestTriageGroupByTrack_MultipleTracks (line 1086) | func TestTriageGroupByTrack_MultipleTracks(t *testing.T) { function TestTriageGroupByLabel_Empty (line 1118) | func TestTriageGroupByLabel_Empty(t *testing.T) { function TestTriageGroupByLabel_SingleLabel (line 1127) | func TestTriageGroupByLabel_SingleLabel(t *testing.T) { function TestTriageGroupByLabel_MultipleLabels (line 1154) | func TestTriageGroupByLabel_MultipleLabels(t *testing.T) { function TestTriageGroupByLabel_UnlabeledIssues (line 1182) | func TestTriageGroupByLabel_UnlabeledIssues(t *testing.T) { function TestTriageGroupByTrackAndLabel_Both (line 1204) | func TestTriageGroupByTrackAndLabel_Both(t *testing.T) { function TestTriageGroupByTrack_TopPickHasHighestScore (line 1222) | func TestTriageGroupByTrack_TopPickHasHighestScore(t *testing.T) { function TestComputeTriageFromAnalyzer_EquivalentToStandard (line 1249) | func TestComputeTriageFromAnalyzer_EquivalentToStandard(t *testing.T) { function TestComputeTriageFromAnalyzer_WithPhase2 (line 1301) | func TestComputeTriageFromAnalyzer_WithPhase2(t *testing.T) { function TestComputeTriageFromAnalyzer_Empty (line 1330) | func TestComputeTriageFromAnalyzer_Empty(t *testing.T) { function TestBuildTopPicks_FiltersBlockedItems (line 1350) | func TestBuildTopPicks_FiltersBlockedItems(t *testing.T) { function TestBuildTopPicks_LimitRespected (line 1422) | func TestBuildTopPicks_LimitRespected(t *testing.T) { function TestBuildTopPicks_AllBlocked (line 1444) | func TestBuildTopPicks_AllBlocked(t *testing.T) { function TestExtractDescendantSubgraph_Basic (line 1458) | func TestExtractDescendantSubgraph_Basic(t *testing.T) { function TestExtractDescendantSubgraph_RootOnly (line 1487) | func TestExtractDescendantSubgraph_RootOnly(t *testing.T) { function TestExtractDescendantSubgraph_NonexistentRoot (line 1498) | func TestExtractDescendantSubgraph_NonexistentRoot(t *testing.T) { function TestComputeTriageWithOptions_RootIssueID (line 1508) | func TestComputeTriageWithOptions_RootIssueID(t *testing.T) { FILE: pkg/analysis/whatif.go type PriorityExplanation (line 9) | type PriorityExplanation struct type PriorityReason (line 24) | type PriorityReason struct type ExplanationStatus (line 32) | type ExplanationStatus struct function DefaultFieldDescriptions (line 42) | func DefaultFieldDescriptions() map[string]string { function GenerateTopReasons (line 56) | func GenerateTopReasons(score ImpactScore) []PriorityReason { type EnhancedPriorityRecommendation (line 112) | type EnhancedPriorityRecommendation struct method GenerateEnhancedRecommendations (line 120) | func (a *Analyzer) GenerateEnhancedRecommendations() []EnhancedPriorityR... method GenerateEnhancedRecommendationsWithThresholds (line 125) | func (a *Analyzer) GenerateEnhancedRecommendationsWithThresholds(thresho... function extractReasoningStrings (line 210) | func extractReasoningStrings(reasons []PriorityReason) []string { type WhatIfEntry (line 219) | type WhatIfEntry struct method TopWhatIfDeltas (line 226) | func (a *Analyzer) TopWhatIfDeltas(n int) []WhatIfEntry { FILE: pkg/analysis/whatif_test.go function TestGenerateTopReasons_Empty (line 10) | func TestGenerateTopReasons_Empty(t *testing.T) { function TestGenerateTopReasons_ThreeMax (line 25) | func TestGenerateTopReasons_ThreeMax(t *testing.T) { function TestGenerateTopReasons_Emojis (line 55) | func TestGenerateTopReasons_Emojis(t *testing.T) { function TestGenerateTopReasons_VeryHighExplanation (line 74) | func TestGenerateTopReasons_VeryHighExplanation(t *testing.T) { function TestGenerateTopReasons_HighExplanation (line 93) | func TestGenerateTopReasons_HighExplanation(t *testing.T) { function TestPriorityExplanation_Fields (line 112) | func TestPriorityExplanation_Fields(t *testing.T) { function TestDefaultFieldDescriptions (line 141) | func TestDefaultFieldDescriptions(t *testing.T) { function TestExtractReasoningStrings (line 166) | func TestExtractReasoningStrings(t *testing.T) { function TestEnhancedPriorityRecommendation (line 183) | func TestEnhancedPriorityRecommendation(t *testing.T) { function TestGenerateEnhancedRecommendations_Empty (line 211) | func TestGenerateEnhancedRecommendations_Empty(t *testing.T) { function TestGenerateEnhancedRecommendations_WithIssues (line 220) | func TestGenerateEnhancedRecommendations_WithIssues(t *testing.T) { function TestTopWhatIfDeltas_SkipsTombstone (line 261) | func TestTopWhatIfDeltas_SkipsTombstone(t *testing.T) { function TestGenerateEnhancedRecommendations_CappedAt10 (line 281) | func TestGenerateEnhancedRecommendations_CappedAt10(t *testing.T) { function TestGenerateEnhancedRecommendations_SortedByImpactScore (line 305) | func TestGenerateEnhancedRecommendations_SortedByImpactScore(t *testing.... function TestExplanationStatus_Capped (line 341) | func TestExplanationStatus_Capped(t *testing.T) { FILE: pkg/baseline/baseline.go type Baseline (line 17) | type Baseline struct method Save (line 94) | func (b *Baseline) Save(path string) error { method Summary (line 170) | func (b *Baseline) Summary() string { type GraphStats (line 47) | type GraphStats struct type TopMetrics (line 59) | type TopMetrics struct type MetricItem (line 77) | type MetricItem struct constant CurrentVersion (line 83) | CurrentVersion = 1 constant DefaultFilename (line 86) | DefaultFilename = "baseline.json" function DefaultPath (line 89) | func DefaultPath(projectDir string) string { function Load (line 115) | func Load(path string) (*Baseline, error) { function Exists (line 133) | func Exists(path string) bool { function GetGitInfo (line 139) | func GetGitInfo(dir string) (sha, message, branch string) { function runGit (line 159) | func runGit(dir string, args ...string) (string, error) { function New (line 217) | func New(stats GraphStats, top TopMetrics, cycles [][]string, descriptio... FILE: pkg/baseline/baseline_test.go function TestBaselineSaveLoad (line 11) | func TestBaselineSaveLoad(t *testing.T) { function TestLoadNonExistent (line 91) | func TestLoadNonExistent(t *testing.T) { function TestExistsNonExistent (line 98) | func TestExistsNonExistent(t *testing.T) { function TestDefaultPath (line 104) | func TestDefaultPath(t *testing.T) { function TestBaselineSummary (line 112) | func TestBaselineSummary(t *testing.T) { function TestNew (line 155) | func TestNew(t *testing.T) { function TestSaveCreatesDirectory (line 184) | func TestSaveCreatesDirectory(t *testing.T) { function TestLoadInvalidJSON (line 203) | func TestLoadInvalidJSON(t *testing.T) { FILE: pkg/beadscli/beadscli.go function SetTool (line 19) | func SetTool(tool string) { function Tool (line 29) | func Tool() string { function Shell (line 36) | func Shell(format string, args ...any) string { function CI (line 41) | func CI(format string, args ...any) string { FILE: pkg/cass/cache.go constant DefaultResultCacheSize (line 10) | DefaultResultCacheSize = 100 constant DefaultResultCacheTTL (line 13) | DefaultResultCacheTTL = 10 * time.Minute type CorrelationHint (line 17) | type CorrelationHint struct type CacheEntry (line 25) | type CacheEntry struct type CacheStats (line 33) | type CacheStats struct type Cache (line 44) | type Cache struct method Get (line 102) | func (c *Cache) Get(beadID string) *CorrelationHint { method Set (line 132) | func (c *Cache) Set(beadID string, hint *CorrelationHint) { method Invalidate (line 164) | func (c *Cache) Invalidate(beadID string) { method Clear (line 174) | func (c *Cache) Clear() { method Stats (line 183) | func (c *Cache) Stats() CacheStats { method Size (line 198) | func (c *Cache) Size() int { method evictIfNeeded (line 206) | func (c *Cache) evictIfNeeded() { method removeExpired (line 224) | func (c *Cache) removeExpired() { method removeElement (line 243) | func (c *Cache) removeElement(elem *list.Element) { method Len (line 250) | func (c *Cache) Len() int { function NewCache (line 59) | func NewCache() *Cache { type CacheOption (line 70) | type CacheOption function WithResultCacheSize (line 73) | func WithResultCacheSize(size int) CacheOption { function WithResultCacheTTL (line 82) | func WithResultCacheTTL(ttl time.Duration) CacheOption { function NewCacheWithOptions (line 91) | func NewCacheWithOptions(opts ...CacheOption) *Cache { FILE: pkg/cass/cache_test.go function TestNewCache (line 9) | func TestNewCache(t *testing.T) { function TestNewCacheWithOptions (line 23) | func TestNewCacheWithOptions(t *testing.T) { function TestCache_SetAndGet (line 37) | func TestCache_SetAndGet(t *testing.T) { function TestCache_GetMiss (line 60) | func TestCache_GetMiss(t *testing.T) { function TestCache_GetHit (line 74) | func TestCache_GetHit(t *testing.T) { function TestCache_SetUpdate (line 87) | func TestCache_SetUpdate(t *testing.T) { function TestCache_TTLExpiration (line 103) | func TestCache_TTLExpiration(t *testing.T) { function TestCache_LRUEviction (line 132) | func TestCache_LRUEviction(t *testing.T) { function TestCache_LRUOrder (line 163) | func TestCache_LRUOrder(t *testing.T) { function TestCache_Invalidate (line 184) | func TestCache_Invalidate(t *testing.T) { function TestCache_InvalidateNonexistent (line 198) | func TestCache_InvalidateNonexistent(t *testing.T) { function TestCache_Clear (line 205) | func TestCache_Clear(t *testing.T) { function TestCache_Stats (line 222) | func TestCache_Stats(t *testing.T) { function TestCache_EvictExpiredFirst (line 250) | func TestCache_EvictExpiredFirst(t *testing.T) { function TestCache_ConcurrentAccess (line 285) | func TestCache_ConcurrentAccess(t *testing.T) { function TestCache_ConcurrentSetSameKey (line 324) | func TestCache_ConcurrentSetSameKey(t *testing.T) { function TestCache_ZeroOptions (line 348) | func TestCache_ZeroOptions(t *testing.T) { function TestCache_Len (line 363) | func TestCache_Len(t *testing.T) { function TestCache_WithResults (line 377) | func TestCache_WithResults(t *testing.T) { function BenchmarkCache_Get (line 406) | func BenchmarkCache_Get(b *testing.B) { function BenchmarkCache_Set (line 417) | func BenchmarkCache_Set(b *testing.B) { function BenchmarkCache_GetMiss (line 428) | func BenchmarkCache_GetMiss(b *testing.B) { FILE: pkg/cass/correlation.go constant ScoreIDMention (line 17) | ScoreIDMention = 100 constant ScoreExactKeyword (line 18) | ScoreExactKeyword = 50 constant ScorePartialKeyword (line 19) | ScorePartialKeyword = 30 constant MultiplierSameWorkspace (line 22) | MultiplierSameWorkspace = 2.0 constant BonusRecent24h (line 25) | BonusRecent24h = 20 constant BonusRecent7d (line 26) | BonusRecent7d = 10 constant PenaltyOld30d (line 27) | PenaltyOld30d = -10 constant MinScoreThreshold (line 30) | MinScoreThreshold = 25 constant MaxSessionsReturned (line 31) | MaxSessionsReturned = 3 constant MaxKeywordsExtracted (line 32) | MaxKeywordsExtracted = 5 type CorrelationStrategy (line 61) | type CorrelationStrategy constant StrategyIDMention (line 64) | StrategyIDMention CorrelationStrategy = "id_mention" constant StrategyKeywords (line 65) | StrategyKeywords CorrelationStrategy = "keywords" constant StrategyTimestamp (line 66) | StrategyTimestamp CorrelationStrategy = "timestamp" constant StrategyCombined (line 67) | StrategyCombined CorrelationStrategy = "combined" type ScoredResult (line 71) | type ScoredResult struct type CorrelationResult (line 80) | type CorrelationResult struct type Correlator (line 90) | type Correlator struct method GetCached (line 131) | func (c *Correlator) GetCached(beadID string) *CorrelationHint { method Correlate (line 143) | func (c *Correlator) Correlate(ctx context.Context, issue *model.Issue... method searchByID (line 211) | func (c *Correlator) searchByID(ctx context.Context, beadID string) []... method searchByKeywords (line 245) | func (c *Correlator) searchByKeywords(ctx context.Context, issue *mode... method searchByTimestamp (line 289) | func (c *Correlator) searchByTimestamp(ctx context.Context, issue *mod... method calculateSearchDays (line 378) | func (c *Correlator) calculateSearchDays(issue *model.Issue) int { method scoreKeywordMatch (line 405) | func (c *Correlator) scoreKeywordMatch(result SearchResult, keywords [... method findMatchedKeywords (line 436) | func (c *Correlator) findMatchedKeywords(result SearchResult, keywords... method scoreTimestampProximity (line 450) | func (c *Correlator) scoreTimestampProximity(sessionTime time.Time, is... method applyTimeDecay (line 487) | func (c *Correlator) applyTimeDecay(score float64, sessionTime time.Ti... method applyWorkspaceBoost (line 508) | func (c *Correlator) applyWorkspaceBoost(score float64, sourcePath str... method rankAndLimit (line 539) | func (c *Correlator) rankAndLimit(results []ScoredResult) []ScoredResu... method cacheResult (line 562) | func (c *Correlator) cacheResult(beadID string, result *CorrelationRes... function NewCorrelator (line 100) | func NewCorrelator(searcher *Searcher, cache *Cache, workspace string) *... type CorrelatorOption (line 110) | type CorrelatorOption function WithWorkspace (line 113) | func WithWorkspace(path string) CorrelatorOption { function NewCorrelatorWithOptions (line 120) | func NewCorrelatorWithOptions(searcher *Searcher, cache *Cache, opts ...... function ExtractKeywords (line 328) | func ExtractKeywords(text string) []string { function splitIntoWords (line 370) | func splitIntoWords(text string) []string { function convertHintToScoredResults (line 586) | func convertHintToScoredResults(hint *CorrelationHint) []ScoredResult { function extractKeywordsFromHint (line 604) | func extractKeywordsFromHint(hint *CorrelationHint) []string { function WorkspaceFromBeadsPath (line 619) | func WorkspaceFromBeadsPath(beadsPath string) string { function FindBeadIDMentions (line 629) | func FindBeadIDMentions(text string) []string { FILE: pkg/cass/correlation_test.go function TestExtractKeywords (line 12) | func TestExtractKeywords(t *testing.T) { function TestFindBeadIDMentions (line 86) | func TestFindBeadIDMentions(t *testing.T) { function TestWorkspaceFromBeadsPath (line 135) | func TestWorkspaceFromBeadsPath(t *testing.T) { function TestCorrelator_Correlate_IDMention (line 163) | func TestCorrelator_Correlate_IDMention(t *testing.T) { function TestCorrelator_Correlate_Keywords (line 226) | func TestCorrelator_Correlate_Keywords(t *testing.T) { function TestCorrelator_Correlate_CacheHit (line 296) | func TestCorrelator_Correlate_CacheHit(t *testing.T) { function TestCorrelator_GetCached (line 345) | func TestCorrelator_GetCached(t *testing.T) { function TestCorrelator_Scoring (line 386) | func TestCorrelator_Scoring(t *testing.T) { function TestCorrelator_CalculateSearchDays (line 460) | func TestCorrelator_CalculateSearchDays(t *testing.T) { function TestCorrelator_ScoreKeywordMatch (line 505) | func TestCorrelator_ScoreKeywordMatch(t *testing.T) { function TestCorrelator_RankAndLimit (line 550) | func TestCorrelator_RankAndLimit(t *testing.T) { function TestCorrelator_NilIssue (line 579) | func TestCorrelator_NilIssue(t *testing.T) { function TestCorrelator_EmptyResults (line 600) | func TestCorrelator_EmptyResults(t *testing.T) { function contains (line 632) | func contains(s, substr string) bool { FILE: pkg/cass/detector.go type Status (line 13) | type Status method String (line 27) | func (s Status) String() string { constant StatusUnknown (line 17) | StatusUnknown Status = iota constant StatusNotInstalled (line 19) | StatusNotInstalled constant StatusNeedsIndex (line 21) | StatusNeedsIndex constant StatusHealthy (line 23) | StatusHealthy constant DefaultCacheTTL (line 43) | DefaultCacheTTL = 5 * time.Minute constant DefaultHealthTimeout (line 46) | DefaultHealthTimeout = 2 * time.Second type Detector (line 50) | type Detector struct method Status (line 102) | func (d *Detector) Status() Status { method IsHealthy (line 119) | func (d *Detector) IsHealthy() bool { method Check (line 126) | func (d *Detector) Check() Status { method Invalidate (line 151) | func (d *Detector) Invalidate() { method detect (line 160) | func (d *Detector) detect() Status { method CheckedAt (line 206) | func (d *Detector) CheckedAt() time.Time { method CacheValid (line 213) | func (d *Detector) CacheValid() bool { function NewDetector (line 63) | func NewDetector() *Detector { type Option (line 74) | type Option function WithCacheTTL (line 77) | func WithCacheTTL(ttl time.Duration) Option { function WithHealthTimeout (line 84) | func WithHealthTimeout(timeout time.Duration) Option { function NewDetectorWithOptions (line 91) | func NewDetectorWithOptions(opts ...Option) *Detector { function defaultRunCommand (line 192) | func defaultRunCommand(ctx context.Context, name string, args ...string)... FILE: pkg/cass/detector_test.go function TestStatus_String (line 12) | func TestStatus_String(t *testing.T) { function TestNewDetector (line 33) | func TestNewDetector(t *testing.T) { function TestNewDetectorWithOptions (line 47) | func TestNewDetectorWithOptions(t *testing.T) { function TestDetector_Check_NotInPath (line 64) | func TestDetector_Check_NotInPath(t *testing.T) { function TestDetector_Check_HealthyExitZero (line 76) | func TestDetector_Check_HealthyExitZero(t *testing.T) { function TestDetector_Check_NeedsIndexExitOne (line 94) | func TestDetector_Check_NeedsIndexExitOne(t *testing.T) { function TestDetector_Check_IndexCorruptExitThree (line 109) | func TestDetector_Check_IndexCorruptExitThree(t *testing.T) { function TestDetector_Check_UnknownExitCode (line 124) | func TestDetector_Check_UnknownExitCode(t *testing.T) { function TestDetector_Check_CommandError (line 139) | func TestDetector_Check_CommandError(t *testing.T) { function TestDetector_Caching (line 154) | func TestDetector_Caching(t *testing.T) { function TestDetector_Status_ReturnsUnknownWhenStale (line 196) | func TestDetector_Status_ReturnsUnknownWhenStale(t *testing.T) { function TestDetector_IsHealthy (line 225) | func TestDetector_IsHealthy(t *testing.T) { function TestDetector_Invalidate (line 247) | func TestDetector_Invalidate(t *testing.T) { function TestDetector_ConcurrentAccess (line 271) | func TestDetector_ConcurrentAccess(t *testing.T) { function TestDetector_CheckedAt (line 309) | func TestDetector_CheckedAt(t *testing.T) { function TestDetector_CacheValid (line 333) | func TestDetector_CacheValid(t *testing.T) { function TestDetector_Check_Timeout (line 362) | func TestDetector_Check_Timeout(t *testing.T) { function BenchmarkDetector_Check_Cached (line 393) | func BenchmarkDetector_Check_Cached(b *testing.B) { function BenchmarkDetector_Status (line 412) | func BenchmarkDetector_Status(b *testing.B) { FILE: pkg/cass/safety_test.go function TestSafety_NoCassBinary_DetectorReturnsNotInstalled (line 25) | func TestSafety_NoCassBinary_DetectorReturnsNotInstalled(t *testing.T) { function TestSafety_NoCassBinary_SearcherReturnsEmptyNotError (line 37) | func TestSafety_NoCassBinary_SearcherReturnsEmptyNotError(t *testing.T) { function TestSafety_NoCassBinary_NoBlockingOrDelay (line 63) | func TestSafety_NoCassBinary_NoBlockingOrDelay(t *testing.T) { function TestSafety_NoCassBinary_IsHealthyReturnsFalse (line 79) | func TestSafety_NoCassBinary_IsHealthyReturnsFalse(t *testing.T) { function TestSafety_HealthCheckFails_ExitCodeOne (line 104) | func TestSafety_HealthCheckFails_ExitCodeOne(t *testing.T) { function TestSafety_HealthCheckFails_ExitCodeThree (line 127) | func TestSafety_HealthCheckFails_ExitCodeThree(t *testing.T) { function TestSafety_HealthCheckFails_CommandError (line 142) | func TestSafety_HealthCheckFails_CommandError(t *testing.T) { function TestSafety_HealthCheckFails_RecheckAfterTTL (line 157) | func TestSafety_HealthCheckFails_RecheckAfterTTL(t *testing.T) { function TestSafety_SearchTimeout_ReturnsEmptyResults (line 205) | func TestSafety_SearchTimeout_ReturnsEmptyResults(t *testing.T) { function TestSafety_SearchTimeout_UINotBlocked (line 244) | func TestSafety_SearchTimeout_UINotBlocked(t *testing.T) { function TestSafety_SearchTimeout_CanNavigateWhilePending (line 278) | func TestSafety_SearchTimeout_CanNavigateWhilePending(t *testing.T) { function TestSafety_MalformedJSON_ReturnsEmptyResults (line 332) | func TestSafety_MalformedJSON_ReturnsEmptyResults(t *testing.T) { function TestSafety_MalformedJSON_SubsequentSearchesWork (line 377) | func TestSafety_MalformedJSON_SubsequentSearchesWork(t *testing.T) { function TestSafety_EmptyResults_NoVisualDifference (line 416) | func TestSafety_EmptyResults_NoVisualDifference(t *testing.T) { function TestSafety_EmptyResults_ZeroTotal (line 456) | func TestSafety_EmptyResults_ZeroTotal(t *testing.T) { function TestSafety_RaceCondition_SearchFailsAfterHealthyDetection (line 490) | func TestSafety_RaceCondition_SearchFailsAfterHealthyDetection(t *testin... function TestSafety_RaceCondition_SubsequentOperationsContinue (line 528) | func TestSafety_RaceCondition_SubsequentOperationsContinue(t *testing.T) { function TestSafety_RaceCondition_ConcurrentSearchesDuringInstability (line 576) | func TestSafety_RaceCondition_ConcurrentSearchesDuringInstability(t *tes... function TestSafety_StartupTime_DetectionIsAsync (line 620) | func TestSafety_StartupTime_DetectionIsAsync(t *testing.T) { function TestSafety_StartupTime_IsHealthyFastPath (line 641) | func TestSafety_StartupTime_IsHealthyFastPath(t *testing.T) { function TestSafety_StartupTime_NoCassVsWithCass (line 665) | func TestSafety_StartupTime_NoCassVsWithCass(t *testing.T) { function TestSafety_StartupTime_SearcherCreationFast (line 704) | func TestSafety_StartupTime_SearcherCreationFast(t *testing.T) { function TestSafety_EndToEnd_InvisibilityGuarantee (line 721) | func TestSafety_EndToEnd_InvisibilityGuarantee(t *testing.T) { function BenchmarkSafety_NoCassDetection (line 857) | func BenchmarkSafety_NoCassDetection(b *testing.B) { function BenchmarkSafety_HealthyDetection (line 870) | func BenchmarkSafety_HealthyDetection(b *testing.B) { function BenchmarkSafety_SearchWithEmptyResults (line 886) | func BenchmarkSafety_SearchWithEmptyResults(b *testing.B) { FILE: pkg/cass/search.go constant DefaultSearchTimeout (line 14) | DefaultSearchTimeout = 5 * time.Second constant DefaultSearchLimit (line 17) | DefaultSearchLimit = 10 constant MaxOutputSize (line 20) | MaxOutputSize = 1024 * 1024 constant MaxConcurrentSearches (line 23) | MaxConcurrentSearches = 2 type SearchOptions (line 26) | type SearchOptions struct type SearchResult (line 36) | type SearchResult struct type SearchMeta (line 48) | type SearchMeta struct type SearchResponse (line 56) | type SearchResponse struct type Searcher (line 63) | type Searcher struct method Search (line 104) | func (s *Searcher) Search(ctx context.Context, opts SearchOptions) Sea... method buildArgs (line 160) | func (s *Searcher) buildArgs(opts SearchOptions) []string { method parseResponse (line 192) | func (s *Searcher) parseResponse(output []byte, elapsedMs int) SearchR... method SearchWithQuery (line 225) | func (s *Searcher) SearchWithQuery(ctx context.Context, query string) ... method SearchInWorkspace (line 230) | func (s *Searcher) SearchInWorkspace(ctx context.Context, query, works... function NewSearcher (line 73) | func NewSearcher(detector *Detector) *Searcher { type SearcherOption (line 83) | type SearcherOption function WithSearchTimeout (line 86) | func WithSearchTimeout(timeout time.Duration) SearcherOption { function NewSearcherWithOptions (line 93) | func NewSearcherWithOptions(detector *Detector, opts ...SearcherOption) ... function defaultSearchRunCommand (line 238) | func defaultSearchRunCommand(ctx context.Context, name string, args ...s... type limitedWriter (line 254) | type limitedWriter struct method Write (line 260) | func (lw *limitedWriter) Write(p []byte) (n int, err error) { FILE: pkg/cass/search_test.go function TestSearchOptions_Defaults (line 14) | func TestSearchOptions_Defaults(t *testing.T) { function TestSearchOptions_AllFields (line 30) | func TestSearchOptions_AllFields(t *testing.T) { function TestSearcher_CassNotHealthy (line 78) | func TestSearcher_CassNotHealthy(t *testing.T) { function TestSearcher_SuccessfulSearch (line 95) | func TestSearcher_SuccessfulSearch(t *testing.T) { function TestSearcher_EmptyResults (line 149) | func TestSearcher_EmptyResults(t *testing.T) { function TestSearcher_CommandError (line 178) | func TestSearcher_CommandError(t *testing.T) { function TestSearcher_MalformedJSON (line 203) | func TestSearcher_MalformedJSON(t *testing.T) { function TestSearcher_PartialJSON (line 228) | func TestSearcher_PartialJSON(t *testing.T) { function TestSearcher_Timeout (line 254) | func TestSearcher_Timeout(t *testing.T) { function TestSearcher_CustomTimeout (line 287) | func TestSearcher_CustomTimeout(t *testing.T) { function TestSearcher_ConcurrencyLimit (line 319) | func TestSearcher_ConcurrencyLimit(t *testing.T) { function TestSearcher_ContextCancellation (line 372) | func TestSearcher_ContextCancellation(t *testing.T) { function TestSearcher_SearchWithQuery (line 398) | func TestSearcher_SearchWithQuery(t *testing.T) { function TestSearcher_SearchInWorkspace (line 424) | func TestSearcher_SearchInWorkspace(t *testing.T) { function TestSearcher_EmptyOutput (line 456) | func TestSearcher_EmptyOutput(t *testing.T) { function TestSearcher_NullResults (line 481) | func TestSearcher_NullResults(t *testing.T) { function TestLimitedWriter (line 503) | func TestLimitedWriter(t *testing.T) { function TestLimitedWriter_ExactLimit (line 530) | func TestLimitedWriter_ExactLimit(t *testing.T) { function BenchmarkSearcher_Search (line 557) | func BenchmarkSearcher_Search(b *testing.B) { FILE: pkg/correlation/beads_files.go function fileExists (line 14) | func fileExists(path string) bool { function pickBeadsFiles (line 22) | func pickBeadsFiles(repoPath string, candidates []string) []string { function prependBeadsFile (line 52) | func prependBeadsFile(primary string, candidates []string) []string { FILE: pkg/correlation/cache.go type CacheKey (line 21) | type CacheKey struct method String (line 28) | func (k CacheKey) String() string { type CacheEntry (line 33) | type CacheEntry struct type HistoryCache (line 42) | type HistoryCache struct method Get (line 88) | func (c *HistoryCache) Get(key CacheKey) (*HistoryReport, bool) { method Put (line 112) | func (c *HistoryCache) Put(key CacheKey, report *HistoryReport) { method PutWithDuration (line 117) | func (c *HistoryCache) PutWithDuration(key CacheKey, report *HistoryRe... method GetWithMeta (line 151) | func (c *HistoryCache) GetWithMeta(key CacheKey) (*HistoryReport, time... method Invalidate (line 175) | func (c *HistoryCache) Invalidate() { method InvalidateForHead (line 184) | func (c *HistoryCache) InvalidateForHead(currentHead string) { method Size (line 201) | func (c *HistoryCache) Size() int { method Stats (line 208) | func (c *HistoryCache) Stats() CacheStats { method removeEntryLocked (line 248) | func (c *HistoryCache) removeEntryLocked(keyStr string) { method moveToEndLocked (line 261) | func (c *HistoryCache) moveToEndLocked(keyStr string) { method evictOldestLocked (line 274) | func (c *HistoryCache) evictOldestLocked() { constant DefaultCacheMaxAge (line 52) | DefaultCacheMaxAge = 5 * time.Minute constant DefaultCacheMaxSize (line 55) | DefaultCacheMaxSize = 10 function NewHistoryCache (line 60) | func NewHistoryCache(repoPath string) *HistoryCache { function NewHistoryCacheWithOptions (line 71) | func NewHistoryCacheWithOptions(repoPath string, maxAge time.Duration, m... type CacheStats (line 239) | type CacheStats struct function BuildCacheKey (line 285) | func BuildCacheKey(repoPath string, beads []BeadInfo, opts CorrelatorOpt... function getGitHead (line 302) | func getGitHead(repoPath string) (string, error) { function hashBeads (line 313) | func hashBeads(beads []BeadInfo) string { function hashOptions (line 332) | func hashOptions(opts CorrelatorOptions) string { type CachedCorrelator (line 355) | type CachedCorrelator struct method GenerateReport (line 389) | func (c *CachedCorrelator) GenerateReport(beads []BeadInfo, opts Corre... method InvalidateCache (line 478) | func (c *CachedCorrelator) InvalidateCache() { method CacheStats (line 483) | func (c *CachedCorrelator) CacheStats() CachedCorrelatorStats { method generate (line 517) | func (c *CachedCorrelator) generate(beads []BeadInfo, opts CorrelatorO... method recordHit (line 524) | func (c *CachedCorrelator) recordHit() { method recordMiss (line 530) | func (c *CachedCorrelator) recordMiss() { method cacheReportIfCurrent (line 536) | func (c *CachedCorrelator) cacheReportIfCurrent(expectedKey CacheKey, ... function NewCachedCorrelator (line 367) | func NewCachedCorrelator(repoPath string) *CachedCorrelator { function NewCachedCorrelatorWithOptions (line 378) | func NewCachedCorrelatorWithOptions(repoPath string, maxAge time.Duratio... function logCorrelationCacheSingleflightError (line 464) | func logCorrelationCacheSingleflightError(operation string, key CacheKey... type CachedCorrelatorStats (line 508) | type CachedCorrelatorStats struct function cloneCorrelatorInputs (line 549) | func cloneCorrelatorInputs(beads []BeadInfo, opts CorrelatorOptions) ([]... FILE: pkg/correlation/cache_test.go function TestCacheKey_String (line 16) | func TestCacheKey_String(t *testing.T) { function TestNewHistoryCache (line 29) | func TestNewHistoryCache(t *testing.T) { function TestNewHistoryCacheWithOptions (line 43) | func TestNewHistoryCacheWithOptions(t *testing.T) { function TestNewHistoryCacheWithOptions_DefaultsOnInvalid (line 57) | func TestNewHistoryCacheWithOptions_DefaultsOnInvalid(t *testing.T) { function TestHistoryCache_PutAndGet (line 68) | func TestHistoryCache_PutAndGet(t *testing.T) { function TestHistoryCache_PutUpdate (line 97) | func TestHistoryCache_PutUpdate(t *testing.T) { function TestHistoryCache_LRUEviction (line 121) | func TestHistoryCache_LRUEviction(t *testing.T) { function TestHistoryCache_LRUAccessOrder (line 154) | func TestHistoryCache_LRUAccessOrder(t *testing.T) { function TestHistoryCache_Expiration (line 184) | func TestHistoryCache_Expiration(t *testing.T) { function TestHistoryCache_Invalidate (line 210) | func TestHistoryCache_Invalidate(t *testing.T) { function TestHistoryCache_InvalidateForHead (line 230) | func TestHistoryCache_InvalidateForHead(t *testing.T) { function TestHistoryCache_Stats (line 259) | func TestHistoryCache_Stats(t *testing.T) { function TestHashBeads (line 291) | func TestHashBeads(t *testing.T) { function TestHashOptions (line 333) | func TestHashOptions(t *testing.T) { function TestCachedCorrelator_CacheHitAndMiss (line 359) | func TestCachedCorrelator_CacheHitAndMiss(t *testing.T) { function TestCachedCorrelator_DifferentOptionsMiss (line 401) | func TestCachedCorrelator_DifferentOptionsMiss(t *testing.T) { function TestCachedCorrelator_InvalidateCache (line 428) | func TestCachedCorrelator_InvalidateCache(t *testing.T) { function TestNewCachedCorrelatorWithOptions (line 455) | func TestNewCachedCorrelatorWithOptions(t *testing.T) { function TestCachedCorrelator_Singleflight (line 466) | func TestCachedCorrelator_Singleflight(t *testing.T) { function TestCachedCorrelator_DoesNotCacheWhenHeadChangesDuringGenerate (line 586) | func TestCachedCorrelator_DoesNotCacheWhenHeadChangesDuringGenerate(t *t... function TestCachedCorrelator_XFetchUsesClonedInputs (line 638) | func TestCachedCorrelator_XFetchUsesClonedInputs(t *testing.T) { function TestCachedCorrelator_SingleflightLogsSharedErrors (line 708) | func TestCachedCorrelator_SingleflightLogsSharedErrors(t *testing.T) { function TestCachedCorrelator_XFetchRefreshLogsErrors (line 809) | func TestCachedCorrelator_XFetchRefreshLogsErrors(t *testing.T) { function TestBuildCacheKey_Error (line 893) | func TestBuildCacheKey_Error(t *testing.T) { function initTempGitRepo (line 901) | func initTempGitRepo(t *testing.T) string { function advanceGitHead (line 918) | func advanceGitHead(t *testing.T, repoPath, name string) { function runGit (line 929) | func runGit(t *testing.T, repoPath string, args ...string) { function TestCacheKey_Empty (line 940) | func TestCacheKey_Empty(t *testing.T) { function TestHistoryCache_GetNonexistent (line 947) | func TestHistoryCache_GetNonexistent(t *testing.T) { function TestHistoryCache_RemoveEntryOrdering (line 957) | func TestHistoryCache_RemoveEntryOrdering(t *testing.T) { FILE: pkg/correlation/causality.go type CausalEventType (line 10) | type CausalEventType constant CausalCreated (line 14) | CausalCreated CausalEventType = "created" constant CausalClaimed (line 16) | CausalClaimed CausalEventType = "claimed" constant CausalCommit (line 18) | CausalCommit CausalEventType = "commit" constant CausalBlocked (line 20) | CausalBlocked CausalEventType = "blocked" constant CausalUnblocked (line 22) | CausalUnblocked CausalEventType = "unblocked" constant CausalClosed (line 24) | CausalClosed CausalEventType = "closed" constant CausalReopened (line 26) | CausalReopened CausalEventType = "reopened" type CausalEvent (line 30) | type CausalEvent struct type CausalChain (line 43) | type CausalChain struct type BlockedPeriod (line 56) | type BlockedPeriod struct type CausalInsights (line 64) | type CausalInsights struct type CausalityResult (line 82) | type CausalityResult struct type CausalityOptions (line 90) | type CausalityOptions struct function DefaultCausalityOptions (line 96) | func DefaultCausalityOptions() CausalityOptions { method BuildCausalityChain (line 103) | func (hr *HistoryReport) BuildCausalityChain(beadID string, opts Causali... function buildInsights (line 239) | func buildInsights(chain *CausalChain, history BeadHistory) *CausalInsig... function formatGapDescription (line 348) | func formatGapDescription(from, to CausalEvent, gap time.Duration) string { function buildSummary (line 353) | func buildSummary(chain *CausalChain, insights *CausalInsights) string { function generateRecommendations (line 373) | func generateRecommendations(chain *CausalChain, insights *CausalInsight... function formatDurationShort (line 409) | func formatDurationShort(d time.Duration) string { function formatPercent (line 428) | func formatPercent(p float64) string { function formatInt (line 432) | func formatInt(n int) string { FILE: pkg/correlation/causality_test.go function testTime (line 9) | func testTime(offsetHours int) time.Time { function TestBuildCausalityChain_BasicChain (line 14) | func TestBuildCausalityChain_BasicChain(t *testing.T) { function TestBuildCausalityChain_CausalLinks (line 68) | func TestBuildCausalityChain_CausalLinks(t *testing.T) { function TestBuildCausalityChain_NotFound (line 112) | func TestBuildCausalityChain_NotFound(t *testing.T) { function TestBuildCausalityChain_WithCommits (line 126) | func TestBuildCausalityChain_WithCommits(t *testing.T) { function TestBuildCausalityChain_InProgress (line 163) | func TestBuildCausalityChain_InProgress(t *testing.T) { function TestCausalInsights_BlockedPercentage (line 192) | func TestCausalInsights_BlockedPercentage(t *testing.T) { function TestFormatDurationShort (line 214) | func TestFormatDurationShort(t *testing.T) { function TestFormatPercent (line 236) | func TestFormatPercent(t *testing.T) { function TestFormatInt (line 255) | func TestFormatInt(t *testing.T) { function TestBuildSummary_Completed (line 275) | func TestBuildSummary_Completed(t *testing.T) { function TestBuildSummary_InProgress (line 294) | func TestBuildSummary_InProgress(t *testing.T) { function TestGenerateRecommendations_HighBlockedPercentage (line 312) | func TestGenerateRecommendations_HighBlockedPercentage(t *testing.T) { function TestGenerateRecommendations_LongGap (line 334) | func TestGenerateRecommendations_LongGap(t *testing.T) { function TestGenerateRecommendations_NoIssues (line 358) | func TestGenerateRecommendations_NoIssues(t *testing.T) { function TestCausalEventTypes (line 382) | func TestCausalEventTypes(t *testing.T) { function TestChainDurations (line 403) | func TestChainDurations(t *testing.T) { function TestDefaultCausalityOptions (line 444) | func TestDefaultCausalityOptions(t *testing.T) { function TestBuildCausalityChain_SameTimestamps (line 455) | func TestBuildCausalityChain_SameTimestamps(t *testing.T) { function TestBuildCausalityChain_UnicodeCommitMessage (line 501) | func TestBuildCausalityChain_UnicodeCommitMessage(t *testing.T) { function isValidUTF8 (line 555) | func isValidUTF8(s string) bool { function endsWithEllipsis (line 564) | func endsWithEllipsis(s string) bool { FILE: pkg/correlation/cocommit.go type CoCommitExtractor (line 19) | type CoCommitExtractor struct method ExtractCoCommittedFiles (line 75) | func (c *CoCommitExtractor) ExtractCoCommittedFiles(event BeadEvent) (... method CreateCorrelatedCommit (line 112) | func (c *CoCommitExtractor) CreateCorrelatedCommit(event BeadEvent, fi... method getFilesChanged (line 138) | func (c *CoCommitExtractor) getFilesChanged(sha string) ([]FileChange,... method getLineStats (line 185) | func (c *CoCommitExtractor) getLineStats(sha string) (map[string]lineS... method calculateConfidence (line 254) | func (c *CoCommitExtractor) calculateConfidence(event BeadEvent, files... method generateReason (line 285) | func (c *CoCommitExtractor) generateReason(event BeadEvent, files []Fi... method ExtractAllCoCommits (line 386) | func (c *CoCommitExtractor) ExtractAllCoCommits(events []BeadEvent) ([... function NewCoCommitExtractor (line 24) | func NewCoCommitExtractor(repoPath string) *CoCommitExtractor { type lineStats (line 132) | type lineStats struct function extractNewPath (line 236) | func extractNewPath(path string) string { function isCodeFile (line 306) | func isCodeFile(path string) bool { function isExcludedPath (line 322) | func isExcludedPath(path string) bool { function containsBeadID (line 346) | func containsBeadID(text, beadID string) bool { function allTestFiles (line 354) | func allTestFiles(files []FileChange) bool { function shortSHA (line 378) | func shortSHA(sha string) string { FILE: pkg/correlation/cocommit_test.go function TestIsCodeFile (line 9) | func TestIsCodeFile(t *testing.T) { function TestIsExcludedPath (line 51) | func TestIsExcludedPath(t *testing.T) { function TestContainsBeadID (line 83) | func TestContainsBeadID(t *testing.T) { function TestAllTestFiles (line 106) | func TestAllTestFiles(t *testing.T) { function TestShortSHA (line 161) | func TestShortSHA(t *testing.T) { function TestExtractNewPath (line 182) | func TestExtractNewPath(t *testing.T) { function TestCalculateConfidence (line 207) | func TestCalculateConfidence(t *testing.T) { function TestGenerateReason (line 273) | func TestGenerateReason(t *testing.T) { function TestCreateCorrelatedCommit (line 301) | func TestCreateCorrelatedCommit(t *testing.T) { function TestNewCoCommitExtractor (line 341) | func TestNewCoCommitExtractor(t *testing.T) { function TestExtractAllCoCommits_Empty (line 348) | func TestExtractAllCoCommits_Empty(t *testing.T) { function TestExtractAllCoCommits_NonStatusEvents (line 361) | func TestExtractAllCoCommits_NonStatusEvents(t *testing.T) { function TestGenerateReason_LargeCommit (line 380) | func TestGenerateReason_LargeCommit(t *testing.T) { function TestGenerateReason_OnlyTestFiles (line 402) | func TestGenerateReason_OnlyTestFiles(t *testing.T) { function TestCalculateConfidence_Combined (line 423) | func TestCalculateConfidence_Combined(t *testing.T) { function TestExtractNewPath_DoubleSlashBug (line 445) | func TestExtractNewPath_DoubleSlashBug(t *testing.T) { function TestExtractNewPath_ComplexCases (line 460) | func TestExtractNewPath_ComplexCases(t *testing.T) { FILE: pkg/correlation/correlator.go type Correlator (line 12) | type Correlator struct method GenerateReport (line 39) | func (c *Correlator) GenerateReport(beads []BeadInfo, opts CorrelatorO... method findLatestCommitSHA (line 99) | func (c *Correlator) findLatestCommitSHA(events []BeadEvent, commits [... method buildHistories (line 130) | func (c *Correlator) buildHistories(beads []BeadInfo, events []BeadEve... method buildCommitIndex (line 200) | func (c *Correlator) buildCommitIndex(histories map[string]BeadHistory... method calculateStats (line 213) | func (c *Correlator) calculateStats(histories map[string]BeadHistory, ... method describeGitRange (line 268) | func (c *Correlator) describeGitRange(opts CorrelatorOptions) string { method calculateDataHash (line 296) | func (c *Correlator) calculateDataHash(beads []BeadInfo) string { function NewCorrelator (line 22) | func NewCorrelator(repoPath string, beadsFilePath ...string) *Correlator { type CorrelatorOptions (line 31) | type CorrelatorOptions struct type BeadInfo (line 123) | type BeadInfo struct function dedupCommits (line 187) | func dedupCommits(commits []CorrelatedCommit) []CorrelatedCommit { function ValidateRepository (line 301) | func ValidateRepository(repoPath string) error { FILE: pkg/correlation/correlator_test.go function TestBuildHistories_Empty (line 8) | func TestBuildHistories_Empty(t *testing.T) { function TestBuildHistories_Basic (line 18) | func TestBuildHistories_Basic(t *testing.T) { function TestBuildCommitIndex (line 60) | func TestBuildCommitIndex(t *testing.T) { function TestCalculateStats_Empty (line 92) | func TestCalculateStats_Empty(t *testing.T) { function TestCalculateStats_WithData (line 105) | func TestCalculateStats_WithData(t *testing.T) { function TestDescribeGitRange (line 156) | func TestDescribeGitRange(t *testing.T) { function TestCalculateDataHash (line 194) | func TestCalculateDataHash(t *testing.T) { function TestDedupCommits (line 229) | func TestDedupCommits(t *testing.T) { function TestNewCorrelator (line 249) | func TestNewCorrelator(t *testing.T) { function TestValidateRepository_NoGitDir (line 262) | func TestValidateRepository_NoGitDir(t *testing.T) { function TestValidateRepository_NoBeadsFile (line 269) | func TestValidateRepository_NoBeadsFile(t *testing.T) { function TestFindLatestCommitSHA_Empty (line 277) | func TestFindLatestCommitSHA_Empty(t *testing.T) { function TestFindLatestCommitSHA_FromEvents (line 286) | func TestFindLatestCommitSHA_FromEvents(t *testing.T) { function TestFindLatestCommitSHA_FromCommits (line 302) | func TestFindLatestCommitSHA_FromCommits(t *testing.T) { function TestFindLatestCommitSHA_Mixed (line 317) | func TestFindLatestCommitSHA_Mixed(t *testing.T) { function TestBuildHistories_WithCommits (line 334) | func TestBuildHistories_WithCommits(t *testing.T) { function TestCalculateStats_AvgCommitsPerBead (line 361) | func TestCalculateStats_AvgCommitsPerBead(t *testing.T) { function TestDescribeGitRange_Combined (line 384) | func TestDescribeGitRange_Combined(t *testing.T) { FILE: pkg/correlation/explicit.go type ExplicitMatcher (line 15) | type ExplicitMatcher struct method AddPattern (line 59) | func (m *ExplicitMatcher) AddPattern(pattern *regexp.Regexp) { method ExtractIDsFromMessage (line 77) | func (m *ExplicitMatcher) ExtractIDsFromMessage(message string) []IDMa... method FindCommitsForBead (line 174) | func (m *ExplicitMatcher) FindCommitsForBead(beadID string, opts Extra... method buildGrepPatterns (line 200) | func (m *ExplicitMatcher) buildGrepPatterns(beadID string) []string { method searchWithGrep (line 230) | func (m *ExplicitMatcher) searchWithGrep(pattern string, opts ExtractO... method parseGrepOutput (line 265) | func (m *ExplicitMatcher) parseGrepOutput(data []byte, searchPattern s... method CreateCorrelatedCommit (line 321) | func (m *ExplicitMatcher) CreateCorrelatedCommit(match ExplicitMatch, ... method FindAllExplicitMatches (line 356) | func (m *ExplicitMatcher) FindAllExplicitMatches(beadIDs []string, opt... function DefaultPatterns (line 21) | func DefaultPatterns() []*regexp.Regexp { function NewExplicitMatcher (line 43) | func NewExplicitMatcher(repoPath string) *ExplicitMatcher { function NewExplicitMatcherWithPatterns (line 51) | func NewExplicitMatcherWithPatterns(repoPath string, patterns []*regexp.... type ExplicitMatch (line 64) | type ExplicitMatch struct type IDMatch (line 103) | type IDMatch struct function normalizeBeadID (line 110) | func normalizeBeadID(id string) string { function classifyMatch (line 120) | func classifyMatch(raw string) string { function CalculateConfidence (line 141) | func CalculateConfidence(matchType string, totalMatches int) float64 { FILE: pkg/correlation/explicit_test.go function TestExtractIDsFromMessage (line 8) | func TestExtractIDsFromMessage(t *testing.T) { function TestNormalizeBeadID (line 108) | func TestNormalizeBeadID(t *testing.T) { function TestClassifyMatch (line 130) | func TestClassifyMatch(t *testing.T) { function TestCalculateExplicitConfidence (line 160) | func TestCalculateExplicitConfidence(t *testing.T) { function TestBuildGrepPatterns (line 189) | func TestBuildGrepPatterns(t *testing.T) { function TestDefaultPatterns (line 233) | func TestDefaultPatterns(t *testing.T) { function TestAddPattern (line 267) | func TestAddPattern(t *testing.T) { function TestDuplicateIDsInMessage (line 286) | func TestDuplicateIDsInMessage(t *testing.T) { FILE: pkg/correlation/extractor.go type ExtractOptions (line 18) | type ExtractOptions struct type Extractor (line 26) | type Extractor struct method primaryBeadsFile (line 60) | func (e *Extractor) primaryBeadsFile() string { method Extract (line 84) | func (e *Extractor) Extract(opts ExtractOptions) ([]BeadEvent, error) { method buildGitLogArgs (line 131) | func (e *Extractor) buildGitLogArgs(opts ExtractOptions) []string { method parseGitLogOutput (line 187) | func (e *Extractor) parseGitLogOutput(r io.Reader, filterBeadID string... method parseDiff (line 296) | func (e *Extractor) parseDiff(diffData []byte, info commitInfo, filter... method ExtractForBead (line 432) | func (e *Extractor) ExtractForBead(beadID string, opts ExtractOptions)... function NewExtractor (line 35) | func NewExtractor(repoPath string, beadsFilePath ...string) *Extractor { type commitInfo (line 68) | type commitInfo struct type beadSnapshot (line 77) | type beadSnapshot struct function insertBefore (line 173) | func insertBefore(slice []string, marker, value string) []string { function parseCommitInfo (line 273) | func parseCommitInfo(line string) (commitInfo, error) { function parseBeadJSON (line 385) | func parseBeadJSON(jsonStr string) (beadSnapshot, bool) { function determineStatusEvent (line 408) | func determineStatusEvent(oldStatus, newStatus string) EventType { function reverseEvents (line 425) | func reverseEvents(events []BeadEvent) { function GetBeadMilestones (line 438) | func GetBeadMilestones(events []BeadEvent) BeadMilestones { function CalculateCycleTime (line 463) | func CalculateCycleTime(milestones BeadMilestones) *CycleTime { FILE: pkg/correlation/extractor_test.go function TestParseGitLogOutput (line 9) | func TestParseGitLogOutput(t *testing.T) { function TestParseCommitInfo (line 57) | func TestParseCommitInfo(t *testing.T) { function TestParseCommitInfo_InvalidFormat (line 86) | func TestParseCommitInfo_InvalidFormat(t *testing.T) { function TestParseBeadJSON (line 104) | func TestParseBeadJSON(t *testing.T) { function TestDetermineStatusEvent (line 156) | func TestDetermineStatusEvent(t *testing.T) { function TestReverseEvents (line 181) | func TestReverseEvents(t *testing.T) { function TestGetBeadMilestones (line 195) | func TestGetBeadMilestones(t *testing.T) { function TestCalculateCycleTime (line 226) | func TestCalculateCycleTime(t *testing.T) { function TestInsertBefore (line 274) | func TestInsertBefore(t *testing.T) { function TestInsertBefore_NoMarker (line 290) | func TestInsertBefore_NoMarker(t *testing.T) { function TestBuildGitLogArgs (line 301) | func TestBuildGitLogArgs(t *testing.T) { function TestParseDiff (line 364) | func TestParseDiff(t *testing.T) { function TestNewExtractor (line 521) | func TestNewExtractor(t *testing.T) { function TestCalculateCycleTime_NoCreatedMilestone (line 532) | func TestCalculateCycleTime_NoCreatedMilestone(t *testing.T) { function TestReverseEvents_Empty (line 555) | func TestReverseEvents_Empty(t *testing.T) { function TestReverseEvents_Single (line 563) | func TestReverseEvents_Single(t *testing.T) { FILE: pkg/correlation/feedback.go constant FeedbackFileName (line 16) | FeedbackFileName = "correlation_feedback.jsonl" type FeedbackStore (line 20) | type FeedbackStore struct method feedbackPath (line 40) | func (fs *FeedbackStore) feedbackPath() string { method Load (line 45) | func (fs *FeedbackStore) Load() error { method Save (line 81) | func (fs *FeedbackStore) Save(fb CorrelationFeedback) error { method Get (line 122) | func (fs *FeedbackStore) Get(commitSHA, beadID string) (CorrelationFee... method GetAll (line 132) | func (fs *FeedbackStore) GetAll() []CorrelationFeedback { method GetStats (line 144) | func (fs *FeedbackStore) GetStats() FeedbackStats { method Confirm (line 183) | func (fs *FeedbackStore) Confirm(commitSHA, beadID, feedbackBy string,... method Reject (line 197) | func (fs *FeedbackStore) Reject(commitSHA, beadID, feedbackBy string, ... method Ignore (line 211) | func (fs *FeedbackStore) Ignore(commitSHA, beadID, feedbackBy string, ... method HasFeedback (line 225) | func (fs *FeedbackStore) HasFeedback(commitSHA, beadID string) bool { method GetByBead (line 231) | func (fs *FeedbackStore) GetByBead(beadID string) []CorrelationFeedback { method GetByCommit (line 245) | func (fs *FeedbackStore) GetByCommit(commitSHA string) []CorrelationFe... type feedbackKey (line 26) | type feedbackKey struct function NewFeedbackStore (line 32) | func NewFeedbackStore(beadsDir string) *FeedbackStore { FILE: pkg/correlation/file_index.go type BeadReference (line 13) | type BeadReference struct type FileBeadIndex (line 23) | type FileBeadIndex struct type FileIndexStats (line 32) | type FileIndexStats struct type FileBeadLookupResult (line 39) | type FileBeadLookupResult struct type FileLookup (line 47) | type FileLookup struct method LookupByFile (line 163) | func (fl *FileLookup) LookupByFile(path string) *FileBeadLookupResult { method LookupByFileGlob (line 238) | func (fl *FileLookup) LookupByFileGlob(pattern string) *FileBeadLookup... method GetAllFiles (line 289) | func (fl *FileLookup) GetAllFiles() []string { method GetStats (line 299) | func (fl *FileLookup) GetStats() FileIndexStats { method GetRelatedFiles (line 306) | func (fl *FileLookup) GetRelatedFiles(filePath string, threshold float... method GetCoChangeMatrix (line 311) | func (fl *FileLookup) GetCoChangeMatrix() *CoChangeMatrix { method GetHotspots (line 316) | func (fl *FileLookup) GetHotspots(limit int) []FileHotspot { method ImpactAnalysis (line 569) | func (fl *FileLookup) ImpactAnalysis(files []string) *ImpactResult { function BuildFileIndex (line 55) | func BuildFileIndex(report *HistoryReport) *FileBeadIndex { function NewFileLookup (line 146) | func NewFileLookup(report *HistoryReport) *FileLookup { type FileHotspot (line 371) | type FileHotspot struct type CoChangeEntry (line 379) | type CoChangeEntry struct type CoChangeResult (line 388) | type CoChangeResult struct type CoChangeMatrix (line 397) | type CoChangeMatrix struct method GetRelatedFiles (line 469) | func (m *CoChangeMatrix) GetRelatedFiles(filePath string, threshold fl... function BuildCoChangeMatrix (line 408) | func BuildCoChangeMatrix(report *HistoryReport) *CoChangeMatrix { type ImpactResult (line 547) | type ImpactResult struct type AffectedBead (line 557) | type AffectedBead struct function normalizePath (line 740) | func normalizePath(path string) string { function classifyBeadStatus (line 753) | func classifyBeadStatus(status string) (bucket string, skip bool) { function sortBeadRefs (line 765) | func sortBeadRefs(refs []BeadReference) { function containsBeadRef (line 775) | func containsBeadRef(refs []BeadReference, beadID string) bool { function pluralize (line 785) | func pluralize(count int, singular string) string { FILE: pkg/correlation/file_index_test.go function TestBuildFileIndex (line 8) | func TestBuildFileIndex(t *testing.T) { function TestBuildFileIndexEmpty (line 100) | func TestBuildFileIndexEmpty(t *testing.T) { function TestNewFileLookupNil (line 121) | func TestNewFileLookupNil(t *testing.T) { function TestFileLookupByFile (line 153) | func TestFileLookupByFile(t *testing.T) { function TestFileLookupByFile_ExcludesTombstone (line 215) | func TestFileLookupByFile_ExcludesTombstone(t *testing.T) { function TestFileLookupByFileGlob_ExcludesTombstone (line 286) | func TestFileLookupByFileGlob_ExcludesTombstone(t *testing.T) { function TestFileLookupByDirectory (line 340) | func TestFileLookupByDirectory(t *testing.T) { function TestFileLookupByDirectory_SortsByLastTouch (line 394) | func TestFileLookupByDirectory_SortsByLastTouch(t *testing.T) { function TestFileLookupByGlob (line 470) | func TestFileLookupByGlob(t *testing.T) { function TestFileLookupByGlob_SortsByLastTouch (line 505) | func TestFileLookupByGlob_SortsByLastTouch(t *testing.T) { function TestGetHotspots (line 560) | func TestGetHotspots(t *testing.T) { function TestNormalizePath (line 633) | func TestNormalizePath(t *testing.T) { function TestGetAllFiles (line 653) | func TestGetAllFiles(t *testing.T) { function TestImpactAnalysisEmpty (line 694) | func TestImpactAnalysisEmpty(t *testing.T) { function TestImpactAnalysisWithOpenBeads (line 705) | func TestImpactAnalysisWithOpenBeads(t *testing.T) { function TestImpactAnalysisRiskLevels (line 775) | func TestImpactAnalysisRiskLevels(t *testing.T) { function TestImpactAnalysisEmptyStringsFiltered (line 807) | func TestImpactAnalysisEmptyStringsFiltered(t *testing.T) { function TestImpactAnalysisDuplicatesRemoved (line 817) | func TestImpactAnalysisDuplicatesRemoved(t *testing.T) { function TestBuildCoChangeMatrix (line 857) | func TestBuildCoChangeMatrix(t *testing.T) { function TestCoChangeMatrixNil (line 918) | func TestCoChangeMatrixNil(t *testing.T) { function TestGetRelatedFiles (line 930) | func TestGetRelatedFiles(t *testing.T) { function TestGetRelatedFilesWithLowThreshold (line 991) | func TestGetRelatedFilesWithLowThreshold(t *testing.T) { function TestGetRelatedFilesLimit (line 1027) | func TestGetRelatedFilesLimit(t *testing.T) { FILE: pkg/correlation/gitlog.go constant gitLogHeaderFormat (line 4) | gitLogHeaderFormat = "%H%x00%aI%x00%an%x00%ae%x00%s" constant gitLogMaxScanTokenSize (line 8) | gitLogMaxScanTokenSize = 10 * 1024 * 1024 FILE: pkg/correlation/gitlog_test.go function TestGitLogConstants (line 8) | func TestGitLogConstants(t *testing.T) { function TestGitLogMaxScanTokenSize (line 39) | func TestGitLogMaxScanTokenSize(t *testing.T) { FILE: pkg/correlation/incremental.go constant IncrementalThreshold (line 16) | IncrementalThreshold = 100 type IncrementalUpdateResult (line 19) | type IncrementalUpdateResult struct type IncrementalCorrelator (line 29) | type IncrementalCorrelator struct method GenerateReport (line 56) | func (ic *IncrementalCorrelator) GenerateReport(beads []BeadInfo, opts... method GenerateReportWithDetails (line 65) | func (ic *IncrementalCorrelator) GenerateReportWithDetails(beads []Bea... method findExistingReport (line 128) | func (ic *IncrementalCorrelator) findExistingReport(beads []BeadInfo, ... method tryIncrementalUpdate (line 146) | func (ic *IncrementalCorrelator) tryIncrementalUpdate(existing *Histor... method InvalidateCache (line 455) | func (ic *IncrementalCorrelator) InvalidateCache() { method CacheStats (line 460) | func (ic *IncrementalCorrelator) CacheStats() IncrementalCorrelatorSta... function NewIncrementalCorrelator (line 40) | func NewIncrementalCorrelator(repoPath string) *IncrementalCorrelator { function NewIncrementalCorrelatorWithOptions (line 48) | func NewIncrementalCorrelatorWithOptions(repoPath string, maxAge time.Du... function getCommitsSince (line 194) | func getCommitsSince(repoPath, sinceSHA string) ([]string, error) { function countCommitsSince (line 221) | func countCommitsSince(repoPath, sinceSHA string) (int, error) { function extractEventsFromCommits (line 243) | func extractEventsFromCommits(extractor *Extractor, commitSHAs []string,... function mergeReports (line 280) | func mergeReports(existing *HistoryReport, beads []BeadInfo, newEvents [... function calculateMergedStats (line 405) | func calculateMergedStats(histories map[string]BeadHistory, newCommits [... type IncrementalCorrelatorStats (line 496) | type IncrementalCorrelatorStats struct function CanUpdateIncrementally (line 509) | func CanUpdateIncrementally(repoPath string, cachedReport *HistoryReport... FILE: pkg/correlation/incremental_test.go function TestIncrementalThreshold (line 8) | func TestIncrementalThreshold(t *testing.T) { function TestNewIncrementalCorrelator (line 14) | func TestNewIncrementalCorrelator(t *testing.T) { function TestNewIncrementalCorrelatorWithOptions (line 28) | func TestNewIncrementalCorrelatorWithOptions(t *testing.T) { function TestIncrementalCorrelator_CacheStats (line 39) | func TestIncrementalCorrelator_CacheStats(t *testing.T) { function TestIncrementalCorrelator_InvalidateCache (line 58) | func TestIncrementalCorrelator_InvalidateCache(t *testing.T) { function TestMergeReports_Basic (line 76) | func TestMergeReports_Basic(t *testing.T) { function TestMergeReports_NewBeads (line 140) | func TestMergeReports_NewBeads(t *testing.T) { function TestMergeReports_CommitMerge (line 171) | func TestMergeReports_CommitMerge(t *testing.T) { function TestMergeReports_CommitDedup (line 212) | func TestMergeReports_CommitDedup(t *testing.T) { function TestMergeReports_CommitIndex (line 248) | func TestMergeReports_CommitIndex(t *testing.T) { function TestMergeReports_Stats (line 276) | func TestMergeReports_Stats(t *testing.T) { function TestMergeReports_MilestonesRecalculated (line 318) | func TestMergeReports_MilestonesRecalculated(t *testing.T) { function TestIncrementalUpdateResult_Fields (line 373) | func TestIncrementalUpdateResult_Fields(t *testing.T) { function TestCanUpdateIncrementally_NoReport (line 394) | func TestCanUpdateIncrementally_NoReport(t *testing.T) { function TestCanUpdateIncrementally_EmptySHA (line 407) | func TestCanUpdateIncrementally_EmptySHA(t *testing.T) { function TestIncrementalCorrelator_GenerateReport_FullRefresh (line 421) | func TestIncrementalCorrelator_GenerateReport_FullRefresh(t *testing.T) { function TestIncrementalCorrelator_GenerateReport_CacheHit (line 447) | func TestIncrementalCorrelator_GenerateReport_CacheHit(t *testing.T) { function TestCalculateMergedStats_CycleTime (line 475) | func TestCalculateMergedStats_CycleTime(t *testing.T) { FILE: pkg/correlation/network.go type NetworkEdgeType (line 12) | type NetworkEdgeType constant EdgeSharedCommit (line 16) | EdgeSharedCommit NetworkEdgeType = "shared_commit" constant EdgeSharedFile (line 18) | EdgeSharedFile NetworkEdgeType = "shared_file" constant EdgeDependency (line 20) | EdgeDependency NetworkEdgeType = "dependency" type NetworkEdge (line 24) | type NetworkEdge struct type NetworkNode (line 33) | type NetworkNode struct type BeadCluster (line 47) | type BeadCluster struct type ImpactNetwork (line 60) | type ImpactNetwork struct method GetSubNetwork (line 679) | func (network *ImpactNetwork) GetSubNetwork(beadID string, depth int) ... method ToResult (line 771) | func (network *ImpactNetwork) ToResult(beadID string, depth int) *Impa... type NetworkStats (line 70) | type NetworkStats struct type NetworkBuilder (line 82) | type NetworkBuilder struct method buildBeadMaps (line 123) | func (nb *NetworkBuilder) buildBeadMaps() { method Build (line 142) | func (nb *NetworkBuilder) Build() *ImpactNetwork { method addSharedCommitEdges (line 218) | func (nb *NetworkBuilder) addSharedCommitEdges(network *ImpactNetwork) { method addSharedFileEdges (line 273) | func (nb *NetworkBuilder) addSharedFileEdges(network *ImpactNetwork) { method addDependencyEdges (line 322) | func (nb *NetworkBuilder) addDependencyEdges(network *ImpactNetwork) { method detectClusters (line 397) | func (nb *NetworkBuilder) detectClusters(network *ImpactNetwork) { method buildCluster (line 477) | func (nb *NetworkBuilder) buildCluster(id int, beadIDs []string, netwo... method generateClusterLabel (line 552) | func (nb *NetworkBuilder) generateClusterLabel(beadIDs []string, share... method calculateStats (line 642) | func (nb *NetworkBuilder) calculateStats(network *ImpactNetwork) { function NewNetworkBuilder (line 92) | func NewNetworkBuilder(report *HistoryReport) *NetworkBuilder { function NewNetworkBuilderWithIssues (line 97) | func NewNetworkBuilderWithIssues(report *HistoryReport, issues []model.I... function splitEdgeKey (line 380) | func splitEdgeKey(key string) []string { function commonPathPrefix (line 580) | func commonPathPrefix(files []string) string { function hasPrefix (line 634) | func hasPrefix(str, prefix string) bool { type ImpactNetworkResult (line 759) | type ImpactNetworkResult struct FILE: pkg/correlation/network_test.go function createTestHistoryReport (line 10) | func createTestHistoryReport() *HistoryReport { function TestNewNetworkBuilder (line 88) | func TestNewNetworkBuilder(t *testing.T) { function TestNewNetworkBuilderNilReport (line 108) | func TestNewNetworkBuilderNilReport(t *testing.T) { function TestBuildNetwork (line 116) | func TestBuildNetwork(t *testing.T) { function TestBuildNetworkSharedFiles (line 176) | func TestBuildNetworkSharedFiles(t *testing.T) { function TestBuildNetworkDependencyEdges (line 202) | func TestBuildNetworkDependencyEdges(t *testing.T) { function TestClusterDetection (line 258) | func TestClusterDetection(t *testing.T) { function TestGetSubNetwork (line 283) | func TestGetSubNetwork(t *testing.T) { function TestGetSubNetworkDepthLimits (line 305) | func TestGetSubNetworkDepthLimits(t *testing.T) { function TestIsolatedNodes (line 330) | func TestIsolatedNodes(t *testing.T) { function TestToResult (line 351) | func TestToResult(t *testing.T) { function TestNetworkEdgeTypes (line 396) | func TestNetworkEdgeTypes(t *testing.T) { function TestCommonPathPrefix (line 413) | func TestCommonPathPrefix(t *testing.T) { function TestSplitEdgeKey (line 456) | func TestSplitEdgeKey(t *testing.T) { function TestGenerateClusterLabel (line 482) | func TestGenerateClusterLabel(t *testing.T) { function TestEdgeWeightAccumulation (line 542) | func TestEdgeWeightAccumulation(t *testing.T) { function TestClusterInternalConnectivity (line 603) | func TestClusterInternalConnectivity(t *testing.T) { function TestNetworkDensityCalculation (line 662) | func TestNetworkDensityCalculation(t *testing.T) { function TestCentralBeadDetection (line 686) | func TestCentralBeadDetection(t *testing.T) { function TestEmptyHistoryReport (line 732) | func TestEmptyHistoryReport(t *testing.T) { FILE: pkg/correlation/orphan.go type OrphanSignal (line 13) | type OrphanSignal constant SignalOrphanTiming (line 17) | SignalOrphanTiming OrphanSignal = "timing" constant SignalOrphanFiles (line 19) | SignalOrphanFiles OrphanSignal = "files" constant SignalOrphanMessage (line 21) | SignalOrphanMessage OrphanSignal = "message" constant SignalOrphanAuthor (line 23) | SignalOrphanAuthor OrphanSignal = "author" type OrphanCandidate (line 49) | type OrphanCandidate struct type ProbableBead (line 66) | type ProbableBead struct type OrphanSignalHit (line 75) | type OrphanSignalHit struct type OrphanReport (line 82) | type OrphanReport struct type OrphanReportStats (line 92) | type OrphanReportStats struct type OrphanDetector (line 102) | type OrphanDetector struct method DetectOrphans (line 160) | func (od *OrphanDetector) DetectOrphans(opts ExtractOptions) (*OrphanR... method analyzeOrphan (line 215) | func (od *OrphanDetector) analyzeOrphan(orphan OrphanCommit) OrphanCan... method checkTiming (line 288) | func (od *OrphanDetector) checkTiming(candidate *OrphanCandidate, bead... method checkFiles (line 314) | func (od *OrphanDetector) checkFiles(candidate *OrphanCandidate, beadS... method checkMessage (line 348) | func (od *OrphanDetector) checkMessage(candidate *OrphanCandidate, bea... method checkAuthor (line 403) | func (od *OrphanDetector) checkAuthor(candidate *OrphanCandidate, bead... method getCommitFiles (line 452) | func (od *OrphanDetector) getCommitFiles(sha string) []string { function NewOrphanDetector (line 111) | func NewOrphanDetector(report *HistoryReport, repoPath string) *OrphanDe... function NewSmartOrphanDetector (line 116) | func NewSmartOrphanDetector(report *HistoryReport, repoPath string) *Orp... function newOrphanDetector (line 121) | func newOrphanDetector(report *HistoryReport, repoPath string) *OrphanDe... type probableBeadBuilder (line 280) | type probableBeadBuilder struct function formatGitRange (line 467) | func formatGitRange(opts ExtractOptions) string { function appendUnique (line 490) | func appendUnique(slice []string, s string) []string { FILE: pkg/correlation/orphan_test.go function TestNewOrphanDetector (line 8) | func TestNewOrphanDetector(t *testing.T) { function TestNewSmartOrphanDetector (line 57) | func TestNewSmartOrphanDetector(t *testing.T) { function TestOrphanCandidate_JSONRoundtrip (line 69) | func TestOrphanCandidate_JSONRoundtrip(t *testing.T) { function TestOrphanReportStats (line 110) | func TestOrphanReportStats(t *testing.T) { function TestOrphanSignalConstants (line 128) | func TestOrphanSignalConstants(t *testing.T) { function TestFormatGitRange (line 144) | func TestFormatGitRange(t *testing.T) { function TestAppendUnique (line 172) | func TestAppendUnique(t *testing.T) { function TestProbableBead_Fields (line 209) | func TestProbableBead_Fields(t *testing.T) { function TestOrphanReport_Fields (line 229) | func TestOrphanReport_Fields(t *testing.T) { FILE: pkg/correlation/related.go type RelationType (line 11) | type RelationType constant RelationFileOverlap (line 15) | RelationFileOverlap RelationType = "file_overlap" constant RelationCommitOverlap (line 17) | RelationCommitOverlap RelationType = "commit_overlap" constant RelationDependencyCluster (line 19) | RelationDependencyCluster RelationType = "dependency_cluster" constant RelationConcurrent (line 21) | RelationConcurrent RelationType = "concurrent" type RelatedWorkBead (line 25) | type RelatedWorkBead struct type RelatedWorkResult (line 37) | type RelatedWorkResult struct type RelatedWorkOptions (line 49) | type RelatedWorkOptions struct function DefaultRelatedWorkOptions (line 59) | func DefaultRelatedWorkOptions() RelatedWorkOptions { method FindRelatedWork (line 69) | func (hr *HistoryReport) FindRelatedWork(targetID string, opts RelatedWo... method findFileOverlap (line 140) | func (hr *HistoryReport) findFileOverlap(targetID string, targetFiles ma... method findCommitOverlap (line 217) | func (hr *HistoryReport) findCommitOverlap(targetID string, targetCommit... method findDependencyCluster (line 288) | func (hr *HistoryReport) findDependencyCluster(targetID string, opts Rel... method findConcurrent (line 384) | func (hr *HistoryReport) findConcurrent(targetID string, target BeadHist... function shouldSkipRelatedStatus (line 496) | func shouldSkipRelatedStatus(status string, includeClosed bool) bool { function sortRelatedResults (line 507) | func sortRelatedResults(results []RelatedWorkBead) { function normalizeStatus (line 516) | func normalizeStatus(status string) string { function formatFileOverlapReason (line 520) | func formatFileOverlapReason(shared, total int) string { function formatCommitOverlapReason (line 528) | func formatCommitOverlapReason(shared, total int) string { function formatConcurrentReason (line 536) | func formatConcurrentReason(overlap time.Duration) string { function formatPluralRelated (line 544) | func formatPluralRelated(n int, singular, plural string) string { function formatPctRelated (line 551) | func formatPctRelated(pct int) string { function formatIntRelated (line 558) | func formatIntRelated(n int) string { function limitStrings (line 578) | func limitStrings(s []string, max int) []string { function shortenSHAs (line 585) | func shortenSHAs(shas []string) []string { FILE: pkg/correlation/related_test.go function TestFindRelatedWork_NotFound (line 9) | func TestFindRelatedWork_NotFound(t *testing.T) { function TestFindRelatedWork_FileOverlap (line 21) | func TestFindRelatedWork_FileOverlap(t *testing.T) { function TestFindRelatedWork_CommitOverlap (line 115) | func TestFindRelatedWork_CommitOverlap(t *testing.T) { function TestFindRelatedWork_FileOverlapOrdering (line 167) | func TestFindRelatedWork_FileOverlapOrdering(t *testing.T) { function TestFindRelatedWork_CommitOverlapSharedCommitsSorted (line 260) | func TestFindRelatedWork_CommitOverlapSharedCommitsSorted(t *testing.T) { function TestFindRelatedWork_DependencyCluster (line 307) | func TestFindRelatedWork_DependencyCluster(t *testing.T) { function TestFindRelatedWork_Concurrent (line 383) | func TestFindRelatedWork_Concurrent(t *testing.T) { function TestFindRelatedWork_ExcludesClosed (line 450) | func TestFindRelatedWork_ExcludesClosed(t *testing.T) { function TestFindRelatedWork_MaxResults (line 519) | func TestFindRelatedWork_MaxResults(t *testing.T) { function TestDefaultRelatedWorkOptions (line 565) | func TestDefaultRelatedWorkOptions(t *testing.T) { function TestRelationType_Values (line 585) | func TestRelationType_Values(t *testing.T) { FILE: pkg/correlation/reverse.go type CommitBeadResult (line 14) | type CommitBeadResult struct type RelatedBead (line 26) | type RelatedBead struct type ReverseLookup (line 36) | type ReverseLookup struct method LookupByCommit (line 69) | func (rl *ReverseLookup) LookupByCommit(sha string) (*CommitBeadResult... method normalizeSHA (line 151) | func (rl *ReverseLookup) normalizeSHA(sha string) string { method getCommitInfo (line 169) | func (rl *ReverseLookup) getCommitInfo(sha string) (*commitInfo, error) { method FindOrphanCommits (line 210) | func (rl *ReverseLookup) FindOrphanCommits(opts ExtractOptions) ([]Orp... method getAllCodeCommits (line 247) | func (rl *ReverseLookup) getAllCodeCommits(opts ExtractOptions) ([]Orp... method GetCorrelatedCommitCount (line 312) | func (rl *ReverseLookup) GetCorrelatedCommitCount() int { method GetAllBeadIDs (line 317) | func (rl *ReverseLookup) GetAllBeadIDs() []string { method GetBeadCommitSummaries (line 335) | func (rl *ReverseLookup) GetBeadCommitSummaries() []BeadCommitsSummary { function NewReverseLookup (line 44) | func NewReverseLookup(report *HistoryReport) *ReverseLookup { function NewReverseLookupWithRepo (line 62) | func NewReverseLookupWithRepo(report *HistoryReport, repoPath string) *R... type OrphanCommit (line 192) | type OrphanCommit struct type OrphanStats (line 202) | type OrphanStats struct type BeadCommitsSummary (line 326) | type BeadCommitsSummary struct FILE: pkg/correlation/reverse_test.go function createTestReport (line 8) | func createTestReport() *HistoryReport { function TestNewReverseLookup (line 88) | func TestNewReverseLookup(t *testing.T) { function TestLookupByCommit_Found (line 105) | func TestLookupByCommit_Found(t *testing.T) { function TestLookupByCommit_ShortSHA (line 133) | func TestLookupByCommit_ShortSHA(t *testing.T) { function TestLookupByCommit_NotFound (line 152) | func TestLookupByCommit_NotFound(t *testing.T) { function TestLookupByCommit_IncludesDetails (line 170) | func TestLookupByCommit_IncludesDetails(t *testing.T) { function TestGetCorrelatedCommitCount (line 204) | func TestGetCorrelatedCommitCount(t *testing.T) { function TestGetAllBeadIDs (line 214) | func TestGetAllBeadIDs(t *testing.T) { function TestGetBeadCommitSummaries (line 236) | func TestGetBeadCommitSummaries(t *testing.T) { function TestNormalizeSHA (line 269) | func TestNormalizeSHA(t *testing.T) { function TestRelatedBead_AllFields (line 291) | func TestRelatedBead_AllFields(t *testing.T) { function TestOrphanStats_Empty (line 328) | func TestOrphanStats_Empty(t *testing.T) { function TestCommitBeadResult_EmptyRelatedBeads (line 341) | func TestCommitBeadResult_EmptyRelatedBeads(t *testing.T) { FILE: pkg/correlation/scorer.go type ConfidenceRange (line 11) | type ConfidenceRange struct type Scorer (line 41) | type Scorer struct method ValidateConfidence (line 49) | func (s *Scorer) ValidateConfidence(method CorrelationMethod, confiden... method CombineConfidence (line 66) | func (s *Scorer) CombineConfidence(signals []ConfidenceSignal) float64 { method CombineReasons (line 108) | func (s *Scorer) CombineReasons(signals []ConfidenceSignal) string { method ExplainConfidence (line 134) | func (s *Scorer) ExplainConfidence(method CorrelationMethod, confidenc... method FilterByConfidence (line 178) | func (s *Scorer) FilterByConfidence(commits []CorrelatedCommit, minCon... method FilterHistoriesByConfidence (line 193) | func (s *Scorer) FilterHistoriesByConfidence(histories map[string]Bead... method MergeCommits (line 208) | func (s *Scorer) MergeCommits(sources ...[]CorrelatedCommit) []Correla... method CalculateStats (line 288) | func (s *Scorer) CalculateStats(commits []CorrelatedCommit) Confidence... method BuildExplanation (line 352) | func (s *Scorer) BuildExplanation(commit CorrelatedCommit, beadID stri... method ExtractSignals (line 378) | func (s *Scorer) ExtractSignals(commit CorrelatedCommit) []Correlation... method buildSummary (line 433) | func (s *Scorer) buildSummary(commit CorrelatedCommit, signals []Corre... method buildRecommendation (line 449) | func (s *Scorer) buildRecommendation(confidence float64, _ int) string { method ExplainMultiple (line 463) | func (s *Scorer) ExplainMultiple(commits []CorrelatedCommit, beadID st... function NewScorer (line 44) | func NewScorer() *Scorer { type ConfidenceSignal (line 58) | type ConfidenceSignal struct type ConfidenceStats (line 280) | type ConfidenceStats struct function ConfidenceLevel (line 331) | func ConfidenceLevel(confidence float64) string { function FormatConfidence (line 347) | func FormatConfidence(confidence float64) string { function minInt (line 472) | func minInt(a, b int) int { FILE: pkg/correlation/scorer_test.go function TestValidateConfidence (line 9) | func TestValidateConfidence(t *testing.T) { function TestCombineConfidence_SingleSignal (line 51) | func TestCombineConfidence_SingleSignal(t *testing.T) { function TestCombineConfidence_Empty (line 64) | func TestCombineConfidence_Empty(t *testing.T) { function TestCombineConfidence_MultipleSignals (line 73) | func TestCombineConfidence_MultipleSignals(t *testing.T) { function TestCombineConfidence_NeverExceed99 (line 118) | func TestCombineConfidence_NeverExceed99(t *testing.T) { function TestCombineReasons_SingleReason (line 135) | func TestCombineReasons_SingleReason(t *testing.T) { function TestCombineReasons_MultipleReasons (line 148) | func TestCombineReasons_MultipleReasons(t *testing.T) { function TestExplainConfidence (line 176) | func TestExplainConfidence(t *testing.T) { function TestFilterByConfidence (line 212) | func TestFilterByConfidence(t *testing.T) { function TestMergeCommits_NoDuplicates (line 243) | func TestMergeCommits_NoDuplicates(t *testing.T) { function TestMergeCommits_WithDuplicates (line 260) | func TestMergeCommits_WithDuplicates(t *testing.T) { function TestMergeCommits_SortedByConfidence (line 287) | func TestMergeCommits_SortedByConfidence(t *testing.T) { function TestCalculateStats (line 306) | func TestCalculateStats(t *testing.T) { function TestScorer_CalculateStats_Empty (line 347) | func TestScorer_CalculateStats_Empty(t *testing.T) { function TestConfidenceLevel (line 357) | func TestConfidenceLevel(t *testing.T) { function TestFormatConfidence (line 377) | func TestFormatConfidence(t *testing.T) { function TestFilterHistoriesByConfidence (line 396) | func TestFilterHistoriesByConfidence(t *testing.T) { function TestMergeCommits_FilesDeduped (line 429) | func TestMergeCommits_FilesDeduped(t *testing.T) { FILE: pkg/correlation/stream.go constant DefaultHistoryLimit (line 16) | DefaultHistoryLimit = 500 type ProgressCallback (line 19) | type ProgressCallback type StreamExtractor (line 22) | type StreamExtractor struct method primaryBeadsFile (line 36) | func (s *StreamExtractor) primaryBeadsFile() string { method SetProgressCallback (line 44) | func (s *StreamExtractor) SetProgressCallback(cb ProgressCallback) { method StreamEvents (line 59) | func (s *StreamExtractor) StreamEvents(opts StreamOptions) ([]BeadEven... method countCommits (line 112) | func (s *StreamExtractor) countCommits(opts StreamOptions) (int, error) { method buildStreamCommand (line 137) | func (s *StreamExtractor) buildStreamCommand(opts StreamOptions, limit... method parseStream (line 166) | func (s *StreamExtractor) parseStream(r io.Reader, filterBeadID string... method processCommitBuffer (line 230) | func (s *StreamExtractor) processCommitBuffer(buf *commitBuffer, filte... method parseBufferedDiff (line 264) | func (s *StreamExtractor) parseBufferedDiff(lines []string, info commi... function NewStreamExtractor (line 29) | func NewStreamExtractor(repoPath string) *StreamExtractor { type StreamOptions (line 49) | type StreamOptions struct type commitBuffer (line 224) | type commitBuffer struct function parseCommitHeader (line 243) | func parseCommitHeader(line string) (commitInfo, error) { type BatchFileStatsExtractor (line 340) | type BatchFileStatsExtractor struct method SetBatchSize (line 357) | func (b *BatchFileStatsExtractor) SetBatchSize(size int) { method ExtractBatch (line 364) | func (b *BatchFileStatsExtractor) ExtractBatch(shas []string) (map[str... method extractBatchFiles (line 409) | func (b *BatchFileStatsExtractor) extractBatchFiles(shas []string) (ma... method extractIndividually (line 480) | func (b *BatchFileStatsExtractor) extractIndividually(shas []string) (... method ClearCache (line 518) | func (b *BatchFileStatsExtractor) ClearCache() { function NewBatchFileStatsExtractor (line 348) | func NewBatchFileStatsExtractor(repoPath string) *BatchFileStatsExtractor { function filterCodeFiles (line 496) | func filterCodeFiles(files []FileChange) []FileChange { function isHexString (line 508) | func isHexString(s string) bool { FILE: pkg/correlation/stream_test.go function TestDefaultHistoryLimit (line 9) | func TestDefaultHistoryLimit(t *testing.T) { function TestNewStreamExtractor (line 15) | func TestNewStreamExtractor(t *testing.T) { function TestStreamExtractor_SetProgressCallback (line 26) | func TestStreamExtractor_SetProgressCallback(t *testing.T) { function TestParseCommitHeader (line 45) | func TestParseCommitHeader(t *testing.T) { function TestParseCommitHeader_ParsesAllFields (line 86) | func TestParseCommitHeader_ParsesAllFields(t *testing.T) { function TestIsHexString (line 110) | func TestIsHexString(t *testing.T) { function TestFilterCodeFiles (line 132) | func TestFilterCodeFiles(t *testing.T) { function TestNewBatchFileStatsExtractor (line 158) | func TestNewBatchFileStatsExtractor(t *testing.T) { function TestBatchFileStatsExtractor_SetBatchSize (line 172) | func TestBatchFileStatsExtractor_SetBatchSize(t *testing.T) { function TestBatchFileStatsExtractor_ClearCache (line 192) | func TestBatchFileStatsExtractor_ClearCache(t *testing.T) { function TestBatchFileStatsExtractor_CacheHit (line 209) | func TestBatchFileStatsExtractor_CacheHit(t *testing.T) { function TestStreamOptions_Defaults (line 234) | func TestStreamOptions_Defaults(t *testing.T) { function TestStreamExtractor_ParseBufferedDiff_Created (line 251) | func TestStreamExtractor_ParseBufferedDiff_Created(t *testing.T) { function TestStreamExtractor_ParseBufferedDiff_StatusChange (line 279) | func TestStreamExtractor_ParseBufferedDiff_StatusChange(t *testing.T) { function TestStreamExtractor_ParseBufferedDiff_FilterByBead (line 305) | func TestStreamExtractor_ParseBufferedDiff_FilterByBead(t *testing.T) { function TestStreamExtractor_ParseBufferedDiff_ClosedSince (line 328) | func TestStreamExtractor_ParseBufferedDiff_ClosedSince(t *testing.T) { function TestStreamExtractor_StreamEvents_InGitRepo (line 364) | func TestStreamExtractor_StreamEvents_InGitRepo(t *testing.T) { function TestProgressCallback_CalledDuringParsing (line 388) | func TestProgressCallback_CalledDuringParsing(t *testing.T) { FILE: pkg/correlation/temporal.go type TemporalCorrelator (line 15) | type TemporalCorrelator struct method SetSeenCommits (line 33) | func (t *TemporalCorrelator) SetSeenCommits(commits []CorrelatedCommit) { method SetActiveBeadsPerAuthor (line 40) | func (t *TemporalCorrelator) SetActiveBeadsPerAuthor(counts map[string... method FindCommitsInWindow (line 55) | func (t *TemporalCorrelator) FindCommitsInWindow(window TemporalWindow... method touchesBeadsFile (line 143) | func (t *TemporalCorrelator) touchesBeadsFile(sha string) bool { method calculateTemporalConfidence (line 163) | func (t *TemporalCorrelator) calculateTemporalConfidence(window Tempor... method generateTemporalReason (line 198) | func (t *TemporalCorrelator) generateTemporalReason(window TemporalWin... method ExtractAllTemporalCorrelations (line 296) | func (t *TemporalCorrelator) ExtractAllTemporalCorrelations(histories ... method calculateActiveBeadsPerAuthor (line 322) | func (t *TemporalCorrelator) calculateActiveBeadsPerAuthor(histories m... function NewTemporalCorrelator (line 23) | func NewTemporalCorrelator(repoPath string) *TemporalCorrelator { type TemporalWindow (line 45) | type TemporalWindow struct function extractPathHints (line 235) | func extractPathHints(title string) []string { function pathsMatchHints (line 255) | func pathsMatchHints(files []FileChange, hints []string) bool { function clamp (line 268) | func clamp(value, min, max float64) float64 { function ExtractWindowFromMilestones (line 279) | func ExtractWindowFromMilestones(beadID, title string, milestones BeadMi... FILE: pkg/correlation/temporal_path_test.go function TestExtractPathHintsKeywords (line 5) | func TestExtractPathHintsKeywords(t *testing.T) { function TestExtractIDsOrdering (line 22) | func TestExtractIDsOrdering(t *testing.T) { FILE: pkg/correlation/temporal_test.go function TestExtractPathHints (line 9) | func TestExtractPathHints(t *testing.T) { function TestPathsMatchHints (line 72) | func TestPathsMatchHints(t *testing.T) { function TestClamp (line 137) | func TestClamp(t *testing.T) { function TestCalculateTemporalConfidence (line 159) | func TestCalculateTemporalConfidence(t *testing.T) { function TestGenerateTemporalReason (line 244) | func TestGenerateTemporalReason(t *testing.T) { function TestExtractWindowFromMilestones (line 322) | func TestExtractWindowFromMilestones(t *testing.T) { function TestSetSeenCommits (line 420) | func TestSetSeenCommits(t *testing.T) { function TestSetActiveBeadsPerAuthor (line 442) | func TestSetActiveBeadsPerAuthor(t *testing.T) { function TestCalculateActiveBeadsPerAuthor (line 460) | func TestCalculateActiveBeadsPerAuthor(t *testing.T) { FILE: pkg/correlation/types.go type EventType (line 10) | type EventType method String (line 26) | func (e EventType) String() string { method IsValid (line 31) | func (e EventType) IsValid() bool { constant EventCreated (line 14) | EventCreated EventType = "created" constant EventClaimed (line 16) | EventClaimed EventType = "claimed" constant EventClosed (line 18) | EventClosed EventType = "closed" constant EventReopened (line 20) | EventReopened EventType = "reopened" constant EventModified (line 22) | EventModified EventType = "modified" type BeadEvent (line 40) | type BeadEvent struct type CorrelationMethod (line 51) | type CorrelationMethod method String (line 63) | func (c CorrelationMethod) String() string { method IsValid (line 68) | func (c CorrelationMethod) IsValid() bool { constant MethodCoCommitted (line 55) | MethodCoCommitted CorrelationMethod = "co_committed" constant MethodExplicitID (line 57) | MethodExplicitID CorrelationMethod = "explicit_id" constant MethodTemporalAuthor (line 59) | MethodTemporalAuthor CorrelationMethod = "temporal_author" type FileChange (line 77) | type FileChange struct type CorrelatedCommit (line 85) | type CorrelatedCommit struct type BeadMilestones (line 100) | type BeadMilestones struct type CycleTime (line 108) | type CycleTime struct type BeadHistory (line 115) | type BeadHistory struct type CommitIndex (line 127) | type CommitIndex type HistoryStats (line 130) | type HistoryStats struct type HistoryReport (line 141) | type HistoryReport struct type FilterOptions (line 152) | type FilterOptions struct type SignalType (line 162) | type SignalType constant SignalMessageMatch (line 166) | SignalMessageMatch SignalType = "message_match" constant SignalTiming (line 168) | SignalTiming SignalType = "timing" constant SignalFileOverlap (line 170) | SignalFileOverlap SignalType = "file_overlap" constant SignalAuthorMatch (line 172) | SignalAuthorMatch SignalType = "author_match" constant SignalProximity (line 174) | SignalProximity SignalType = "proximity" constant SignalCoCommit (line 176) | SignalCoCommit SignalType = "co_commit" type CorrelationSignal (line 180) | type CorrelationSignal struct type CorrelationExplanation (line 187) | type CorrelationExplanation struct type FeedbackType (line 201) | type FeedbackType constant FeedbackConfirm (line 205) | FeedbackConfirm FeedbackType = "confirm" constant FeedbackReject (line 207) | FeedbackReject FeedbackType = "reject" constant FeedbackIgnore (line 209) | FeedbackIgnore FeedbackType = "ignore" type CorrelationFeedback (line 213) | type CorrelationFeedback struct type FeedbackStats (line 224) | type FeedbackStats struct FILE: pkg/correlation/types_test.go function TestEventType_String (line 9) | func TestEventType_String(t *testing.T) { function TestEventType_IsValid (line 27) | func TestEventType_IsValid(t *testing.T) { function TestCorrelationMethod_String (line 47) | func TestCorrelationMethod_String(t *testing.T) { function TestCorrelationMethod_IsValid (line 63) | func TestCorrelationMethod_IsValid(t *testing.T) { function TestBeadEvent_JSONRoundtrip (line 81) | func TestBeadEvent_JSONRoundtrip(t *testing.T) { function TestCorrelatedCommit_JSONRoundtrip (line 120) | func TestCorrelatedCommit_JSONRoundtrip(t *testing.T) { function TestBeadHistory_JSONRoundtrip (line 165) | func TestBeadHistory_JSONRoundtrip(t *testing.T) { function TestHistoryReport_JSONRoundtrip (line 247) | func TestHistoryReport_JSONRoundtrip(t *testing.T) { function TestFilterOptions_JSONRoundtrip (line 314) | func TestFilterOptions_JSONRoundtrip(t *testing.T) { function TestFileChange_JSONRoundtrip (line 348) | func TestFileChange_JSONRoundtrip(t *testing.T) { FILE: pkg/debug/debug.go function init (line 40) | func init() { function getLogger (line 47) | func getLogger() *log.Logger { function Enabled (line 54) | func Enabled() bool { function SetEnabled (line 60) | func SetEnabled(e bool) { function Log (line 73) | func Log(format string, args ...any) { function LogTiming (line 83) | func LogTiming(name string, d time.Duration) { function LogIf (line 93) | func LogIf(cond bool, format string, args ...any) { function LogFunc (line 106) | func LogFunc(msg string) func() { function LogEnterExit (line 124) | func LogEnterExit(name string) func() { function Dump (line 143) | func Dump(name string, v any) { function Section (line 153) | func Section(name string) { function Checkpoint (line 165) | func Checkpoint(msg string) { function ResetCheckpoints (line 176) | func ResetCheckpoints() { function Assert (line 182) | func Assert(cond bool, msg string) { function AssertNoError (line 196) | func AssertNoError(err error, context string) { FILE: pkg/debug/debug_test.go function TestEnabled (line 11) | func TestEnabled(t *testing.T) { function TestLog (line 34) | func TestLog(t *testing.T) { function TestLog_Disabled (line 57) | func TestLog_Disabled(t *testing.T) { function TestLogTiming (line 80) | func TestLogTiming(t *testing.T) { function TestLogIf (line 103) | func TestLogIf(t *testing.T) { function TestLogEnterExit (line 129) | func TestLogEnterExit(t *testing.T) { function TestDump (line 158) | func TestDump(t *testing.T) { function TestSection (line 188) | func TestSection(t *testing.T) { function TestCheckpoint (line 211) | func TestCheckpoint(t *testing.T) { function TestResetCheckpoints (line 241) | func TestResetCheckpoints(t *testing.T) { function TestAssert_Pass (line 249) | func TestAssert_Pass(t *testing.T) { function TestAssert_Fail (line 263) | func TestAssert_Fail(t *testing.T) { function TestAssertNoError_Pass (line 288) | func TestAssertNoError_Pass(t *testing.T) { function TestLogFunc (line 302) | func TestLogFunc(t *testing.T) { function TestLogFunc_Disabled (line 325) | func TestLogFunc_Disabled(t *testing.T) { FILE: pkg/drift/config.go type Config (line 12) | type Config struct method Validate (line 153) | func (c *Config) Validate() error { method IsAlertDisabled (line 223) | func (c *Config) IsAlertDisabled(alertType string) bool { method GetStalenessThresholds (line 237) | func (c *Config) GetStalenessThresholds(labels []string) (warnDays, cr... type LabelConfig (line 58) | type LabelConfig struct function DefaultConfig (line 68) | func DefaultConfig() *Config { constant ConfigFilename (line 87) | ConfigFilename = "drift.yaml" function ConfigPath (line 90) | func ConfigPath(projectDir string) string { function LoadConfig (line 96) | func LoadConfig(projectDir string) (*Config, error) { function SaveConfig (line 122) | func SaveConfig(projectDir string, config *Config) error { function ExampleConfig (line 289) | func ExampleConfig() string { FILE: pkg/drift/drift.go type Severity (line 16) | type Severity constant SeverityCritical (line 19) | SeverityCritical Severity = "critical" constant SeverityWarning (line 20) | SeverityWarning Severity = "warning" constant SeverityInfo (line 21) | SeverityInfo Severity = "info" type AlertType (line 25) | type AlertType constant AlertNewCycle (line 28) | AlertNewCycle AlertType = "new_cycle" constant AlertPageRankChange (line 29) | AlertPageRankChange AlertType = "pagerank_change" constant AlertDensityGrowth (line 30) | AlertDensityGrowth AlertType = "density_growth" constant AlertNodeCountChange (line 31) | AlertNodeCountChange AlertType = "node_count_change" constant AlertEdgeCountChange (line 32) | AlertEdgeCountChange AlertType = "edge_count_change" constant AlertBlockedIncrease (line 33) | AlertBlockedIncrease AlertType = "blocked_increase" constant AlertActionableChange (line 34) | AlertActionableChange AlertType = "actionable_change" constant AlertStaleIssue (line 35) | AlertStaleIssue AlertType = "stale_issue" constant AlertVelocityDrop (line 36) | AlertVelocityDrop AlertType = "velocity_drop" constant AlertBlockingCascade (line 37) | AlertBlockingCascade AlertType = "blocking_cascade" constant AlertHighImpactUnblock (line 38) | AlertHighImpactUnblock AlertType = "high_impact_unblock" constant AlertAbandonedClaim (line 39) | AlertAbandonedClaim AlertType = "abandoned_claim" constant AlertPotentialDuplicate (line 40) | AlertPotentialDuplicate AlertType = "potential_duplicate" type Alert (line 44) | type Alert struct type Result (line 62) | type Result struct method Summary (line 561) | func (r *Result) Summary() string { method HasCritical (line 600) | func (r *Result) HasCritical() bool { method HasWarnings (line 605) | func (r *Result) HasWarnings() bool { method ExitCode (line 611) | func (r *Result) ExitCode() int { type Calculator (line 76) | type Calculator struct method SetIssues (line 99) | func (c *Calculator) SetIssues(issues []model.Issue) { method Calculate (line 104) | func (c *Calculator) Calculate() *Result { method checkCycles (line 155) | func (c *Calculator) checkCycles(result *Result) { method checkDensity (line 195) | func (c *Calculator) checkDensity(result *Result) { method checkGraphSize (line 235) | func (c *Calculator) checkGraphSize(result *Result) { method checkBlocked (line 283) | func (c *Calculator) checkBlocked(result *Result) { method checkActionable (line 307) | func (c *Calculator) checkActionable(result *Result) { method checkPageRankChanges (line 344) | func (c *Calculator) checkPageRankChanges(result *Result) { method checkStaleness (line 398) | func (c *Calculator) checkStaleness(result *Result) { method checkBlockingCascade (line 460) | func (c *Calculator) checkBlockingCascade(result *Result) { function NewCalculator (line 86) | func NewCalculator(bl *baseline.Baseline, current *baseline.Baseline, cf... function cycleKey (line 526) | func cycleKey(cycle []string) string { FILE: pkg/drift/drift_test.go function TestCalculatorNoDrift (line 15) | func TestCalculatorNoDrift(t *testing.T) { function TestCalculatorNewCycle (line 46) | func TestCalculatorNewCycle(t *testing.T) { function TestCalculatorDensityGrowth (line 82) | func TestCalculatorDensityGrowth(t *testing.T) { function TestCalculatorBlockedIncrease (line 116) | func TestCalculatorBlockedIncrease(t *testing.T) { function TestCalculatorPageRankChange (line 148) | func TestCalculatorPageRankChange(t *testing.T) { function TestCalculatorStalenessWarningAndCritical (line 183) | func TestCalculatorStalenessWarningAndCritical(t *testing.T) { function TestCalculatorBlockingCascade (line 219) | func TestCalculatorBlockingCascade(t *testing.T) { function TestCalculatorBlockingCascadeWithPriorities (line 261) | func TestCalculatorBlockingCascadeWithPriorities(t *testing.T) { function TestResultSummary (line 303) | func TestResultSummary(t *testing.T) { function TestResultExitCode (line 324) | func TestResultExitCode(t *testing.T) { function TestResultHasCritical (line 346) | func TestResultHasCritical(t *testing.T) { function TestResultHasWarnings (line 368) | func TestResultHasWarnings(t *testing.T) { function TestExampleConfig (line 391) | func TestExampleConfig(t *testing.T) { function TestConfigLoadDefault (line 427) | func TestConfigLoadDefault(t *testing.T) { function TestConfigLoadCustom (line 441) | func TestConfigLoadCustom(t *testing.T) { function TestConfigLoadInvalid (line 469) | func TestConfigLoadInvalid(t *testing.T) { function TestConfigLoadInvalidYAML (line 489) | func TestConfigLoadInvalidYAML(t *testing.T) { function TestConfigLoadPermissionError (line 520) | func TestConfigLoadPermissionError(t *testing.T) { function TestConfigSaveInvalidConfig (line 556) | func TestConfigSaveInvalidConfig(t *testing.T) { function TestConfigSaveMkdirError (line 584) | func TestConfigSaveMkdirError(t *testing.T) { function TestConfigSavePermissionError (line 609) | func TestConfigSavePermissionError(t *testing.T) { function TestConfigSave (line 636) | func TestConfigSave(t *testing.T) { function TestConfigValidate (line 655) | func TestConfigValidate(t *testing.T) { function TestCycleKey (line 682) | func TestCycleKey(t *testing.T) { function TestCheckActionable_BaselineZero (line 709) | func TestCheckActionable_BaselineZero(t *testing.T) { function TestCheckActionable_InfoIncrease (line 739) | func TestCheckActionable_InfoIncrease(t *testing.T) { function TestCheckActionable_DecreaseWarning (line 776) | func TestCheckActionable_DecreaseWarning(t *testing.T) { function TestCheckActionable_InfoDecrease (line 813) | func TestCheckActionable_InfoDecrease(t *testing.T) { function TestCheckCycles_BaselineHasCycles (line 848) | func TestCheckCycles_BaselineHasCycles(t *testing.T) { function TestCheckCycles_NewCycles (line 874) | func TestCheckCycles_NewCycles(t *testing.T) { function TestCheckCycles_SameCycles (line 908) | func TestCheckCycles_SameCycles(t *testing.T) { function TestCheckCycles_BothEmpty (line 935) | func TestCheckCycles_BothEmpty(t *testing.T) { function TestCheckDensity_InfoLevel (line 960) | func TestCheckDensity_InfoLevel(t *testing.T) { function TestCheckDensity_Decrease (line 997) | func TestCheckDensity_Decrease(t *testing.T) { function TestCheckDensity_WarningLevel (line 1027) | func TestCheckDensity_WarningLevel(t *testing.T) { function TestCheckDensity_BaselineZero (line 1064) | func TestCheckDensity_BaselineZero(t *testing.T) { function TestCheckActionable_SmallChanges (line 1093) | func TestCheckActionable_SmallChanges(t *testing.T) { function TestCheckDensity_SmallIncrease (line 1137) | func TestCheckDensity_SmallIncrease(t *testing.T) { function TestCalculatorZeroBaseline (line 1165) | func TestCalculatorZeroBaseline(t *testing.T) { function TestCalculatorBoundaryThresholds (line 1201) | func TestCalculatorBoundaryThresholds(t *testing.T) { function TestCalculatorEmptyMetrics (line 1264) | func TestCalculatorEmptyMetrics(t *testing.T) { function TestCalculatorLargeValues (line 1291) | func TestCalculatorLargeValues(t *testing.T) { function TestCheckBlocked_StrictThresholds (line 1318) | func TestCheckBlocked_StrictThresholds(t *testing.T) { function TestDisabledAlerts (line 1357) | func TestDisabledAlerts(t *testing.T) { function TestIsAlertDisabled (line 1395) | func TestIsAlertDisabled(t *testing.T) { function TestLabelOverrides (line 1414) | func TestLabelOverrides(t *testing.T) { function TestLabelOverridesValidation (line 1459) | func TestLabelOverridesValidation(t *testing.T) { FILE: pkg/drift/summary_test.go function TestSummary_NoDrift (line 8) | func TestSummary_NoDrift(t *testing.T) { function TestSummary_MixedSeverities (line 17) | func TestSummary_MixedSeverities(t *testing.T) { function TestSummary_OnlyInfo (line 76) | func TestSummary_OnlyInfo(t *testing.T) { FILE: pkg/export/cloudflare.go type CloudflareDeployConfig (line 32) | type CloudflareDeployConfig struct type CloudflareDeployResult (line 47) | type CloudflareDeployResult struct type CloudflareStatus (line 59) | type CloudflareStatus struct function CheckWranglerStatus (line 68) | func CheckWranglerStatus() (*CloudflareStatus, error) { function checkWranglerConfigFile (line 125) | func checkWranglerConfigFile() bool { function validWranglerConfig (line 150) | func validWranglerConfig(path string) bool { function parseWranglerWhoami (line 177) | func parseWranglerWhoami(output string) (name, id string) { function ShowWranglerInstallInstructions (line 209) | func ShowWranglerInstallInstructions() { function AttemptWranglerInstall (line 222) | func AttemptWranglerInstall() error { function AuthenticateWrangler (line 242) | func AuthenticateWrangler() error { function GenerateHeadersFile (line 261) | func GenerateHeadersFile(bundlePath string) error { function parseCloudflareURL (line 287) | func parseCloudflareURL(output string) string { function parseDeploymentID (line 307) | func parseDeploymentID(output string) string { function SuggestProjectName (line 313) | func SuggestProjectName(bundlePath string) string { function DeployToCloudflarePages (line 352) | func DeployToCloudflarePages(config CloudflareDeployConfig) (*Cloudflare... function cloudflareConfirmPrompt (line 470) | func cloudflareConfirmPrompt(question string) bool { function ListCloudflareProjects (line 482) | func ListCloudflareProjects() ([]string, error) { function DeleteCloudflareProject (line 509) | func DeleteCloudflareProject(projectName string, confirm bool) error { function OpenCloudflareInBrowser (line 525) | func OpenCloudflareInBrowser(projectName string) error { function CloudflareProjectExists (line 549) | func CloudflareProjectExists(projectName string) (bool, error) { function CreateCloudflareProject (line 570) | func CreateCloudflareProject(projectName string, productionBranch string... function EnsureCloudflareProject (line 597) | func EnsureCloudflareProject(projectName string, productionBranch string... function VerifyCloudflareDeployment (line 612) | func VerifyCloudflareDeployment(deployURL string, expectedIssueCount int... function DeployToCloudflareWithAutoCreate (line 660) | func DeployToCloudflareWithAutoCreate(config CloudflareDeployConfig, exp... FILE: pkg/export/cloudflare_test.go function TestParseWranglerWhoami (line 12) | func TestParseWranglerWhoami(t *testing.T) { function TestParseCloudflareURL (line 76) | func TestParseCloudflareURL(t *testing.T) { function TestParseDeploymentID (line 119) | func TestParseDeploymentID(t *testing.T) { function TestSuggestProjectName (line 152) | func TestSuggestProjectName(t *testing.T) { function TestGenerateHeadersFile (line 210) | func TestGenerateHeadersFile(t *testing.T) { function TestCloudflareConfirmPrompt (line 242) | func TestCloudflareConfirmPrompt(t *testing.T) { function TestCloudflareDeployConfig_Defaults (line 252) | func TestCloudflareDeployConfig_Defaults(t *testing.T) { function TestCloudflareStatus_Fields (line 269) | func TestCloudflareStatus_Fields(t *testing.T) { function TestCloudflareDeployResult_Fields (line 289) | func TestCloudflareDeployResult_Fields(t *testing.T) { function TestEnsureCloudflareProject_Integration (line 307) | func TestEnsureCloudflareProject_Integration(t *testing.T) { function TestCloudflareProjectExists_ParsesOutput (line 321) | func TestCloudflareProjectExists_ParsesOutput(t *testing.T) { function TestCreateCloudflareProject_Signature (line 328) | func TestCreateCloudflareProject_Signature(t *testing.T) { function TestVerifyCloudflareDeployment_Timeout (line 333) | func TestVerifyCloudflareDeployment_Timeout(t *testing.T) { FILE: pkg/export/deploy_flow_test.go function TestDeployToGitHubPages_SkipConfirmation_UnauthenticatedReturnsError (line 12) | func TestDeployToGitHubPages_SkipConfirmation_UnauthenticatedReturnsErro... function TestDeployToGitHubPages_BundleMissingAfterConfirmations (line 62) | func TestDeployToGitHubPages_BundleMissingAfterConfirmations(t *testing.... function TestDeployToGitHubPages_CreateRepository_ErrorSurfaced (line 124) | func TestDeployToGitHubPages_CreateRepository_ErrorSurfaced(t *testing.T) { function TestDeployToGitHubPages_AuthenticateFlow_StopsAtGitIdentityCheck (line 195) | func TestDeployToGitHubPages_AuthenticateFlow_StopsAtGitIdentityCheck(t ... function TestDeployToCloudflarePages_SkipConfirmation_UnauthenticatedReturnsError (line 271) | func TestDeployToCloudflarePages_SkipConfirmation_UnauthenticatedReturns... function TestDeployToCloudflarePages_AuthenticateFlow_ReachesBundleCheck (line 318) | func TestDeployToCloudflarePages_AuthenticateFlow_ReachesBundleCheck(t *... function TestDeployToCloudflarePages_BundleMissingAfterAccountConfirm (line 371) | func TestDeployToCloudflarePages_BundleMissingAfterAccountConfirm(t *tes... function TestDeployToCloudflarePages_DeployCommandFailureSurfaced (line 424) | func TestDeployToCloudflarePages_DeployCommandFailureSurfaced(t *testing... FILE: pkg/export/external_tools_test.go function withStdin (line 12) | func withStdin(t *testing.T, input string, fn func()) { function TestConfirmPrompt_ReadsInput (line 35) | func TestConfirmPrompt_ReadsInput(t *testing.T) { function TestCloudflareConfirmPrompt_ReadsInput (line 49) | func TestCloudflareConfirmPrompt_ReadsInput(t *testing.T) { function TestGetGitHubPagesURL_FallbackWhenGHMissing (line 57) | func TestGetGitHubPagesURL_FallbackWhenGHMissing(t *testing.T) { function TestCheckGitHubPagesStatus_GHMissingReturnsDisabled (line 69) | func TestCheckGitHubPagesStatus_GHMissingReturnsDisabled(t *testing.T) { function TestOpenInBrowser_NoCommandReturnsError (line 81) | func TestOpenInBrowser_NoCommandReturnsError(t *testing.T) { function TestOpenCloudflareInBrowser_NoCommandReturnsError (line 98) | func TestOpenCloudflareInBrowser_NoCommandReturnsError(t *testing.T) { function TestDeployToGitHubPages_NoGHReturnsError (line 115) | func TestDeployToGitHubPages_NoGHReturnsError(t *testing.T) { function TestDeployToCloudflarePages_NoNPMOrWranglerReturnsError (line 128) | func TestDeployToCloudflarePages_NoNPMOrWranglerReturnsError(t *testing.... function TestCheckWranglerStatus_NoToolsInstalled (line 140) | func TestCheckWranglerStatus_NoToolsInstalled(t *testing.T) { function TestAttemptWranglerInstall_NoNPMReturnsError (line 152) | func TestAttemptWranglerInstall_NoNPMReturnsError(t *testing.T) { function TestAuthenticateWrangler_NoWranglerReturnsError (line 160) | func TestAuthenticateWrangler_NoWranglerReturnsError(t *testing.T) { function TestListCloudflareProjects_NoWranglerReturnsError (line 168) | func TestListCloudflareProjects_NoWranglerReturnsError(t *testing.T) { function TestDeleteCloudflareProject_RequiresConfirmation (line 177) | func TestDeleteCloudflareProject_RequiresConfirmation(t *testing.T) { function TestListCloudflareProjects_ParsesOutput (line 183) | func TestListCloudflareProjects_ParsesOutput(t *testing.T) { function TestListUserRepos_GHMissingReturnsError (line 214) | func TestListUserRepos_GHMissingReturnsError(t *testing.T) { function TestDeleteRepository_RequiresConfirmation (line 223) | func TestDeleteRepository_RequiresConfirmation(t *testing.T) { function TestShowWranglerInstallInstructions_DoesNotPanic (line 229) | func TestShowWranglerInstallInstructions_DoesNotPanic(t *testing.T) { function TestShowInstallInstructions_DoesNotPanic (line 233) | func TestShowInstallInstructions_DoesNotPanic(t *testing.T) { function TestAttemptGHInstall_NoBrewReturnsError (line 237) | func TestAttemptGHInstall_NoBrewReturnsError(t *testing.T) { function TestAuthenticateGH_NoGHReturnsError (line 244) | func TestAuthenticateGH_NoGHReturnsError(t *testing.T) { function TestCreateRepository_NoGHReturnsError (line 251) | func TestCreateRepository_NoGHReturnsError(t *testing.T) { function TestEnableGitHubPages_NoGHReturnsError (line 258) | func TestEnableGitHubPages_NoGHReturnsError(t *testing.T) { function TestConfirmPrompt_DefaultNoOnEOF (line 265) | func TestConfirmPrompt_DefaultNoOnEOF(t *testing.T) { function TestCloudflareConfirmPrompt_DefaultNoOnEOF (line 273) | func TestCloudflareConfirmPrompt_DefaultNoOnEOF(t *testing.T) { function TestEnableGitHubPages_AlreadyEnabledFallbackPath (line 281) | func TestEnableGitHubPages_AlreadyEnabledFallbackPath(t *testing.T) { FILE: pkg/export/gh_pages_e2e_test.go function TestDeployToGitHubPages_E2E_Success (line 20) | func TestDeployToGitHubPages_E2E_Success(t *testing.T) { FILE: pkg/export/github.go type GitHubDeployConfig (line 21) | type GitHubDeployConfig struct type GitHubDeployResult (line 42) | type GitHubDeployResult struct type GitHubStatus (line 54) | type GitHubStatus struct function CheckGHStatus (line 64) | func CheckGHStatus() (*GitHubStatus, error) { function parseGHUsername (line 100) | func parseGHUsername(output string) string { function ShowInstallInstructions (line 124) | func ShowInstallInstructions() { function AttemptGHInstall (line 148) | func AttemptGHInstall() error { function AuthenticateGH (line 172) | func AuthenticateGH() error { function CreateRepository (line 190) | func CreateRepository(name string, private bool, description string) (st... function getRepoFullName (line 213) | func getRepoFullName(name string) (string, error) { function RepoExists (line 231) | func RepoExists(name string) bool { function RepoHasContent (line 237) | func RepoHasContent(repoFullName string) (bool, error) { function InitAndPush (line 252) | func InitAndPush(bundlePath string, repoFullName string, forceOverwrite ... function EnableGitHubPages (line 340) | func EnableGitHubPages(repoFullName string) (string, error) { function getGitHubPagesURL (line 370) | func getGitHubPagesURL(repoFullName string) (string, error) { function DeployToGitHubPages (line 397) | func DeployToGitHubPages(config GitHubDeployConfig) (*GitHubDeployResult... function confirmPrompt (line 501) | func confirmPrompt(question string) bool { type GitHubPagesStatus (line 513) | type GitHubPagesStatus struct function CheckGitHubPagesStatus (line 522) | func CheckGitHubPagesStatus(repoFullName string) (*GitHubPagesStatus, er... function ListUserRepos (line 554) | func ListUserRepos(limit int) ([]string, error) { function DeleteRepository (line 580) | func DeleteRepository(repoFullName string, confirm bool) error { function OpenInBrowser (line 596) | func OpenInBrowser(url string) error { function SuggestRepoName (line 619) | func SuggestRepoName(bundlePath string) string { constant GitHubActionsWorkflowContent (line 650) | GitHubActionsWorkflowContent = `name: Deploy static content to Pages function WriteGitHubActionsWorkflow (line 689) | func WriteGitHubActionsWorkflow(bundlePath string) error { type GitHubActionsStatus (line 704) | type GitHubActionsStatus struct function CheckGitHubActionsStatus (line 714) | func CheckGitHubActionsStatus(repoFullName string) (*GitHubActionsStatus... function SwitchToLegacyDeployment (line 757) | func SwitchToLegacyDeployment(repoFullName string) error { function PushToGHPagesBranch (line 779) | func PushToGHPagesBranch(bundlePath string, repoFullName string) error { function VerifyGitHubPagesDeployment (line 825) | func VerifyGitHubPagesDeployment(pagesURL string, expectedIssueCount int... function DeployToGitHubPagesWithFallback (line 876) | func DeployToGitHubPagesWithFallback(config GitHubDeployConfig, expected... FILE: pkg/export/github_test.go function TestParseGHUsername (line 10) | func TestParseGHUsername(t *testing.T) { function TestSuggestRepoName (line 48) | func TestSuggestRepoName(t *testing.T) { function TestGitHubDeployConfig (line 69) | func TestGitHubDeployConfig(t *testing.T) { function TestGitHubDeployResult (line 92) | func TestGitHubDeployResult(t *testing.T) { function TestGitHubStatus (line 108) | func TestGitHubStatus(t *testing.T) { function TestGitHubPagesStatus (line 135) | func TestGitHubPagesStatus(t *testing.T) { function TestCheckGHStatus_Integration (line 157) | func TestCheckGHStatus_Integration(t *testing.T) { function TestInitAndPush_MissingBundlePath (line 175) | func TestInitAndPush_MissingBundlePath(t *testing.T) { function TestDeployToGitHubPages_MissingBundlePath (line 183) | func TestDeployToGitHubPages_MissingBundlePath(t *testing.T) { function TestRepoExists_InvalidRepo (line 196) | func TestRepoExists_InvalidRepo(t *testing.T) { function TestGetRepoFullName_WithOwner (line 204) | func TestGetRepoFullName_WithOwner(t *testing.T) { function TestShowInstallInstructions (line 215) | func TestShowInstallInstructions(t *testing.T) { function TestSuggestRepoName_CurrentDir (line 221) | func TestSuggestRepoName_CurrentDir(t *testing.T) { function TestSuggestRepoName_RegularDir (line 236) | func TestSuggestRepoName_RegularDir(t *testing.T) { function TestWriteGitHubActionsWorkflow (line 249) | func TestWriteGitHubActionsWorkflow(t *testing.T) { function TestGitHubActionsWorkflowContent (line 289) | func TestGitHubActionsWorkflowContent(t *testing.T) { function TestDeleteRepository_NoConfirm (line 310) | func TestDeleteRepository_NoConfirm(t *testing.T) { function TestOpenInBrowser_TestMode (line 320) | func TestOpenInBrowser_TestMode(t *testing.T) { function TestParseGHUsername_MultipleLines (line 329) | func TestParseGHUsername_MultipleLines(t *testing.T) { function TestGitHubActionsStatus_Struct (line 362) | func TestGitHubActionsStatus_Struct(t *testing.T) { function TestListUserRepos_DefaultLimit (line 397) | func TestListUserRepos_DefaultLimit(t *testing.T) { function TestSuggestRepoName_EdgeCases (line 409) | func TestSuggestRepoName_EdgeCases(t *testing.T) { function TestWriteGitHubActionsWorkflow_Idempotent (line 437) | func TestWriteGitHubActionsWorkflow_Idempotent(t *testing.T) { FILE: pkg/export/graph_export.go type GraphExportFormat (line 15) | type GraphExportFormat constant GraphFormatJSON (line 18) | GraphFormatJSON GraphExportFormat = "json" constant GraphFormatDOT (line 19) | GraphFormatDOT GraphExportFormat = "dot" constant GraphFormatMermaid (line 20) | GraphFormatMermaid GraphExportFormat = "mermaid" type GraphExportConfig (line 24) | type GraphExportConfig struct type GraphExportResult (line 33) | type GraphExportResult struct method JSON (line 557) | func (r *GraphExportResult) JSON() ([]byte, error) { type GraphExplanation (line 45) | type GraphExplanation struct type AdjacencyGraph (line 52) | type AdjacencyGraph struct type AdjacencyNode (line 58) | type AdjacencyNode struct type AdjacencyEdge (line 68) | type AdjacencyEdge struct function ExportGraph (line 75) | func ExportGraph(issues []model.Issue, stats *analysis.GraphStats, confi... function filterIssues (line 162) | func filterIssues(issues []model.Issue, config GraphExportConfig) []mode... function extractSubgraph (line 187) | func extractSubgraph(issues []model.Issue, rootID string, maxDepth int) ... function generateDOT (line 240) | func generateDOT(issues []model.Issue, issueIDs map[string]bool, stats *... function dotStatusColor (line 327) | func dotStatusColor(status model.Status) string { function sanitizeDOTID (line 343) | func sanitizeDOTID(id string) string { function escapeDOTString (line 347) | func escapeDOTString(s string) string { function truncateRunes (line 358) | func truncateRunes(s string, max int) string { function generateMermaid (line 373) | func generateMermaid(issues []model.Issue, issueIDs map[string]bool) str... function generateAdjacency (line 484) | func generateAdjacency(issues []model.Issue, issueIDs map[string]bool, s... FILE: pkg/export/graph_export_test.go function TestExportGraph_JSON (line 14) | func TestExportGraph_JSON(t *testing.T) { function TestExportGraph_DOT (line 62) | func TestExportGraph_DOT(t *testing.T) { function TestExportGraph_DOT_EscapesBackslashesInIDs (line 119) | func TestExportGraph_DOT_EscapesBackslashesInIDs(t *testing.T) { function TestExportGraph_DOT_TruncationUTF8 (line 154) | func TestExportGraph_DOT_TruncationUTF8(t *testing.T) { function TestExportGraph_DOT_EscapesNewlinesInLabels (line 174) | func TestExportGraph_DOT_EscapesNewlinesInLabels(t *testing.T) { function TestExportGraph_Mermaid (line 196) | func TestExportGraph_Mermaid(t *testing.T) { function TestExportGraph_DOT_TombstoneUsesClosedColor (line 251) | func TestExportGraph_DOT_TombstoneUsesClosedColor(t *testing.T) { function TestExportGraph_LabelFilter (line 270) | func TestExportGraph_LabelFilter(t *testing.T) { function TestExportGraph_SubgraphRoot (line 299) | func TestExportGraph_SubgraphRoot(t *testing.T) { function TestExportGraph_EmptyResult (line 338) | func TestExportGraph_EmptyResult(t *testing.T) { function TestGraphExportResult_JSON (line 361) | func TestGraphExportResult_JSON(t *testing.T) { function TestExportGraph_DeterministicOutput (line 388) | func TestExportGraph_DeterministicOutput(t *testing.T) { FILE: pkg/export/graph_interactive.go type InteractiveGraphOptions (line 26) | type InteractiveGraphOptions struct type graphNode (line 38) | type graphNode struct type graphLink (line 88) | type graphLink struct function GenerateInteractiveGraphFilename (line 97) | func GenerateInteractiveGraphFilename(projectName string) string { function GenerateInteractiveGraphHTML (line 117) | func GenerateInteractiveGraphHTML(opts InteractiveGraphOptions) (string,... FILE: pkg/export/graph_interactive_test.go function TestGenerateInteractiveGraphFilename (line 10) | func TestGenerateInteractiveGraphFilename(t *testing.T) { function TestGenerateInteractiveGraphFilename_SpecialChars (line 24) | func TestGenerateInteractiveGraphFilename_SpecialChars(t *testing.T) { function TestGenerateInteractiveGraphHTML_EmptyIssues (line 38) | func TestGenerateInteractiveGraphHTML_EmptyIssues(t *testing.T) { function TestGenerateInteractiveGraphHTML_Basic (line 52) | func TestGenerateInteractiveGraphHTML_Basic(t *testing.T) { FILE: pkg/export/graph_render_beautiful.go function generateUltimateHTML (line 10) | func generateUltimateHTML(title, dataHash, graphDataJSON string, nodeCou... FILE: pkg/export/graph_render_beautiful_test.go function TestGenerateUltimateHTML_EscapesTitleAndProject (line 10) | func TestGenerateUltimateHTML_EscapesTitleAndProject(t *testing.T) { FILE: pkg/export/graph_render_golden_test.go type testGraphFile (line 14) | type testGraphFile struct function loadGraphFixture (line 20) | func loadGraphFixture(t *testing.T, name string) []model.Issue { function TestGraphRender_GoldenSVG (line 70) | func TestGraphRender_GoldenSVG(t *testing.T) { function TestGraphExport_GoldenMermaid (line 108) | func TestGraphExport_GoldenMermaid(t *testing.T) { FILE: pkg/export/graph_snapshot.go type GraphSnapshotOptions (line 22) | type GraphSnapshotOptions struct function SaveGraphSnapshot (line 35) | func SaveGraphSnapshot(opts GraphSnapshotOptions) error { type layoutNode (line 82) | type layoutNode struct type layoutEdge (line 94) | type layoutEdge struct type layoutResult (line 99) | type layoutResult struct type summaryInfo (line 108) | type summaryInfo struct function buildLayout (line 116) | func buildLayout(opts GraphSnapshotOptions) layoutResult { function topByMetric (line 262) | func topByMetric(m map[string]float64) string { function topByMetricWithFallback (line 283) | func topByMetricWithFallback(m map[string]float64, fallbackIDs []string)... function statusColor (line 316) | func statusColor(s model.Status) color.RGBA { function renderPNG (line 331) | func renderPNG(opts GraphSnapshotOptions, layout layoutResult) error { function renderSVG (line 373) | func renderSVG(opts GraphSnapshotOptions, layout layoutResult) error { function renderSVGToWriter (line 386) | func renderSVGToWriter(w io.Writer, layout layoutResult) error { function drawNode (line 431) | func drawNode(dc *gg.Context, n layoutNode) { function drawArrow (line 447) | func drawArrow(dc *gg.Context, x, y, dx, dy float64) { function drawSummaryBlock (line 457) | func drawSummaryBlock(dc *gg.Context, layout layoutResult) { function drawLegend (line 466) | func drawLegend(dc *gg.Context, layout layoutResult) { function drawLegendRow (line 486) | func drawLegendRow(dc *gg.Context, x, y float64, c color.RGBA, label str... function drawSummaryBlockSVG (line 497) | func drawSummaryBlockSVG(canvas *svg.SVG, layout layoutResult) { function drawLegendSVG (line 504) | func drawLegendSVG(canvas *svg.SVG, layout layoutResult) { function drawLegendRowSVG (line 517) | func drawLegendRowSVG(canvas *svg.SVG, x, y int, c color.RGBA, label str... function truncate (line 524) | func truncate(s string, max int) string { function css (line 538) | func css(c color.RGBA) string { FILE: pkg/export/graph_snapshot_bench_test.go function generateLayeredSnapshotIssues (line 14) | func generateLayeredSnapshotIssues(levels, perLevel, fanIn int) []model.... function prepareSnapshotBench (line 74) | func prepareSnapshotBench(levels, perLevel int) ([]model.Issue, *analysi... function BenchmarkGraphSnapshot_BuildLayout_Layered1000 (line 82) | func BenchmarkGraphSnapshot_BuildLayout_Layered1000(b *testing.B) { function BenchmarkGraphSnapshot_BuildLayout_Layered2000 (line 101) | func BenchmarkGraphSnapshot_BuildLayout_Layered2000(b *testing.B) { function BenchmarkGraphSnapshot_RenderSVG_Layered1000 (line 120) | func BenchmarkGraphSnapshot_RenderSVG_Layered1000(b *testing.B) { function BenchmarkGraphSnapshot_BuildLayoutAndRenderSVG_Layered1000 (line 143) | func BenchmarkGraphSnapshot_BuildLayoutAndRenderSVG_Layered1000(b *testi... FILE: pkg/export/graph_snapshot_svg_test.go function TestSVG_ValidXMLStructure (line 21) | func TestSVG_ValidXMLStructure(t *testing.T) { function TestSVG_HasSVGRootElement (line 56) | func TestSVG_HasSVGRootElement(t *testing.T) { function TestSVG_HasViewportDimensions (line 104) | func TestSVG_HasViewportDimensions(t *testing.T) { function TestSVG_NodeRectanglesRendered (line 165) | func TestSVG_NodeRectanglesRendered(t *testing.T) { function TestSVG_NodeLabelsPresent (line 212) | func TestSVG_NodeLabelsPresent(t *testing.T) { function TestSVG_StatusColorsApplied (line 262) | func TestSVG_StatusColorsApplied(t *testing.T) { function TestSVG_PageRankDisplayed (line 309) | func TestSVG_PageRankDisplayed(t *testing.T) { function TestSVG_EdgesRenderedAsLines (line 349) | func TestSVG_EdgesRenderedAsLines(t *testing.T) { function TestSVG_ArrowMarkersPresent (line 385) | func TestSVG_ArrowMarkersPresent(t *testing.T) { function TestSVG_MultipleEdgesRendered (line 421) | func TestSVG_MultipleEdgesRendered(t *testing.T) { function TestSVG_NonBlockingDepsIgnored (line 461) | func TestSVG_NonBlockingDepsIgnored(t *testing.T) { function TestSVG_LegendPresent (line 504) | func TestSVG_LegendPresent(t *testing.T) { function TestSVG_SummaryBlockPresent (line 547) | func TestSVG_SummaryBlockPresent(t *testing.T) { function TestSVG_DefaultTitleWhenEmpty (line 602) | func TestSVG_DefaultTitleWhenEmpty(t *testing.T) { function TestSVG_CompactVsRoomyPreset (line 642) | func TestSVG_CompactVsRoomyPreset(t *testing.T) { function TestSVG_LargeGraphLayout (line 691) | func TestSVG_LargeGraphLayout(t *testing.T) { function TestSaveGraphSnapshot_SVG_Escaping (line 750) | func TestSaveGraphSnapshot_SVG_Escaping(t *testing.T) { function TestSVG_SpecialCharactersInTitle (line 789) | func TestSVG_SpecialCharactersInTitle(t *testing.T) { function TestSVG_UnicodeCharacters (line 824) | func TestSVG_UnicodeCharacters(t *testing.T) { function TestSVG_SingleNode (line 874) | func TestSVG_SingleNode(t *testing.T) { function TestSVG_DisconnectedGraph (line 915) | func TestSVG_DisconnectedGraph(t *testing.T) { function TestSVG_LongTitleTruncation (line 961) | func TestSVG_LongTitleTruncation(t *testing.T) { FILE: pkg/export/graph_snapshot_test.go function TestSaveGraphSnapshot_SVGAndPNG (line 13) | func TestSaveGraphSnapshot_SVGAndPNG(t *testing.T) { function TestSaveGraphSnapshot_InvalidFormat (line 54) | func TestSaveGraphSnapshot_InvalidFormat(t *testing.T) { function TestSaveGraphSnapshot_EmptyIssues (line 71) | func TestSaveGraphSnapshot_EmptyIssues(t *testing.T) { function TestSaveGraphSnapshot_NilStats (line 87) | func TestSaveGraphSnapshot_NilStats(t *testing.T) { function TestSaveGraphSnapshot_EmptyPath (line 101) | func TestSaveGraphSnapshot_EmptyPath(t *testing.T) { function TestSaveGraphSnapshot_FormatInference (line 117) | func TestSaveGraphSnapshot_FormatInference(t *testing.T) { function TestSaveGraphSnapshot_RoomyPreset (line 161) | func TestSaveGraphSnapshot_RoomyPreset(t *testing.T) { function TestSaveGraphSnapshot_WithTitle (line 192) | func TestSaveGraphSnapshot_WithTitle(t *testing.T) { function TestSaveGraphSnapshot_AllStatuses (line 214) | func TestSaveGraphSnapshot_AllStatuses(t *testing.T) { function TestTruncate (line 238) | func TestTruncate(t *testing.T) { function TestCss (line 266) | func TestCss(t *testing.T) { function TestTopByMetric (line 290) | func TestTopByMetric(t *testing.T) { function hasSubstr (line 312) | func hasSubstr(s, substr string) bool { function TestStatusColor (line 321) | func TestStatusColor(t *testing.T) { function TestBuildLayout_MinDimensions (line 348) | func TestBuildLayout_MinDimensions(t *testing.T) { FILE: pkg/export/init_and_push_test.go function TestInitAndPush_UsesForceFallbackOnPushError (line 12) | func TestInitAndPush_UsesForceFallbackOnPushError(t *testing.T) { function TestInitAndPush_RequiresForceOverwriteWhenRepoHasContent (line 95) | func TestInitAndPush_RequiresForceOverwriteWhenRepoHasContent(t *testing... FILE: pkg/export/integration_test.go function TestExport_EndToEnd (line 18) | func TestExport_EndToEnd(t *testing.T) { function TestExport_FTS5AdvancedSearch (line 102) | func TestExport_FTS5AdvancedSearch(t *testing.T) { function TestExport_LargeDataChunking (line 159) | func TestExport_LargeDataChunking(t *testing.T) { function TestExport_UnicodeAndSpecialCharacters (line 227) | func TestExport_UnicodeAndSpecialCharacters(t *testing.T) { function TestExport_DependencyIntegrity (line 265) | func TestExport_DependencyIntegrity(t *testing.T) { function TestExport_QueryPerformance (line 337) | func TestExport_QueryPerformance(t *testing.T) { function createRealisticTestIssues (line 397) | func createRealisticTestIssues() []*model.Issue { function createRealisticTestDeps (line 421) | func createRealisticTestDeps() []*model.Dependency { function createIssue (line 433) | func createIssue(id, title, desc string, status model.Status, priority i... FILE: pkg/export/livereload.go type LiveReloadHub (line 19) | type LiveReloadHub struct method Start (line 58) | func (h *LiveReloadHub) Start() error { method Stop (line 78) | func (h *LiveReloadHub) Stop() { method ClientCount (line 92) | func (h *LiveReloadHub) ClientCount() int { method watchLoop (line 99) | func (h *LiveReloadHub) watchLoop() { method notifyClients (line 134) | func (h *LiveReloadHub) notifyClients() { method SSEHandler (line 148) | func (h *LiveReloadHub) SSEHandler() http.HandlerFunc { function NewLiveReloadHub (line 37) | func NewLiveReloadHub(bundlePath string) (*LiveReloadHub, error) { constant LiveReloadScript (line 199) | LiveReloadScript = `