Initial commit: add .gitignore and README
This commit is contained in:
35
fusionagi/maa/audit.py
Normal file
35
fusionagi/maa/audit.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""Audit and reporting: export MPC and root-cause report format."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from fusionagi.maa.schemas.mpc import ManufacturingProofCertificate
|
||||
from fusionagi.maa.gap_detection import GapReport
|
||||
|
||||
|
||||
def export_mpc_for_audit(cert: ManufacturingProofCertificate) -> dict[str, Any]:
|
||||
"""Export MPC in audit-friendly format."""
|
||||
out: dict[str, Any] = {
|
||||
"mpc_id": cert.mpc_id.value,
|
||||
"mpc_version": cert.mpc_id.version,
|
||||
"decision_lineage": [{"node_id": e.node_id, "family": e.family, "outcome": e.outcome} for e in cert.decision_lineage],
|
||||
"risk_register": [{"risk_id": r.risk_id, "severity": r.severity} for r in cert.risk_register],
|
||||
"metadata": cert.metadata,
|
||||
}
|
||||
if cert.simulation_proof:
|
||||
out["simulation_proof"] = {"proof_id": cert.simulation_proof.proof_id}
|
||||
if cert.process_justification:
|
||||
out["process_justification"] = {"process_type": cert.process_justification.process_type, "eligible": cert.process_justification.eligible}
|
||||
if cert.machine_declaration:
|
||||
out["machine_declaration"] = {"machine_id": cert.machine_declaration.machine_id}
|
||||
return out
|
||||
|
||||
|
||||
def format_root_cause_report(gaps: list[GapReport], tool_name: str = "", context_ref: str = "") -> dict[str, Any]:
|
||||
"""Human-readable root-cause report for gap/tool rejections."""
|
||||
return {
|
||||
"report_type": "maa_root_cause",
|
||||
"tool_name": tool_name,
|
||||
"context_ref": context_ref,
|
||||
"gaps": [{"gap_class": g.gap_class.value, "description": g.description, "required_resolution": g.required_resolution} for g in gaps],
|
||||
"summary": f"{len(gaps)} gap(s) triggered halt.",
|
||||
}
|
||||
Reference in New Issue
Block a user