{"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 normalize_id, merge_fields\n\nALLOWED_FIELDS = {\"name\", \"tags\", \"meta\"}\n\ndef run(payload, policy):\n    if isinstance(payload, dict):\n        events = payload.get(\"events\", [])\n    else:\n        events = payload\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\", \"error\")\n    version_floor = policy.get(\"version_floor\", 3)\n    duplicate_policy = policy.get(\"duplicate_policy\", \"last\")\n    tombstone_wins = policy.get(\"tombstone_wins\", False)\n    audit_all = policy.get(\"audit_all\", False)\n    order = policy.get(\"order\", \"input\")\n    unknown_fields = policy.get(\"unknown_fields\", \"drop\")\n    prepared = []\n    for original_index, event in enumerate(events):\n        raw_id = event.get(\"id\", \"\")\n        if raw_id is None:\n            raw_id = \"\"\n        nid = normalize_id(raw_id, trim_ids, fold_case)\n        if nid == \"\":\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        prepared.append({\"id\": nid, \"version\": version, \"deleted\": bool(event.get(\"deleted\", False)), \"fields\": copy.deepcopy(fields), \"original_index\": original_index})\n    deduped = {}\n    for entry in prepared:\n        key = (entry[\"id\"], entry[\"version\"])\n        if key not in deduped:\n            deduped[key] = entry\n        elif duplicate_policy == \"last\":\n            deduped[key] = entry\n    processed = sorted(deduped.values(), key=lambda e: (e[\"version\"], e[\"original_index\"]))\n    records = {}\n    tombstones = set()\n    first_processed = {}\n    audit = []\n    for processed_index, entry in enumerate(processed):\n        nid = entry[\"id\"]\n        version = entry[\"version\"]\n        if nid not in first_processed:\n            first_processed[nid] = processed_index\n        applied = False\n        if entry[\"deleted\"]:\n            if nid in records:\n                del records[nid]\n                applied = True\n                if tombstone_wins:\n                    tombstones.add(nid)\n            elif tombstone_wins and nid not in tombstones:\n                tombstones.add(nid)\n                applied = True\n            else:\n                applied = False\n        else:\n            if tombstone_wins and nid in tombstones:\n                applied = False\n            else:\n                applied = True\n                if nid not in records:\n                    records[nid] = {}\n                fields = entry[\"fields\"]\n                if unknown_fields == \"drop\":\n                    fields = {k: v for k, v in fields.items() if k in ALLOWED_FIELDS}\n                merge_fields(records[nid], fields, policy)\n        if applied or audit_all:\n            audit.append(f\"{nid}:{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 nid: (first_processed.get(nid, 0), nid))\n    output_records = [{\"id\": nid, \"fields\": copy.deepcopy(records[nid])} for nid 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": "import copy\n\ndef normalize_id(raw_id, trim_ids=False, fold_case=False):\n    value = raw_id if isinstance(raw_id, str) else str(raw_id)\n    if trim_ids:\n        value = value.strip()\n    if fold_case:\n        chars = []\n        for ch in value:\n            if \"A\" <= ch <= \"Z\":\n                chars.append(chr(ord(ch) + 32))\n            else:\n                chars.append(ch)\n        value = \"\".join(chars)\n    return value\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        if len(a) != len(b):\n            return False\n        return all(json_equal(x, y) for x, y in zip(a, b))\n    return a == b\n\ndef merge_fields(target, source, policy):\n    null_mode = policy.get(\"null_mode\", \"delete\")\n    nested_merge = policy.get(\"nested_merge\", False)\n    list_merge = policy.get(\"list_merge\", \"unique\")\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        if key in target and isinstance(target[key], dict) and isinstance(value, dict) and nested_merge:\n            merge_fields(target[key], value, policy)\n        elif key in target and isinstance(target[key], list) and isinstance(value, list) and list_merge == \"unique\":\n            old = target[key]\n            additions = [copy.deepcopy(item) for item in value if not any(json_equal(item, existing) for existing in old)]\n            target[key] = copy.deepcopy(old) + additions\n        else:\n            target[key] = copy.deepcopy(value)\n    return target\n"}}