///|
fn compatible_v2_version(v : Json?) -> Bool {
match v {
Some(String(s)) => ["0.0.9", "0.0.10", "0.0.11", "0.1.0"].contains(s)
_ => false
}
}
///|
fn replay_report_v2(
history_text : String,
root : Map[String, Json],
) -> String raise {
if root.get("tool") != Some("MoonTxnWitness".to_json()) ||
root.get("algorithm") != Some("bounded-register-v2.1".to_json()) ||
!compatible_v2_version(root.get("version")) {
return replay_failure("Unsupported v2 algorithm or engine header")
}
let options = parse_analysis_options(
required(root, "analysisOptions", "report").stringify(),
)
if root.get("effectiveLimits") != Some(effective_limits(options)) {
return replay_failure(
"Recorded effective limits differ from analysis options",
)
}
let expected = object_fields(
analysis_result_json(
options_input(history_text, root.at("analysisOptions").stringify()),
),
"recomputed",
)
let checked = [
"status", "model", "complete", "stats", "findings", "edges", "witness", "serialOrder",
"versionOrders", "versionOrderSources", "search", "effectiveLimits", "analysisOptions",
"algorithm",
]
for name in checked {
if root.get(name) != expected.get(name) {
return replay_failure("Recomputed v2 semantic field differs: " + name)
}
}
let result : Json = {
"valid": true,
"reason": "The bounded v2 algorithm reproduces the semantic result under the recorded effective budgets.",
"status": expected.at("status"),
"checkedFields": checked.to_json(),
"currentEngine": version().to_json(),
"recordedEngine": root.at("version"),
"scope": "semantic replay; runtime metrics, presentation and source identity are not authenticated",
}
result.stringify()
}