Propagation Cost
Propagation Cost
Section titled “Propagation Cost”Overview
Section titled “Overview”propagation_cost is the canonical change-propagation metric with three channels:
- Structural (import graph reachability)
- Temporal (git co-change reachability)
- Hybrid (weighted structural + temporal)
The canonical system key is:
propagation_cost.system.ratio
Key Groups
Section titled “Key Groups”System
Section titled “System”propagation_cost.system.ratiopropagation_cost.system.structural_weight_effectivepropagation_cost.system.temporal_weight_effective
Structural module
Section titled “Structural module”propagation_cost.structural.module.ratiopropagation_cost.structural.module.reachable_pairspropagation_cost.structural.module.total_pairspropagation_cost.structural.module.k1_ratiopropagation_cost.structural.module.k2_ratiopropagation_cost.structural.module.k3_ratiopropagation_cost.structural.module.distance_decayed_ratiopropagation_cost.structural.module.out_reach_p50propagation_cost.structural.module.out_reach_p90propagation_cost.structural.module.in_reach_p50propagation_cost.structural.module.in_reach_p90propagation_cost.structural.module.top_out_hubspropagation_cost.structural.module.top_out_hubs_tablepropagation_cost.structural.module.top_in_hubspropagation_cost.structural.module.top_in_hubs_table
Temporal module
Section titled “Temporal module”propagation_cost.temporal.module.availablepropagation_cost.temporal.module.commit_countpropagation_cost.temporal.module.cochange_thresholdpropagation_cost.temporal.module.ratiopropagation_cost.temporal.module.reachable_pairspropagation_cost.temporal.module.total_pairs
Hybrid module
Section titled “Hybrid module”propagation_cost.hybrid.module.ratiopropagation_cost.hybrid.module.structural_weightpropagation_cost.hybrid.module.temporal_weightpropagation_cost.hybrid.module.divergence_abs
propagation_cost.system.ratio is the canonical system key and currently equals
propagation_cost.hybrid.module.ratio.
Structural function
Section titled “Structural function”propagation_cost.structural.function.ratiopropagation_cost.structural.function.reachable_pairspropagation_cost.structural.function.total_pairspropagation_cost.structural.function.callgraph_precisionpropagation_cost.structural.function.confidencepropagation_cost.structural.function.ratio_lowpropagation_cost.structural.function.ratio_highpropagation_cost.structural.function.betweenness_maxpropagation_cost.structural.function.betweenness_avgpropagation_cost.structural.function.betweenness_skippedpropagation_cost.structural.function.top_betweennesspropagation_cost.structural.function.top_betweenness_table
Traffic-weighted function
Section titled “Traffic-weighted function”propagation_cost.traffic.function.ratiopropagation_cost.traffic.function.reachable_weightpropagation_cost.traffic.function.total_weightpropagation_cost.traffic.function.telemetry_coverage
Configuration
Section titled “Configuration”metrics: - id: propagation_cost enabled: true config: cochange_threshold: 2 hybrid_weights: structural: 0.6 temporal: 0.4 k_hops: [1, 2, 3] distance_decay_alpha: 0.5 betweenness: max_nodes: 2000 finding_thresholds: system_high: 0.5 system_critical: 0.7 temporal_high: 0.5 divergence_abs: 0.2 function_confidence_low: 0.5Semantics and Normalization
Section titled “Semantics and Normalization”hybrid_weightsare normalized to sum to1.0(fallback to0.6/0.4if both are0).k_hopsis sanitized to unique sorted integers in[1, 10](default[1, 2, 3]).distance_decay_alphais clamped to(0, 1].- If git history is unavailable (
temporal.module.commit_count == 0), temporal values stay0, effective hybrid weights become structural=1.0and temporal=0.0, andpropagation_cost.system.ratiofalls back topropagation_cost.structural.module.ratio.
Findings
Section titled “Findings”The metric emits deterministic findings with rule_id:
arxo/propagation-cost/high-systemarxo/propagation-cost/high-temporalarxo/propagation-cost/structural-temporal-divergencearxo/propagation-cost/low-callgraph-confidence
Breaking Migration
Section titled “Breaking Migration”pc.system->propagation_cost.system.ratiopropagation_cost.module.ratio->propagation_cost.system.ratiofor risk/budget consumerspropagation_cost.structural.module.ratiofor structural-only consumers
propagation_cost.function.ratio->propagation_cost.structural.function.ratiopropagation_cost.function.precision_ratio->propagation_cost.structural.function.callgraph_precisionpropagation_cost.function.traffic_weighted_ratio->propagation_cost.traffic.function.ratio