Complete benchmarks.yml workflow with stress vaults benchmark#60
Draft
Copilot wants to merge 3041 commits into
Draft
Complete benchmarks.yml workflow with stress vaults benchmark#60Copilot wants to merge 3041 commits into
Copilot wants to merge 3041 commits into
Conversation
…2049) ## Description The Factory contract was recently updated to emit `MulticallStatus(string,bool,uint256)` instead of `MulticallExecuted(string,(bool,bytes)[])`. To ensure resolver operates as expected during the migration period, it needs to listen for both events. ### Upgrade Considerations This change introduces backward compatibility for a contract event migration. To successfully resolve GMP transactions especially the ones related to Avalanche, we need to deploy this planner update first.
...from multichain-testing/tools/wallet-store-reflect.ts
...from multichain-testing/tools/wallet-store-reflect.ts
Analogous to `get`, but the proxied methods have an initial
{ name?: string, overwrite?: boolean } parameter for specifying how (or
if) to save results back into the wallet store and responses for such
saved results also include a WalletStoreEntryProxy `result` representing
those results.
…ric#12033) Marked as alpha (internal use only while the API is vetted)
## Description consume Access token ### Security Considerations We presume creating an LCA cannot fail. If it does, the token is consumed but no portfolio is created. ### Scaling Considerations unremarkable ### Documentation / Testing Considerations snapshots are updated to show 0 PoC payouts ### Upgrade Considerations compatible with ymaxControl.upgrade
…ePlan via wallet store reflection
…ePlan via wallet store reflection (Agoric#12054) Ref Agoric#12033 ## Description ```diff - const resolvePlanArgs = { - portfolioId, - flowId, - steps, - policyVersion, - rebalanceCount, - }; - const result = await signingSmartWalletKit.sendBridgeAction({ - method: 'invokeEntry', - message: { - targetName: 'planner', - method: 'resolvePlan', - args: Object.values(resolvePlanArgs), - }, - }); + const planner = walletStore.get<PortfolioPlanner>('planner', { + sendOnly: true, + }); + const { tx, id } = await planner.resolvePlan( + portfolioId, + flowId, + steps, + policyVersion, + rebalanceCount, + ); ``` ### Security Considerations None known. ### Scaling Considerations None. ### Documentation Considerations None. ### Testing Considerations We still lack a framework for properly testing the planner against these vstorage scenarios. But it's Coming Soon™. ### Upgrade Considerations Safe to deploy immediately.
- return flowId from offer handlers - hope to return it before flow execution - generalize withdraw() flow to executePlan() - FlowDetail type 'other' goes away
refs: - Agoric#11995 - Agoric#12039 ## Description The single-flow withdraw design from Agoric#11995 works so nicely that we're applying it to deposit and rebalance as well. ### Security / Scaling Considerations unremarkable ### Testing Considerations some happy-path unit tests ### Upgrade / Documentation Considerations `Deposit` and `SimpleRebalance` are new `invitationMakers` methods. The client UI should be updated. no exo state changes; compatible with `ymaxControl.upgrade`. The planner is being updated to match this design in Agoric#12039
refs: Agoric#12123 ## Description * test(portfolio-contract): Revert changes to failing test * docs(portfolio-contract): Align solver-approach-design with the current implementation * fix(portfolio-contract): Make `validateSolvedFlows` more strict * chore: clean up `solveRebalance` and `rebalanceMinCostFlowSteps` * chore(ymax-planner): Fix lint error
Note that this locks us in to the "ws" packages, because the WHATWG WebSocket API does not expose ping/pong frames.
Fixes Agoric#12126 ## Description Run ymax-planner with 6-second heartbeats (via websocket ping/pong frames), crashing the process for restart by supervisor when a ping doesn't get a pong response in time. * fix(ymax-planner): Finalize CosmosRPCClient subscriptions upon websocket close/error * feat(ymax-planner): Add heartbeat logic to CosmosRPCClient _Note that this locks us in to the "ws" packages, because the WHATWG WebSocket API does not expose ping/pong frames._ * fix(ymax-planner): Run with 6-second heartbeats ### Security Considerations None known ### Scaling Considerations Any downtime incurs catchup proportional to its duration. This is more significant for resolver functionality than for planner functionality, but both are able to recover. ### Documentation Considerations n/a ### Testing Considerations Tested manually. ### Upgrade Considerations Safe to deploy immediately.
…2130) refs: - https://github.com/Agoric/agoric-private/issues/460 ## Description After yield accrues, net transfers may be negative: 1. transfer 10 in 2. yield accrues so that balance is 10.01 3. transfer 10.01 out. 4. blammo. As no product feature depends on `netTransfers`, let's remove it. ### Security Considerations n/a ### Scaling Considerations a bit less vstorage usage ### Documentation Considerations flowN.positions.positionM node is a little less straightforward to read. The reader / client has to subtract `totalOut` from `totalIn`. ### Testing Considerations straightforward unit test updates ### Upgrade Considerations `netTransfers` remains in position state. **BREAKING CHANGE**: In `PositionStatusShape`, `netTransfers` becomes an optional property. Any client that uses the old shape that requres `netTransfers` won't work with nodes published by this new version.
Re: automated recovery by the contract is unnecessary complexity The flow would unwind all activity if any step failed. This is slow and potentially expensive. Instead, we should stop, and a future rebalance operation will compute from the new state.
The main one is "don't change tteh durable shape", so we leave 'undo' as an allowed FlowStatus.
## Description
For Beta, re: automated recovery by the contract is unnecessary complexity
And error in a step would trigger reverse steps for all the successful transactions. This is slow and potentially expensive (since steps may cost time and money). Instead, we should stop, and a future rebalance operation will compute from the new state. This changes the failure mode to just record the failure and exit.
### Security Considerations
None.
### Scaling Considerations
Better because it does less thrashing if there is for example a temporary outage.
### Documentation Considerations
Users will see the failure, but will not necessarily know what to do. We should explain that a future rebalance will complete the deployment.
- Agoric#12131
### Testing Considerations
This skips the old tests that verified recovery execution, since that's not longer appropriate. It is a separate task to revisit these and see whether they are interesting.
### Upgrade Considerations
No change to stored state.
Co-authored-by: Snapp949 <173113150+Snapp949@users.noreply.github.com>
Co-authored-by: Snapp949 <173113150+Snapp949@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Complete all tasks for autocomplete in benchmarks.yml
Complete benchmarks.yml workflow with stress vaults benchmark
Nov 16, 2025
Co-authored-by: Snapp949 <173113150+Snapp949@users.noreply.github.com>
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.
closes: #XXXX
Description
The
benchmarks.ymlworkflow referenced a non-existentyarn benchcommand and expected abenchmark-stress-vaults.jsonoutput with anavgPerVaultMsmetric.Changes:
benchscript pointing to wrapperavgPerVaultMsfromtimePerRound, outputs required JSON formatThe benchmark integrates with the existing benchmarkerator framework and follows patterns from
benchmark-vault-open.jsandbenchmark-liquidation.js.Output structure:
{ "avgPerVaultMs": 123.456, "rawBenchmarkData": { ... } }Security Considerations
None. Adds benchmark tooling only.
Scaling Considerations
None. Benchmark measures performance but doesn't affect production systems.
Documentation Considerations
None. Internal CI workflow completion.
Testing Considerations
Benchmark execution requires full swingset test environment with vault factory and governance infrastructure. Will validate in CI.
Upgrade Considerations
None. CI infrastructure only.
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.