---
title: "orleans.lattice.replication meter - Metric-to-panel coverage map"
url: "https://nsta1.github.io/Orleans.Lattice/docs/lattice.dashboards/metrics-to-panel-map/orleans-lattice-replication-meter.html"
source: "https://github.com/NSTA1/Orleans.Lattice/blob/release/9.9/docs/lattice.dashboards/metrics-to-panel-map.md?plain=1#L388-L466"
package: "Orleans.Lattice.Dashboards"
version: "9.9.0"
documents: "Orleans.Lattice 9.9.0 (release line 9.9)"
built: "2026-10-04"
all-pages: "https://nsta1.github.io/Orleans.Lattice/llms.txt"
bundle: "https://nsta1.github.io/Orleans.Lattice/docs/lattice.dashboards/llms-full.txt"
---
# `orleans.lattice.replication` meter

Part of [Metric-to-panel coverage map](../metrics-to-panel-map.md).

Every row in this table is charted by the Replication dashboard. The `orleans.lattice.wal.*` rows are core-meter (`orleans.lattice`) instruments, listed here because that dashboard charts them; a host that registers only `orleans.lattice.replication` exports none of them.

| Instrument | Type | Tags | Panel(s) |
|------------|------|------|----------|
| `orleans.lattice.replication.ship.duration` | histogram (ms) | `tree`, `peer`, `outcome`, `tenant` | Ship duration p50/p95/p99 |
| `orleans.lattice.replication.apply.duration` | histogram (ms) | `tree`, `peer`, `outcome`, `tenant` | Apply duration p50/p95/p99 |
| `orleans.lattice.replication.apply.lag` | histogram (ms) | `tree`, `peer`, `tenant` | Apply lag p50/p95/p99; Apply lag p99 vs apply-buffer depth (causal-staging bistability overlay) |
| `orleans.lattice.replication.apply.dependency_wait` | histogram (ms) | `tree`, `tenant` | Dependency wait p95 |
| `orleans.lattice.replication.wal.entries_shipped` | counter (`{entry}`) | `tree`, `peer`, `tenant` | WAL throughput; Log-tailing producer: leaf WAL append vs ship rate |
| `orleans.lattice.wal.entries_trimmed` | counter (`{entry}`) | `tree`, `shard`, `tenant` | WAL throughput; WAL GC trim stops by reason, whose second target keeps only the `offset_floor` stops on shards trimming nothing |
| `orleans.lattice.wal.compactions` | counter (`{compaction}`) | `tree`, `shard`, `trigger`, `tenant` | WAL compactions by trigger over range |
| `orleans.lattice.wal.compaction.reclaimed_bytes` | counter (`By`) | `tree`, `shard`, `tenant` | WAL bytes reclaimed by compaction over range |
| `orleans.lattice.wal.compaction.eval.retained_bytes` | histogram (`By`) | `tree`, `shard`, `tenant` | WAL compaction gate inputs - bytes per shard |
| `orleans.lattice.wal.compaction.eval.dead_bytes` | histogram (`By`) | `tree`, `shard`, `tenant` | WAL compaction gate inputs - bytes per shard |
| `orleans.lattice.wal.compaction.eval.retained_entries` | histogram (`{entry}`) | `tree`, `shard`, `tenant` | WAL compaction gate inputs - entries per shard |
| `orleans.lattice.wal.compaction.eval.dead_entries` | histogram (`{entry}`) | `tree`, `shard`, `tenant` | WAL compaction gate inputs - entries per shard |
| `orleans.lattice.wal.recovery.torn_tail_bytes` | counter (`By`) | `tree`, `shard`, `tenant` | WAL bytes discarded by activation-time recovery |
| `orleans.lattice.wal.recovery.torn_tail_records` | counter (`{record}`) | `tree`, `shard`, `tenant` | WAL records discarded by activation-time recovery |
| `orleans.lattice.replication.dead_letter.enqueued` | counter (`{entry}`) | `tree`, `reason`, `tenant` | Dead-letter queue churn |
| `orleans.lattice.replication.dead_letter.removed` | counter (`{entry}`) | `tree`, `reason`, `tenant` | Dead-letter queue churn |
| `orleans.lattice.replication.apply.fifo_violations` | counter (`{entry}`) | `tree`, `origin`, `tenant` | Apply correctness violations (rate). Diagnostic, not a correctness alarm: source HLCs are stamped per leaf, so a new write to a different key routinely applies below the highest HLC already applied for its origin (issue #1060), and a non-zero rate is expected; the entry is still applied |
| `orleans.lattice.replication.apply.causal_violations_blocked` | counter (`{entry}`) | `tree`, `tenant` | Apply correctness violations (rate) |
| `orleans.lattice.replication.peer.fell_off_log` | counter (`{event}`) | `tree`, `origin`, `tenant` | Peer fell-off-log events (count over range), grouped by `origin` and filtered by the `tree` selector; the instrument carries no `peer` label, so the `peer` selector does not apply |
| `orleans.lattice.replication.apply.buffered_entries` | up-down counter (`{entry}`) | `tree`, `shard`, `tenant` | Apply buffer (entries); Apply lag p99 vs apply-buffer depth (causal-staging bistability overlay) |
| `orleans.lattice.replication.apply.buffer_bytes` | up-down counter (`By`) | `tree`, `shard`, `tenant` | Apply buffer (bytes) |
| `orleans.lattice.replication.peer.entries_behind` | observable gauge (`{entry}`) | `tree`, `peer`, `tenant` | Per-peer entries behind |
| `orleans.lattice.replication.peer.bytes_behind` | observable gauge (`By`) | `tree`, `peer`, `tenant` | Per-peer bytes behind |
| `orleans.lattice.replication.peer.last_contact_seconds` | observable gauge (`s`) | `tree`, `peer`, `direction`, `tenant` | Per-peer last outbound ship (seconds ago); Per-peer last inbound apply (seconds ago) |
| `orleans.lattice.replication.peer.consecutive_errors` | observable gauge (`{error}`) | `tree`, `peer`, `direction`, `tenant` | Per-peer consecutive errors |
| `orleans.lattice.replication.wire_version.negotiated` | observable gauge (`{version}`) | `tree`, `peer`, `tenant` | Per-peer negotiated wire version |
| `orleans.lattice.replication.wire_version.downgrade_active` | observable gauge (`{bool}`) | `tree`, `peer`, `tenant` | Per-peer wire-version downgrade active (1 = mixed-version fleet) |
| `orleans.lattice.replication.digest_probe.compared` | counter (`{comparison}`) | `tree`, `shard`, `peer`, `outcome`, `tenant` | Anti-entropy digest-probe comparisons (rate, by outcome) |
| `orleans.lattice.replication.digest_probe.mismatch` | counter (`{comparison}`) | `tree`, `shard`, `peer`, `tenant` | Anti-entropy digest divergence (mismatch rate) |
| `orleans.lattice.replication.merkle_walk.localised` | counter (`{leaf}`) | `tree`, `depth`, `tenant` | Merkle-walk leaves localised |
| `orleans.lattice.replication.merkle_walk.aborted` | counter (`{walk}`) | `reason`, `tenant` | Merkle-walk aborted |
| `orleans.lattice.replication.ship.redundant_payloads` | counter (`{entry}`) | `tree`, `peer`, `tenant` | Redundant payload re-send rate |
| `orleans.lattice.replication.ship.redundant_payload_bytes` | counter (`By`) | `tree`, `peer`, `tenant` | Redundant payload re-send rate |
| `orleans.lattice.replication.ship.effective_batch_size` | histogram (`{entry}`) | `tree`, `peer`, `tenant` | Effective ship batch size (adaptive) |
| `orleans.lattice.replication.ship.ack_latency` | histogram (ms) | `tree`, `peer`, `tenant` | Ship ack latency p50/p95/p99 |
| `orleans.lattice.replication.coalesce.entries_elided` | counter (`{entry}`) | `tree`, `peer`, `tenant` | Pre-ship coalescing elided rate |
| `orleans.lattice.replication.coalesce.bytes_elided` | counter (`By`) | `tree`, `peer`, `tenant` | Pre-ship coalescing elided rate |
| `orleans.lattice.replication.coalesce.deltas_merged` | counter (`{delta}`) | `tree`, `peer`, `tenant` | Pre-ship CRDT deltas merged (rate) |
| `orleans.lattice.replication.doorbell.rung` | counter (`{ring}`) | `tree`, `peer`, `tenant` | Shipper doorbell coalescing (rate) |
| `orleans.lattice.replication.doorbell.coalesced` | counter (`{ring}`) | `tree`, `peer`, `tenant` | Shipper doorbell coalescing (rate) |
| `orleans.lattice.replication.leaf_rereplay.entries` | counter (`{entry}`) | `tree`, `peer`, `tenant` | Leaf re-replay entries re-shipped (rate) |
| `orleans.lattice.replication.leaf_rereplay.skipped` | counter (`{skip}`) | `tree`, `peer`, `reason`, `tenant` | Leaf re-replay skipped (rate by reason) |
| `orleans.lattice.replication.apply.parallel_runs` | histogram (`{run}`) | `tenant` | Apply parallelism - runs per batch |
| `orleans.lattice.replication.peer.ship_in_flight` | observable gauge (`{batch}`) | `tree`, `peer`, `tenant` | Outbound batches in flight per peer |
| `orleans.lattice.replication.bootstrap.entries_received` | counter (`{entry}`) | `tree`, `origin`, `tenant` | Bootstrap throughput (rate) |
| `orleans.lattice.replication.bootstrap.bytes_received` | counter (`By`) | `tree`, `origin`, `tenant` | Bootstrap throughput (rate) |
| `orleans.lattice.replication.bootstrap.duration` | histogram (ms) | `tree`, `origin`, `outcome`, `tenant` | Bootstrap duration p50/p95/p99 |
| `orleans.lattice.replication.bootstrap.transient_retries` | counter (`{retry}`) | `tree`, `origin`, `tenant` | Bootstrap transient retries (rate) |
| `orleans.lattice.replication.peer.fell_off_log_suppressed` | counter (`{event}`) | `tree`, `origin`, `tenant` | Fall-off-log suppressed events (rate) |
| `orleans.lattice.replication.bootstrap_fallback.triggered` | counter (`{fallback}`) | `tree`, `peer`, `tenant` | Bootstrap fallback triggered (rate) |
| `orleans.lattice.replication.bootstrap_fallback.entries` | counter (`{entry}`) | `tree`, `peer`, `tenant` | Bootstrap fallback entries re-shipped (rate) |
| `orleans.lattice.replication.bootstrap_fallback.skipped` | counter (`{skip}`) | `tree`, `peer`, `reason`, `tenant` | Bootstrap fallback skipped (rate by reason) |
| `orleans.lattice.replication.digest_remediation.disabled` | observable gauge (`{state}`) | `tree`, `peer`, `reason`, `tenant` | Remediation disabled (tree/peer by reason) |
| `orleans.lattice.replication.digest_remediation.skipped` | counter (`{skip}`) | `tree`, `peer`, `reason`, `tenant` | Remediation skipped (rate by reason) |
| `orleans.lattice.replication.compress.dictionary.bytes_in` | counter (`By`) | `tree`, `tenant` | Shared-dictionary compression ratio (before/after) |
| `orleans.lattice.replication.compress.dictionary.bytes_out` | counter (`By`) | `tree`, `tenant` | Shared-dictionary compression ratio (before/after) |
| `orleans.lattice.replication.ship.elided_payloads` | counter (`{entry}`) | `tree`, `peer`, `tenant` | Content-hash payload elision (rate) |
| `orleans.lattice.replication.ship.elided_payload_bytes` | counter (`By`) | `tree`, `peer`, `tenant` | Content-hash payload elision (rate) |
| `orleans.lattice.replication.ship.manifest_exchanges` | counter (`{exchange}`) | `tree`, `peer`, `tenant` | Content-hash manifest exchanges (rate) |
| `orleans.lattice.replication.ship.dictionary_negotiation` | counter (`{negotiation}`) | `tree`, `peer`, `outcome`, `tenant` | Shared-dictionary negotiation outcomes (rate) |
| `orleans.lattice.replication.ship.dictionary_batches` | counter (`{batch}`) | `tree`, `peer`, `dictionary`, `tenant` | Batches shipped with vs without a shared dictionary (rate) |
| `orleans.lattice.replication.ship.dictionary_convergence` | counter (`{pull}`) | `tree`, `peer`, `outcome`, `tenant` | Shared-dictionary convergence pulls (rate) |
| `orleans.lattice.replication.ship.wire_version_down_stamp` | counter (`{batch}`) | `tree`, `peer`, `reason`, `tenant` | Wire-version down-stamp outcomes (rate by reason) |
| `orleans.lattice.replication.receiver.content_manifest_exchanges` | counter (`{exchange}`) | `tree`, `peer`, `tenant` | Receiver content-hash exchanges handled (rate) |
| `orleans.lattice.replication.receiver.content_entries_elided` | counter (`{entry}`) | `tree`, `peer`, `tenant` | Receiver content entries elided (rate) |
| `orleans.lattice.replication.receiver.content_hwm_advances` | counter (`{advance}`) | `tree`, `peer`, `tenant` | Receiver metadata-only HWM advances (rate) |
| `orleans.lattice.replication.saga.phase.duration` | histogram (ms) | `phase`, `tenant` | Coordinated restore: saga phase and write-fence durations (p95, ms) |
| `orleans.lattice.replication.saga.fence.duration` | histogram (ms) | `tree`, `tenant` | Coordinated restore: saga phase and write-fence durations (p95, ms) |
| `orleans.lattice.replication.saga.participant.votes` | counter (`{vote}`) | `reason`, `tenant` | Coordinated restore: participant votes, commits and aborts (rate) |
| `orleans.lattice.replication.saga.participant.commits` | counter (`{commit}`) | `reason`, `tenant` | Coordinated restore: participant votes, commits and aborts (rate) |
| `orleans.lattice.replication.saga.participant.aborts` | counter (`{abort}`) | `reason`, `tenant` | Coordinated restore: participant votes, commits and aborts (rate) |
| `orleans.lattice.replication.saga.compensations` | counter (`{compensation}`) | `cause`, `tenant` | Coordinated restore: saga compensations (rate by cause) |

Previous: [orleans.lattice meter](orleans-lattice-meter.md). Next: [Orleans.Lattice.Api.Mcp.RepoContext meter](orleans-lattice-api-mcp-repocontext-meter.md). Contents: [Metric-to-panel coverage map](../metrics-to-panel-map.md).
