#![allow(dead_code)]
extern crate std;
use std::{format, string::String, vec::Vec};
use serde::Deserialize;
pub const SUPPORTED_SCHEMA_VERSIONS: &[u32] = &[1];
pub const LEAF_FLOOR_CONSERVATION_TARGET: u64 = 65536;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum GeneratedProfileRefusal {
UnrecognizedSchemaVersion,
PayloadDigestMismatch,
ManifestPayloadDisagreement,
DimensionMismatch,
TableLengthMismatch,
IndexOutOfBounds,
RegistryNotUnique,
NumericProfileMismatch,
FormulaRegistryMismatch,
FloorTableNotConserved,
}
#[derive(Debug, Deserialize)]
pub struct GeneratedManifest {
pub schema_version: u32,
pub digests: ManifestDigests,
pub dimensions: ManifestDimensions,
pub generator_source_order: Vec<String>,
pub numeric_profile: NumericProfile,
}
#[derive(Debug, Deserialize)]
pub struct ManifestDigests {
pub rdf_digest: String,
pub admission_digest: String,
pub generator_digest: String,
pub numeric_profile_digest: String,
pub formula_registry_digest: String,
pub generated_payload_digest: String,
}
#[derive(Debug, Deserialize)]
pub struct ManifestDimensions {
#[serde(rename = "F")]
pub f: usize,
#[serde(rename = "K")]
pub k: usize,
#[serde(rename = "N")]
pub n: usize,
#[serde(rename = "Q")]
pub q: usize,
pub leaf_floor_n_max: usize,
}
#[derive(Debug, Deserialize)]
pub struct NumericProfile {
pub precision: u32,
pub q16_16_scale: u64,
pub rounding: String,
pub signed_max: i64,
pub signed_min: i64,
pub unsigned_max: u64,
pub unsigned_min: u64,
}
pub struct GeneratedArtifact<'a> {
pub manifest: &'a GeneratedManifest,
pub generated_source_bytes: &'a [u8],
}
fn blake3_digest_string(bytes: &[u8]) -> String {
let hash = blake3::hash(bytes);
let mut out = String::with_capacity(7 + 64);
out.push_str("blake3:");
out.push_str(&hash.to_hex());
out
}
fn extract_usize_const(source: &str, name: &str) -> Option<usize> {
let needle = format!("pub const {name}: usize = ");
let start = source.find(&needle)? + needle.len();
let rest = &source[start..];
let end = rest.find(';')?;
rest[..end].trim().parse().ok()
}
fn extract_u32_array(source: &str, name: &str) -> Option<Vec<u64>> {
let needle = format!("pub static {name}: ");
let decl_start = source.find(&needle)?;
let rest = &source[decl_start..];
let bracket_start = rest.find('[')?;
let after_type = &rest[bracket_start..];
let eq_pos = after_type.find('=')?;
let init = &after_type[eq_pos + 1..];
let list_start = init.find('[')?;
let list_end = init.find(']')?;
let list = &init[list_start + 1..list_end];
list.split(',')
.map(|s| s.trim())
.filter(|s| !s.is_empty())
.map(|s| s.parse::<u64>().ok())
.collect()
}
pub fn verify_generated_profile(
artifact: &GeneratedArtifact<'_>,
) -> Result<(), GeneratedProfileRefusal> {
let manifest = artifact.manifest;
if !SUPPORTED_SCHEMA_VERSIONS.contains(&manifest.schema_version) {
return Err(GeneratedProfileRefusal::UnrecognizedSchemaVersion);
}
let declared = &manifest.digests.generated_payload_digest;
let hex_part = declared
.strip_prefix("blake3:")
.ok_or(GeneratedProfileRefusal::ManifestPayloadDisagreement)?;
if hex_part.len() != 64 || !hex_part.bytes().all(|b| b.is_ascii_hexdigit()) {
return Err(GeneratedProfileRefusal::ManifestPayloadDisagreement);
}
let recomputed = blake3_digest_string(artifact.generated_source_bytes);
if &recomputed != declared {
return Err(GeneratedProfileRefusal::PayloadDigestMismatch);
}
let source_text = core::str::from_utf8(artifact.generated_source_bytes)
.map_err(|_| GeneratedProfileRefusal::DimensionMismatch)?;
let expected_dims = [
("N", manifest.dimensions.n),
("F", manifest.dimensions.f),
("K", manifest.dimensions.k),
("Q", manifest.dimensions.q),
("LEAF_FLOOR_N_MAX", manifest.dimensions.leaf_floor_n_max),
];
for (name, expected) in expected_dims {
match extract_usize_const(source_text, name) {
Some(actual) if actual == expected => {}
_ => return Err(GeneratedProfileRefusal::DimensionMismatch),
}
}
let base = extract_u32_array(source_text, "LEAF_FLOOR_BASE")
.ok_or(GeneratedProfileRefusal::TableLengthMismatch)?;
let remainder = extract_u32_array(source_text, "LEAF_FLOOR_REMAINDER")
.ok_or(GeneratedProfileRefusal::TableLengthMismatch)?;
if base.len() != remainder.len() || base.len() != manifest.dimensions.leaf_floor_n_max {
return Err(GeneratedProfileRefusal::TableLengthMismatch);
}
for (i, (b, r)) in base.iter().zip(remainder.iter()).enumerate() {
let n_leaves = (i as u64) + 1;
let sum = b.checked_mul(n_leaves).and_then(|p| p.checked_add(*r));
match sum {
Some(s) if s == LEAF_FLOOR_CONSERVATION_TARGET => {}
_ => return Err(GeneratedProfileRefusal::FloorTableNotConserved),
}
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
fn manifest(json: &str) -> GeneratedManifest {
serde_json::from_str(json).expect("fixture manifest must parse")
}
const GENERATED_SOURCE: &[u8] = b"pub const N: usize = 2;\n\
pub const F: usize = 1;\n\
pub const K: usize = 1;\n\
pub const Q: usize = 1;\n\
pub const LEAF_FLOOR_N_MAX: usize = 2;\n\
pub static LEAF_FLOOR_BASE: [u32; LEAF_FLOOR_N_MAX] = [65536, 32768];\n\
pub static LEAF_FLOOR_REMAINDER: [u32; LEAF_FLOOR_N_MAX] = [0, 0];\n";
fn valid_digest() -> String {
blake3_digest_string(GENERATED_SOURCE)
}
const FILLER_DIGEST: &str =
"blake3:0000000000000000000000000000000000000000000000000000000000000000";
fn valid_manifest_json(payload_digest: &str) -> String {
format!(
r#"{{
"schema_version": 1,
"digests": {{
"rdf_digest": "{FILLER_DIGEST}",
"admission_digest": "{FILLER_DIGEST}",
"generator_digest": "{FILLER_DIGEST}",
"numeric_profile_digest": "{FILLER_DIGEST}",
"formula_registry_digest": "{FILLER_DIGEST}",
"generated_payload_digest": "{payload_digest}"
}},
"dimensions": {{
"F": 1,
"K": 1,
"N": 2,
"Q": 1,
"leaf_floor_n_max": 2
}},
"generator_source_order": ["tools/cmca-generator/generator.py"],
"numeric_profile": {{
"precision": 80,
"q16_16_scale": 65536,
"rounding": "ROUND_HALF_EVEN",
"signed_max": 2147483647,
"signed_min": -2147483648,
"unsigned_max": 4294967295,
"unsigned_min": 0
}}
}}"#
)
}
#[test]
fn valid_profile_accepted() {
let digest = valid_digest();
let m = manifest(&valid_manifest_json(&digest));
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: GENERATED_SOURCE,
};
assert_eq!(verify_generated_profile(&artifact), Ok(()));
}
#[test]
fn unknown_schema_version_refused() {
let digest = valid_digest();
let json = valid_manifest_json(&digest)
.replace("\"schema_version\": 1", "\"schema_version\": 999");
let m = manifest(&json);
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: GENERATED_SOURCE,
};
assert_eq!(
verify_generated_profile(&artifact),
Err(GeneratedProfileRefusal::UnrecognizedSchemaVersion)
);
}
#[test]
fn payload_digest_mismatch_refused() {
let wrong_digest = format!("blake3:{}", "1".repeat(64));
let m = manifest(&valid_manifest_json(&wrong_digest));
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: GENERATED_SOURCE,
};
assert_eq!(
verify_generated_profile(&artifact),
Err(GeneratedProfileRefusal::PayloadDigestMismatch)
);
}
#[test]
fn malformed_digest_string_refused() {
let m = manifest(&valid_manifest_json("not-a-blake3-digest"));
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: GENERATED_SOURCE,
};
assert_eq!(
verify_generated_profile(&artifact),
Err(GeneratedProfileRefusal::ManifestPayloadDisagreement)
);
}
#[test]
fn wrong_dimensions_refused() {
let digest = valid_digest();
let json = valid_manifest_json(&digest).replace("\"N\": 2", "\"N\": 3");
let m = manifest(&json);
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: GENERATED_SOURCE,
};
assert_eq!(
verify_generated_profile(&artifact),
Err(GeneratedProfileRefusal::DimensionMismatch)
);
}
#[test]
fn floor_table_not_conserved_refused() {
const BROKEN_SOURCE: &[u8] = b"pub const N: usize = 2;\n\
pub const F: usize = 1;\n\
pub const K: usize = 1;\n\
pub const Q: usize = 1;\n\
pub const LEAF_FLOOR_N_MAX: usize = 2;\n\
pub static LEAF_FLOOR_BASE: [u32; LEAF_FLOOR_N_MAX] = [65536, 32768];\n\
pub static LEAF_FLOOR_REMAINDER: [u32; LEAF_FLOOR_N_MAX] = [0, 1];\n";
let digest = blake3_digest_string(BROKEN_SOURCE);
let m = manifest(&valid_manifest_json(&digest));
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: BROKEN_SOURCE,
};
assert_eq!(
verify_generated_profile(&artifact),
Err(GeneratedProfileRefusal::FloorTableNotConserved)
);
}
#[test]
fn smoke_test_against_real_mfw_artifact() {
let dir = concat!(
env!("CARGO_MANIFEST_DIR"),
"/generated-artifact/case-studies"
);
let manifest_path = format!("{dir}/cmca_generation_manifest.json");
let source_path = format!("{dir}/cmca_generated.rs");
let manifest_bytes = std::fs::read_to_string(&manifest_path)
.unwrap_or_else(|e| panic!("expected real manifest at {manifest_path}: {e}"));
let source_bytes = std::fs::read(&source_path)
.unwrap_or_else(|e| panic!("expected real generated source at {source_path}: {e}"));
let m: GeneratedManifest =
serde_json::from_str(&manifest_bytes).expect("real manifest must parse");
let artifact = GeneratedArtifact {
manifest: &m,
generated_source_bytes: &source_bytes,
};
assert_eq!(verify_generated_profile(&artifact), Ok(()));
}
}