Conversation
CORA - Pending ReviewersAll codeowners have approved! ✅ Legend: ✅ Approved | ❌ Changes Requested | 💬 Commented | 🚫 Dismissed | ⏳ Pending | ❓ Unknown For more details, see the full review summary. |
|
I see you updated files related to
|
|
✅ No conflicts with other open PRs targeting |
| StreamSpec | | ||
| CCIPSpec | ||
| CCIPSpec | | ||
| CCVCommitteeVerifierSpec | |
There was a problem hiding this comment.
These had not been implemented but existed as job types
| contractABI, err = i_automation_registry_master_wrapper_2_3.IAutomationRegistryMaster23MetaData.GetAbi() | ||
| default: | ||
| contractABI, err = keeper_registry_wrapper2_0.KeeperRegistryMetaData.GetAbi() | ||
| return nil, fmt.Errorf("unsupported keeper registry version: %v", version) |
There was a problem hiding this comment.
The previous behaviour was error prone. It didn't use 2.3 and when 2.3 was asked for it fell back to 2.0 silently
There was a problem hiding this comment.
Pull request overview
Risk Rating: HIGH — removes an entire legacy job type/config surface area and introduces a schema migration that drops tables/columns.
This PR removes legacy Keeper (v1.x) job/config support across core, devenv, docs, GraphQL schemas, test fixtures, and CI, and adds a DB migration to drop the legacy keeper job tables/columns.
Changes:
- Remove legacy
keeperjob type support (validation, delegates, resolvers/presenters, pipeline special-casing, tests/fixtures). - Remove Keeper node config/documentation/testdata sections and deprecated devenv “keepers” product.
- Add migration
0296to delete legacy keeper jobs, drop legacy keeper tables/column, and updatejobs.chk_specs.
Reviewed changes
Copilot reviewed 107 out of 109 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| testdata/scripts/node/validate/warnings.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/valid.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/invalid.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/invalid-ocr-p2p.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/fallback-override.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/disk-based-logging.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/disk-based-logging-no-dir.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/disk-based-logging-disabled.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/defaults-override.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/node/validate/default.txtar | Removes [Keeper] config section from validation fixture |
| testdata/scripts/config/merge_raw_configs.txtar | Removes [Keeper] config section from merge fixture |
| docs/CONFIG.md | Removes Keeper config documentation |
| devenv/tests/keepers/smoke_test_helpers.go | Deletes devenv keepers test helpers |
| devenv/tests/keepers/load_test.go | Deletes placeholder keepers load test |
| devenv/products/keepers/low_bcptr.toml | Removes devenv keepers product config |
| devenv/products/keepers/high_bcptr.toml | Removes devenv keepers product config |
| devenv/products/keepers/helpers.go | Deletes devenv keepers helper utilities |
| devenv/products/keepers/core.go | Deletes devenv keepers core logic |
| devenv/products/keepers/configuration.go | Deletes devenv keepers configurator/product implementation |
| devenv/products/keepers/basic.toml | Removes devenv keepers product config |
| devenv/products/automation/configuration.go | Disallows registry versions < 2.0 in automation configurator |
| devenv/environment.go | Removes keepers product from devenv product factory |
| devenv/design.md | Removes keepers row from devenv design docs |
| devenv/contracts/keeper.go | Drops 1.x registry versions and preserves numeric values for 2.x versions |
| devenv/contracts/ethereum_contracts.go | Removes 1.x registry ABI selection; errors on unsupported version |
| devenv/README.md | Removes keepers from devenv CI matrix documentation |
| deployment/environment/web/sdk/internal/schema.graphql | Removes KeeperSpec from JobSpec union (and updates schema definitions) |
| deployment/environment/web/sdk/internal/genqlient.graphql | Removes KeeperSpec fragments/usages |
| deployment/environment/nodeclient/chainlink_models.go | Removes legacy KeeperJobSpec model |
| core/web/schema/type/spec.graphql | Removes KeeperSpec from GraphQL schema |
| core/web/resolver/testdata/config-multi-chain.toml | Removes [Keeper] config from resolver fixture |
| core/web/resolver/testdata/config-multi-chain-effective.toml | Removes [Keeper] effective config from resolver fixture |
| core/web/resolver/testdata/config-full.toml | Removes [Keeper] config from resolver fixture |
| core/web/resolver/testdata/config-empty-effective.toml | Removes [Keeper] effective config from resolver fixture |
| core/web/resolver/spec_test.go | Removes KeeperSpec GraphQL resolver test |
| core/web/resolver/spec.go | Removes KeeperSpec resolver implementation |
| core/web/resolver/mutation.go | Removes keeper job validation path from GraphQL CreateJob |
| core/web/presenters/job_test.go | Removes keeper job presenter expectations/tests |
| core/web/presenters/job.go | Removes keeper presenter types/fields and job resource wiring |
| core/web/jobs_controller_test.go | Removes keeper job creation test case |
| core/web/jobs_controller.go | Removes keeper job validation path from REST create job |
| core/testdata/testspecs/v2_specs.go | Removes keeper job spec generator |
| core/store/migrate/migrations/0296_drop_legacy_keeper_job.sql | Adds migration to drop legacy keeper jobs/tables/column and update chk_specs |
| core/store/migrate/migrate_test.go | Adds KeeperSpecID field to support SELECT * prior to migration 0296 in tests |
| core/services/pipeline/orm_test.go | Removes keeper-specific pipeline ORM test |
| core/services/pipeline/orm.go | Removes special-casing of keeper pipeline observation source |
| core/services/pipeline/common_test.go | Removes keeper-specific gas limit selection test |
| core/services/pipeline/common.go | Removes KeeperJobType and gas limit selection branch |
| core/services/keeper/validate_test.go | Deletes legacy keeper validation tests |
| core/services/keeper/validate.go | Deletes legacy keeper TOML validation |
| core/services/keeper/utils.go | Deletes keeper upkeep parsing/utility helpers |
| core/services/keeper/upkeep_executer_unit_test.go | Deletes legacy keeper executor unit test |
| core/services/keeper/upkeep_executer_test.go | Deletes legacy keeper executor integration tests |
| core/services/keeper/upkeep_executer.go | Deletes legacy keeper upkeep executor |
| core/services/keeper/registry_synchronizer_sync_test.go | Deletes legacy registry synchronizer sync test |
| core/services/keeper/registry_synchronizer_sync.go | Deletes legacy registry sync implementation |
| core/services/keeper/registry_synchronizer_process_logs.go | Deletes legacy registry log processing |
| core/services/keeper/registry_synchronizer_log_listener.go | Deletes legacy registry log listener |
| core/services/keeper/registry_synchronizer_helper_test.go | Deletes legacy registry synchronizer test helper |
| core/services/keeper/registry_synchronizer_core.go | Deletes legacy registry synchronizer core |
| core/services/keeper/registry_interface_logs.go | Deletes legacy registry interface log helpers |
| core/services/keeper/registry_interface.go | Deletes legacy registry wrapper/interface |
| core/services/keeper/orm.go | Deletes legacy keeper ORM |
| core/services/keeper/models_test.go | Deletes legacy keeper models test |
| core/services/keeper/models.go | Deletes legacy keeper models |
| core/services/keeper/helpers_test.go | Deletes legacy keeper test helpers |
| core/services/keeper/errors.go | Deletes legacy keeper error definitions |
| core/services/keeper/delegate.go | Deletes legacy keeper job delegate |
| core/services/keeper/common.go | Deletes legacy keeper ABIs and interfaces |
| core/services/job/validate.go | Removes keeper from validated job types list |
| core/services/job/orm.go | Removes keeper spec persistence and related delete/load behavior |
| core/services/job/models.go | Removes keeper job type and spec model from core job models |
| core/services/job/job_orm_test.go | Removes keeper-related ORM tests and imports |
| core/services/chainlink/testdata/config-multi-chain.toml | Removes [Keeper] config from chainlink fixture |
| core/services/chainlink/testdata/config-multi-chain-effective.toml | Removes [Keeper] effective config from chainlink fixture |
| core/services/chainlink/testdata/config-full.toml | Removes [Keeper] config from chainlink fixture |
| core/services/chainlink/testdata/config-empty-effective.toml | Removes [Keeper] effective config from chainlink fixture |
| core/services/chainlink/mocks/general_config.go | Removes Keeper() from GeneralConfig mock |
| core/services/chainlink/config_test.go | Removes Keeper config from config marshal tests |
| core/services/chainlink/config_keeper_test.go | Deletes keeper config tests |
| core/services/chainlink/config_keeper.go | Deletes keeper config implementation |
| core/services/chainlink/config_general.go | Removes Keeper() from general config |
| core/services/chainlink/application.go | Removes keeper delegate wiring from application |
| core/scripts/chaincli/handler/upkeep_util.go | Moves upkeep parsing helpers into chaincli handler package |
| core/scripts/chaincli/handler/keeper_withdraw.go | Drops legacy registry (1.x) support and uses chaincli registry version enum |
| core/scripts/chaincli/handler/keeper_upkeep_history.go | Removes legacy upkeep history implementation; now hard-errors |
| core/scripts/chaincli/handler/keeper_launch.go | Drops legacy keeper job creation and legacy withdraw paths |
| core/scripts/chaincli/handler/keeper_deployer.go | Removes v1.1/v1.2 keeper deployers |
| core/scripts/chaincli/handler/keeper.go | Removes legacy registry deploy/get paths; restricts to 2.0/2.1 |
| core/scripts/chaincli/config/registry_version.go | Introduces chaincli-specific registry version enum |
| core/scripts/chaincli/config/config.go | Switches chaincli config to new enum and updates defaults/validation |
| core/scripts/chaincli/command/keeper/upkeep.go | Uses new upkeep parsing helper and renames local variables |
| core/internal/cltest/factories.go | Removes keeper factories/helpers from test utilities |
| core/config/toml/types.go | Removes Keeper config types and merging logic |
| core/config/keeper_config.go | Deletes keeper config interfaces |
| core/config/docs/core.toml | Removes Keeper config docs block |
| core/config/app_config.go | Removes Keeper() from AppConfig interface |
| core/cmd/jobs_commands_test.go | Removes keeper presenter expectations |
| core/cmd/jobs_commands.go | Removes keeper-specific createdAt rendering path |
| .github/workflows/legacy-system-tests.yml | Removes keepers smoke tests from legacy system tests workflow |
| .github/CODEOWNERS | Removes codeowner entry for deleted keeper package |
| ALTER TABLE jobs DROP COLUMN IF EXISTS keeper_spec_id; | ||
|
|
||
| DROP TABLE IF EXISTS upkeep_registrations; | ||
| DROP TABLE IF EXISTS keeper_registries; | ||
| DROP TABLE IF EXISTS keeper_specs; | ||
|
|
||
| ALTER TABLE jobs DROP CONSTRAINT IF EXISTS chk_specs; | ||
| ALTER TABLE jobs ADD CONSTRAINT chk_specs CHECK ( |
| RegistryVersion_2_0 KeeperRegistryVersion = 4 | ||
| RegistryVersion_2_1 KeeperRegistryVersion = 5 | ||
| RegistryVersion_2_2 KeeperRegistryVersion = 6 | ||
| RegistryVersion_2_3 KeeperRegistryVersion = 7 |
There was a problem hiding this comment.
curious: why not?
RegistryVersion_2_0 KeeperRegistryVersion = iota
RegistryVersion_2_1
RegistryVersion_2_2
RegistryVersion_2_3
There was a problem hiding this comment.
This keeps the enums the same as pre v1 removal. Not sure if anything breaks if we don't do this but I don't see any reason to change the values for existing versions.
|
Let's wait for the legacy devenv tests run: https://github.com/smartcontractkit/chainlink/actions/runs/25106059961 |
|
Tofel
left a comment
There was a problem hiding this comment.
approving the devenv/* related part
…t#22290) * docs: document Keepers v1 removal in 2.45.0 changelog Add breaking change entry for PR smartcontractkit#22208 (commit b8e5aec). This was omitted from the published GitHub release notes; CHANGELOG.md is the durable record for operators. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update CHANGELOG.md --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>




This PR removes the Keepers v1 code. This does not impact keepers/automation v2 (OCR based)..
The change is breaking since it removes the entire job type and deletes the dedicated DB tables.