Add tool quality report contract
Deploy / deploy (push) Successful in 1m40s
CI / Rust Checks (push) Failing after 4m48s
CI / Frontend E2E (push) Has been skipped
CI / Deployment Manifests (push) Has been skipped
CI / UI Checks (push) Has been skipped

This commit is contained in:
github-ops
2026-06-20 19:50:46 +00:00
parent 906b6c1aea
commit 3b61d7a25d
8 changed files with 110 additions and 4 deletions
+40
View File
@@ -0,0 +1,40 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ToolQualitySeverity {
Info,
Warning,
Error,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ToolQualityFinding {
pub severity: ToolQualitySeverity,
pub code: String,
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub suggested_action: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub field_path: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ToolQualityReport {
pub blocking: bool,
pub findings: Vec<ToolQualityFinding>,
}
impl ToolQualityReport {
pub fn new(findings: Vec<ToolQualityFinding>) -> Self {
let blocking = findings
.iter()
.any(|finding| finding.severity == ToolQualitySeverity::Error);
Self { blocking, findings }
}
pub fn empty() -> Self {
Self::new(Vec::new())
}
}