"""
proof_packet_factory.py — Proof Packet Assembler
STATUS: DOCUMENTED_ONLY

Assembles structured proof packets from evidence items collected by
the research engine. All packets are in draft status until human-approved.
"""

MODULE_STATUS = "documented_only"

import uuid
import datetime


def _now_iso() -> str:
    return datetime.datetime.utcnow().isoformat() + "Z"


def create_packet(query: str, evidence_items: list, sources_used: list,
                  search_terms: list = None, notes: str = "") -> dict:
    """
    Assemble a proof packet from evidence items.
    Returns a draft packet (human_approved=False).
    In documented_only mode, returns a stub packet.
    """
    if MODULE_STATUS == "documented_only":
        return {
            "packet_id":           str(uuid.uuid4()),
            "version":             "1.0",
            "created_at":          _now_iso(),
            "status":              "draft",
            "human_approved":      False,
            "reviewer":            "",
            "reviewed_at":         "",
            "query":               query,
            "sources_used":        sources_used,
            "search_terms":        search_terms or [],
            "evidence_items":      [],
            "evidence_count":      0,
            "quality_score":       0.0,
            "quality_gate_passed": False,
            "no_go_filter_passed": False,
            "safety_gate_passed":  False,
            "summary":             "documented_only — no evidence assembled",
            "notes":               notes,
        }
    raise NotImplementedError("Live packet assembly not yet activated")


def approve_packet(packet: dict, reviewer: str) -> dict:
    """
    Mark a packet as human-approved.
    Must be called explicitly — never called automatically.
    """
    if MODULE_STATUS == "documented_only":
        return dict(packet, status="documented_only_stub")
    raise NotImplementedError("Live approval not yet activated")


def reject_packet(packet: dict, reason: str) -> dict:
    """Reject a packet with a reason."""
    if MODULE_STATUS == "documented_only":
        return dict(packet, status="documented_only_stub")
    raise NotImplementedError("Live rejection not yet activated")


def module_status() -> dict:
    return {"module": "proof_packet_factory", "status": MODULE_STATUS}
