Skip to content

Deprecate Canton min-NOP bypass wrappers (*AllowingCantonMinNOPs) #717

Description

@stackman27

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

  • Deprecate then remove *AllowingCantonMinNOPs in chainlink-canton
  • ccv: revert generic apply-executor-config to v2_0_0.ApplyExecutorConfig(registry, chainFamilyRegistry)
  • chainlink-ccip: adapter-driven JD validation skip
  • Remove duplicated applyExecutorConfigSkippingChainSupportValidation

Tracking doc (branch): docs/issues/deprecate-min-nop-bypass-wrappers.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions