{"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, merge_into, normalize_id\n\n_DEFAULTS = {\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_ALLOWED = ('name', 'tags', 'meta')\n\ndef run(payload, policy):\n    cfg = dict(_DEFAULTS)\n    if policy:\n        cfg.update(policy)\n    if isinstance(payload, dict):\n        events = payload.get('events', [])\n    else:\n        events = payload\n    if events is None:\n        events = []\n    selected = {}\n    for idx, event in enumerate(events):\n        raw_id = event.get('id', '') if isinstance(event, dict) else ''\n        if raw_id is None:\n            raw_id = ''\n        elif not isinstance(raw_id, str):\n            raw_id = str(raw_id)\n        nid = normalize_id(raw_id, cfg.get('trim_ids'), cfg.get('fold_case'))\n        if nid == '':\n            if cfg.get('empty_id') == 'error':\n                raise ValueError('empty id')\n            continue\n        version = event.get('version')\n        floor = cfg.get('version_floor')\n        if floor is not None and version is not None and version < floor:\n            continue\n        key = (nid, version)\n        rec = {'id': nid, 'version': version, 'deleted': bool(event.get('deleted', False)), 'fields': event.get('fields') or {}, 'index': idx}\n        if key not in selected:\n            selected[key] = rec\n        elif cfg.get('duplicate_policy') == 'last':\n            selected[key] = rec\n    ordered = sorted(selected.values(), key=lambda r: (r['version'], r['index']))\n    records = {}\n    tombstoned = set()\n    first_index = {}\n    audit = []\n    audit_all = bool(cfg.get('audit_all'))\n    for proc_idx, rec in enumerate(ordered):\n        nid = rec['id']\n        version = rec['version']\n        if nid not in first_index:\n            first_index[nid] = proc_idx\n        applied = False\n        if rec['deleted']:\n            existed = nid in records\n            if existed:\n                del records[nid]\n                if cfg.get('tombstone_wins'):\n                    tombstoned.add(nid)\n                applied = True\n            elif cfg.get('tombstone_wins') and nid not in tombstoned:\n                tombstoned.add(nid)\n                applied = True\n            else:\n                applied = False\n        else:\n            if cfg.get('tombstone_wins') and nid in tombstoned:\n                applied = False\n            else:\n                if nid not in records:\n                    records[nid] = {}\n                fields = copy.deepcopy(rec['fields']) if isinstance(rec['fields'], dict) else {}\n                if cfg.get('unknown_fields') == 'drop':\n                    fields = {k: v for k, v in fields.items() if k in _ALLOWED}\n                merge_into(records[nid], fields, cfg)\n                applied = True\n        if audit_all or applied:\n            audit.append(f\"{nid}:{version}:{'applied' if applied else 'blocked'}\")\n    out_records = [{'id': nid, 'fields': copy.deepcopy(fields)} for nid, fields in records.items()]\n    if cfg.get('order') == 'id':\n        out_records.sort(key=lambda r: r['id'])\n    else:\n        out_records.sort(key=lambda r: (first_index.get(r['id'], 0), r['id']))\n    return {'records': out_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(s):\n    return ''.join(chr(ord(c) + 32) if 'A' <= c <= 'Z' else c for c in s)\n\ndef normalize_id(raw, trim_ids, fold_case):\n    s = raw.strip() if trim_ids else raw\n    if fold_case:\n        s = ascii_fold(s)\n    return s\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, dict) and isinstance(b, dict):\n        return a.keys() == b.keys() and all(json_equal(a[k], b[k]) for k in a)\n    if isinstance(a, list) and isinstance(b, list):\n        return len(a) == len(b) and all(json_equal(x, y) for x, y in zip(a, b))\n    if isinstance(a, (int, float)) and isinstance(b, (int, float)):\n        return a == b\n    return type(a) is type(b) and a == b\n\ndef merge_into(target, source, cfg):\n    for k, v in source.items():\n        if v is None:\n            if cfg.get('null_mode') == 'delete':\n                target.pop(k, None)\n            continue\n        existing = target.get(k)\n        if cfg.get('nested_merge') and isinstance(v, dict) and isinstance(existing, dict):\n            merge_into(existing, v, cfg)\n        elif cfg.get('list_merge') == 'unique' and isinstance(v, list) and isinstance(existing, list):\n            old = list(existing)\n            for item in v:\n                if not any(json_equal(item, old_item) for old_item in old):\n                    existing.append(copy.deepcopy(item))\n        else:\n            target[k] = copy.deepcopy(v)\n    return target\n"}}