abda354562
ARCHITECTURE.md §5 lists SyncCompleteEvent(Result<SyncResponse, String>) as a cross-system event, but it was never declared or fired. Add the message to events.rs, register it in SyncPlugin, and emit it from poll_pull_result on both the success path (carrying the merged payload + conflicts as SyncResponse) and the failure path (carrying the user-facing error message). UI/persistence systems can now react to sync completion without polling SyncStatusResource. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>