Skip to content

Release/v1.9.6 - #2125

Merged
iasonrovis merged 13 commits into
mainfrom
release/v1.9.6
Sep 4, 2026
Merged

Release/v1.9.6#2125
iasonrovis merged 13 commits into
mainfrom
release/v1.9.6

Conversation

@iasonrovis

Copy link
Copy Markdown
Contributor

Proposed changes

Types of changes

What types of changes does your code introduce?
Put an x in the boxes that apply

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

valory-coding-agent Bot and others added 11 commits September 1, 2026 13:42
…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
iasonrovis merged commit 114ab69 into main Sep 4, 2026
18 checks passed
@iasonrovis
iasonrovis deleted the release/v1.9.6 branch September 4, 2026 09:38
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.

4 participants