Skip to content

docs(evm): staging migration plan - #1372

Open
tt-cll wants to merge 6 commits into
mainfrom
tt/stagingDoc
Open

docs(evm): staging migration plan#1372
tt-cll wants to merge 6 commits into
mainfrom
tt/stagingDoc

Conversation

@tt-cll

@tt-cll tt-cll commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Description

Testing

Checklist

  • Breaking changes documented in changelog (see changelog directory)
  • Cross link related PRs (in this or other repositories)

@tt-cll
tt-cll marked this pull request as ready for review August 24, 2026 10:49
@tt-cll
tt-cll requested review from a team as code owners August 24, 2026 10:49
Copilot AI lite review requested due to automatic review settings August 24, 2026 10:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds an executable runbook for migrating the staging CCV DON from Chainlink-node (“CL mode”) to standalone verifier/executor processes, intended to be followed node-by-node in the live staging_testnet environment.

Changes:

  • Introduces a detailed, step-by-step staging migration plan covering prerequisites, per-node cutover steps, validation, rollback notes, and open questions.
  • Documents required staging-specific operational conventions (kube contexts, IssueOps deploy flow, durable pipeline usage, per-node secrets/DB provisioning).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

cd $CLD
go run ./domains/ccv/cmd durable-pipeline list --environment staging_testnet
go run ./domains/ccv/cmd domain config local create --domain ccv --env staging_testnet
# fill in the JD Cognito credentials it scaffolds

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.

Out of curiosity, how do we get these?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

fixed this. five offchain.job_distributor.auth fields; CI has them as OFFCHAIN_JD_AUTH_*_CCV_STAGING_TESTNET, no self-serve path for a local copy, so we'll have to ask #cld-guardian-support or use /run-pipelines. Also fixed the command, it's in cmd/cld.

Two cautions. First, no archived input in the repo has used
`consolidateAggregators`/`revokeOrphanedJobs` yet (the payload keys come from the resolver struct
fields, matched case-insensitively), so treat the first dry run as the test of the spelling.
Second, node 0 is also the sole member of the `secondary` committee, so it carries a

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.

Interesting, I didn't even know we had a secondary committee in staging.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yeah, it's in topology.toml + on chain + a live job on node 0; details moved to open question 1. Its aggregators have no release in ccv-deploy though, so retiring looks like the cheaper answer.

Comment on lines +159 to +162
Build and publish the standalone verifier and executor images to the internal ECR from a
chainlink-ccv commit that includes the 20 Aug migration tooling (merge `tt/stagingPrep` first).
The existing `manual-build.yaml` workflow in chainlink-ccv publishes to the private ECR the stage
cluster pulls from.

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.

We currently push a commit sha tagged image on each merge into main, and then a v0.x.y tagged image every time a release branch is merged. The former is more for speed, the latter for real releases. So I don't think you need to manually build anything, you can just use the commit sha tagged images that have the changes you need, or we can create v0.5.0

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

rewritten to use the -rc images from main with v0.5.0 as the alternative

Comment on lines +168 to +169
zero deploy instances; the verifier instances can point straight at it. No executor chart exists
anywhere, so create `deploy/charts/standalone-executor` with `committee-verifier-base` as the

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.

Can you check how solana does it in chainlink-ccv-non-evm-deploy? IIRC they've been working on these standard charts. They may have one for the executor we can use verbatim, as they're also standalone from day 1.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

good call. executor-solana is generic apart from image default/name. Plan now copies it as executor-evm.

databaseClusterName: chainlink-ccv-dons
databaseName: ccv_sa_1_verifier_bootstrap
connectionSecret:
name: ccv-sa-1-verifier-bootstrap-database-connection

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.

Check that you have admin perms to create these secrets - its an Okta request if not (ask me and I can point you to what to request)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

is the only way to check actually running the command? Or can I check the assignment in okta first? I can add details to the doc in case I'm not the one running this

```yaml
databases:
ccv-sa-1-verifier-bootstrap:
databaseClusterName: chainlink-ccv-dons

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.

I think we should create a new database cluster for the standalones just in case we had to do some manual nuking of stuff and for better isolation, wdyt?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yep agreed. Adopted as chainlink-ccv-evm-standalone with instance class is a placeholder

(the image-sync-check workflow errors without it). Shape:

```yaml
- name: ccv-standalone-verifier-1

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.

Small nit: lets have evm in the name somewhere, eventually we'll have all families

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

done

Comment on lines +286 to +290
### P9. Funding source and balance alerts

Identify what funds staging node accounts today (open question 2) and wire external balance
alerts for each new transmitter address on the five testnets. The standalone executor does not run
the node's balance monitor; an unfunded account surfaces as failed broadcasts, not as an alert.

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.

Do we have these right now? If not we can probably exclude

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

we actually don't. dropped it

### 1. Preflight

```sh
kubectl --context $CTX -n $NS exec deploy/$CL -- chainlink admin login --file /v2Secret/.api

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.

Is the file /v2Secret/.api in the container itself?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

yeah the chart mounts it at /v2Secret and boots with -a /v2Secret/.api. added a note to step 1

@github-actions

Copy link
Copy Markdown

Code coverage report:

Package main tt/stagingDoc Diff
github.com/smartcontractkit/chainlink-ccv/aggregator 50.86% 50.85% -0.01%
github.com/smartcontractkit/chainlink-ccv/bootstrap 70.72% 70.72% +0.00%
github.com/smartcontractkit/chainlink-ccv/cli 58.12% 58.12% +0.00%
github.com/smartcontractkit/chainlink-ccv/cmd 35.65% 35.65% +0.00%
github.com/smartcontractkit/chainlink-ccv/common 46.51% 46.51% +0.00%
github.com/smartcontractkit/chainlink-ccv/executor 42.80% 42.80% +0.00%
github.com/smartcontractkit/chainlink-ccv/indexer 35.54% 35.59% +0.05%
github.com/smartcontractkit/chainlink-ccv/integration 56.36% 56.36% +0.00%
github.com/smartcontractkit/chainlink-ccv/internal 0.00% 0.00% +0.00%
github.com/smartcontractkit/chainlink-ccv/migration 78.70% 78.70% +0.00%
github.com/smartcontractkit/chainlink-ccv/pkg 100.00% 100.00% +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/tools 43.61% 43.61% +0.00%
github.com/smartcontractkit/chainlink-ccv/verifier 36.32% 36.32% +0.00%
Total 49.40% 49.40% +0.00%

@makramkd makramkd left a comment

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: can you change PR title to docs since there's no new code here

@tt-cll
tt-cll enabled auto-merge August 27, 2026 10:37
@tt-cll tt-cll changed the title feat(evm): staging migration plan docs(evm): staging migration plan Aug 27, 2026
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