feat(nvim,telemetry): implement ADR-0102 circuit breaker and ADR-0103 knowledge graph projection
This commit is contained in:
1 parent
3d77e60a02
commit
ec977c24dd
7 files changed
+692
-11
No files matched your search
@@ -2841,3 +2841,64 @@ mod tests {
|
||||
assert!(pre_res.contains("active_tasks"));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_tech_debt_priority_aware_eviction() {
|
||||
let dir = tempfile::tempdir().unwrap();
|
||||
let state = Arc::new(MemoryState::new(dir.path().to_str().unwrap()));
|
||||
let handler = TechDebtHandler;
|
||||
|
||||
// Populate 300 tech debts: 1 critical, 1 resolved, 298 low
|
||||
state.code.tech_debts.modify(|debts| {
|
||||
debts.push(crate::models::TechDebt {
|
||||
id: "critical-debt".to_string(),
|
||||
namespace: "global".to_string(),
|
||||
description: "Critical security issue".to_string(),
|
||||
severity: Some("critical".to_string()),
|
||||
is_resolved: false,
|
||||
created_at: 100,
|
||||
..Default::default()
|
||||
});
|
||||
debts.push(crate::models::TechDebt {
|
||||
id: "resolved-debt".to_string(),
|
||||
namespace: "global".to_string(),
|
||||
description: "Old resolved issue".to_string(),
|
||||
severity: Some("high".to_string()),
|
||||
is_resolved: true,
|
||||
created_at: 50,
|
||||
..Default::default()
|
||||
});
|
||||
for i in 0..298 {
|
||||
debts.push(crate::models::TechDebt {
|
||||
id: format!("low-debt-{}", i),
|
||||
namespace: "global".to_string(),
|
||||
description: format!("Low debt {}", i),
|
||||
severity: Some("low".to_string()),
|
||||
is_resolved: false,
|
||||
created_at: 200 + i,
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Add 301st item: should evict the resolved debt first
|
||||
let res = handler
|
||||
.execute(
|
||||
serde_json::json!({
|
||||
"action": "log",
|
||||
"description": "New medium debt",
|
||||
"severity": "medium"
|
||||
}),
|
||||
state.clone(),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(res, "Tech debt logged");
|
||||
|
||||
state.code.tech_debts.read_with(|debts| {
|
||||
assert_eq!(debts.len(), 300);
|
||||
assert!(debts.iter().any(|d| d.id == "critical-debt"), "Critical unresolved debt must be retained");
|
||||
assert!(!debts.iter().any(|d| d.id == "resolved-debt"), "Resolved debt should have been evicted first");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user