Release/v1.9.6 - #2125
Merged
Merged
Conversation
…r-polysafe-de-whitelisting-on-polygon # Conflicts: # package.json # pyproject.toml # uv.lock
… type (OPE-1919) The live Polygon staking contracts pin `service.multisig.codehash` to the PolySafe proxy. New Pearl builds deploy a standard Safe (PolySafe is being de-whitelisted), so old and new Polystrat services need different contract sets and must never see each other's. - `StakingProgramConfig.requiresPolySafe` flag; set on all six Polygon programs - `POLY_SAFE_PROXY_CODEHASH` constant (verified via `proxyHash()` on-chain) - `useIsPolySafeService`: fast path via the staked/stored program, else one `eth_getCode` keccak check; no RPC on chains without PolySafe contracts - `useStakingContracts` filters by multisig compatibility via the pure `getCompatibleStakingProgramIds` util; exposes `isStakingContractsLoaded` - SelectStakingPage: never recommends an incompatible default, waits for the compatible list, hides Back when there is no compatible Configure view; empty-state alert on the list - Tests for the util, hook, list ordering, page view-state and config flag - Docs: staking-and-rewards, staking-data-architecture, integration checklist Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A58h642jX4KMQxQwa8kdD7
Fixes the yarn audit CI job: new high advisories (GHSA-5jgf-p345-68v8, GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf, GHSA-jqff-g426-hqxp) on fast-uri <3.1.6, reached via electron-store>conf>ajv>fast-uri. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A58h642jX4KMQxQwa8kdD7
…(OPE-1919) New Polygon contracts that accept services deployed with a standard Safe (post PolySafe de-whitelisting). Verified on-chain: proxyHash() is the standard Safe proxy hash, deposits 50/500/5000 OLAS (100/1000/10000 tiers), same requester activity checker as Polystrat I-III, pools funded. - ids polystrat_iv/v/vi, addresses, activity checkers, program configs (no `requiresPolySafe`, activityTarget 8) - Polystrat defaultStakingProgramId -> PolystratIV - config/constants tests updated for 9 Polygon programs; docs Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A58h642jX4KMQxQwa8kdD7
- useIsPolySafeService: check "not deployed" before any program evidence; only a confirmed on-chain stake (activeStakingProgramId) is proof, and it proves standard Safe too (no eth_getCode for any staked user). The stored staking_program_id is no longer used — it may predate a failed stake. - Resolve the chain from the service's home_chain (multi-chain agents). - retry: 1 + gcTime: Infinity so the page doesn't stall ~7s on RPC failure. - RPC failure now surfaces isMultisigTypeError instead of guessing; useStakingContracts returns an empty list + isStakingContractsError and the list page shows an error alert with Retry. - Empty-state alert derives from stableOrder so it can't disagree with the rendered cards for a frame. - Polystrat IV/V/VI declare requiresPolySafe: false explicitly; test that every Polygon program declares the flag. - Config test: every enabled agent's defaultStakingProgramId is a non-deprecated program on its chain that supports the agent. - scripts/js/check_staking_proxy_hashes.ts (+ CI step): reads proxyHash() from each program on chains with requiresPolySafe entries and fails when a flag disagrees with the contract. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A58h642jX4KMQxQwa8kdD7
…chains in proxy-hash script - SelectActivityRewardsConfiguration: derive the stable card order during render (adjust-state-on-prop-change) instead of in an effect, so the cards and the empty-state alert always agree within one committed frame — no alert flash on first load, no alert above a still-populated list. - check_staking_proxy_hashes.ts: iterate every chain (no pre-filter on the flag it validates) with per-call retries. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A58h642jX4KMQxQwa8kdD7
…middleware-for-polysafe-de-whitelisting-on-polygon Prepare Pearl for PolySafe de-whitelisting on Polygon (OPE-1917, OPE-1919)
iasonrovis
requested review from
OjusWiZard and
Tanya-atatakai
as code owners
September 4, 2026 09:30
OjusWiZard
approved these changes
Sep 4, 2026
atepem
approved these changes
Sep 4, 2026
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.
Proposed changes
Types of changes
What types of changes does your code introduce?
Put an
xin the boxes that apply