{"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 ascii_fold, deep_copy, merge_fields\n\ndef run(payload, policy):\n    audit_all = policy.get('audit_all', False)\n    duplicate_policy = policy.get('duplicate_policy', 'first')\n    empty_id = policy.get('empty_id', 'skip')\n    fold_case = policy.get('fold_case', False)\n    trim_ids = policy.get('trim_ids', False)\n    tombstone_wins = policy.get('tombstone_wins', False)\n    unknown_fields = policy.get('unknown_fields', 'keep')\n    version_floor = policy.get('version_floor', 0)\n    order = policy.get('order', 'id')\n    events = payload.get('events', []) if isinstance(payload, dict) else []\n    dedup = {}\n    for original_index, event in enumerate(events):\n        raw_id = event.get('id', '')\n        normalized = raw_id.strip() if trim_ids else raw_id\n        if fold_case:\n            normalized = ascii_fold(normalized)\n        if normalized == '':\n            if empty_id == 'raise':\n                raise ValueError('empty id')\n            continue\n        version = event.get('version')\n        if version < version_floor:\n            continue\n        entry = {'id': normalized, 'version': version, 'deleted': bool(event.get('deleted', False)), 'fields': event.get('fields', {}) or {}, 'index': original_index}\n        key = (normalized, version)\n        if key not in dedup:\n            dedup[key] = entry\n        elif duplicate_policy == 'last':\n            dedup[key] = entry\n    processed = sorted(dedup.values(), key=lambda e: (e['version'], e['index']))\n    first_processed = {}\n    for position, entry in enumerate(processed):\n        if entry['id'] not in first_processed:\n            first_processed[entry['id']] = position\n    records = {}\n    tombstones = set()\n    audit = []\n    allowed = {'name', 'tags', 'meta'}\n    for entry in processed:\n        normalized = entry['id']\n        version = entry['version']\n        applied = False\n        if entry['deleted']:\n            if normalized in records:\n                del records[normalized]\n                if tombstone_wins:\n                    tombstones.add(normalized)\n                applied = True\n            elif tombstone_wins and normalized not in tombstones:\n                tombstones.add(normalized)\n                applied = True\n            else:\n                applied = False\n        else:\n            if tombstone_wins and normalized in tombstones:\n                applied = False\n            else:\n                if normalized not in records:\n                    records[normalized] = {}\n                fields = entry['fields']\n                if unknown_fields == 'drop':\n                    fields = {k: v for k, v in fields.items() if k in allowed}\n                merge_fields(records[normalized], fields, policy)\n                applied = True\n        if audit_all or applied:\n            audit.append(f\"{normalized}:{version}:{'applied' if applied else 'blocked'}\")\n    if order == 'id':\n        sorted_ids = sorted(records.keys())\n    else:\n        sorted_ids = sorted(records.keys(), key=lambda rid: (first_processed.get(rid, 0), rid))\n    output_records = [{'id': rid, 'fields': deep_copy(records[rid])} for rid in sorted_ids]\n    return {'records': output_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 ascii_fold(value):\n    result = []\n    for ch in value:\n        code = ord(ch)\n        if 65 <= code <= 90:\n            result.append(chr(code + 32))\n        else:\n            result.append(ch)\n    return ''.join(result)\n\ndef deep_copy(value):\n    return copy.deepcopy(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, 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    null_mode = policy.get('null_mode', 'ignore')\n    nested_merge = policy.get('nested_merge', False)\n    list_merge = policy.get('list_merge', 'replace')\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_items = list(target[key])\n            additions = []\n            for item in value:\n                if not any(json_equal(item, old_item) for old_item in old_items):\n                    additions.append(deep_copy(item))\n            target[key] = target[key] + additions\n        else:\n            target[key] = deep_copy(value)\n    return target\n"}}