Skip to content

chore: merge v5.0-dev into v5.1-dev - #5432

Open
Claudius-Maginificent wants to merge 28 commits into
v5.1-devfrom
chore/merge-v5.0-into-v5.1-20261014
Open

Claudius-Maginificent wants to merge 28 commits into
v5.1-devfrom
chore/merge-v5.0-into-v5.1-20261014

Conversation

@Claudius-Maginificent

@Claudius-Maginificent Claudius-Maginificent commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Basic explanation

What this does: Brings v5.1-dev up to date with v5.0-dev by merging the 19 PRs that landed on v5.0-dev since the last forward merge (#5404, at 7f7ed87), and moves the rust-dashcore pin to dev at 626c91d1.

Value: v5.1-dev gets the 5.0.0-rc.1/rc.2 fixes: Core v24 support (getblockchaininfo without softforks, #5422), unknown Core payload layouts kept decodable (#5403), instant asset lock proofs decoded with rust-dashcore's legacy asset lock decoder (#5423), GroveDB 6.1.0 (#5414) and the proposer payout fix (#5399). The new pin includes that legacy decoder, so #5150 can later move to the rust-dashcore#1112 head (d89545c2, which is afbe5515 plus the #1112 commits) without changing how asset lock proofs are decoded.

Risks: Moderate.

Issue being fixed or feature implemented

v5.1-dev was 19 PRs behind v5.0-dev. Its rust-dashcore pin (90359ed5) also lacks Transaction::deserialize_with_legacy_asset_lock_framing, which #5423 depends on.

What was done?

Merged origin/v5.0-dev (bcbf05c) into origin/v5.1-dev (c61f46e). Incoming PRs:

Resolved by hand:

  • Cargo.toml: GroveDB comes from v5.0-dev (fc7028d8, 6.1.0, two commits ahead of v5.1-dev's 5cb0962a). Every rust-dashcore crate is pinned to dev at 626c91d1 (see below).
  • Cargo.lock: started from v5.1-dev's lockfile and ran cargo update -p dashcore -p grovedb. Only the GroveDB and rust-dashcore git packages and the workspace versions changed; no crates.io package moved.
  • CHANGELOG.md: kept the [Unreleased] section on top, followed by the rc.1 and rc.2 entries. Its rust-dashcore pin note now names 626c91d1, rust-dashcore#1167 and feat(dpp): better json schema error messages for data contracts #1175.

Merge fixes for v5.0-dev code written against APIs that v5.1-dev changed (part of the merge commit):

  • rs-drive-abci/examples/generate_wasm_{contract_cache,state_transition_wait}_vectors.rs and wasm-sdk/src/state_transitions/contract/cache_tests.rs: moved to secp256k1 0.33 (chore(platform)!: update rust-dashcore (incl secp256k1 0.33) #5307): SecretKey::from_secret_bytes and the context-free PublicKey::from_secret_key. Moved from the removed dpp::bls_signatures re-export to dpp::bls (refactor: share rust-dashcore BLS backend through dpp::bls #5320). The quorum keys derived from the same seeds are byte-identical to the committed ones.
  • rs-drive-abci/.../token/shielded/nullifier_batch_guard.rs (fix(drive-abci): guard accepted token pool nullifiers within batches #5411): its characterization tests pin GroveDB roots computed at PlatformVersion::latest(), which is protocol 15 on v5.1-dev. A separate commit repins the single-entry root and the nine settled hashes. With protocol 14 as latest, the old values reproduce exactly. At 15, validation hashes, fees and refunds are byte-identical; only the roots differ.
  • wasm-sdk/tests/fixtures/{contract-cache,state-transition-waits}/signed-responses.json: the client tests require fixtures recorded at the latest protocol version, which is 15 on v5.1-dev. Both fixtures were regenerated with the examples, following the fixture README. Two runs produced byte-identical output. Only protocol versions, GroveDB proofs, state roots and quorum signatures changed.

rust-dashcore pin: 90359ed5 → 626c91d1

v5.0-dev pins edc4d430, a branch off rust-dashcore dev that backports 16 commits. Each one is on dev at 626c91d1:

What 626c91d1 adds on top of 90359ed5 and how it touches Platform:

Asset lock proof decoding and the Core RPC code are identical to v5.0-dev. instant_asset_lock_proof.rs, rpc/core.rs and dash_core_client.rs have no diff against origin/v5.0-dev.

PLATFORM_V15 still points at the same sub-version tables as PLATFORM_V14 after the merge (only the protocol version number differs), so protocol version 15 picks up #5399 and #5414.

Files changed on both branches and merged automatically (worth a look in review):

  • .github/workflows/tests-rs-workspace.yml
  • Dockerfile
  • packages/rs-sdk-trusted-context-provider/src/provider.rs
  • packages/rs-sdk/src/sdk.rs
  • packages/wasm-sdk/src/context_provider.rs
  • packages/wasm-sdk/src/state_transitions/broadcast.rs
  • packages/js-evo-sdk/README.md and the package.json version bumps

Other effects on v5.1-dev:

  • The workspace version moves from 5.0.0-beta.6 to 5.0.0-rc.2, and the changelog gains the rc.1 and rc.2 entries.

Please merge with a merge commit (not squash) so the v5.0-dev history stays shared with v5.1-dev.

How Has This Been Tested?

Run locally on the merged tree:

  • cargo check --workspace --all-targets --locked: passes.
  • cargo clippy -p drive-abci -p wasm-sdk --all-targets --locked -- -D warnings: passes.
  • cargo fmt --all -- --check: passes.
  • cargo nextest run -p dpp -E 'test(asset_lock)': 157 passed. This includes the instant asset lock proof tests from fix(platform)!: keep unknown Core payload layouts decodable #5403 and refactor(dpp): decode instant asset lock proofs with rust-dashcore's legacy asset lock decoder #5423, such as test_raw_instant_lock_proof_decodes_every_transaction_as_the_byte_level_decoder_did.
  • cargo nextest run -p drive-abci -E 'test(/rpc::core/) | test(/identity_create::/) | test(/asset_lock/)': 199 passed.
  • cargo nextest run -p wasm-sdk --lib: 189 passed, with the regenerated fixtures.
  • cargo nextest run -p drive-abci -E 'test(/nullifier_batch_guard::/)': 13 passed with the repinned roots.
  • cargo nextest run -p platform-wallet -p platform-wallet-storage: 2226/2226 pass on 626c91d1, including persisted_core_transactions (it fails on afbe5515, before feat(dpp): better json schema error messages for data contracts #1175). cargo check --workspace --all-targets --locked passes on that pin.
  • Compared the non-comment field assignments of PLATFORM_V14 and PLATFORM_V15: they are identical apart from the protocol version number.

Known limitations

Breaking Changes

The merge adds none of its own. It carries the already-reviewed breaking changes #5403, #5414 and #5399 into v5.1-dev. The rust-dashcore pin moves to dev at 626c91d1.

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed
  • If I added or changed GroveDB structure, I described it in the area's structure.rs, regenerated grovedb-structure.json, and checked the structure viewer link posted on this pull request

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

🤖 Co-authored by Claudius the Magnificent AI Agent

🤖 Generated with Claude Code

https://claude.ai/code/session_01PSi8cX229kW2fmLxKW6ir4

PR Hygiene · 1becbcb

  • Bots — coderabbitai skipped by lklimek · thepastaclaw ✓
  • Self-review — not asked of a bot author
  • Build green
  • Approvals
    • github (.github/workflows/tests-rs-workspace.yml) — approved by shumkov
    • files with no dedicated owner (CHANGELOG.md, Cargo.lock, Cargo.toml and 26 more) — approved by shumkov
    • dashmate (packages/dashmate/configs/defaults/getBaseConfigFactory.js, packages/dashmate/configs/getConfigFileMigrationsFactory.js, packages/dashmate/package.json and 1 more) — approved by shumkov
    • system-contracts (packages/dashpay-contract/package.json, packages/document-history-contract/package.json, packages/dpns-contract/package.json and 5 more) — approved by shumkov
    • js-wasm-sdk (packages/js-dash-sdk/package.json, packages/js-evo-sdk/README.md, packages/js-evo-sdk/package.json and 24 more) — approved by shumkov
    • dpp (packages/rs-dpp/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs) — approved by shumkov
    • rs-drive-abci (packages/rs-drive-abci/examples/generate_wasm_contract_cache_vectors.rs, packages/rs-drive-abci/examples/generate_wasm_state_transition_wait_vectors.rs, packages/rs-drive-abci/src/execution/platform_events/fee_pool_outwards_distribution/add_epoch_pool_to_proposers_payout_operations/v1/mod.rs and 7 more) — approved by shumkov
    • rs-drive (packages/rs-drive/src/util/batch/drive_op_batch/drive_methods/apply_drive_operations/v1/mod.rs, packages/rs-drive/src/util/batch/drive_op_batch/system.rs) — approved by shumkov
    • wallet-storage (packages/rs-platform-wallet-storage/SECRETS.md, packages/rs-platform-wallet-storage/src/secrets/mod.rs, packages/rs-platform-wallet-storage/src/secrets/secret.rs and 157 more) — lklimek
    • rust-sdk (packages/rs-sdk/src/core/dash_core_client.rs, packages/rs-sdk/src/mock/sdk.rs, packages/rs-sdk/src/platform/query.rs and 5 more) — approved by shumkov
    • swift-sdk (packages/swift-sdk/schema-releases.json) — llbartekll or romchornyi

When every merge requirement is met, the PR Hygiene check passes. Reviewer limits do not block merging; other required GitHub checks and protections still apply.

github-actions Bot and others added 25 commits October 11, 2026 05:32
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ary (#5397)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…to the integration binary (#5415)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…it (#5424)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Merge origin/v5.0-dev (bcbf05c) into v5.1-dev (c61f46e).

Conflicts resolved:
- Cargo.toml: GroveDB from v5.0-dev (6.1.0, fc7028d8); rust-dashcore
  pinned to dev afbe5515, which carries the legacy asset lock decoder
  (#1167) that dpp's instant asset lock proofs need (#5423), plus
  everything v5.0-dev's edc4d430 backported.
- Cargo.lock: v5.1-dev's lockfile plus `cargo update -p dashcore -p grovedb`;
  no crates.io package changes.
- CHANGELOG.md: kept the [Unreleased] section above the rc.1/rc.2 entries,
  and updated its rust-dashcore pin note.

Semantic fixes for code v5.0-dev added against APIs that v5.1-dev changed:
- drive-abci wasm vector examples and wasm-sdk cache tests: secp256k1 0.33
  (from_secret_bytes, context-free from_secret_key) and dpp::bls instead of
  the removed dpp::bls_signatures re-export. The quorum public keys come
  out byte-identical.
- wasm-sdk fixtures regenerated with the examples for the latest protocol
  version (15), as their README prescribes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: dashpay/platform/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5cd81eb0-10a7-4bae-8912-d7934faa967c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thepastaclaw

thepastaclaw commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Final review complete — no blockers (commit 1becbcb)

@github-actions github-actions Bot added this to the v5.1.0 milestone Oct 14, 2026
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

📖 Book Preview built successfully.

Download the preview from the workflow artifacts.
To view locally: download the artifact, unzip, and open index.html.

Updated at 2026-10-15T09:50:24.463Z

rust-dashcore#1156 inserted three `TransactionPayload` variants before
`ClassicalWithNonStandardVersionTypeBytesPayloadType` and
`RawPayloadType`, shifting their `serde`/`bincode` variant index. Wallet
rows stored with either payload then failed to decode, failing the
whole wallet load; platform-wallet-storage's
`persisted_core_transactions` test caught it.

Pin every rust-dashcore crate to 12e4bd4c (dev afbe5515 plus the fix
that moves the new variants after `RawPayloadType`). Cargo.lock changes
only the rust-dashcore git packages.

TODO: repin to rust-dashcore `dev` once the fix is merged there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lklimek and others added 2 commits October 14, 2026 20:27
…rotocol 15

#5411's single-entry characterization tests pin GroveDB roots taken at
`PlatformVersion::latest()`, which is protocol 14 on v5.0-dev and 15 on
v5.1-dev. The roots differ between those versions, so after the forward
merge the settled hashes (which include roots) and the single-entry root
no longer matched.

Making protocol 14 the latest again reproduced every pinned value, so
the protocol version is the only cause. At protocol 15 the validation
hashes, execution results, fees and nonces are unchanged, and only the
roots differ. This commit repins the root and the nine settled hashes
at protocol 15 and notes that these values follow the latest version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rust-dashcore#1175, the payload serde variant-order fix pinned before,
is merged into dev. Move every rust-dashcore crate to dev at 626c91d1,
which also brings #1169 (blocks are checked against their header merkle
root and rejected on a repeated txid) and #1168 (ChainLocks verified
only with a verified quorum). Only the rust-dashcore revision changes
in Cargo.lock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSi8cX229kW2fmLxKW6ir4
@Claudius-Maginificent
Claudius-Maginificent marked this pull request as ready for review October 15, 2026 10:46
@github-actions

Copy link
Copy Markdown
Contributor

Waiting for bot review — coderabbitai not yet · thepastaclaw not yet. Wait for the missing reviews, or a writer can post /skip-bots to proceed without them; blocking findings still need addressing.
Full checklist in the description.

@github-actions github-actions Bot added the waiting-bots Waiting for the review bots to report on this head label Oct 15, 2026
@lklimek

lklimek commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

/skip-bots

@lklimek

lklimek commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

/self-reviewed

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Ready for review — wallet-storage: lklimek · swift-sdk: llbartekll or romchornyi.
Full checklist in the description.

@github-actions github-actions Bot added ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human. bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. and removed waiting-bots Waiting for the review bots to report on this head labels Oct 15, 2026

@thepastaclaw thepastaclaw 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.

Final validation — Phase 1 + Phase 2

Verified the supplied findings against head 1becbcb and retained one non-blocking cache-hydration performance issue; no blocking defects were substantiated. Validation was static only, with no local builds or tests run. The supplied CI snapshot reports successful Rust workspace, WASM/JS, Swift, and Docker checks, while the latest platform test suite and both browser shards remained in progress.

🟡 1 suggestion(s)

Review provenance

Source: reviewer 1: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 2: gpt-6.1-sol (agent: phase2-reviewer, role: architecture-layering); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: ffi-engineer); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: platform-versioning); reviewer 5: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); reviewer 6: gpt-6.1-sol (agent: phase2-reviewer, role: security-auditor); reviewer 7: gpt-6-astra (agent: phase2-reviewer, role: general); reviewer 8: gpt-6-astra (agent: phase2-reviewer, role: architecture-layering); reviewer 9: gpt-6-astra (agent: phase2-reviewer, role: ffi-engineer); reviewer 10: gpt-6-astra (agent: phase2-reviewer, role: platform-versioning); reviewer 11: gpt-6-astra (agent: phase2-reviewer, role: rust-quality); reviewer 12: gpt-6-astra (agent: phase2-reviewer, role: security-auditor); reviewer 13: muse-spark-1.3-contributor (agent: phase1-reviewer, role: general); reviewer 14: muse-spark-1.3-contributor (agent: phase1-reviewer, role: rust-quality); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)

  • Triage: critical by gpt-6.1-sol (effort low) — The large, cross-cutting diff changes consensus-sensitive batch nullifier validation in accepted_token_pool_nullifiers.rs and funds distribution in add_epoch_pool_to_proposers_payout_operations/v1/mod.rs, meeting both the intricacy and critical-surface criteria.
  • Phase 1 reviewers: muse-spark-1.3-contributor — general (completed, effort xhigh); agent phase1-reviewer, muse-spark-1.3-contributor — rust-quality (completed, effort xhigh); agent phase1-reviewer
  • Phase 1 model: muse-spark-1.3-contributor — not quota-gated; passed over gemini-3.8-flash-high (antigravity below 15% reserve: weekly 14% left, 5h 100% left), glm-5.3-flash (not used above high effort; tier asks max)
  • Single stage: Phase 1 and Phase 2 reviewed this head side by side, with no blocker gate between them (triage tier)
  • Fresh verifier: gpt-6.1-sol — final-verifier; agent sol-verifier
  • Phase 2 reviewers: gpt-6.1-sol — general (completed, effort xhigh); agent phase2-reviewer, gpt-6.1-sol — architecture-layering (completed, effort xhigh); agent phase2-reviewer, gpt-6.1-sol — ffi-engineer (completed, effort xhigh); agent phase2-reviewer, gpt-6.1-sol — platform-versioning (completed, effort xhigh); agent phase2-reviewer, gpt-6.1-sol — rust-quality (completed, effort xhigh); agent phase2-reviewer, gpt-6.1-sol — security-auditor (completed, effort xhigh); agent phase2-reviewer, gpt-6-astra — general (completed, effort xhigh); agent phase2-reviewer, gpt-6-astra — architecture-layering (completed, effort xhigh); agent phase2-reviewer, gpt-6-astra — ffi-engineer (completed, effort xhigh); agent phase2-reviewer, gpt-6-astra — platform-versioning (completed, effort xhigh); agent phase2-reviewer, gpt-6-astra — rust-quality (completed, effort xhigh); agent phase2-reviewer, gpt-6-astra — security-auditor (completed, effort xhigh); agent phase2-reviewer
  • Model comparison: every Phase-2 reviewer also ran on gpt-6-astra; the verifier weighed both sets without knowing which model wrote which
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `packages/wasm-sdk/src/sdk.rs`:
- [SUGGESTION] packages/wasm-sdk/src/sdk.rs:525-526: Avoid reloading the entire persisted cache for each hydrated contract
  Hydration now calls `cache_contract_in_context` for every contract returned by `load_all`. That helper always invokes `store_if_newer`, which serializes the retained contract, synchronously retrieves and parses the entire localStorage JSON map, and decodes the matching stored contract before checking its version. Even with an initially empty in-memory cache, every loaded contract takes this redundant path and returns without changing persistence. For N cached contracts, the complete map is parsed N+1 times instead of once, introducing quadratic parsing and allocation work for similarly sized entries during synchronous SDK construction. The 100-entry storage cap bounds this overhead but does not eliminate it. Keep the monotonic in-memory insertion, but skip persistence when the retained entry is the snapshot just loaded; reconcile newer in-memory entries against a single loaded persistence map.

Comment thread packages/wasm-sdk/src/sdk.rs

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot-review-skipped A required review bot did not report; it was skipped by the window or by a person. ready-for-human Bots have reported, the author has self-reviewed, and the build is green: this needs a human.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants