{"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\nALLOWED_FIELDS = {\"name\", \"tags\", \"meta\"}\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    if events is None:\n        events = []\n    trim_ids = policy.get(\"trim_ids\", False)\n    fold_case = policy.get(\"fold_case\", False)\n    empty_id = policy.get(\"empty_id\", \"skip\")\n    version_floor = policy.get(\"version_floor\", 0)\n    duplicate_policy = policy.get(\"duplicate_policy\", \"first\")\n    tombstone_wins = policy.get(\"tombstone_wins\", False)\n    null_mode = policy.get(\"null_mode\", \"ignore\")\n    nested_merge = policy.get(\"nested_merge\", False)\n    list_merge = policy.get(\"list_merge\", \"replace\")\n    unknown_fields = policy.get(\"unknown_fields\", \"keep\")\n    audit_all = policy.get(\"audit_all\", False)\n    order = policy.get(\"order\", \"input\")\n    deduped = {}\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        if not isinstance(raw_id, str):\n            raw_id = str(raw_id)\n        normalized_id = raw_id.strip() if trim_ids else raw_id\n        if fold_case:\n            normalized_id = ascii_fold(normalized_id)\n        if normalized_id == \"\":\n            if empty_id == \"error\":\n                raise ValueError(\"empty id\")\n            continue\n        version = event.get(\"version\", 0)\n        if version < version_floor:\n            continue\n        fields = event.get(\"fields\", {})\n        if fields is None:\n            fields = {}\n        selected = {\"id\": normalized_id, \"version\": version, \"deleted\": bool(event.get(\"deleted\", False)), \"fields\": fields, \"index\": original_index}\n        key = (normalized_id, version)\n        if key not in deduped:\n            deduped[key] = selected\n        elif duplicate_policy == \"last\":\n            deduped[key] = selected\n    processed = sorted(deduped.values(), key=lambda item: (item[\"version\"], item[\"index\"]))\n    def merge_into(target, source):\n        for key, value in source.items():\n            if value is None:\n                if null_mode == \"delete\":\n                    target.pop(key, None)\n                continue\n            existing = target.get(key)\n            if isinstance(value, dict) and isinstance(existing, dict) and nested_merge:\n                merge_into(existing, value)\n            elif isinstance(value, list) and isinstance(existing, list) and list_merge == \"unique\":\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[key] = copy.deepcopy(value)\n    records = {}\n    tombstones = set()\n    first_processed = {}\n    audit = []\n    for processed_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] = processed_index\n        applied = False\n        if event[\"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                fields = event[\"fields\"]\n                if not isinstance(fields, dict):\n                    fields = {}\n                if unknown_fields == \"drop\":\n                    fields = {k: v for k, v in fields.items() if k in ALLOWED_FIELDS}\n                merge_into(records[normalized_id], fields)\n                applied = True\n        if audit_all or applied:\n            audit.append(f\"{normalized_id}:{version}:{'applied' if applied else 'blocked'}\")\n    if order == \"id\":\n        ordered_ids = sorted(records.keys())\n    else:\n        ordered_ids = sorted(records.keys(), key=lambda item: (first_processed.get(item, 0), item))\n    output_records = [{\"id\": item, \"fields\": copy.deepcopy(records[item])} for item in ordered_ids]\n    return {\"records\": output_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    return \"\".join(chr(ord(ch) + 32) if \"A\" <= ch <= \"Z\" else ch for ch in value)\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, (int, float)) and isinstance(right, (int, float)):\n        return 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[key], right[key]) for key in left)\n    if isinstance(left, list) and isinstance(right, list):\n        return len(left) == len(right) and all(json_equal(a, b) for a, b in zip(left, right))\n    if type(left) is not type(right):\n        return False\n    return left == right\n"}}