REQUIRED = {"scenario": str, "source_ids": list, "spatial_orbitals": int,
            "spin_orbitals": int, "qubits": int, "tolerance": dict,
            "validation_observable": str, "baseline": str}
def audit(record, maximum_tolerance_millihartree):
    errors = [name for name, kind in REQUIRED.items()
              if name not in record or type(record[name]) is not kind]
    tolerance = record.get("tolerance", {})
    if type(tolerance.get("value")) not in (int, float) or tolerance.get("unit") != "millihartree":
        errors.append("tolerance_value_or_unit")
    if record.get("spin_orbitals") != 2 * record.get("spatial_orbitals", -1):
        errors.append("spin_orbital_mapping")
    if record.get("qubits") != record.get("spin_orbitals"):
        errors.append("qubit_mapping")
    if not record.get("source_ids") or not record.get("baseline"):
        errors.append("source_or_baseline")
    ready = not errors and tolerance["value"] <= maximum_tolerance_millihartree
    return {"decision": "validation-ready" if ready else "revise-proposal",
            "errors": sorted(set(errors)), "tolerance_millihartree": tolerance.get("value")}
record = {"scenario": "Fe-S active-space audit", "source_ids": ["quantum-chemistry-review"],
          "spatial_orbitals": 12, "spin_orbitals": 24, "qubits": 24,
          "tolerance": {"value": 1.6, "unit": "millihartree"},
          "validation_observable": "ground-state energy at fixed geometry",
          "baseline": "selected-CI, same geometry and basis"}
base_result = audit(record, 2.0)
missing_baseline = {key: value for key, value in record.items() if key != "baseline"}
bad_result = audit(missing_baseline, 2.0)
sensitive_result = audit(record, 1.0)
assert base_result["decision"] == "validation-ready"
assert bad_result["decision"] == "revise-proposal" and "baseline" in bad_result["errors"]
assert sensitive_result["decision"] == "revise-proposal"
print(f"PASS: 65 active-space dossier qubits={record['qubits']} tolerance={base_result['tolerance_millihartree']} missing={bad_result['errors']} strict={sensitive_result['decision']}")
