Skip to content

build/devenv: remove fallback, scope lane flag, merge executor phases.#1137

Merged
winder merged 1 commit into
mainfrom
will/committeeccv-next
Jun 2, 2026
Merged

build/devenv: remove fallback, scope lane flag, merge executor phases.#1137
winder merged 1 commit into
mainfrom
will/committeeccv-next

Conversation

@winder
Copy link
Copy Markdown
Collaborator

@winder winder commented May 29, 2026

PR Chain

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

Description

Phased devenv cleanup: Four independent follow-up cleanups now that the legacy fallback component has been fully eliminated from the phased devenv runtime.

Remove SetFallback from the runtime registry

SetFallback / r.fallback is dead code — nothing registers a
fallback component any more. This removes the field from Registry,
both SetFallback functions (instance + package-level), the
fallbackOwner constant, and all four per-phase fallback execution
branches in environment.go. The two fallback-specific unit tests are
also deleted.

Stop routing use_legacy_configure_lane through an inter-phase key

protocol_contracts previously read the flag from its component config
and re-exported it as "_use_legacy_configure_lane" so that
committeeccv could consume it one phase later. Now that both
components share globalConfig, committeeccv reads the value
directly from globalConfig["protocol_contracts"]. The protocol_contracts
component no longer touches the flag at all. No TOML changes — the
field stays at [protocol_contracts].use_legacy_configure_lane.

Relax NodeSets validation tag

Cfg.NodeSets had validate:"required", which fails for phased
configs that have no [[nodeset]] sections. Changed to
validate:"omitempty". Monolith configs always pass env-cl.toml
which supplies NodeSets, so the monolith path is unaffected.

Merge executor into a single Phase 3 component

Executor was split across Phase 3 (launch + JD registration) and Phase
4 (job spec generation). The split was necessary when
protocol_contracts ran in Phase 3 — job specs needed _env,
_topology, and _ds which weren't available until Phase 3 completed.
Now that protocol_contracts is Phase 2, all executor dependencies are
in priorOutputs by Phase 3. RunPhase4 is deleted; its logic is
folded into RunPhase3. CLAUDE.md phase layout updated to reflect the
current state.

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

JD *jd.Input `toml:"jd" validate:"required"`
Blockchains []*blockchain.Input `toml:"blockchains" validate:"required"`
NodeSets []*ns.Input `toml:"nodesets" validate:"required"`
NodeSets []*ns.Input `toml:"nodesets" validate:"omitempty"`
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: I believe omitempty is placed after a comma in the toml tag: toml:"nodesets,omitempty". From what I can see the validate tags aren't actually being used, since the github.com/asaskevich/govalidator dep is indirect in the devenv go.mod.

Base automatically changed from will/committeeccv-component to main June 2, 2026 12:20
Cleaned up the phased devenv runtime by removing dead fallback code,
scoping use_legacy_configure_lane, relaxing NodeSets validation, and
merging executor into a single Phase 3 component. Integration tests
passed. Ready to commit each task individually for CI.
@winder winder force-pushed the will/committeeccv-next branch from 63e3470 to d8b791a Compare June 2, 2026 12:41
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

Code coverage report:

Package main will/committeeccv-next Diff
github.com/smartcontractkit/chainlink-ccv/aggregator 49.35% 49.33% -0.02%
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.72% 37.72% +0.00%
github.com/smartcontractkit/chainlink-ccv/integration 45.84% 45.84% +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%

@winder winder marked this pull request as ready for review June 2, 2026 12:47
@winder winder requested a review from a team as a code owner June 2, 2026 12:47
Copilot AI review requested due to automatic review settings June 2, 2026 12:47
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

Phased devenv runtime cleanup to remove now-dead fallback component support, simplify cross-component config flow, relax nodeset validation for phased configs, and consolidate executor behavior into a single Phase 3 component.

Changes:

  • Remove runtime registry/environment fallback-component plumbing and delete fallback-specific tests.
  • Stop re-exporting use_legacy_configure_lane via inter-phase outputs; read it directly from globalConfig["protocol_contracts"] in committeeccv.
  • Relax Cfg.NodeSets validation (requiredomitempty) and fold executor Phase 4 job-spec logic into Phase 3.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
build/devenv/runtime/registry.go Removes fallback factory support from the component registry and simplifies instantiation/validation.
build/devenv/runtime/environment.go Drops fallback execution branches and adjusts unclaimed-key warning behavior accordingly.
build/devenv/runtime/environment_test.go Deletes tests that exclusively validated fallback behavior.
build/devenv/environment.go Relaxes NodeSets validation to allow phased configs without [[nodeset]] sections.
build/devenv/components/protocol_contracts/component.go Stops emitting _use_legacy_configure_lane in outputs.
build/devenv/components/executor/component.go Merges executor Phase 4 job-spec generation/proposal into Phase 3.
build/devenv/components/committeeccv/component.go Reads use_legacy_configure_lane directly from globalConfig["protocol_contracts"].

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

effectExecutor = noopEffectExecutor{}
}
specific, fallback, err := r.instantiate(nil)
specific, err := r.instantiate(nil)
@winder winder added this pull request to the merge queue Jun 2, 2026
Merged via the queue into main with commit f3c4685 Jun 2, 2026
37 checks passed
@winder winder deleted the will/committeeccv-next branch June 2, 2026 14:28
winder added a commit that referenced this pull request Jun 2, 2026
Feedback from #1137

Move omitempty from a dead validate tag into the toml tag for NodeSets
(toml:"nodesets,omitempty") and remove the stale "fallback" reference
from the NewEnvironmentWithRegistry doc comment, which was removed in
an earlier PR.
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.

4 participants