fix(#704): DiagnosticCheck.json_value now emits stable snake_case id field; doctor checks addressable without scraping name prose

This commit is contained in:
YeonGyu-Kim
2026-05-25 23:04:06 +09:00
parent f6cab2711f
commit 8f809d9a9e
2 changed files with 13 additions and 0 deletions

View File

@@ -2018,7 +2018,14 @@ impl DiagnosticCheck {
}
fn json_value(&self) -> Value {
// Derive a stable snake_case id from the check name for machine-readable keying (#704).
let id = self
.name
.to_ascii_lowercase()
.replace(' ', "_")
.replace('-', "_");
let mut value = Map::from_iter([
("id".to_string(), Value::String(id.clone())),
(
"name".to_string(),
Value::String(self.name.to_ascii_lowercase()),

View File

@@ -536,6 +536,12 @@ fn doctor_and_resume_status_emit_json_when_requested() {
assert!(check["status"].as_str().is_some());
assert!(check["summary"].as_str().is_some());
assert!(check["details"].is_array());
// #704: each check must have a stable snake_case id
assert!(
check["id"].as_str().is_some(),
"doctor check missing stable id field: {:?}",
check["name"]
);
check["name"].as_str().expect("doctor check name")
})
.collect::<Vec<_>>();