Part of #269
After world reconciliation merges a player branch to main: sync the changed Dolt rows back to Neo4j nodes/relationships. Implement DoltToNeo4jSyncer that translates row-level changes to graph mutations.
Acceptance Criteria
- DoltToNeo4jSyncer.sync_from_commit(commit_hash) runs after each reconciliation
- Reads DOLT_DIFF for changed rows since last sync commit
- Translates row changes to Neo4j: UPDATE/CREATE/DELETE nodes and relationships
- Syncer is idempotent (safe to re-run)
- Integration test: reconciliation → sync → Neo4j reflects merged state
Part of #269
After world reconciliation merges a player branch to main: sync the changed Dolt rows back to Neo4j nodes/relationships. Implement DoltToNeo4jSyncer that translates row-level changes to graph mutations.
Acceptance Criteria