pub struct CoChangeMatrix { /* private fields */ }Expand description
Sparse co-change matrix with bounded entry count.
Bootstrapped from graph structure (BFS depth 3 from each node),
refined with real co-change observations via record_co_change.
FM-TMP-001: hard cap on total entries prevents O(N^2) memory.
Implementations§
Source§impl CoChangeMatrix
impl CoChangeMatrix
Sourcepub fn bootstrap(graph: &Graph, budget: u64) -> M1ndResult<Self>
pub fn bootstrap(graph: &Graph, budget: u64) -> M1ndResult<Self>
Bootstrap co-change from graph structure (BFS depth 3 from each node). Replaces: temporal_v2.py CoChangeMatrix.bootstrap()
Sourcepub fn record_co_change(
&mut self,
source: NodeId,
target: NodeId,
_timestamp: f64,
) -> M1ndResult<()>
pub fn record_co_change( &mut self, source: NodeId, target: NodeId, _timestamp: f64, ) -> M1ndResult<()>
Record an observed co-change between two nodes. Updates coupling strength. Respects budget cap (FM-TMP-001). Replaces: temporal_v2.py CoChangeMatrix.record_co_change()
Sourcepub fn predict(&self, changed_node: NodeId, top_k: usize) -> Vec<CoChangeEntry>
pub fn predict(&self, changed_node: NodeId, top_k: usize) -> Vec<CoChangeEntry>
Predict co-change partners for a changed node, sorted by coupling strength. Replaces: temporal_v2.py CoChangeMatrix.predict()
Sourcepub fn num_entries(&self) -> u64
pub fn num_entries(&self) -> u64
Number of entries in the matrix.
Sourcepub fn populate_from_commit_groups(
&mut self,
graph: &Graph,
commit_groups: &[Vec<String>],
) -> M1ndResult<()>
pub fn populate_from_commit_groups( &mut self, graph: &Graph, commit_groups: &[Vec<String>], ) -> M1ndResult<()>
Populate co-change data from git commit groups. Each group is a list of external_ids (e.g. “file::src/main.rs”) that changed together. Resolves IDs via the graph, then records co-change for each pair in the group.