#!/usr/bin/env python3
import json
import hashlib
from pathlib import Path
from datetime import datetime, timezone

ROOT = Path(__file__).resolve().parents[1]

def file_sha256(path: Path) -> str:
    if not path.exists():
        return ""
    h = hashlib.sha256()
    with path.open("rb") as f:
        for chunk in iter(lambda: f.read(65536), b""):
            h.update(chunk)
    return h.hexdigest()

def main():
    chain_paths = [
        "GatherTradingData.json",
        "Temp/final_decision_packet_active.json",
        "Temp/number_provenance_ledger_v4.json",
        "Temp/operational_report.json"
    ]
    
    chain = []
    parent_hash = "0" * 64
    
    for p in chain_paths:
        path = ROOT / p
        h = file_sha256(path)
        
        node = {
            "path": p,
            "sha256": h,
            "generated_at": datetime.fromtimestamp(path.stat().st_mtime, tz=timezone.utc).isoformat() if path.exists() else None,
            "parent_hash": parent_hash
        }
        chain.append(node)
        parent_hash = h

    result = {
        "formula_id": "ARTIFACT_CHAIN_HASH_V4",
        "chain": chain,
        "chain_length": len([c for c in chain if c["sha256"]])
    }
    
    out_path = ROOT / "Temp" / "artifact_chain_hash_v4.json"
    out_path.write_text(json.dumps(result, indent=2, ensure_ascii=False), encoding="utf-8")
    print(f"Chain built: {len(chain)} artifacts tracked.")
    return 0

if __name__ == "__main__":
    main()
