test_that("proof hashes verify and detect tampering", { ref <- stat_reference(10.4, "unemployment rate", "Spain", "2025", "percent", "Eurostat") clm <- stat_claim(10.4, "unemployment rate", "Spain", "2025", "%", "Eurostat") prf <- proof_bundle(audit_stat_ai(ref, clm)) expect_true(verify_proof(prf)$valid) bad <- prf bad$claim$value <- 11.4 expect_false(verify_proof(bad)$valid) }) test_that("proof JSON round-trip remains verifiable", { ref <- stat_reference(10.4, "unemployment rate", "Spain", "2025", "percent", "Eurostat") clm <- stat_claim(10.4, "unemployment rate", "Spain", "2025", "%", "Eurostat") prf <- proof_bundle(audit_stat_ai(ref, clm)) f <- tempfile(fileext = ".json") write_proof(prf, f) z <- read_proof(f) expect_true(verify_proof(z)$valid) }) test_that("S3 claim and reference objects serialize safely in proofs", { ref <- stat_reference(10.4, "unemployment rate", "Spain", "2025", "percent", "World Bank") clm <- stat_claim(10.4, "unemployment rate", "Spain", "2025", "%", "World Bank") aud <- audit_stat_ai(ref, clm) expect_no_error(prf <- certify_claim(aud)) expect_s3_class(prf, "stat_proof") expect_true(verify_proof(prf)$valid) bad <- prf bad$claim$value <- bad$claim$value + 10 expect_false(verify_proof(bad)$valid) })