"""A formative local acceptance check; not a platform grader/certificate.""" import argparse import importlib def check(report): assert report["evidence_kind"] == "synthetic_local_capstone_no_llm" assert report["baseline"]["total"] >= 8 and report["baseline"]["all_gates_pass"] assert report["baseline"]["correct"] == report["baseline"]["total"] assert report["candidate"]["total"] == report["baseline"]["total"] assert 0 <= report["candidate"]["correct"] <= report["candidate"]["total"] assert report["candidate"]["all_gates_pass"] assert report["recovery"]["before_phase"] == "IN_FLIGHT" assert report["recovery"]["after_reservations"] > report["recovery"]["before_reservations"] assert report["review"]["receipt"]["real_writes"] == 0 assert report["review"]["rejected_phase"] == "REJECTED" and report["review"]["rejected_receipt"] is None assert report["review"]["saved_receipt_replayed"] added = report["added_case"] assert type(added["observed_year"]) is int and 1000 <= added["observed_year"] <= 2100 assert type(added["catalogue_year"]) is int and 1000 <= added["catalogue_year"] <= 2100 assert added["finding"] == ("MATCH" if added["observed_year"] == added["catalogue_year"] else "MISMATCH") assert added["phase"] == "REJECTED" assert report["release_recommendation"] == "local_synthetic_demo_only" assert len(report["limitations"]) >= 3 if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--module", choices=("starter", "reference"), default="reference") selected = parser.parse_args().module check(importlib.import_module(selected).build_evidence()) print(f"Formative capstone structure checks passed for {selected}; human explanation/rubric still required")