# Batch de replication minimal
Construisez un batch leader-to-follower. Le constructeur derive le nombre
d'evenements, la sequence finale et le hash d'integrite.
```rust
use appcore_core::NodeId;
use appcore_sync::SyncMessage;
fn main() -> Result<(), String> {
let source = NodeId::new("node-paris".to_string())
.map_err(|error| format!("{error:?}"))?;
let batch = SyncMessage::new(
"batch-42".to_string(),
source,
42,
43,
1_700_000_000_000,
None,
vec![b"document-created".to_vec(), b"document-indexed".to_vec()],
);
println!(
"batch={} events={} hash={}",
batch.batch_id, batch.event_count, batch.events_hash
);
Ok(())
}
```
Les evenements restent des octets applicatifs opaques. Les receivers doivent
valider sequence, compte, hash et limites avant application.