#!/usr/bin/env python3
"""werk.yaml -> werk-box.yaml, de enige versie die naar een agent-box mag.

Witte lijst, geen zwarte: een nieuw veld in werk.yaml lekt hier niet mee naar buiten,
het valt er stilzwijgend af. Dat is de bedoeling.
Evidence 2026-09-22: audit vond in werk.yaml rij 6 een repo-pad (`~/Documents/.../ClaudeOS/`)
en in 28 van 31 bronvelden archiefpaden met schijfgroottes. Een render-verbod in de
briefing dekt dat niet: het bestand stond dan nog steeds op de box.
"""
import sys, datetime, yaml

VELDEN = ["nr", "naam", "slug", "jaren", "jaar_start", "jaar_eind", "lopend",
          "soort", "status_aan", "claim", "blurb", "sector", "rol",
          "consent", "bron_ok", "beelden"]

VERBODEN = ["/Users/", "~/Documents", "ClaudeOS", ".zip", "GB)", "MB)",
            "master-index", "chrono-index", "bestanden)"]

src, dst = sys.argv[1], sys.argv[2]
d = yaml.safe_load(open(src))

uit = []
for r in d.get("tabel", []):
    row = {k: r[k] for k in VELDEN if k in r and r[k] is not None}
    row.setdefault("bron_ok", False)
    uit.append(row)

# niet_in_tabel gaat niet mee: die rijen worden in v1 niet gerenderd, dus hoeven
# niet op de box te staan. Daar zitten ook de derden-namen met consent: onbekend.
box = {
    "meta": {
        "afgeleid_van": "werk.yaml",
        "gemaakt": datetime.datetime.now().strftime("%Y-%m-%d %H:%M"),
        "rijen": len(uit),
        "let_op": "Gescrubde versie. bron, alle *_noot/_bron/_twijfel/_herkomst en het "
                  "niet_in_tabel-blok zijn verwijderd. Bewerk werk.yaml, nooit dit bestand.",
        "sector_set": d.get("meta", {}).get("sector_set"),
        "consent_set": d.get("meta", {}).get("consent_set"),
    },
    "tabel": uit,
}

tekst = yaml.safe_dump(box, allow_unicode=True, sort_keys=False, width=100)

lek = [p for p in VERBODEN if p in tekst]
if lek:
    sys.exit(f"GESTOPT: verboden patroon in uitvoer: {lek}")

open(dst, "w").write(tekst)
print(f"{dst}: {len(uit)} rijen, {len(tekst)} bytes, schoon op {len(VERBODEN)} patronen")
