{"files": {"main.py": "from core import run\nfrom policy import POLICY\ndef evaluate(payload):\n    return run(payload, POLICY)\n", "core.py": "import copy\nfrom helpers import ascii_fold, json_equal\n\n_ALLOWED = ('name', 'tags', 'meta')\n\ndef _normalize(raw_id, policy):\n    nid = raw_id\n    if policy.get('trim_ids'):\n        nid = nid.strip()\n    if policy.get('fold_case'):\n        nid = ascii_fold(nid)\n    return nid\n\ndef _merge(target, source, policy):\n    for key, value in source.items():\n        if value is None:\n            if policy.get('null_mode') == 'delete':\n                target.pop(key, None)\n            continue\n        if key in target and isinstance(target[key], dict) and isinstance(value, dict) and policy.get('nested_merge'):\n            _merge(target[key], value, policy)\n        elif key in target and isinstance(target[key], list) and isinstance(value, list) and policy.get('list_merge') == 'unique':\n            old = target[key]\n            merged = copy.deepcopy(old)\n            for item in value:\n                if not any(json_equal(item, old_item) for old_item in old):\n                    merged.append(copy.deepcopy(item))\n            target[key] = merged\n        else:\n            target[key] = copy.deepcopy(value)\n    return target\n\ndef run(payload, policy):\n    if isinstance(payload, dict):\n        events = payload.get('events', [])\n    elif isinstance(payload, list):\n        events = payload\n    else:\n        events = []\n    prepared = []\n    for idx, event in enumerate(events):\n        raw_id = event.get('id', '')\n        if not isinstance(raw_id, str):\n            raw_id = str(raw_id)\n        nid = _normalize(raw_id, policy)\n        if nid == '':\n            if policy.get('empty_id') == 'error':\n                raise ValueError('empty id')\n            continue\n        version = event.get('version')\n        floor = policy.get('version_floor')\n        if floor is not None and version is not None and version < floor:\n            continue\n        prepared.append((idx, nid, event))\n    dedup = {}\n    order_keys = []\n    for idx, nid, event in prepared:\n        key = (nid, event.get('version'))\n        if key not in dedup:\n            dedup[key] = (idx, nid, event)\n            order_keys.append(key)\n        elif policy.get('duplicate_policy') == 'last':\n            dedup[key] = (idx, nid, event)\n    selected = [dedup[k] for k in order_keys]\n    selected.sort(key=lambda x: (x[2].get('version'), x[0]))\n    records_map = {}\n    tombstoned = set()\n    first_processed = {}\n    audit = []\n    audit_all = bool(policy.get('audit_all'))\n    for proc_idx, (orig_idx, nid, event) in enumerate(selected):\n        if nid not in first_processed:\n            first_processed[nid] = proc_idx\n        version = event.get('version')\n        deleted = bool(event.get('deleted', False))\n        applied = False\n        if deleted:\n            existed = nid in records_map\n            if existed:\n                del records_map[nid]\n                applied = True\n                if policy.get('tombstone_wins'):\n                    tombstoned.add(nid)\n            elif policy.get('tombstone_wins') and nid not in tombstoned:\n                tombstoned.add(nid)\n                applied = True\n            else:\n                applied = False\n        else:\n            if nid in tombstoned:\n                applied = False\n            else:\n                if nid not in records_map:\n                    records_map[nid] = {}\n                fields = event.get('fields') or {}\n                if policy.get('unknown_fields') == 'drop':\n                    fields = {k: v for k, v in fields.items() if k in _ALLOWED}\n                _merge(records_map[nid], fields, policy)\n                applied = True\n        status = 'applied' if applied else 'blocked'\n        if audit_all or applied:\n            audit.append(f\"{nid}:{version}:{status}\")\n    records = [{'id': nid, 'fields': copy.deepcopy(fields)} for nid, fields in records_map.items()]\n    if policy.get('order') == 'id':\n        records.sort(key=lambda r: r['id'])\n    else:\n        records.sort(key=lambda r: (first_processed.get(r['id'], 0), r['id']))\n    return {'records': records, 'audit': audit}\n", "policy.py": "POLICY = {\n    \"duplicate_policy\": \"last\",\n    \"fold_case\": False,\n    \"tombstone_wins\": False,\n    \"trim_ids\": False,\n    \"list_merge\": \"unique\",\n    \"nested_merge\": False,\n    \"null_mode\": \"delete\",\n    \"version_floor\": 3,\n    \"audit_all\": False,\n    \"empty_id\": \"error\",\n    \"order\": \"input\",\n    \"unknown_fields\": \"drop\",\n}\n", "helpers.py": "def ascii_fold(value):\n    out = []\n    for ch in value:\n        if 'A' <= ch <= 'Z':\n            out.append(chr(ord(ch) + 32))\n        else:\n            out.append(ch)\n    return ''.join(out)\n\ndef json_equal(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, (int, float)) and isinstance(b, (int, float)):\n        return a == b\n    if type(a) is not type(b):\n        return False\n    if isinstance(a, dict):\n        if set(a.keys()) != set(b.keys()):\n            return False\n        return all(json_equal(a[k], b[k]) for k in a)\n    if isinstance(a, list):\n        return len(a) == len(b) and all(json_equal(x, y) for x, y in zip(a, b))\n    return a == b\n"}}