Deprecate Canton min-NOP bypass wrappers (*AllowingCantonMinNOPs)
Problem
ccv currently wraps generic cross-family changesets with Canton-specific *AllowingCantonMinNOPs helpers (see chainlink-deployments offchain_pipelines.go). This is an antipattern — family logic should live in adapters, not wrapper changesets.
Resolution (min-NOP)
Already fixed in adapter layer: CantonChainFamilyAdapter.ValidateNOPsTopology enforces 9 (mainnet) / 4 (testnet). Generic ValidateForEnvironment delegates per family; Canton never hits EVM's 15-NOP rule.
WithCantonProductionMinNOPCheckBypassed and lane/offchain *AllowingCantonMinNOPs wrappers are legacy and can be removed for full production topologies.
Remaining gap (separate from min-NOP)
JD ListNodeChainConfigs validation in apply-executor-config. Proposed fix: RequiresNodeChainSupportInJD() bool on ExecutorConfigAdapter (chainlink-ccip); Canton adapter returns false during rollout.
Tasks
Tracking doc (branch): docs/issues/deprecate-min-nop-bypass-wrappers.md
Deprecate Canton min-NOP bypass wrappers (
*AllowingCantonMinNOPs)Problem
ccv currently wraps generic cross-family changesets with Canton-specific
*AllowingCantonMinNOPshelpers (see chainlink-deployments offchain_pipelines.go). This is an antipattern — family logic should live in adapters, not wrapper changesets.Resolution (min-NOP)
Already fixed in adapter layer:
CantonChainFamilyAdapter.ValidateNOPsTopologyenforces 9 (mainnet) / 4 (testnet). GenericValidateForEnvironmentdelegates per family; Canton never hits EVM's 15-NOP rule.WithCantonProductionMinNOPCheckBypassedand lane/offchain*AllowingCantonMinNOPswrappers are legacy and can be removed for full production topologies.Remaining gap (separate from min-NOP)
JD
ListNodeChainConfigsvalidation inapply-executor-config. Proposed fix:RequiresNodeChainSupportInJD() boolonExecutorConfigAdapter(chainlink-ccip); Canton adapter returnsfalseduring rollout.Tasks
*AllowingCantonMinNOPsin chainlink-cantonapply-executor-configtov2_0_0.ApplyExecutorConfig(registry, chainFamilyRegistry)applyExecutorConfigSkippingChainSupportValidationTracking doc (branch):
docs/issues/deprecate-min-nop-bypass-wrappers.md