{"record":{"id":"d6d91a7a0fbae83a","repo":"MemPalace/mempalace","slug":"url-peer-served-event-event-get-id-r-but-n","errorCode":null,"errorMessage":"{url}: peer served event {event.get('id')!r} but not its artifact {artifact_id!r}","messagePattern":"(.+?): peer served event (.+?) but not its artifact (.+?)","errorType":"exception","errorClass":"SyncPeerError","httpStatus":null,"severity":"error","filePath":"mempalace/logsync.py","lineNumber":92,"sourceCode":"                _peer_get(\n                    url,\n                    token,\n                    \"/sync/ops\",\n                    {\"origin\": origin, \"after\": after, \"limit\": _PULL_BATCH},\n                ).get(\"events\")\n                or []\n            )\n            if not batch:\n                break  # peer's vector promised more than it served; stop cleanly\n            for event in batch:\n                for artifact_id in event.get(\"artifact_ids\") or []:\n                    if ls.has_artifact(artifact_id):\n                        continue\n                    artifact = _peer_get(url, token, \"/sync/artifact\", {\"id\": artifact_id}).get(\n                        \"artifact\"\n                    )\n                    if not artifact:\n                        raise SyncPeerError(\n                            f\"{url}: peer served event {event.get('id')!r} but not \"\n                            f\"its artifact {artifact_id!r}\"\n                        )\n                    if ls.apply_remote_artifact(artifact):\n                        pulled_artifacts += 1\n                if ls.apply_remote_event(event):\n                    pulled_events += 1\n                    origin_pulled += 1\n                after = max(after, event.get(\"origin_seq\") or 0)\n        if origin_pulled:\n            per_origin[origin] = origin_pulled\n\n    return {\n        \"peer_url\": url,\n        \"peer_replica\": remote_replica,\n        \"pulled_events\": pulled_events,\n        \"pulled_artifacts\": pulled_artifacts,\n        \"per_origin\": per_origin,","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/MemPalace/mempalace/blob/06cb6987f02610784fefbad4b2bd5d026d164ba6/mempalace/logsync.py#L74-L110","documentation":"Error \"{url}: peer served event {event.get('id')!r} but not its artifact {artifact_id!r}\" thrown in MemPalace/mempalace.","triggerScenarios":"Thrown at mempalace/logsync.py:92 when the library encounters an invalid state.","commonSituations":"Peer referenced an artifact it did not actually serve.","solutions":["Re-run sync against the peer; if it persists, the peer's log is incomplete - repair or re-seed the peer"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"06cb6987f02610784fefbad4b2bd5d026d164ba6","analyzedAt":"2026-08-15T03:03:36.213Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}