Upstream contracts + v0.16 alpha#340
Conversation
…291) The wallet-embedded 0.15 SDK exposes Word.toFelts() but not toU64s() on storage-read Words (a published-0.15 .d.ts/glue gap), which crashed AccountInspector.fromAccount during MultisigClient.load with 'word.toU64s is not a function'. Prefer toU64s when present, else toFelts (same element order, so indices are unchanged).
# Conflicts: # Cargo.lock
* feat(server): generate OpenAPI spec with utoipa (#241) Integrate utoipa to auto-generate an OpenAPI 3.1 spec from the HTTP handlers and wire models, so API docs stay in sync with the code. - Annotate every HTTP handler (client, dashboard, and feature-gated EVM surfaces) with `#[utoipa::path]` and derive `ToSchema` / `IntoParams` on the request/response/query/model types. - Add `openapi::openapi()` which assembles the document and merges the EVM routes only when the `evm` feature is compiled in. - Serve the spec at `GET /api-docs/openapi.json` (unauthenticated, read-only) and add a `gen-openapi` binary to write it to a file. - Commit the generated `docs/openapi.json` (built with `evm`) and document it in `docs/OPENAPI.md`. 36 operations / 82 schemas. Purely additive: no wire-shape changes, so the Rust/TS clients need no updates. * feat(server): address OpenAPI review — auth, errors, granular specs, CI drift Addresses review feedback on #271: - Document auth: add OpenAPI security schemes for the signed client headers (x-pubkey/x-signature/x-timestamp) and the operator/EVM session cookies, and apply `security(...)` per operation. Challenge/verify/pubkey stay public. - Fill missing error responses: cross-cutting 429/413 injected into every operation via a Modify addon; dashboard 404/503 gaps (detail/snapshot), unpause 400, EVM 403 signer-authorization, lookup 400/500. - Generate granular specs alongside the combined one: openapi-client.json, openapi-dashboard.json, openapi-evm.json (map to the TS client packages, scope SDK generation). gen-openapi now emits all four and gained a `--check` drift mode. - CI: new "OpenAPI Spec Drift" job fails when committed specs are stale. - Reduce duplication: replace the per-endpoint shape catalog in spec/api.md with an endpoint index + behavioral notes pointing at the OpenAPI specs as the source of truth (804 -> 479 lines). - Contributor guidance: AGENTS.md contract-change workflow + server layer guidance now require updating utoipa annotations and regenerating specs. * docs(server): fix configure handler doc to name the real auth headers The doc comment (and the OpenAPI description generated from it) said `X-Guardian-*`, but the headers parsed by `AuthHeader` are `x-pubkey`, `x-signature`, and `x-timestamp`. --------- (cherry picked from commit 61260a0)
* feat(server): add native Prometheus metrics endpoint * feat(server): address PR review — RPC/pool/lifecycle metrics, bounded gRPC labels, label enums * feat(server): instrument the metadata DB pool too, via a pool label (cherry picked from commit 89e7f3a)
Keep the upstream guarded-multisig contract throughout; discard every local-contract reintroduction the merge tried to bring back. Conflict resolution policy: - Removed reintroduced local contracts: crates/contracts/masm/**, packages/miden-multisig-client/masm/auth/*.masm and src/account/masm/auth.ts. - Kept ours (upstream) for contract-identity/coupled files: multisig_guardian.rs, contracts auth tests, procedures.rs/ts (procedure roots), transaction/mod.rs, updateSigners.ts, network/miden/mod.rs (replay-protection), account_inspector.rs, docs/PRODUCTION.md (0.15 cutover section). - Took the non-contract improvements: canonicalization orphan-on-discard fix, smoke-web vite config, and the auto-merged TS client utilities. - Regenerated Cargo.lock. Verified: cargo build --workspace clean; TS build clean; 303/304 TS tests pass. The single failure (procedure-roots auth_tx) is pre-existing SDK drift on this branch, unrelated to the merge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The auth_tx procedure root was stale against the installed miden-sdk 0.15.0 compiled AuthGuardedMultisig component (the five custom/wallet roots already matched). Recomputed via `cargo run --example procedure_roots -- --json` and updated the canonical (typescript_hex) value in both the Rust and TS clients: auth_tx: 0xd7b760e2… -> 0x08f59357487cebf34c4557dd9fc32cecb82d9f7b3d3bba213a68a9729e463260 Verified: Rust procedure_roots_match_upstream_component passes; TS 304/304 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Consumes miden-standards AuthGuardedMultisig in place of the local MASM fork, on top of the 0.16.0-alpha dependency line: - Local MASM tree, masm_builder.rs, and the TS masm mirror are removed; accounts build from the upstream component (Approver/ApproverSet API). - apply_delta drops the guardian-selector re-enable: upstream AuthGuardedMultisig has no selector slot, so reconstruction keeps only the structural has_multisig_auth replay-map adjustment, applied atomically through apply_account_delta_with_storage_patch. - Contracts MockChain suite ported to 0.16 (account_patch/apply_patch, StorageMapKey, @transaction_script tx scripts). - Determinism vector regenerated for 0.16 upstream contracts (account 0xe3c3a6ae3a996ec149a75ee89b2e7c). - Server fixtures regenerated against the upstream component layout. Validation: workspace check --all-targets green (incl. e2e feature); contracts 7+9, miden-multisig-client 108, guardian-server 697 tests pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughThe repository was migrated to Miden v0.16 and Rust 1.96.1. Legacy multisig and guardian MASM was replaced with the upstream ChangesMiden v0.16 migration
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Suggested labels: Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
The bare begin..end rejection (#3173) is an alpha.4 change, but this script's port was only made on the beta branch; the e2e test failed here. Also adds the probe_kernel example — prints the kernel commitment from a node's live block headers next to the local client kernel, the direct diagnostic for "value for key ... not present in the advice map" version-skew aborts (use it to watch for devnet moving to beta.1). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…errides Upstream AuthMultisig documents (miden-standards multisig.rs, #3211) that per-procedure overrides are absolute signature counts the on-chain update never re-scales: growing the approver set silently lowers every override's effective signing ratio (a 2-of-2 override becomes 2-of-n). Guardian's add-cosigner flow is exactly this operation, so surface it: - Rust SDK: MultisigAccount::overrides_diluted_by_signer_growth and TransactionType::target_signer_count; propose_transaction emits a tracing::warn! per affected override. - TS SDK: Multisig.overridesDilutedBySignerGrowth mirror; createAddSignerProposal console.warns per affected override. - Demo: interactive warning before creating a signer-set-growing proposal, listing each override's t-of-n -> t-of-(n+1) change with a proceed confirmation and a pointer to the update-procedure-threshold action. - Docs: MULTISIG_SDK.md and the TS package README describe the dilution and both SDK surfaces. Tests: Rust unit tests for growth/shrink/unchanged and the per-variant signer-count mapping; TS vitest for the mirror. SDK suites green, clippy and fmt clean, tsc --noEmit clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/server/src/delta_summary/projection.rs (1)
308-314: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winRepresent cleared map entries as removals.
StorageChange.afterisNonewhen a slot is cleared, but this loop serializesWord::empty()as a hex string. Map empty words toNonehere and add a cleared-entry regression test.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/server/src/delta_summary/projection.rs` around lines 308 - 314, Update the map-entry conversion loop over entries.as_map() so Word::empty() produces StorageChange.after as None, while non-empty words retain their existing hex encoding. Add a regression test covering a cleared map entry and asserting it is represented as a removal.
🧹 Nitpick comments (4)
packages/miden-multisig-client/src/transaction/updateGuardian.ts (1)
17-19: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winMove the stack rationale out of inline implementation comments.
These added comments are step-by-step implementation documentation. As per coding guidelines, do not add inline implementation comments or step-by-step procedural method documentation; prefer clear names, small functions, and concise high-level documentation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/miden-multisig-client/src/transaction/updateGuardian.ts` around lines 17 - 19, Remove the step-by-step stack rationale comments near update_guardian_public_key in updateGuardian.ts. Keep the implementation behavior unchanged and rely on clear existing names and structure rather than inline procedural documentation.Source: Coding guidelines
packages/miden-multisig-client/src/transaction/updateSigners.ts (1)
34-34: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueRemove inline implementation comments.
Encode this ownership/layout rationale through small helpers and tests rather than inline implementation notes.
As per coding guidelines, “Do not add inline implementation comments or step-by-step procedural method documentation; prefer clear names, small functions, and concise high-level documentation.”
Also applies to: 48-50
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/miden-multisig-client/src/transaction/updateSigners.ts` at line 34, Remove the inline implementation comments in updateSigners.ts, including the comments around the logic at the referenced locations. Preserve the existing behavior and make the ownership/layout intent clear through descriptive helper names or small functions where needed, with coverage provided by tests rather than procedural comments.Source: Coding guidelines
crates/shared/src/account_delta.rs (1)
53-102: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd a unit test for the
account.nonce() == 0full-state reconstruction branch.
account_patch_from_deltaspecial-cases accounts at nonce zero by rebuilding a full-stateAccountPatcheven though the incoming delta is only partial. Both existing tests construct accounts viaAccount::new_existing(..., Felt::ONE), so this branch is never exercised by an automated test — only indirectly by the#[ignore]d fixture generator. Given this module underpins account-delta reconstruction for both server and client (a protocol-lifecycle-critical path), a dedicated characterization test (nonce-zero account + first partial delta withnonce_delta == 1) would catch regressions in this less-common path.Also applies to: 171-252
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/shared/src/account_delta.rs` around lines 53 - 102, Add a focused unit test for account_patch_from_delta covering a nonce-zero account and a first partial delta with nonce_delta equal to one. Construct the account with nonce zero, invoke the reconstruction path, and assert the resulting AccountPatch includes the account’s full storage, vault, code, and updated nonce while applying the delta and additional storage correctly. Follow the existing test patterns in this module.crates/server/src/network/miden/account_inspector.rs (1)
6-7: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueRemove implementation-level commentary.
Keep concise API documentation, but remove the new storage-layout and replay-adjustment narration; clear names and focused tests should carry those details.
As per coding guidelines, “Do not add inline implementation comments or step-by-step procedural method documentation; prefer clear names, small functions, and concise high-level documentation.”
Also applies to: 80-94
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/server/src/network/miden/account_inspector.rs` around lines 6 - 7, Remove the implementation-level storage-layout and replay-adjustment comments in the affected account inspector code, including the comment near the AuthGuardedMultisig slot names and lines 80–94. Retain only concise API documentation and leave the implementation unchanged.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci.yml:
- Around line 108-112: Update the Install Rust steps for both contract-behavior
(.github/workflows/ci.yml:108-112) and ts-sdk (.github/workflows/ci.yml:152-155)
to use toolchain 1.96.1 instead of 1.93.0, keeping the toolchain versions
aligned with the workspace requirements.
In `@docs/MULTISIG_SDK.md`:
- Around line 958-960: Update the TypeScript SDK version from 0.15.2 to
0.16.0-alpha.1 in both parity references: docs/MULTISIG_SDK.md lines 958-960 and
packages/miden-multisig-client/tests/browser/determinism.spec.ts lines 56-58.
Leave the Rust version and surrounding parity text unchanged.
In `@docs/PRODUCTION.md`:
- Around line 146-149: Update the production recovery guidance to instruct
operators to recreate existing Miden accounts on version 0.16 instead of 0.15.
Preserve the surrounding account re-registration and EVM compatibility
instructions unchanged.
In `@examples/rust/src/main.rs`:
- Around line 484-489: Update the transaction result formatting around
account_patch().final_nonce() so a missing final nonce is displayed as
unavailable rather than converted to 0 via unwrap_or_default(). Preserve
canonical formatting for present nonce values and update any affected example
documentation or startup assumptions for this user-facing output.
In `@packages/miden-multisig-client/README.md`:
- Around line 23-26: Update the SDK installation command in the README to pin
`@miden-sdk/miden-sdk` to the documented 0.16.0-alpha.1 version, keeping it
consistent with the Miden version note and Rust workspace compatibility.
In `@packages/miden-multisig-client/src/inspector.test.ts`:
- Around line 52-60: Remove duplicate code properties from the mock object
literals in packages/miden-multisig-client/src/inspector.test.ts at lines 52-60,
141-144, 162-164, 194, 216-220, and 243. Retain the intended single code mock at
each site, preserving the overridden implementation where required, so the tests
compile without duplicate-property errors.
---
Outside diff comments:
In `@crates/server/src/delta_summary/projection.rs`:
- Around line 308-314: Update the map-entry conversion loop over
entries.as_map() so Word::empty() produces StorageChange.after as None, while
non-empty words retain their existing hex encoding. Add a regression test
covering a cleared map entry and asserting it is represented as a removal.
---
Nitpick comments:
In `@crates/server/src/network/miden/account_inspector.rs`:
- Around line 6-7: Remove the implementation-level storage-layout and
replay-adjustment comments in the affected account inspector code, including the
comment near the AuthGuardedMultisig slot names and lines 80–94. Retain only
concise API documentation and leave the implementation unchanged.
In `@crates/shared/src/account_delta.rs`:
- Around line 53-102: Add a focused unit test for account_patch_from_delta
covering a nonce-zero account and a first partial delta with nonce_delta equal
to one. Construct the account with nonce zero, invoke the reconstruction path,
and assert the resulting AccountPatch includes the account’s full storage,
vault, code, and updated nonce while applying the delta and additional storage
correctly. Follow the existing test patterns in this module.
In `@packages/miden-multisig-client/src/transaction/updateGuardian.ts`:
- Around line 17-19: Remove the step-by-step stack rationale comments near
update_guardian_public_key in updateGuardian.ts. Keep the implementation
behavior unchanged and rely on clear existing names and structure rather than
inline procedural documentation.
In `@packages/miden-multisig-client/src/transaction/updateSigners.ts`:
- Line 34: Remove the inline implementation comments in updateSigners.ts,
including the comments around the logic at the referenced locations. Preserve
the existing behavior and make the ownership/layout intent clear through
descriptive helper names or small functions where needed, with coverage provided
by tests rather than procedural comments.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e321f32c-81c9-4aa5-95d0-bbbebb982461
⛔ Files ignored due to path filters (9)
Cargo.lockis excluded by!**/*.lockexamples/_shared/multisig-browser/package-lock.jsonis excluded by!**/package-lock.jsonexamples/operator-smoke-web/package-lock.jsonis excluded by!**/package-lock.jsonexamples/smoke-web/package-lock.jsonis excluded by!**/package-lock.jsonexamples/web/package-lock.jsonis excluded by!**/package-lock.jsonpackages/guardian-client/package-lock.jsonis excluded by!**/package-lock.jsonpackages/guardian-evm-client/package-lock.jsonis excluded by!**/package-lock.jsonpackages/guardian-operator-client/package-lock.jsonis excluded by!**/package-lock.jsonpackages/miden-multisig-client/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (147)
.agents/skills/smoke-test-rust-multisig-sdk/SKILL.md.agents/skills/smoke-test-ts-multisig-sdk/SKILL.md.github/workflows/ci.ymlAGENTS.mdCargo.tomlDockerfileREADME.mdbenchmarks/prod-server/src/operations.rscrates/client/Cargo.tomlcrates/client/src/transaction.rscrates/contracts/Cargo.tomlcrates/contracts/README.mdcrates/contracts/build.rscrates/contracts/masm/account_components/auth/multisig.masmcrates/contracts/masm/account_components/auth/multisig_ecdsa.masmcrates/contracts/masm/account_components/auth/multisig_guardian.masmcrates/contracts/masm/account_components/auth/multisig_guardian_ecdsa.masmcrates/contracts/masm/auth/guardian.masmcrates/contracts/masm/auth/guardian_ecdsa.masmcrates/contracts/masm/auth/multisig.masmcrates/contracts/masm/auth/multisig_ecdsa.masmcrates/contracts/src/lib.rscrates/contracts/src/main.rscrates/contracts/src/masm_builder.rscrates/contracts/src/multisig_guardian.rscrates/contracts/tests/auth/multisig.rscrates/miden-keystore/Cargo.tomlcrates/miden-keystore/src/keystore.rscrates/miden-multisig-client/Cargo.tomlcrates/miden-multisig-client/examples/procedure_roots.rscrates/miden-multisig-client/src/account.rscrates/miden-multisig-client/src/builder.rscrates/miden-multisig-client/src/client/account.rscrates/miden-multisig-client/src/client/helpers.rscrates/miden-multisig-client/src/client/offline.rscrates/miden-multisig-client/src/client/proposals.rscrates/miden-multisig-client/src/error.rscrates/miden-multisig-client/src/execution.rscrates/miden-multisig-client/src/export.rscrates/miden-multisig-client/src/procedures.rscrates/miden-multisig-client/src/proposal.rscrates/miden-multisig-client/src/transaction/builder.rscrates/miden-multisig-client/src/transaction/configuration/config.rscrates/miden-multisig-client/src/transaction/guardian.rscrates/miden-multisig-client/src/transaction/mod.rscrates/miden-multisig-client/src/transaction/payment.rscrates/miden-rpc-client/Cargo.tomlcrates/miden-rpc-client/build.rscrates/miden-rpc-client/src/lib.rscrates/server/Cargo.tomlcrates/server/bench/loadgen/src/scenarios.rscrates/server/src/dashboard/cursor.rscrates/server/src/delta_summary/build.rscrates/server/src/delta_summary/projection.rscrates/server/src/evm/session.rscrates/server/src/metadata/auth/miden_ecdsa.rscrates/server/src/metadata/auth/miden_falcon_rpo.rscrates/server/src/network/miden/account_inspector.rscrates/server/src/network/miden/mod.rscrates/server/src/services/configure_account.rscrates/server/src/services/dashboard_account_snapshot.rscrates/server/src/storage/filesystem.rscrates/server/src/testing/e2e/switch_guardian_canonicalization.rscrates/server/src/testing/fixtures/account.jsoncrates/server/src/testing/fixtures/commitments.jsoncrates/server/src/testing/fixtures/delta_1.jsoncrates/server/src/testing/fixtures/delta_2.jsoncrates/server/src/testing/fixtures/delta_3.jsoncrates/server/src/testing/fixtures/keys.jsoncrates/server/src/testing/generate_fixtures.rscrates/server/src/testing/helpers.rscrates/server/src/testing/integration/lookup_helpers.rscrates/shared/Cargo.tomlcrates/shared/src/account_delta.rscrates/shared/src/auth_request_message.rscrates/shared/src/lib.rscrates/shared/src/lookup_auth_message.rsdocs/LOCAL_DEV.mddocs/MULTISIG_SDK.mddocs/PRODUCTION.mddocs/QUICKSTART.mddocs/TROUBLESHOOTING.mddocs/guides/aws-signers/.env.exampledocs/guides/horizontal-scaling/.env.exampledocs/guides/miden-dashboard/.env.exampledocs/guides/miden-dashboard/.gitignoredocs/guides/observability/.env.exampledocs/guides/postgres-tls/.env.exampledocs/openapi-client.jsondocs/openapi-dashboard.jsondocs/openapi-evm.jsondocs/openapi.jsonexamples/_shared/multisig-browser/package.jsonexamples/_shared/multisig-browser/src/multisigApi.tsexamples/_shared/multisig-browser/src/types.tsexamples/demo/src/actions/proposal_management.rsexamples/operator-smoke-web/package.jsonexamples/rust/Cargo.tomlexamples/rust/rust-toolchain.tomlexamples/rust/src/main.rsexamples/rust/src/multisig.rsexamples/smoke-web/package.jsonexamples/smoke-web/vite.config.tsexamples/web/package.jsonexamples/web/src/components/LoadMultisigDialog.tsxexamples/web/src/lib/multisigApi.tspackages/guardian-client/package.jsonpackages/guardian-evm-client/package.jsonpackages/guardian-operator-client/package.jsonpackages/miden-multisig-client/.gitignorepackages/miden-multisig-client/README.mdpackages/miden-multisig-client/masm/account_components/auth/guarded_multisig.masmpackages/miden-multisig-client/masm/account_components/auth/multisig.masmpackages/miden-multisig-client/masm/account_components/auth/multisig_ecdsa.masmpackages/miden-multisig-client/masm/account_components/auth/multisig_guardian.masmpackages/miden-multisig-client/masm/account_components/auth/multisig_guardian_ecdsa.masmpackages/miden-multisig-client/masm/auth/guardian.masmpackages/miden-multisig-client/masm/auth/guardian_ecdsa.masmpackages/miden-multisig-client/masm/auth/multisig.masmpackages/miden-multisig-client/masm/auth/multisig_ecdsa.masmpackages/miden-multisig-client/package.jsonpackages/miden-multisig-client/playwright.config.tspackages/miden-multisig-client/scripts/generate-masm.mjspackages/miden-multisig-client/src/account/builder.test.tspackages/miden-multisig-client/src/account/builder.tspackages/miden-multisig-client/src/account/masm/account-components/auth.tspackages/miden-multisig-client/src/account/masm/auth.tspackages/miden-multisig-client/src/account/masm/index.tspackages/miden-multisig-client/src/account/storage.tspackages/miden-multisig-client/src/client.test.tspackages/miden-multisig-client/src/client.tspackages/miden-multisig-client/src/inspector.test.tspackages/miden-multisig-client/src/inspector.tspackages/miden-multisig-client/src/multisig.test.tspackages/miden-multisig-client/src/procedures.tspackages/miden-multisig-client/src/transaction/updateGuardian.tspackages/miden-multisig-client/src/transaction/updateProcedureThreshold.tspackages/miden-multisig-client/src/transaction/updateSigners.tspackages/miden-multisig-client/src/types.tspackages/miden-multisig-client/src/utils/signature.tspackages/miden-multisig-client/tests/advice-feltarray-ownership.test.tspackages/miden-multisig-client/tests/browser/determinism.spec.tspackages/miden-multisig-client/tests/browser/harness.htmlpackages/miden-multisig-client/tests/browser/harness.tspackages/miden-multisig-client/tests/browser/vite.config.tspackages/miden-multisig-client/tests/masm.test.tsrust-toolchain.toml
💤 Files with no reviewable changes (30)
- packages/miden-multisig-client/src/account/masm/auth.ts
- crates/contracts/masm/account_components/auth/multisig_guardian.masm
- crates/contracts/src/lib.rs
- crates/contracts/masm/account_components/auth/multisig.masm
- packages/miden-multisig-client/src/account/masm/index.ts
- packages/miden-multisig-client/masm/account_components/auth/multisig.masm
- crates/contracts/masm/account_components/auth/multisig_ecdsa.masm
- crates/contracts/masm/auth/guardian_ecdsa.masm
- packages/miden-multisig-client/masm/account_components/auth/multisig_ecdsa.masm
- crates/contracts/masm/account_components/auth/multisig_guardian_ecdsa.masm
- examples/_shared/multisig-browser/src/multisigApi.ts
- crates/contracts/src/main.rs
- crates/contracts/masm/auth/multisig.masm
- packages/miden-multisig-client/masm/auth/multisig.masm
- packages/miden-multisig-client/src/client.test.ts
- crates/contracts/masm/auth/guardian.masm
- packages/miden-multisig-client/masm/auth/guardian_ecdsa.masm
- packages/miden-multisig-client/masm/account_components/auth/multisig_guardian.masm
- crates/contracts/masm/auth/multisig_ecdsa.masm
- packages/miden-multisig-client/src/types.ts
- packages/miden-multisig-client/masm/account_components/auth/multisig_guardian_ecdsa.masm
- crates/miden-multisig-client/src/builder.rs
- packages/miden-multisig-client/masm/auth/multisig_ecdsa.masm
- packages/miden-multisig-client/masm/auth/guardian.masm
- examples/web/src/lib/multisigApi.ts
- examples/smoke-web/vite.config.ts
- crates/contracts/src/masm_builder.rs
- examples/_shared/multisig-browser/src/types.ts
- crates/contracts/build.rs
- packages/miden-multisig-client/src/client.ts
| - name: Install Rust | ||
| uses: dtolnay/rust-toolchain@351f82a4dc29e4159746a068ed925da17341219f # 1.89.0 | ||
| with: | ||
| toolchain: 1.93.0 | ||
|
|
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
Use Rust 1.96.1 in both new CI jobs.
The workspace requires Rust 1.96.1, but both jobs install 1.93.0; Cargo will reject workspace packages before the contract and TypeScript gates execute.
.github/workflows/ci.yml#L108-L112: changecontract-behaviortotoolchain: 1.96.1..github/workflows/ci.yml#L152-L155: changets-sdktotoolchain: 1.96.1.
As per coding guidelines, “Keep crate and package versions aligned with the active Miden 0.16 pre-release dependency line.”
📍 Affects 1 file
.github/workflows/ci.yml#L108-L112(this comment).github/workflows/ci.yml#L152-L155
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/ci.yml around lines 108 - 112, Update the Install Rust
steps for both contract-behavior (.github/workflows/ci.yml:108-112) and ts-sdk
(.github/workflows/ci.yml:152-155) to use toolchain 1.96.1 instead of 1.93.0,
keeping the toolchain versions aligned with the workspace requirements.
Source: Coding guidelines
| - **Rust**: `miden-standards = "=0.15.3"` (workspace `Cargo.toml`) | ||
| - **TypeScript**: `@miden-sdk/miden-sdk 0.15.2`, which embeds miden-standards 0.15.3 | ||
| in its WASM |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n -C 2 '"`@miden-sdk/miden-sdk`"|0\.15\.2|0\.16\.0-alpha\.1|miden-standards' \
packages/miden-multisig-client/package.json \
examples/_shared/multisig-browser/package.json \
examples/operator-smoke-web/package.json \
packages/miden-multisig-client/tests/browser/determinism.spec.ts \
docs/MULTISIG_SDK.mdRepository: OpenZeppelin/guardian
Length of output: 6044
Update the stale TypeScript SDK pin in both parity references.
docs/MULTISIG_SDK.md#L958-L960 and packages/miden-multisig-client/tests/browser/determinism.spec.ts#L56-L58 still refer to @miden-sdk/miden-sdk 0.15.2; update them to 0.16.0-alpha.1 so the parity note matches the current dependency line.
📍 Affects 2 files
docs/MULTISIG_SDK.md#L958-L960(this comment)packages/miden-multisig-client/tests/browser/determinism.spec.ts#L56-L58
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/MULTISIG_SDK.md` around lines 958 - 960, Update the TypeScript SDK
version from 0.15.2 to 0.16.0-alpha.1 in both parity references:
docs/MULTISIG_SDK.md lines 958-960 and
packages/miden-multisig-client/tests/browser/determinism.spec.ts lines 56-58.
Leave the Rust version and surrounding parity text unchanged.
| - After the upgrade, existing Miden accounts must be **recreated** on 0.15; | ||
| there is no in-place account migration. Users re-establish custody accounts | ||
| (new v1 IDs) and re-register them on the Guardian. EVM accounts continue | ||
| operating unchanged. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Recreate accounts on Miden 0.16, not 0.15.
Line 146 directs operators to create accounts on the incompatible 0.15 line. The current 0.16 client/node rejects that pairing at the RPC boundary, so this recovery path fails after the upgrade. Replace “on 0.15” with the deployed 0.16 target.
Proposed fix
- After the upgrade, existing Miden accounts must be **recreated** on 0.15;
+ After the upgrade, existing Miden accounts must be **recreated** using Miden 0.16;As per coding guidelines, “Preserve protocol compatibility unless a breaking change is explicitly requested, and treat server contract changes as coordinated changes across every affected client surface.”
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - After the upgrade, existing Miden accounts must be **recreated** on 0.15; | |
| there is no in-place account migration. Users re-establish custody accounts | |
| (new v1 IDs) and re-register them on the Guardian. EVM accounts continue | |
| operating unchanged. | |
| - After the upgrade, existing Miden accounts must be **recreated** using Miden 0.16; |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/PRODUCTION.md` around lines 146 - 149, Update the production recovery
guidance to instruct operators to recreate existing Miden accounts on version
0.16 instead of 0.15. Preserve the surrounding account re-registration and EVM
compatibility instructions unchanged.
Source: Coding guidelines
| " ✓ Transaction executed (final nonce: {})", | ||
| tx_result | ||
| .account_patch() | ||
| .final_nonce() | ||
| .map(|nonce| nonce.as_canonical_u64()) | ||
| .unwrap_or_default() |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Do not report a missing final nonce as 0.
final_nonce() is optional; defaulting it misreports an unavailable value as a real nonce. Display it as unavailable instead.
Proposed fix
+ let final_nonce = tx_result
+ .account_patch()
+ .final_nonce()
+ .map(|nonce| nonce.as_canonical_u64().to_string())
+ .unwrap_or_else(|| "unavailable".to_owned());
println!(
" ✓ Transaction executed (final nonce: {})",
- tx_result
- .account_patch()
- .final_nonce()
- .map(|nonce| nonce.as_canonical_u64())
- .unwrap_or_default()
+ final_nonce
);As per coding guidelines, “Use examples as integration checks rather than demos alone, and update example documentation and startup assumptions when user-facing flows change.”
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| " ✓ Transaction executed (final nonce: {})", | |
| tx_result | |
| .account_patch() | |
| .final_nonce() | |
| .map(|nonce| nonce.as_canonical_u64()) | |
| .unwrap_or_default() | |
| let final_nonce = tx_result | |
| .account_patch() | |
| .final_nonce() | |
| .map(|nonce| nonce.as_canonical_u64().to_string()) | |
| .unwrap_or_else(|| "unavailable".to_owned()); | |
| println!( | |
| " ✓ Transaction executed (final nonce: {})", | |
| final_nonce | |
| ); |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/rust/src/main.rs` around lines 484 - 489, Update the transaction
result formatting around account_patch().final_nonce() so a missing final nonce
is displayed as unavailable rather than converted to 0 via unwrap_or_default().
Preserve canonical formatting for present nonce values and update any affected
example documentation or startup assumptions for this user-facing output.
Source: Coding guidelines
| > **Miden version note**: this package targets the Miden 0.16 pre-release | ||
| > line (`@miden-sdk/miden-sdk 0.16.0-alpha.1`, exact-pinned while alphas | ||
| > churn), matching the Rust workspace. Package releases wait for upstream | ||
| > 0.16 to stabilize. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Pin the documented SDK installation command.
The note promises @miden-sdk/miden-sdk 0.16.0-alpha.1, but the command above installs @miden-sdk/miden-sdk without a version. Following the README can therefore pair this client with an incompatible protocol line.
Proposed documentation fix
-npm install `@openzeppelin/miden-multisig-client` `@miden-sdk/miden-sdk`
+npm install `@openzeppelin/miden-multisig-client` `@miden-sdk/miden-sdk`@0.16.0-alpha.1As per coding guidelines, preserve protocol compatibility unless a breaking change is explicitly requested and treat contract changes as coordinated across every affected client surface.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/miden-multisig-client/README.md` around lines 23 - 26, Update the
SDK installation command in the README to pin `@miden-sdk/miden-sdk` to the
documented 0.16.0-alpha.1 version, keeping it consistent with the Miden version
note and Rust workspace compatibility.
Source: Coding guidelines
| return { | ||
| storage: () => createMockStorage(slots, maps), | ||
| // The contract-version guard checks for the pinned auth procedure. | ||
| code: () => ({ hasProcedure: () => true }), | ||
| vault: () => createMockVault([ | ||
| { faucetId: '0xfaucet1', amount: 1000n }, | ||
| { faucetId: '0xfaucet2', amount: 500n }, | ||
| ]), | ||
| }; |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Remove the duplicate code keys from these mocks.
Each affected object literal declares code twice, which TypeScript rejects as a duplicate property and prevents the test suite from compiling.
packages/miden-multisig-client/src/inspector.test.ts#L52-L60: retain onecodemock.packages/miden-multisig-client/src/inspector.test.ts#L141-L144: retain one overriddencodemock.packages/miden-multisig-client/src/inspector.test.ts#L162-L164: retain onecodemock.packages/miden-multisig-client/src/inspector.test.ts#L194-L194: remove the repeatedcodemock.packages/miden-multisig-client/src/inspector.test.ts#L216-L220: remove the repeatedcodemock.packages/miden-multisig-client/src/inspector.test.ts#L243-L243: remove the repeatedcodemock.
📍 Affects 1 file
packages/miden-multisig-client/src/inspector.test.ts#L52-L60(this comment)packages/miden-multisig-client/src/inspector.test.ts#L141-L144packages/miden-multisig-client/src/inspector.test.ts#L162-L164packages/miden-multisig-client/src/inspector.test.ts#L194-L194packages/miden-multisig-client/src/inspector.test.ts#L216-L220packages/miden-multisig-client/src/inspector.test.ts#L243-L243
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/miden-multisig-client/src/inspector.test.ts` around lines 52 - 60,
Remove duplicate code properties from the mock object literals in
packages/miden-multisig-client/src/inspector.test.ts at lines 52-60, 141-144,
162-164, 194, 216-220, and 243. Retain the intended single code mock at each
site, preserving the overridden implementation where required, so the tests
compile without duplicate-property errors.
There was a problem hiding this comment.
Pull request overview
This PR merges the “upstream contracts” work with the Miden v0.16 pre-release upgrade, aligning Guardian’s Rust workspace + TypeScript SDKs with the audited upstream miden-standards guarded-multisig component and exact-pinning the 0.16 alpha dependency line for cross-SDK determinism.
Changes:
- Bump Rust/TS package versions to
0.16.0, update toolchains, and exact-pin Miden 0.16 alpha dependencies (workspace + TS multisig SDK + examples). - Update multisig SDKs/contracts wiring to use upstream
miden::standards::auth::*procedures/storage layout, removing the legacy vendored MASM surface andguardianEnabled/verify_guardianconcepts. - Add/adjust determinism and correctness gates (Playwright browser determinism harness; override-dilution warnings/tests; updated fixtures/docs/OpenAPI versions).
Reviewed changes
Copilot reviewed 148 out of 157 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| rust-toolchain.toml | Bump Rust toolchain to 1.96.1 |
| README.md | Document Miden 0.16 pre-release baseline |
| packages/miden-multisig-client/tests/override-dilution.test.ts | Unit test for override dilution listing |
| packages/miden-multisig-client/tests/masm.test.ts | Update MASM constant test for guarded shell |
| packages/miden-multisig-client/tests/browser/vite.config.ts | Vite config for browser determinism harness |
| packages/miden-multisig-client/tests/browser/harness.ts | Browser harness to build deterministic account |
| packages/miden-multisig-client/tests/browser/harness.html | HTML entrypoint for harness |
| packages/miden-multisig-client/tests/browser/determinism.spec.ts | Playwright cross-SDK determinism assertions |
| packages/miden-multisig-client/tests/advice-feltarray-ownership.test.ts | Regression test for FeltArray ownership bug |
| packages/miden-multisig-client/src/utils/signature.ts | Export auth scheme ID helper |
| packages/miden-multisig-client/src/types.ts | Remove guardianEnabled from config |
| packages/miden-multisig-client/src/transaction/updateSigners.ts | Update signer update script/advice layout for upstream |
| packages/miden-multisig-client/src/transaction/updateProcedureThreshold.ts | Switch to upstream set_procedure_threshold |
| packages/miden-multisig-client/src/transaction/updateGuardian.ts | Update guardian rotation to stack-arg based upstream |
| packages/miden-multisig-client/src/procedures.ts | Update pinned procedure roots set |
| packages/miden-multisig-client/src/multisig.ts | Add override-dilution surfacing + warnings |
| packages/miden-multisig-client/src/multisig.test.ts | Update tests for new error shapes + removed selector wording |
| packages/miden-multisig-client/src/inspector.ts | Update slot names + contract-version guard + remove selector |
| packages/miden-multisig-client/src/client.ts | Remove guardianEnabled from detected config mapping |
| packages/miden-multisig-client/src/client.test.ts | Update mocked detected config shape |
| packages/miden-multisig-client/src/account/storage.ts | Update storage slot names + guardian slot layout |
| packages/miden-multisig-client/src/account/masm/index.ts | Stop exporting legacy MASM auth module |
| packages/miden-multisig-client/src/account/masm/account-components/auth.ts | Replace generated constants with guarded component shell |
| packages/miden-multisig-client/src/account/builder.ts | Compile upstream guarded component + build w/o schema commitment |
| packages/miden-multisig-client/src/account/builder.test.ts | Update builder tests for new compilation/linking behavior |
| packages/miden-multisig-client/scripts/generate-masm.mjs | Only vendor guarded component shell |
| packages/miden-multisig-client/README.md | Pin Miden alpha install + document override dilution |
| packages/miden-multisig-client/playwright.config.ts | Add Playwright config for browser determinism gate |
| packages/miden-multisig-client/package.json | Bump package version + pin miden-sdk alpha |
| packages/miden-multisig-client/package-lock.json | Lockfile updates for new deps/versions |
| packages/miden-multisig-client/masm/auth/guardian.masm | Remove legacy vendored guardian MASM |
| packages/miden-multisig-client/masm/auth/guardian_ecdsa.masm | Remove legacy vendored guardian ECDSA MASM |
| packages/miden-multisig-client/masm/account_components/auth/multisig.masm | Remove legacy multisig component source |
| packages/miden-multisig-client/masm/account_components/auth/multisig_guardian.masm | Remove legacy multisig+guardian component source |
| packages/miden-multisig-client/masm/account_components/auth/multisig_guardian_ecdsa.masm | Remove legacy ECDSA multisig+guardian component source |
| packages/miden-multisig-client/masm/account_components/auth/multisig_ecdsa.masm | Remove legacy ECDSA multisig component source |
| packages/miden-multisig-client/masm/account_components/auth/guarded_multisig.masm | Add upstream guarded component shell MASM |
| packages/miden-multisig-client/.gitignore | Ignore Playwright outputs |
| packages/guardian-operator-client/package.json | Bump operator client version |
| packages/guardian-operator-client/package-lock.json | Lockfile version bump |
| packages/guardian-evm-client/package.json | Bump EVM client version |
| packages/guardian-evm-client/package-lock.json | Lockfile version bump |
| packages/guardian-client/package.json | Bump guardian client version |
| packages/guardian-client/package-lock.json | Lockfile version bump |
| examples/web/src/lib/multisigApi.ts | Remove guardianEnabled usage in account creation |
| examples/web/src/components/LoadMultisigDialog.tsx | Display guardian presence instead of enabled flag |
| examples/web/package.json | Upgrade Miden deps + add overrides for Para packages |
| examples/web/package-lock.json | Lockfile updates for new deps/versions |
| examples/smoke-web/vite.config.ts | Adjust Vite optimizeDeps include list |
| examples/smoke-web/package.json | Upgrade Miden deps + add overrides |
| examples/smoke-web/package-lock.json | Lockfile updates for new deps/versions |
| examples/rust/src/multisig.rs | Use StandardsLib + new config advice layout |
| examples/rust/src/main.rs | Update for patch/nonce API + remove debug mode |
| examples/rust/rust-toolchain.toml | Bump Rust toolchain to 1.96.1 |
| examples/rust/Cargo.toml | Add miden-standards dependency |
| examples/operator-smoke-web/package.json | Upgrade miden-sdk alpha |
| examples/operator-smoke-web/package-lock.json | Lockfile updates for new deps/versions |
| examples/demo/src/display.rs | Add warning printer helper |
| examples/demo/src/actions/proposal_management.rs | Prompt on override dilution + update transfer helper calls |
| examples/_shared/multisig-browser/src/types.ts | Remove guardianEnabled from serialized config |
| examples/_shared/multisig-browser/src/multisigApi.ts | Remove guardianEnabled usage in account creation |
| examples/_shared/multisig-browser/package.json | Upgrade Miden deps + add overrides |
| examples/_shared/multisig-browser/package-lock.json | Lockfile updates for new deps/versions |
| docs/TROUBLESHOOTING.md | Add 0.15↔0.16 mismatch and stale state guidance |
| docs/QUICKSTART.md | Note 0.16 devnet + wiping stale 0.15 state |
| docs/PRODUCTION.md | Expand encryption note + document 0.15 cutover behavior |
| docs/openapi.json | Bump OpenAPI version to 0.16.0 |
| docs/openapi-evm.json | Bump OpenAPI EVM version to 0.16.0 |
| docs/openapi-dashboard.json | Bump OpenAPI dashboard version to 0.16.0 |
| docs/openapi-client.json | Bump OpenAPI client version to 0.16.0 |
| docs/LOCAL_DEV.md | Note network-line mismatch behavior |
| docs/guides/miden-dashboard/.gitignore | Ignore local dashboard guide artifacts |
| docs/guides/miden-dashboard/.env.example | Note network must match 0.16 baseline |
| docs/guides/horizontal-scaling/.env.example | Note network must match 0.16 baseline |
| Dockerfile | Bump Rust base image to 1.96.1 |
| crates/shared/src/lookup_auth_message.rs | Update AccountId dummy ctor signature |
| crates/shared/src/lib.rs | Add AuthScheme mapping helpers + update standards API usage |
| crates/shared/src/auth_request_message.rs | Update AccountId dummy ctor signature |
| crates/shared/Cargo.toml | Use workspace rand dependency |
| crates/server/src/testing/integration/lookup_helpers.rs | Update AccountId dummy ctor signature |
| crates/server/src/testing/helpers.rs | Update delta construction for patch API |
| crates/server/src/testing/fixtures/delta_3.json | Refresh fixtures for new commitments/layout |
| crates/server/src/testing/fixtures/delta_2.json | Refresh fixtures for new commitments/layout |
| crates/server/src/testing/fixtures/delta_1.json | Refresh fixtures for new commitments/layout |
| crates/server/src/testing/fixtures/commitments.json | Refresh fixture commitments/account id |
| crates/server/src/testing/e2e/switch_guardian_canonicalization.rs | Update guardian rotation flow to upstream component + patch API |
| crates/server/src/storage/filesystem.rs | Use Reverse sort key for deltas |
| crates/server/src/services/dashboard_account_snapshot.rs | Update NFT vault key derivation |
| crates/server/src/services/configure_account.rs | Update slot-mismatch test expectations to standards slots |
| crates/server/src/metadata/auth/miden_falcon_rpo.rs | Update AccountId dummy ctor signature |
| crates/server/src/metadata/auth/miden_ecdsa.rs | Update AccountId dummy ctor signature |
| crates/server/src/evm/session.rs | Adjust rand imports for new rand line |
| crates/server/src/delta_summary/build.rs | Update note builder + patch API usage |
| crates/server/src/dashboard/cursor.rs | Adjust rand imports for new rand line |
| crates/server/Cargo.toml | Align rand/miden deps + adjust features/dev-deps |
| crates/server/bench/loadgen/src/scenarios.rs | Update delta construction for patch API |
| crates/miden-rpc-client/src/lib.rs | Switch to OUT_DIR-generated proto modules |
| crates/miden-rpc-client/examples/probe_kernel.rs | Add kernel probing example |
| crates/miden-rpc-client/Cargo.toml | Use miden-node-proto-build codegen at build time |
| crates/miden-rpc-client/build.rs | Generate tonic modules wrapper at build time |
| crates/miden-multisig-client/src/transaction/payment.rs | Update P2ID note/script construction for 0.16 APIs |
| crates/miden-multisig-client/src/transaction/mod.rs | Update random salt generation for rand 0.10 |
| crates/miden-multisig-client/src/transaction/guardian.rs | Rotate guardian key via upstream guarded component |
| crates/miden-multisig-client/src/transaction/configuration/config.rs | Update config advice layout + standards scripts |
| crates/miden-multisig-client/src/transaction/builder.rs | Update transfer/guardian/proc-threshold request wiring |
| crates/miden-multisig-client/src/proposal.rs | Add signer-count target helper for dilution detection |
| crates/miden-multisig-client/src/export.rs | Update delta construction for patch API |
| crates/miden-multisig-client/src/execution.rs | Simplify asset building for 0.16 callback semantics |
| crates/miden-multisig-client/src/error.rs | Add UnsupportedContractVersion error variant |
| crates/miden-multisig-client/src/client/proposals.rs | Warn on override dilution when creating proposals |
| crates/miden-multisig-client/src/client/offline.rs | Pass scheme into guardian rotation request |
| crates/miden-multisig-client/src/client/helpers.rs | Use account patches instead of deltas |
| crates/miden-multisig-client/src/client/account.rs | Update seed randomness + delta apply helper |
| crates/miden-multisig-client/src/builder.rs | Remove debug mode toggle |
| crates/miden-multisig-client/examples/procedure_roots.rs | Derive roots from upstream AuthGuardedMultisig exports |
| crates/miden-multisig-client/Cargo.toml | Bump internal crate pins + add tracing |
| crates/miden-keystore/src/keystore.rs | Update rand trait bounds/imports |
| crates/miden-keystore/Cargo.toml | Use workspace rand dependency |
| crates/contracts/src/main.rs | Remove unused binary entrypoint |
| crates/contracts/src/lib.rs | Remove legacy masm builder module export |
| crates/contracts/README.md | Update crate docs to upstream-component facade |
| crates/contracts/masm/auth/guardian.masm | Remove legacy guardian MASM |
| crates/contracts/masm/auth/guardian_ecdsa.masm | Remove legacy guardian ECDSA MASM |
| crates/contracts/masm/account_components/auth/multisig.masm | Remove legacy multisig component MASM |
| crates/contracts/masm/account_components/auth/multisig_guardian.masm | Remove legacy multisig+guardian MASM |
| crates/contracts/masm/account_components/auth/multisig_guardian_ecdsa.masm | Remove legacy ECDSA multisig+guardian MASM |
| crates/contracts/masm/account_components/auth/multisig_ecdsa.masm | Remove legacy ECDSA multisig MASM |
| crates/contracts/Cargo.toml | Re-scope deps/features for upstream-only facade |
| crates/contracts/build.rs | Remove legacy build-time MASM env wiring |
| crates/client/src/transaction.rs | Update delta construction for patch API |
| crates/client/Cargo.toml | Bump guardian-shared pin to 0.16.0 |
| Cargo.toml | Bump workspace version + toolchain + exact-pin Miden 0.16 alphas |
| benchmarks/prod-server/src/operations.rs | Update delta construction for patch API |
| AGENTS.md | Update Miden baseline policy to 0.16 pre-release |
| .agents/skills/smoke-test-ts-multisig-sdk/SKILL.md | Update dependency pins in smoke-test skill |
| .agents/skills/smoke-test-rust-multisig-sdk/SKILL.md | Update dependency pins in smoke-test skill |
Files not reviewed (8)
- examples/_shared/multisig-browser/package-lock.json: Generated file
- examples/operator-smoke-web/package-lock.json: Generated file
- examples/smoke-web/package-lock.json: Generated file
- examples/web/package-lock.json: Generated file
- packages/guardian-client/package-lock.json: Generated file
- packages/guardian-evm-client/package-lock.json: Generated file
- packages/guardian-operator-client/package-lock.json: Generated file
- packages/miden-multisig-client/package-lock.json: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| pub fn generate_salt() -> Word { | ||
| let mut bytes = [0u8; 32]; | ||
| rand::Rng::fill(&mut rand::rng(), &mut bytes); | ||
| rand::Rng::fill_bytes(&mut rand::rng(), &mut bytes); |
| // Generate a random seed for account ID | ||
| let mut seed = [0u8; 32]; | ||
| rand::Rng::fill(&mut rand::rng(), &mut seed); | ||
| rand::Rng::fill_bytes(&mut rand::rng(), &mut seed); |
| use rand::Rng; | ||
| let mut bytes = [0u8; CURSOR_SECRET_LEN]; | ||
| rand::rng().fill_bytes(&mut bytes); |
|
|
||
| use chrono::{DateTime, Duration, Utc}; | ||
| use rand::RngCore; | ||
| use rand::Rng; |
| "@miden-sdk/miden-sdk": "0.16.0-alpha.1", | ||
| "@noble/hashes": "^2.0.1", | ||
| "@openzeppelin/guardian-client": "^0.15.0" | ||
| "@openzeppelin/guardian-client": "^0.15.2" |
Codecov Report❌ Patch coverage is ❌ Your patch status has failed because the patch coverage (78.31%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #340 +/- ##
==========================================
+ Coverage 78.01% 78.21% +0.19%
==========================================
Files 167 168 +1
Lines 31065 31378 +313
==========================================
+ Hits 24236 24542 +306
- Misses 6829 6836 +7 Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
Combination of branches upstream contracts and v0.16 alpha.
Initially idea was to keep them separate but due to bigger changes with Miden v0.16 beta merge of these changes is needed.
Btw this PR does not yet contain changes for 0.16 beta because they are not yet on devnet.
Summary by CodeRabbit
New Features
Breaking Changes
verify_guardianprocedure from supported procedure names.Documentation