Skip to content

build/devenv: add cl-node back into phased devenv#1143

Open
winder wants to merge 8 commits into
mainfrom
will/phased-cl-node
Open

build/devenv: add cl-node back into phased devenv#1143
winder wants to merge 8 commits into
mainfrom
will/phased-cl-node

Conversation

@winder
Copy link
Copy Markdown
Collaborator

@winder winder commented May 30, 2026

PR Chain

There are multiple open pull requests that feed into each other:

Description

Restores CL-node verifier mode in the phased devenv (--env-mode phased). Introduces a dedicated committeeccv_clnode Phase 3 component that handles HMAC secret baking, node launch, and JD registration. The former clnode Phase-1 config-vehicle package is deleted — all CL-node code lives in one file (component_clnode.go) earmarked for removal when CL nodes leave the devenv.

See changelog/2026-06-01_phased_clnode_component.md for full details.

Testing

Passes all three CI test combinations: standalone phased (env-phased.toml), CL-node phased
(env-phased.toml,env-cl-phased.toml), and legacy monolith (env.toml).

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

@winder winder force-pushed the will/phased-cl-node branch 2 times, most recently from ee6d91a to 355b7ba Compare May 31, 2026 14:43
@winder winder changed the title WIP: build/devenv: add cl-node back into phased devenv build/devenv: add cl-node back into phased devenv Jun 1, 2026
@winder winder force-pushed the will/devenv-misc branch from 86e2611 to d4e5a9d Compare June 2, 2026 17:57
@winder winder force-pushed the will/phased-cl-node branch from 708d4e2 to df70003 Compare June 2, 2026 18:46
Base automatically changed from will/devenv-misc to main June 2, 2026 19:21
winder added 8 commits June 2, 2026 15:37
committeeccv now registers and connects the CL node sets to JD before
the lane/committee config, then populates NodeIDs on a local copy of the
environment so ApplyVerifierConfig can fetch CL-mode signing keys from
JD. The shared _env output is left untouched (mirrors tokenverifier).
env-cl-phased.toml runs the verifiers in CL mode across two shared
nodes; executors stay standalone for now.
CL node secrets are boot-only, so aggregator HMAC credentials must
be written to TestSecretsOverrides before LaunchNodeSets; the effect
executor now calls AcceptPendingJobs before SyncAndVerifyJobProposals
and passes a local env copy with NodeIDs from JD so the sync can map
NOP aliases to node IDs.
Registers two Phase 3 components in the committeeccv package:
the clean standalone variant (component.go) and the CL-node
variant (component_clnode.go) which absorbs the former clnode
Phase-1 config-vehicle. The clnode package is deleted; all
CL-node code is isolated in one file for future removal.
@winder winder force-pushed the will/phased-cl-node branch from df70003 to e0ccd63 Compare June 2, 2026 19:37
@winder winder marked this pull request as ready for review June 2, 2026 19:37
Copilot AI review requested due to automatic review settings June 2, 2026 19:37
@winder winder requested review from a team as code owners June 2, 2026 19:37
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

Code coverage report:

Package main will/phased-cl-node Diff
github.com/smartcontractkit/chainlink-ccv/aggregator 49.35% 49.35% +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.68% 37.68% +0.00%
github.com/smartcontractkit/chainlink-ccv/integration 46.13% 46.13% +0.00%
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.06% 63.06% +0.00%
github.com/smartcontractkit/chainlink-ccv/verifier 34.48% 34.48% +0.00%
Total 46.50% 46.50% +0.00%

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 restores Chainlink-node (“CL-node”) verifier mode support for the phased devenv (--env-mode phased) by introducing a dedicated Phase 3 committeeccv_clnode component and wiring the phased effect executor / CI to handle CL-node job proposal flows correctly.

Changes:

  • Add a new committeeccv_clnode Phase 3 component that launches CL node sets, bakes aggregator HMAC secrets into node specs, registers nodes with JD, and then reuses shared CommitteeCCV Phase 3 logic.
  • Refactor committeeccv Phase 3 logic into shared helpers (parsePhase3Inputs, ensureAggregatorCredentials, runPhase3Core) used by both standalone and CL-node variants.
  • Update phased job proposal execution and CI workflows/config overlays to support phased CL-node smoke testing and correct output selection.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
changelog/2026-06-01_phased_clnode_component.md Documents the phased CL-node component and config key migration ([clnode][committeeccv_clnode]).
build/devenv/env-cl-phased.toml Adds phased CL-mode overlay using [committeeccv_clnode] and updates topology to shared CL node NOPs.
build/devenv/env-cl-ci-phased.toml CI overlay to use prebuilt CL node images under [committeeccv_clnode].
build/devenv/effect_executor.go Accepts pending CL-node job proposals before verification and populates NodeIDs for syncing.
build/devenv/components/committeeccv/component.go Extracts shared Phase 3 logic and inputs parsing for reuse by CL-node variant.
build/devenv/components/committeeccv/component_clnode.go Implements the new committeeccv_clnode phased component (node launch, JD registration, secret baking).
.github/workflows/test-smoke.yaml Renames phased smoke matrix entry (and keeps phased output config handling consistent).
.github/workflows/test-cl-smoke.yaml Adds phased CL-node smoke test entry and plumbs optional flags / output config into the workflow.

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

Comment on lines +152 to +155
clNopAliases := clModeNOPAliases(topology)
if len(clNopAliases) == 0 {
return nil, nil, nil
}
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is intentional.

Comment on lines +352 to +367
link := toBigUnits(cfg.CLNodesFundingLink, 1)
native := toBigUnits(cfg.CLNodesFundingETH, 5)
for i, impl := range impls {
if ferr := impl.FundNodes(ctx, cfg.NodeSets, blockchains[i], link, native); ferr != nil {
return fmt.Errorf("committeeccv_clnode: FundNodes on %q: %w", blockchains[i].Type, ferr)
}
}
return nil
}

func toBigUnits(v float64, def int64) *big.Int {
if v <= 0 {
return big.NewInt(def)
}
return big.NewInt(int64(v))
}
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Not an issue in a devenv.

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.

2 participants