Symptom
docker-compose runs a single ClickHouse node + one Keeper. The three clusters defined in docker/clickhouse/config.d/default.xml (posthog, posthog_single_shard, posthog_migrations) are each one shard / one replica pointing at the same host.
Impact
The per-node execution model (each statement run on every node individually) is never exercised live against an actual multi-node topology: Replicated table behavior across replicas, per-shard macros, drift detection between real nodes, and plan's cross-role ordering (docs/plans/2026-06-25-multi-node-cross-role-plan.md Mode B) all lack live coverage.
Fix direction
Add a 2-node compose profile (2 replicas, or 2 shards x 1 replica) with distinct macros; gate a small live suite on it (e.g. -clickhouse -cluster) covering: per-node DDL execution reaching both nodes, dump-cluster across both, drift between them, and a plan run against the dumped topology.
Found in the 2026-07-02 deep-dive audit (docs/plans/2026-07-02-deep-dive-improvement-areas.md, E1).
Symptom
docker-compose runs a single ClickHouse node + one Keeper. The three clusters defined in docker/clickhouse/config.d/default.xml (
posthog,posthog_single_shard,posthog_migrations) are each one shard / one replica pointing at the same host.Impact
The per-node execution model (each statement run on every node individually) is never exercised live against an actual multi-node topology: Replicated table behavior across replicas, per-shard macros, drift detection between real nodes, and
plan's cross-role ordering (docs/plans/2026-06-25-multi-node-cross-role-plan.md Mode B) all lack live coverage.Fix direction
Add a 2-node compose profile (2 replicas, or 2 shards x 1 replica) with distinct macros; gate a small live suite on it (e.g.
-clickhouse -cluster) covering: per-node DDL execution reaching both nodes,dump-clusteracross both,driftbetween them, and aplanrun against the dumped topology.Found in the 2026-07-02 deep-dive audit (docs/plans/2026-07-02-deep-dive-improvement-areas.md, E1).