Skip to content

symfonic.services.shadow.comparator

comparator

The record/replay comparator.

Comparison is where the duplicate-effect risk actually bites: the naive way to compare a legacy run with a replacement run is to run both, and running both calls every non-idempotent provider, tool, pause-token and telemetry port twice. So this comparator refuses to compare anything it cannot prove was effect-suppressed. Its inputs are a recording (already captured, nothing re-executed) and a shadow run result whose ledger shows no applied effect.

The trace it compares is the port-crossing sequence, not the wall-clock behaviour: same ports, same operations, same request digests, in the same order. Volatile fields never enter the digest because the recorder and the gateway share one canonicaliser.

RecordComparator

Compares a recording against an effect-suppressed candidate run.