Skip to content

Add Dual Governance to scratch deploy - #1816

Open
arwer13 wants to merge 52 commits into
masterfrom
feat/scratch-dg
Open

Add Dual Governance to scratch deploy#1816
arwer13 wants to merge 52 commits into
masterfrom
feat/scratch-dg

Conversation

@arwer13

@arwer13 arwer13 commented May 16, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@arwer13
arwer13 requested review from a team as code owners May 16, 2026 13:24
@github-actions

github-actions Bot commented May 16, 2026

Copy link
Copy Markdown

badge

Hardhat Unit Tests Coverage Summary

Details
Filename                                                                Stmts    Miss  Cover    Missing
--------------------------------------------------------------------  -------  ------  -------  ------------------------------------------------------------------------------------------------------------
contracts/0.4.24/Lido.sol                                                 310      11  96.45%   1038-1057, 1165-1177
contracts/0.4.24/StETH.sol                                                 80       0  100.00%
contracts/0.4.24/StETHPermit.sol                                           15       0  100.00%
contracts/0.4.24/lib/Packed64x4.sol                                         5       0  100.00%
contracts/0.4.24/lib/SigningKeys.sol                                       36       0  100.00%
contracts/0.4.24/lib/StakeLimitUtils.sol                                   41       0  100.00%
contracts/0.4.24/nos/NodeOperatorsRegistry.sol                            435       0  100.00%
contracts/0.4.24/utils/Pausable.sol                                         9       0  100.00%
contracts/0.4.24/utils/UnstructuredStorageExt.sol                          14       0  100.00%
contracts/0.4.24/utils/Versioned.sol                                        5       0  100.00%
contracts/0.6.12/WstETH.sol                                                17       0  100.00%
contracts/0.8.25/CLValidatorVerifier.sol                                   34       1  97.06%   92
contracts/0.8.25/TopUpGateway.sol                                         102       2  98.04%   272, 320
contracts/0.8.25/ValidatorExitDelayVerifier.sol                            75       0  100.00%
contracts/0.8.25/consolidation/ConsolidationBus.sol                        73       0  100.00%
contracts/0.8.25/consolidation/ConsolidationGateway.sol                    75       0  100.00%
contracts/0.8.25/consolidation/ConsolidationMigrator.sol                   65       0  100.00%
contracts/0.8.25/lib/BeaconChainDepositor.sol                              42       4  90.48%   44, 47, 83, 98
contracts/0.8.25/sr/ISRBase.sol                                             0       0  100.00%
contracts/0.8.25/sr/SRLib.sol                                             290      15  94.83%   99-148, 313
contracts/0.8.25/sr/SRStorage.sol                                          13       0  100.00%
contracts/0.8.25/sr/SRTypes.sol                                             0       0  100.00%
contracts/0.8.25/sr/SRUtils.sol                                            13       1  92.31%   87
contracts/0.8.25/sr/StakingRouter.sol                                     273      11  95.97%   70, 384-393, 640-641, 725, 779, 877-882
contracts/0.8.25/utils/AccessControlConfirmable.sol                         2       0  100.00%
contracts/0.8.25/utils/Confirmable2Addresses.sol                            5       0  100.00%
contracts/0.8.25/utils/Confirmations.sol                                   37       0  100.00%
contracts/0.8.25/utils/PausableUntilWithRoles.sol                           3       0  100.00%
contracts/0.8.25/vaults/LazyOracle.sol                                    134      18  86.57%   203-209, 248, 276-279, 436, 449, 465, 513, 554-556, 648, 656
contracts/0.8.25/vaults/OperatorGrid.sol                                  196       1  99.49%   203
contracts/0.8.25/vaults/PinnedBeaconProxy.sol                               6       0  100.00%
contracts/0.8.25/vaults/StakingVault.sol                                  111      14  87.39%   307-341
contracts/0.8.25/vaults/ValidatorConsolidationRequests.sol                 48       3  93.75%   183, 187, 199
contracts/0.8.25/vaults/VaultFactory.sol                                   34       0  100.00%
contracts/0.8.25/vaults/VaultHub.sol                                      427      76  82.20%   257-266, 281-287, 342-366, 383, 552-553, 595-688, 998-1000, 1088-1092, 1150, 1205-1212, 1498-1499, 1514-1524
contracts/0.8.25/vaults/dashboard/Dashboard.sol                           137       8  94.16%   183-201, 327, 636-649
contracts/0.8.25/vaults/dashboard/NodeOperatorFee.sol                      70       0  100.00%
contracts/0.8.25/vaults/dashboard/Permissions.sol                          47       2  95.74%   321-330
contracts/0.8.25/vaults/interfaces/IPinnedBeaconProxy.sol                   0       0  100.00%
contracts/0.8.25/vaults/interfaces/IPredepositGuarantee.sol                 0       0  100.00%
contracts/0.8.25/vaults/interfaces/IStakingVault.sol                        0       0  100.00%
contracts/0.8.25/vaults/interfaces/IVaultFactory.sol                        0       0  100.00%
contracts/0.8.25/vaults/lib/PinnedBeaconUtils.sol                           5       0  100.00%
contracts/0.8.25/vaults/lib/RecoverTokens.sol                               5       0  100.00%
contracts/0.8.25/vaults/lib/RefSlotCache.sol                               36       0  100.00%
contracts/0.8.25/vaults/predeposit_guarantee/CLProofVerifier.sol           16       0  100.00%
contracts/0.8.25/vaults/predeposit_guarantee/MeIfNobodyElse.sol             3       0  100.00%
contracts/0.8.25/vaults/predeposit_guarantee/PredepositGuarantee.sol      213      12  94.37%   483-503, 532, 671, 678, 700
contracts/0.8.9/Accounting.sol                                             98       2  97.96%   384-385
contracts/0.8.9/Burner.sol                                                 92       0  100.00%
contracts/0.8.9/DepositSecurityModule.sol                                 120       0  100.00%
contracts/0.8.9/EIP712StETH.sol                                            16       0  100.00%
contracts/0.8.9/LidoExecutionLayerRewardsVault.sol                         16       0  100.00%
contracts/0.8.9/LidoLocator.sol                                            28       0  100.00%
contracts/0.8.9/OracleDaemonConfig.sol                                     28       0  100.00%
contracts/0.8.9/TokenRateNotifier.sol                                      45       0  100.00%
contracts/0.8.9/TriggerableWithdrawalsGateway.sol                          54       1  98.15%   271
contracts/0.8.9/WithdrawalQueue.sol                                        88       0  100.00%
contracts/0.8.9/WithdrawalQueueBase.sol                                   146       0  100.00%
contracts/0.8.9/WithdrawalQueueERC721.sol                                  89       0  100.00%
contracts/0.8.9/WithdrawalVault.sol                                        37       0  100.00%
contracts/0.8.9/WithdrawalVaultEIP7685.sol                                 45       0  100.00%
contracts/0.8.9/lib/ExitLimitUtils.sol                                     35       0  100.00%
contracts/0.8.9/lib/Math.sol                                                4       0  100.00%
contracts/0.8.9/lib/PositiveTokenRebaseLimiter.sol                         22       0  100.00%
contracts/0.8.9/lib/UnstructuredRefStorage.sol                              2       0  100.00%
contracts/0.8.9/oracle/AccountingOracle.sol                               197       3  98.48%   440-441, 615
contracts/0.8.9/oracle/BaseOracle.sol                                      89       1  98.88%   401
contracts/0.8.9/oracle/HashConsensus.sol                                  263       1  99.62%   1005
contracts/0.8.9/oracle/ValidatorsExitBus.sol                              243       2  99.18%   1037, 1102
contracts/0.8.9/oracle/ValidatorsExitBusOracle.sol                         58       1  98.28%   218
contracts/0.8.9/proxy/OssifiableProxy.sol                                  17       0  100.00%
contracts/0.8.9/proxy/WithdrawalsManagerProxy.sol                          60       0  100.00%
contracts/0.8.9/sanity_checks/OracleReportSanityChecker.sol               382       2  99.48%   1300, 1312
contracts/0.8.9/utils/DummyEmptyContract.sol                                0       0  100.00%
contracts/0.8.9/utils/PausableUntil.sol                                    31       0  100.00%
contracts/0.8.9/utils/Versioned.sol                                        11       0  100.00%
contracts/0.8.9/utils/access/AccessControl.sol                             23       0  100.00%
contracts/0.8.9/utils/access/AccessControlEnumerable.sol                    9       0  100.00%
contracts/common/utils/PausableUntil.sol                                   29       0  100.00%
contracts/tooling/AlertingHarness.sol                                      54       1  98.15%   97
contracts/tooling/sepolia/SepoliaDepositAdapter.sol                        21      21  0.00%    55-106
TOTAL                                                                    6009     214  96.44%

Diff against master

Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%

Results for commit: fe5aa49

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

@arwer13
arwer13 force-pushed the feat/scratch-dg branch from d4a0457 to c89645b Compare June 4, 2026 19:27
@arwer13 arwer13 changed the title Feat/scratch dg Add Dual Governance to scratch deploy Jun 8, 2026
@arwer13
arwer13 requested a review from tamtamchik June 8, 2026 11:16
@tamtamchik
tamtamchik requested a review from Copilot June 9, 2026 11:35

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

Note

Copilot was unable to run its full agentic suite in this review.

This PR improves scratch deployment and integration testing across backends (in-process Hardhat vs external nodes like anvil/hardhat-node), adds Dual Governance (DG) scratch deploy support (via Foundry submodule), and introduces Sepolia-specific handling for the beacon deposit contract via an adapter plus test skips for unsupported variable deposit amounts.

Changes:

  • Add DG scratch deploy step (0160) backed by a Foundry submodule, plus role/permission handoff updates and new DG integration coverage.
  • Improve external-node test reliability (snapshot restore guards, revert-message assertions, deterministic role signers, timestamp/time-warp guards, and mined-tx waits).
  • Add Sepolia deposit adapter wiring + provisioning/funding logic, and skip variable-deposit flows on Sepolia.

Reviewed changes

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

Show a summary per file
File Description
test/suite/snapshot.ts Guard snapshot restore when suite snapshot was never taken
test/integration/vaults/scenario/pdg-paused-happy-path.integration.ts Add time nudges to keep timestamp assertions meaningful on external nodes
test/integration/vaults/scenario/pdg-deposit.integration.ts Skip scenario when variable deposit amounts aren’t supported
test/integration/vaults/scenario/node-operator.happy-path.integration.ts Skip scenario when variable deposit amounts aren’t supported
test/integration/vaults/scenario/happy-path.integration.ts Skip PDG-related test when variable deposit amounts aren’t supported
test/integration/vaults/pdg.integration.ts Skip PDG shortcut test when variable deposit amounts aren’t supported
test/integration/vaults/disconnected.integration.ts Skip beacon-deposit tests when variable deposit amounts aren’t supported
test/integration/vaults/dashboard.integration.ts Skip beacon-deposit test when variable deposit amounts aren’t supported
test/integration/report-validator-exit-delay.ts Add +1s time warp margin for inclusive threshold behavior on external nodes
test/integration/dual-governance/dg-scratch.integration.ts New DG “scratch launch state” integration coverage
test/integration/core/second-opinion.integration.ts Factor Sepolia constants into shared module
test/integration/core/negative-rebase.integration.ts Factor Sepolia constants into shared module
test/hooks/assertion/revertedWithOZAccessControlError.ts Make revert assertion backend-agnostic (Hardhat vs external node wording)
test/0.8.9/ISepoliaDepositContract.sol Remove Sepolia deposit contract interface from test tree
scripts/utils/upgrade.ts Add reusable DG proposal execution helper with time-constraint retries + Fusaka gas-cap checks
scripts/scratch/steps/0160-deploy-dual-governance.ts New DG scratch deploy + wiring step (forge deploy, state persistence, permission finalize)
scripts/scratch/steps/0150-transfer-roles.ts Defer renounce on sealables when DG enabled; include Sepolia deposit adapter ownership/admin transfer; move template ownership transfer to 0160
scripts/scratch/steps/0145-unpause-sealables.ts New step to resume sealables prior to DG registration
scripts/scratch/steps/0010-deploy-deposit-contract.ts Deploy Sepolia deposit adapter on Sepolia chainId; otherwise deploy normal deposit contract
scripts/scratch/steps.json Insert new scratch steps 0145 and 0160
scripts/scratch/deploy-params-testnet.toml Add [dualGovernance] scratch configuration section
scripts/run-logged.sh Add filtered logging wrapper with heartbeat and summary
scripts/dao-sepolia-fork-deploy.sh Add Sepolia fork deploy helper using run-logged wrapper
scripts/dao-local-deploy.sh Add run-logged wrapper and switch to in-process fork test flow
scripts/dao-deploy.sh Force-disable extra checks (gas report/size/interface check) during deploy
scripts/archive/stvaults/steps/0500-mock-v3-aragon-voting.ts Switch to new DG fork proposal execution helper
package.json Add “agent” logged test scripts; ensure scratch helper disables DG by default
lib/state-file.ts Add DG + Sepolia adapter keys; add tryGetAddress; adjust getAddress rules for DG entries
lib/scratch.ts Add robust DG enable/disable env parsing helper
lib/protocol/types.ts Add supportsVariableDepositAmounts flag to protocol context
lib/protocol/sepolia.ts Add Sepolia chain constants (chainId, deposit contract, BEPOLIA whale)
lib/protocol/provision.ts Provision Sepolia deposit adapter funding and clarify predeploy semantics
lib/protocol/networks.ts Provide EasyTrack fallback for scratch state files in forking mode
lib/protocol/helpers/vaults.ts Make roles deterministic across external nodes; fund role accounts; compute safe report timestamps for external nodes
lib/protocol/helpers/sepolia-deposit-adapter.ts Add helper to fund Sepolia deposit adapter with BEPOLIA
lib/protocol/helpers/index.ts Export Sepolia deposit adapter funding helper
lib/protocol/helpers/dsm.ts Await DSM addGuardians tx receipt for deterministic reads
lib/protocol/helpers/accounting.ts Fix HashConsensus initial epoch init to be chain-config-derived and mined; nudge time when initial epoch hasn’t arrived
lib/protocol/context.ts Treat PROVISION_ON_FORK as “scratch semantics”; add Sepolia support flag; provision on scratch/forked scratch
lib/index.ts Restore stable export ordering for ./string
lib/eips/predeploy.ts Add shared helper to ensure predeploy bytecode exists without overwriting unexpected code
lib/eips/eip7002.ts Use shared predeploy helper instead of bespoke code checks
lib/eips/eip4788.ts Add EIP-4788 runtime bytecode constant and ensure it via shared predeploy helper
lib/constants.ts Remove hardcoded HashConsensus far-future epoch constant
lib/config-schemas.ts Add Zod schema for [dualGovernance] section with cross-field validation
lib/account.ts Wrap impersonated signers on external nodes to wait for receipts (deterministic provisioning)
justfile Add reproducible deploy/test recipes across blank nodes and forks (with/without DG), routed through run-logged
hardhat.config.ts Add env-driven hardhat chainId; increase RPC timeouts; add solc settings override to keep template under size limit
foundry/lib/dual-governance Add DG Foundry submodule pointer
docs/testing.md New doc: testing modes, topologies, and recommended commands
docs/scratch-deploy.md Expand scratch deploy docs (DG, Sepolia fork, output modes, verification guidance)
docs/external-node-test-compat.md New doc: external node compatibility and hardhat-node fork-of-fork caveats
deployed-mainnet.json Update DG entries to { address } (non-proxy) layout
deployed-hoodi.json Update DG entries to { address } (non-proxy) layout
contracts/upgrade/interfaces/IEmergencyProtectedTimelock.sol Add missing view methods used by tests/helpers
contracts/0.4.24/template/LidoTemplate.sol Add DG/non-DG permission finalization functions; adjust permission manager flows
accounts.sample.json Add sample accounts config file for network private keys
.gitmodules Add DG submodule entry
.gitignore Ignore logs/ and editor swap files
.github/workflows/tests-integration-scratch.yml Expand scratch CI matrix (with/without DG; blank and Sepolia fork), update node image, checkout submodules
.github/workflows/tests-integration-hoodi.yml Pin Hoodi fork block number for pre-upgrade v3 artifact compatibility
.github/workflows/setup/action.yml Install Foundry toolchain in CI setup
.env.example Document DG toggle and optional SKIP_* env vars
Comments suppressed due to low confidence (3)

scripts/scratch/steps/0010-deploy-deposit-contract.ts:1

  • state.chainId is likely not guaranteed to be a number (elsewhere it’s cast via Number(state.chainId)). If it’s a string, this strict comparison won’t match and Sepolia will incorrectly deploy the regular DepositContract. Convert state.chainId to a number (or compare as BigInt consistently) before branching.
    scripts/dao-deploy.sh:1
  • These unconditional exports override user intent and make it impossible to run a deploy with gas report / contract size / interface checks enabled. Prefer setting defaults only when the variables are unset (so callers can opt back in), or move these defaults to the higher-level convenience scripts (dao-local-deploy.sh, CI) rather than the core deploy entrypoint.
    test/integration/core/second-opinion.integration.ts:1
  • The variable name bepiloaSigner looks like a typo (likely intended bepoliaSigner). Renaming would improve readability and reduce confusion when scanning Sepolia-specific setup.

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

Comment on lines +16 to +19
const [adapterAddress, bepolia] = await Promise.all([
ctx.contracts.stakingRouter.DEPOSIT_CONTRACT(),
ethers.getContractAt("ISepoliaDepositContract", SEPOLIA_ORIGINAL_DEPOSIT_CONTRACT),
]);
Comment on lines +17 to +20
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: stable

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is redundant, by default version in stable

@tamtamchik tamtamchik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Wow, it's huge. Thank you! Didn't finish yet, but left some comments.

Comment thread lib/protocol/context.ts
isScratch,
isMainnet: contracts.locator.address.toLowerCase() === MAINNET_LOCATOR_ADDRESS.toLowerCase(),
// see the comment on this field in ProtocolContext (lib/protocol/types.ts)
supportsVariableDepositAmounts: chainId !== BigInt(SEPOLIA_CHAIN_ID),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

supportsVariableDepositAmounts keys off chainId === SEPOLIA_CHAIN_ID, but a Sepolia fork reports 31337false, while the deposit adapter is the same. Is the fork case covered?

Comment thread .gitmodules
[submodule "foundry/lib/forge-std"]
path = foundry/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "foundry/lib/dual-governance"]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is the dual-governance submodule pin (ba9dfc9…) a released/audited ref or an arbitrary branch tip?

Comment thread scripts/dao-deploy.sh

export SKIP_GAS_REPORT=true
export SKIP_CONTRACT_SIZE=true
export SKIP_INTERFACES_CHECK=true

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

SKIP_*=true is now unconditional for all callers who use this file — intended?

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.

yes, these are dev checks - no need to redo them and bloat the output on deployment

Comment thread lib/config-schemas.ts
triggerableWithdrawalsGateway: TriggerableWithdrawalsGatewaySchema,
predepositGuarantee: PredepositGuaranteeSchema.omit({ genesisForkVersion: true }),
operatorGrid: OperatorGridSchema,
dualGovernance: DualGovernanceConfigSchema.optional(),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

dualGovernance is .optional(). If DG is enabled but this section is missing, does the 0160 guard fire before the schema would otherwise pass it through?

Comment thread lib/state-file.ts
dgConfigProvider = "dg:configProvider",
dgEmergencyGovernance = "dg:emergencyGovernance",
dgTiebreakerCoreCommittee = "dg:tiebreakerCoreCommittee",
dgTiebreakerSubCommittees = "dg:tiebreakerSubCommittees",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

getAddress(Sk.dgTiebreakerSubCommittees) not in the switch. Intended?

Comment on lines +14 to +19
# Output mode: by default this SELF-LOGS — the full combined deploy + test
# output is written to $LOG_FILE (default logs/scratch-deploy-sepolia-fork.log)
# while only milestones, mocha counts, and failures (plus a periodic heartbeat)
# reach the terminal. For raw, unfiltered output straight to the terminal:
# FULL_OUTPUT=1 bash scripts/dao-sepolia-fork-deploy.sh
# bash scripts/dao-sepolia-fork-deploy.sh --full # equivalent

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Not sure this is needed, tbh

Comment on lines +56 to +64
# Run the integration suite against an IN-PROCESS hardhat node that FORKS the
# anvil we just deployed to (MODE=forking: the default `hardhat` network forks
# $RPC_URL at latest; the deployment is read from $NETWORK_STATE_FILE). We do
# NOT drive anvil directly (`--network local`): the suite isolates tests with
# evm_snapshot/evm_revert plus month-scale time jumps, and that isolation is only
# reliable on the in-process node. Driving the external anvil over a long run
# lets snapshot state degrade (cf. the ~6k-block caveat in
# test/integration/core/dsm-pause-deposits.integration.ts), surfacing as
# cascading failures and an eventual mid-suite deadlock.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Duplication, looks like need to be held somewhere else.

Comment on lines +8 to +18
# Output mode: by default this SELF-LOGS — the full combined deploy + test
# output is written to $LOG_FILE (default logs/scratch-deploy.log) while only
# milestones, mocha counts (N passing/pending/failing), and failures reach the
# terminal. This keeps automation / LLM agents (and humans who just want signal)
# out of the gas reports, per-tx traces, and ~700 mocha test ticks. The log also
# emits a periodic heartbeat so a long, quiet phase (e.g. a slow integration
# test) isn't mistaken for a freeze.
#
# For raw, unfiltered output straight to the terminal:
# FULL_OUTPUT=1 bash scripts/dao-local-deploy.sh
# bash scripts/dao-local-deploy.sh --full # equivalent

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remove?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks like some scratch ideas, do we need it?

Comment thread docs/scratch-deploy.md

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks like cab be refactored to separate docs.

arwer13 added 2 commits June 10, 2026 19:01
- 0145/0160: catch up on deferred role renounces when resuming (leftover
RESUME_ROLE, deployer DEFAULT_ADMIN_ROLE after DG is flipped off)
- state-mate: resolve RPC per network, compute HC initial epoch from
genesisTime, handle Sepolia deposit adapter / chainSpec deposit contract
- dg-checks: drop the RPC_URL fallback for forge (in-process node is
unreachable)
- sepolia fork: set HARDHAT_CHAIN_ID so Sepolia-only paths trigger
- reuse isTruthyEnv, warn on missing EasyTrack executor in real forks,
drop unused deployEIP4788BeaconBlockRootContract; docs on fork-of-fork
limits
dry914 and others added 30 commits June 19, 2026 14:05
…ier-deployment-artifacts

chore: add NEST token rate  notifier and Lido locator deployment artefacts
…ier-hoodi-deployment

chore: add Hoodi TokenRateNotifier deployment artifacts
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.14.1 to 3.14.3.
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](aio-libs/aiohttp@v3.14.1...v3.14.3)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.2 to 3.15.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/3.15.1/CHANGELOG.md)
- [Commits](nodeca/js-yaml@3.14.2...3.15.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.15.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
PROTOCOL_ACTIVATION_ENABLED (default off) adds step 0155, which forwards
Lido.resume() + setStakingLimit through LidoTemplate.activateProtocol
before the Agent is handed to DG; 0145 also resumes WQ/VEBO.
build(deps-dev): bump aiohttp from 3.14.1 to 3.14.3
…yaml-3.15.1

build(deps): bump js-yaml from 3.14.2 to 3.15.1
On a live hoodi fork the well-known hardhat account #0 already holds
~0.05 stETH (anyone can fund public testnet addresses), which broke
three integration tests comparing absolute post-submit/post-mint
balances. Compare deltas instead.
Drop TokenRateNotifier NEST deploy and mock-upgrade steps
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.

5 participants