{"files": {"main.py": "from core import run\nfrom policy import POLICY\ndef evaluate(payload):\n    return run(payload, POLICY)\n", "core.py": "from copy import deepcopy\nfrom helpers import normalize_id, merge_fields\n\ndef run(payload, policy):\n    if isinstance(payload, dict):\n        events = payload.get('events', [])\n    elif isinstance(payload, (list, tuple)):\n        events = list(payload)\n    else:\n        events = []\n    version_floor = policy.get('version_floor')\n    selected = {}\n    for original_index, event in enumerate(events):\n        if not isinstance(event, dict):\n            continue\n        raw_id = event.get('id', '')\n        if raw_id is None:\n            raw_id = ''\n        elif not isinstance(raw_id, str):\n            raw_id = str(raw_id)\n        normalized_id = normalize_id(raw_id, policy)\n        if normalized_id == '':\n            if policy.get('empty_id') == 'raise':\n                raise ValueError('empty id')\n            continue\n        version = event.get('version', 0)\n        if version_floor is not None and version < version_floor:\n            continue\n        key = (normalized_id, version)\n        entry = (normalized_id, version, bool(event.get('deleted', False)), event.get('fields', {}), original_index)\n        if key not in selected:\n            selected[key] = entry\n        elif policy.get('duplicate_policy') == 'last':\n            selected[key] = entry\n    processed = sorted(selected.values(), key=lambda item: (item[1], item[4]))\n    records = {}\n    tombstones = set()\n    first_processed = {}\n    audit = []\n    tombstone_wins = bool(policy.get('tombstone_wins'))\n    audit_all = bool(policy.get('audit_all'))\n    for processed_index, entry in enumerate(processed):\n        normalized_id, version, deleted, fields_value, original_index = entry\n        if normalized_id not in first_processed:\n            first_processed[normalized_id] = processed_index\n        applied = False\n        if deleted:\n            if normalized_id in records:\n                del records[normalized_id]\n                if tombstone_wins:\n                    tombstones.add(normalized_id)\n                applied = True\n            elif tombstone_wins and normalized_id not in tombstones:\n                tombstones.add(normalized_id)\n                applied = True\n            else:\n                applied = False\n        else:\n            if tombstone_wins and normalized_id in tombstones:\n                applied = False\n            else:\n                if normalized_id not in records:\n                    records[normalized_id] = {}\n                source = fields_value if isinstance(fields_value, dict) else {}\n                if policy.get('unknown_fields') == 'drop':\n                    allowed = {'name', 'tags', 'meta'}\n                    source = {k: v for k, v in source.items() if k in allowed}\n                merge_fields(records[normalized_id], source, policy)\n                applied = True\n        if audit_all or applied:\n            audit.append(f\"{normalized_id}:{version}:{'applied' if applied else 'blocked'}\")\n    if policy.get('order') == 'id':\n        ordered_ids = sorted(records.keys())\n    else:\n        ordered_ids = sorted(records.keys(), key=lambda rid: (first_processed.get(rid, 0), rid))\n    output_records = [{'id': rid, 'fields': deepcopy(records[rid])} for rid in ordered_ids]\n    return {'records': output_records, 'audit': audit}\n", "policy.py": "POLICY = {'duplicate_policy': 'first', 'fold_case': True, 'tombstone_wins': True, 'trim_ids': True, 'list_merge': 'replace', 'nested_merge': True, 'null_mode': 'ignore', 'version_floor': 2, 'audit_all': True, 'empty_id': 'skip', 'order': 'id', 'unknown_fields': 'keep'}\n", "helpers.py": "from copy import deepcopy\n\ndef normalize_id(value, policy):\n    result = value\n    if policy.get('trim_ids'):\n        result = result.strip()\n    if policy.get('fold_case'):\n        chars = []\n        for ch in result:\n            if 'A' <= ch <= 'Z':\n                chars.append(chr(ord(ch) + 32))\n            else:\n                chars.append(ch)\n        result = ''.join(chars)\n    return result\n\ndef json_equal(left, right):\n    if isinstance(left, bool) or isinstance(right, bool):\n        return isinstance(left, bool) and isinstance(right, bool) and left == right\n    if isinstance(left, dict) and isinstance(right, dict):\n        if set(left.keys()) != set(right.keys()):\n            return False\n        return all(json_equal(left[k], right[k]) for k in left)\n    if isinstance(left, list) and isinstance(right, list):\n        if len(left) != len(right):\n            return False\n        return all(json_equal(a, b) for a, b in zip(left, right))\n    if isinstance(left, (int, float)) and isinstance(right, (int, float)):\n        return left == right\n    if type(left) is not type(right):\n        return False\n    return left == right\n\ndef merge_fields(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        existing = target.get(key)\n        if isinstance(value, dict) and policy.get('nested_merge'):\n            if isinstance(existing, dict):\n                merge_fields(existing, value, policy)\n            else:\n                new_value = {}\n                merge_fields(new_value, value, policy)\n                target[key] = new_value\n            continue\n        if isinstance(value, list) and isinstance(existing, list) and policy.get('list_merge') == 'unique':\n            additions = []\n            for item in value:\n                if not any(json_equal(item, old) for old in existing):\n                    additions.append(deepcopy(item))\n            target[key] = list(existing) + additions\n            continue\n        target[key] = deepcopy(value)\n    return target\n"}}