feat: freeze typed metrics registry and bounded exemplars

This commit is contained in:
2026-08-14 11:52:00 +03:00
parent 17c8e3a8f0
commit 8e709acea9
29 changed files with 1690 additions and 103 deletions
@@ -0,0 +1,36 @@
use std::{fs, process::ExitCode};
const SNAPSHOT: &str = "docs/schemas/metrics-registry-v1.json";
fn main() -> ExitCode {
let rendered = match crank_metrics::render_metric_schema_json() {
Ok(rendered) => rendered,
Err(_) => {
eprintln!("metrics_contract_invalid");
return ExitCode::FAILURE;
}
};
let args = std::env::args().skip(1).collect::<Vec<_>>();
if args.is_empty() {
print!("{rendered}");
return ExitCode::SUCCESS;
}
if args.as_slice() != ["--check"] {
eprintln!("metrics_contract_invalid_command");
return ExitCode::FAILURE;
}
match fs::read_to_string(SNAPSHOT) {
Ok(snapshot) if snapshot == rendered => {
println!("metrics_contract_ok schema_version=1");
ExitCode::SUCCESS
}
Ok(_) => {
eprintln!("metrics_contract_drift");
ExitCode::FAILURE
}
Err(_) => {
eprintln!("metrics_contract_missing");
ExitCode::FAILURE
}
}
}