Skip to content

add topology free deploy#1127

Open
tt-cll wants to merge 9 commits into
mainfrom
tt/topology
Open

add topology free deploy#1127
tt-cll wants to merge 9 commits into
mainfrom
tt/topology

Conversation

@tt-cll
Copy link
Copy Markdown
Contributor

@tt-cll tt-cll commented May 20, 2026

Description

Testing

Checklist

  • Breaking changes documented in changelog (see changelog directory)
  • Cross link related PRs (in this or other repositories)
  • just lint fix - no new lint errors
  • just generate - mocks and protobufs are up to date

@tt-cll tt-cll force-pushed the tt/topology branch 2 times, most recently from de57b6e to 00d8cd4 Compare May 20, 2026 18:07
@tt-cll tt-cll marked this pull request as ready for review May 20, 2026 21:30
@tt-cll tt-cll requested a review from a team as a code owner May 20, 2026 21:30
Copilot AI review requested due to automatic review settings May 20, 2026 21:30
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors deployment changesets to support “topology-free” operation by removing the need to pass an *adapters.Registry into changesets and instead relying on per-adapter-type singleton registries. It also introduces new onchain changesets for deploying core chain contracts and wiring/promoting lanes, and updates devenv wiring and dependencies accordingly.

Changes:

  • Refactor many changesets to drop registry *adapters.Registry parameters and use per-adapter singleton registries (Get*Registry()).
  • Add new onchain changesets: DeployChainContracts, LaneExpansion, and PromoteLaneRouter, plus validation tests.
  • Update devenv callers and bump chainlink-ccip/* dependency versions to match the new changeset/adapters APIs.

Reviewed changes

Copilot reviewed 30 out of 31 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
deployment/changesets/remove_nop_from_committee.go Updates committee NOP removal changesets to use singleton adapter registries and discovery helpers.
deployment/changesets/remove_nop_from_committee_test.go Updates tests to register adapters via new per-adapter registries.
deployment/changesets/promote_lane_router.go Adds a new onchain-only changeset to promote a lane from TestRouter to production Router.
deployment/changesets/lane_expansion.go Adds a new onchain-only lane wiring changeset plus shared validation/apply helpers.
deployment/changesets/lane_expansion_test.go Adds validation/unit tests for lane expansion and router promotion input handling.
deployment/changesets/increase_threshold.go Refactors threshold-increase changesets to use singleton registries and updated scan helpers.
deployment/changesets/generate_token_verifier_config.go Refactors token-verifier config generation to use token verifier registry singleton.
deployment/changesets/generate_indexer_config.go Refactors indexer config generation to use indexer registry singleton and updated emptiness checks.
deployment/changesets/generate_aggregator_config.go Refactors aggregator config generation to use aggregator/onchain registries directly.
deployment/changesets/deploy_committee_verifier.go Refactors committee verifier deployment to use the deploy-adapter registry singleton.
deployment/changesets/deploy_committee_verifier_test.go Updates deployment tests to register deploy adapters using the new registry singleton.
deployment/changesets/deploy_chain_contracts.go Adds a new onchain changeset to deploy core CCIP protocol contracts per chain via adapters.
deployment/changesets/deploy_chain_contracts_test.go Adds validation tests for the new chain-contract deployment changeset.
deployment/changesets/decrease_threshold.go Refactors threshold-decrease changesets to use singleton registries and updated scan helpers.
deployment/changesets/apply_verifier_config.go Refactors verifier job-spec publishing to use singleton registries; updates helper signatures.
deployment/changesets/apply_verifier_config_test.go Updates tests to register onchain adapters using the new singleton registries.
deployment/changesets/apply_executor_config.go Refactors executor job-spec publishing to use singleton registries and updated discovery helpers.
deployment/changesets/apply_executor_config_test.go Updates tests for new changeset constructor signature (no registry param).
deployment/changesets/add_nop_to_committee.go Refactors committee NOP add changesets to use singleton registries and updated helpers.
deployment/changesets/add_nop_to_committee_test.go Updates tests to register adapters in per-adapter registries (onchain/aggregator/verifier).
deployment/adapters/registry.go Replaces the old bundled Registry with typed FamilyRegistry[T] singletons per adapter interface and new discovery helpers.
deployment/adapters/lane_config.go Introduces the LaneConfigAdapter interface and lane configuration input/output types.
deployment/adapters/chain_contracts_deploy.go Introduces the ChainContractsDeployAdapter interface and deploy input/output types.
build/devenv/go.sum Updates dependency checksums for new chainlink-ccip/* versions.
build/devenv/go.mod Bumps chainlink-ccip/* and chainlink-ccv/deployment dependency versions.
build/devenv/evm/impl.go Adjusts types used for lane profiles/config overrides to match updated CCIP v2 adapters/changesets APIs.
build/devenv/environment.go Updates devenv to call changesets without passing an adapters registry.
build/devenv/environment_phased.go Updates phased devenv to call changesets without passing an adapters registry.
build/devenv/environment_monolith.go Updates monolith devenv to call changesets without passing an adapters registry.
build/devenv/components/protocol_contracts/component.go Updates protocol contracts component to call changesets without passing an adapters registry.
build/devenv/cciptestinterfaces/interface.go Updates lane profile interface to reference updated CCIP v2 adapters types.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread deployment/changesets/apply_verifier_config.go
Comment thread deployment/changesets/lane_expansion.go
Comment thread deployment/changesets/deploy_chain_contracts.go Outdated
@github-actions
Copy link
Copy Markdown

Code coverage report:

Package main tt/topology Diff
github.com/smartcontractkit/chainlink-ccv/aggregator 49.34% 49.34% +0.00%
github.com/smartcontractkit/chainlink-ccv/bootstrap 54.14% 54.14% +0.00%
github.com/smartcontractkit/chainlink-ccv/cli 65.13% 65.13% +0.00%
github.com/smartcontractkit/chainlink-ccv/cmd 15.54% 15.54% +0.00%
github.com/smartcontractkit/chainlink-ccv/common 56.54% 56.54% +0.00%
github.com/smartcontractkit/chainlink-ccv/executor 45.97% 45.97% +0.00%
github.com/smartcontractkit/chainlink-ccv/indexer 37.73% 37.74% +0.01%
github.com/smartcontractkit/chainlink-ccv/integration 45.84% 45.93% +0.09%
github.com/smartcontractkit/chainlink-ccv/pkg 84.62% 84.62% +0.00%
github.com/smartcontractkit/chainlink-ccv/pricer 0.00% 0.00% +0.00%
github.com/smartcontractkit/chainlink-ccv/protocol 63.75% 63.75% +0.00%
github.com/smartcontractkit/chainlink-ccv/verifier 34.48% 34.48% +0.00%
Total 46.50% 46.60% +0.10%

@tt-cll tt-cll enabled auto-merge May 21, 2026 19:59
Comment on lines +67 to +69
// --------------------------------------------------------------------
// Per-adapter-type singletons
// --------------------------------------------------------------------
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: why not use the init function instead of dealing with sync.Once?

// Onchain-first ordering is safe because adding a new signer does not raise the quorum
// requirement — the existing signers already satisfy the current threshold.
func AddNOPToCommittee(registry *adapters.Registry) deployment.ChangeSetV2[AddNOPToCommitteeInput] {
func AddNOPToCommittee() deployment.ChangeSetV2[AddNOPToCommitteeInput] {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you concerned that using globals would make it more difficult to unit test these functions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants