{"files":{"main.py":"from core import run\nfrom policy import POLICY\ndef evaluate(payload):\n    return run(payload, POLICY)\n","policy.py":"POLICY = {\"audit_all\": False, \"duplicate_policy\": \"last\", \"empty_id\": \"error\", \"fold_case\": False, \"list_merge\": \"unique\", \"nested_merge\": False, \"null_mode\": \"delete\", \"order\": \"input\", \"tombstone_wins\": False, \"trim_ids\": False, \"unknown_fields\": \"drop\", \"version_floor\": 3}\n","helpers.py":"import copy\n\ndef jeq(a, b):\n    if isinstance(a, bool) or isinstance(b, bool):\n        return isinstance(a, bool) and isinstance(b, bool) and a == b\n    if isinstance(a, dict):\n        if not isinstance(b, dict) or set(a) != set(b):\n            return False\n        return all(jeq(a[k], b[k]) for k in a)\n    if isinstance(a, list):\n        if not isinstance(b, list) or len(a) != len(b):\n            return False\n        return all(jeq(x, y) for x, y in zip(a, b))\n    if isinstance(b, (dict, list, bool)):\n        return False\n    return a == b\n\ndef norm_id(s, policy):\n    if policy[\"trim_ids\"]:\n        s = s.strip()\n    if policy[\"fold_case\"]:\n        s = ''.join(chr(ord(c) + 32) if 'A' <= c <= 'Z' else c for c in s)\n    return s\n\ndef merge(old, new, policy):\n    for k, v in new.items():\n        if v is None:\n            if policy[\"null_mode\"] == \"delete\":\n                old.pop(k, None)\n            continue\n        if k in old:\n            o = old[k]\n            if policy[\"nested_merge\"] and isinstance(o, dict) and isinstance(v, dict):\n                merge(o, v, policy)\n                continue\n            if policy[\"list_merge\"] == \"unique\" and isinstance(o, list) and isinstance(v, list):\n                extra = [copy.deepcopy(x) for x in v if not any(jeq(x, y) for y in o)]\n                old[k] = o + extra\n                continue\n        old[k] = copy.deepcopy(v)\n    return old\n","core.py":"import copy\nfrom helpers import norm_id, merge\n\ndef run(payload, policy):\n    events = payload[\"events\"]\n    groups = {}\n    order = []\n    for i, e in enumerate(events):\n        nid = norm_id(e[\"id\"], policy)\n        if nid == \"\":\n            if policy[\"empty_id\"] == \"error\":\n                raise ValueError(\"empty id\")\n            continue\n        if e[\"version\"] < policy[\"version_floor\"]:\n            continue\n        key = (nid, e[\"version\"])\n        if key not in groups:\n            groups[key] = i\n            order.append(key)\n        elif policy[\"duplicate_policy\"] == \"last\":\n            groups[key] = i\n    selected = [(key[1], groups[key], key[0]) for key in order]\n    selected.sort(key=lambda t: (t[0], t[1]))\n    records = {}\n    first = {}\n    tomb = set()\n    audit = []\n    for pos, (ver, idx, nid) in enumerate(selected):\n        e = events[idx]\n        if nid not in first:\n            first[nid] = pos\n        applied = False\n        if e[\"deleted\"]:\n            if nid in tomb:\n                applied = False\n            elif nid in records:\n                del records[nid]\n                if policy[\"tombstone_wins\"]:\n                    tomb.add(nid)\n                applied = True\n            elif policy[\"tombstone_wins\"]:\n                tomb.add(nid)\n                applied = True\n        else:\n            if nid in tomb:\n                applied = False\n            else:\n                if nid not in records:\n                    records[nid] = {}\n                merge(records[nid], e[\"fields\"], policy)\n                applied = True\n        if applied or policy[\"audit_all\"]:\n            audit.append(\"%s:%d:%s\" % (nid, ver, \"applied\" if applied else \"blocked\"))\n    out = []\n    for nid, f in records.items():\n        f = copy.deepcopy(f)\n        if policy[\"unknown_fields\"] == \"drop\":\n            f = {k: v for k, v in f.items() if k in (\"name\", \"tags\", \"meta\")}\n        out.append((nid, f))\n    if policy[\"order\"] == \"id\":\n        out.sort(key=lambda t: t[0])\n    else:\n        out.sort(key=lambda t: (first[t[0]], t[0]))\n    return {\"records\": [{\"id\": n, \"fields\": f} for n, f in out], \"audit\": audit}\n"}}