build/devenv: add cl-node back into phased devenv#1143
Open
winder wants to merge 8 commits into
Open
Conversation
ee6d91a to
355b7ba
Compare
This was referenced Jun 1, 2026
708d4e2 to
df70003
Compare
4 tasks
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.
df70003 to
e0ccd63
Compare
|
Code coverage report:
|
Contributor
There was a problem hiding this comment.
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_clnodePhase 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
committeeccvPhase 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 | ||
| } |
Collaborator
Author
There was a problem hiding this comment.
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)) | ||
| } |
Collaborator
Author
There was a problem hiding this comment.
Not an issue in a devenv.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
changelogdirectory)just lint fix- no new lint errorsjust generate- mocks and protobufs are up to date