{"files": {"main.py": "from core import run\nfrom policy import POLICY\ndef evaluate(payload):\n    return run(payload, POLICY)\n", "core.py": "from helpers import normalize_id, merge_fields\n\ndef run(payload, policy):\n    audit_all = policy.get(\"audit_all\", True)\n    duplicate_policy = policy.get(\"duplicate_policy\", \"first\")\n    empty_id = policy.get(\"empty_id\", \"skip\")\n    fold_case = policy.get(\"fold_case\", True)\n    list_merge = policy.get(\"list_merge\", \"replace\")\n    nested_merge = policy.get(\"nested_merge\", True)\n    null_mode = policy.get(\"null_mode\", \"ignore\")\n    order = policy.get(\"order\", \"id\")\n    tombstone_wins = policy.get(\"tombstone_wins\", True)\n    trim_ids = policy.get(\"trim_ids\", True)\n    unknown_fields = policy.get(\"unknown_fields\", \"keep\")\n    version_floor = policy.get(\"version_floor\", 2)\n    events = payload.get(\"events\", [])\n    selected = {}\n    for index, event in enumerate(events):\n        normalized_id = normalize_id(event.get(\"id\", \"\"), trim_ids, fold_case)\n        if normalized_id == \"\":\n            if empty_id == \"skip\":\n                continue\n            raise ValueError(\"empty id\")\n        version = event.get(\"version\")\n        if version < version_floor:\n            continue\n        key = (normalized_id, version)\n        candidate = {\"id\": normalized_id, \"version\": version, \"deleted\": event.get(\"deleted\", False), \"fields\": event.get(\"fields\", {}), \"index\": index}\n        if key not in selected:\n            selected[key] = candidate\n        elif duplicate_policy == \"last\":\n            selected[key] = candidate\n    processed = sorted(selected.values(), key=lambda item: (item[\"version\"], item[\"index\"]))\n    records_by_id = {}\n    tombstones = set()\n    first_processed = {}\n    audit = []\n    allowed_fields = (\"name\", \"tags\", \"meta\")\n    for process_index, event in enumerate(processed):\n        normalized_id = event[\"id\"]\n        version = event[\"version\"]\n        if normalized_id not in first_processed:\n            first_processed[normalized_id] = process_index\n        applied = False\n        if event[\"deleted\"]:\n            if normalized_id in records_by_id:\n                del records_by_id[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_by_id:\n                    records_by_id[normalized_id] = {}\n                incoming = event[\"fields\"] or {}\n                if unknown_fields == \"drop\":\n                    incoming = {field_name: value for field_name, value in incoming.items() if field_name in allowed_fields}\n                merge_fields(records_by_id[normalized_id], incoming, nested_merge, null_mode, list_merge)\n                applied = True\n        if audit_all or applied:\n            status = \"applied\" if applied else \"blocked\"\n            audit.append(f\"{normalized_id}:{version}:{status}\")\n    records = [{\"id\": normalized_id, \"fields\": fields} for normalized_id, fields in records_by_id.items()]\n    if order == \"id\":\n        records.sort(key=lambda record: record[\"id\"])\n    else:\n        records.sort(key=lambda record: (first_processed[record[\"id\"]], record[\"id\"]))\n    return {\"records\": records, \"audit\": audit}\n", "policy.py": "POLICY = {\"audit_all\": True, \"duplicate_policy\": \"first\", \"empty_id\": \"skip\", \"fold_case\": True, \"list_merge\": \"replace\", \"nested_merge\": True, \"null_mode\": \"ignore\", \"order\": \"id\", \"tombstone_wins\": True, \"trim_ids\": True, \"unknown_fields\": \"keep\", \"version_floor\": 2}\n", "helpers.py": "import copy\n\ndef normalize_id(raw_id, trim_ids, fold_case):\n    value = raw_id\n    if trim_ids:\n        value = value.strip()\n    if fold_case:\n        value = \"\".join(chr(ord(character) + 32) if \"A\" <= character <= \"Z\" else character for character in value)\n    return value\n\ndef json_equal(left, right):\n    if isinstance(left, bool) or isinstance(right, bool):\n        return type(left) is type(right) and 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    if isinstance(left, dict):\n        if set(left.keys()) != set(right.keys()):\n            return False\n        return all(json_equal(left[key], right[key]) for key in left)\n    if isinstance(left, list):\n        if len(left) != len(right):\n            return False\n        return all(json_equal(left_item, right_item) for left_item, right_item in zip(left, right))\n    return left == right\n\ndef merge_fields(target, source, nested_merge, null_mode, list_merge):\n    for field_name, value in source.items():\n        if value is None:\n            if null_mode in (\"delete\", \"remove\", \"delete_key\"):\n                target.pop(field_name, None)\n            continue\n        existing = target.get(field_name)\n        if nested_merge and isinstance(existing, dict) and isinstance(value, dict):\n            merge_fields(existing, value, nested_merge, null_mode, list_merge)\n        elif list_merge == \"unique\" and isinstance(existing, list) and isinstance(value, list):\n            old_items = list(existing)\n            for item in value:\n                if not any(json_equal(item, old_item) for old_item in old_items):\n                    existing.append(copy.deepcopy(item))\n        else:\n            target[field_name] = copy.deepcopy(value)\n    return target\n"}}