#!/usr/bin/env python3 """Merge peergos-for-compliance subjects.json into catalog/pfc-derived.json.""" from __future__ import annotations import json from pathlib import Path ROOT = Path(__file__).resolve().parents[1] PFC = Path("/Users/marchon/research/peergos-for-compliance/schemas/subjects.json") OUT = ROOT / "catalog" / "pfc-derived.json" def main() -> None: src = json.loads(PFC.read_text()) rows = [] for s in src.get("subjects") or []: rows.append( { "name": s["name"], "pattern": s.get("pattern"), "for": "PFC/Verae subject (see peergos-for-compliance/docs/nats-addresses.md)", "from": ["pfc services", "connectors"], "to": [s.get("owner") or "unknown"], "in": {"fields": s.get("payload") or []}, "out": "service-specific", "encryption": "NATS envelope pfc-lab-xor or NPE sidecar; Pattern A apps never publish", "reject": ["unknown subject", "missing required fields"], "dead": "none", "git": "https://git.georgelambert.org/marchon/peergos-for-compliance", } ) OUT.write_text(json.dumps({"version": src.get("version"), "endpoints": rows}, indent=2) + "\n") print("wrote", OUT, "n=", len(rows)) if __name__ == "__main__": main()