{"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 merge_fields, normalize_id\n\n_ALLOWED_FIELDS = ('name', 'tags', 'meta')\n\ndef _extract_events(payload):\n    if isinstance(payload, dict):\n        if isinstance(payload.get('events'), list):\n            return payload.get('events')\n        if isinstance(payload.get('items'), list):\n            return payload.get('items')\n        if isinstance(payload.get('data'), list):\n            return payload.get('data')\n        return []\n    if isinstance(payload, (list, tuple)):\n        return list(payload)\n    return []\n\ndef run(payload, policy):\n    policy = policy or {}\n    trim_ids = bool(policy.get('trim_ids', False))\n    fold_case = bool(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 = bool(policy.get('tombstone_wins', False))\n    null_mode = policy.get('null_mode', 'ignore')\n    nested_merge = bool(policy.get('nested_merge', False))\n    list_merge = policy.get('list_merge', 'replace')\n    unknown_fields = policy.get('unknown_fields', 'keep')\n    audit_all = bool(policy.get('audit_all', False))\n    order = policy.get('order', 'id')\n    events = _extract_events(payload)\n    annotated = []\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, trim_ids, fold_case)\n        if normalized_id == '':\n            if 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        annotated.append((original_index, normalized_id, event))\n    selected = {}\n    for original_index, normalized_id, event in annotated:\n        version = event.get('version', 0)\n        key = (normalized_id, version)\n        if key not in selected:\n            selected[key] = (original_index, normalized_id, event)\n        elif duplicate_policy == 'last':\n            selected[key] = (original_index, normalized_id, event)\n    processed = list(selected.values())\n    processed.sort(key=lambda item: (item[2].get('version', 0), item[0]))\n    records_by_id = {}\n    tombstones = set()\n    first_processed_index = {}\n    audit = []\n    for processed_index, (original_index, normalized_id, event) in enumerate(processed):\n        if normalized_id not in first_processed_index:\n            first_processed_index[normalized_id] = processed_index\n        version = event.get('version', 0)\n        deleted = bool(event.get('deleted', False))\n        applied = False\n        if 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                fields = event.get('fields', {})\n                if not isinstance(fields, dict):\n                    fields = {}\n                if unknown_fields == 'drop':\n                    fields = {key: value for key, value in fields.items() if key in _ALLOWED_FIELDS}\n                merge_fields(records_by_id[normalized_id], fields, nested_merge=nested_merge, null_mode=null_mode, list_merge=list_merge)\n                applied = True\n        if audit_all or applied:\n            audit.append(f\"{normalized_id}:{version}:{'applied' if applied else 'blocked'}\")\n    record_items = list(records_by_id.items())\n    if order == 'id':\n        record_items.sort(key=lambda item: item[0])\n    else:\n        record_items.sort(key=lambda item: (first_processed_index.get(item[0], 0), item[0]))\n    records = [{'id': normalized_id, 'fields': copy.deepcopy(fields)} for normalized_id, fields in record_items]\n    return {'records': records, 'audit': audit}\n", "policy.py": "POLICY = {\n    'duplicate_policy': 'first',\n    'fold_case': True,\n    'tombstone_wins': True,\n    'trim_ids': True,\n    'list_merge': 'replace',\n    'nested_merge': True,\n    'null_mode': 'ignore',\n    'version_floor': 2,\n    'audit_all': True,\n    'empty_id': 'skip',\n    'order': 'id',\n    'unknown_fields': 'keep',\n}\n", "helpers.py": "import copy\n\ndef ascii_fold(value):\n    result = []\n    for char in value:\n        if 'A' <= char <= 'Z':\n            result.append(chr(ord(char) + 32))\n        else:\n            result.append(char)\n    return ''.join(result)\n\ndef normalize_id(raw_id, trim_ids=False, fold_case=False):\n    value = raw_id\n    if trim_ids:\n        value = value.strip()\n    if fold_case:\n        value = ascii_fold(value)\n    return 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) or isinstance(right, dict):\n        if not isinstance(left, dict) or not isinstance(right, dict):\n            return False\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) or isinstance(right, list):\n        if not isinstance(left, list) or not isinstance(right, list):\n            return False\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    return type(left) is type(right) and left == right\n\ndef merge_fields(target, source, nested_merge=False, null_mode='ignore', 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        existing = target.get(key)\n        if nested_merge and isinstance(value, dict) and isinstance(existing, dict):\n            merge_fields(existing, value, nested_merge=nested_merge, null_mode=null_mode, list_merge=list_merge)\n        elif list_merge == 'unique' and isinstance(value, list) and isinstance(existing, list):\n            old_items = list(existing)\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(copy.deepcopy(item))\n            target[key] = old_items + additions\n        else:\n            target[key] = copy.deepcopy(value)\n    return target\n"}}