Skip to content

Upstream contracts + v0.16 alpha#340

Open
zeljkoX wants to merge 47 commits into
mainfrom
upstream-contracts-016alpha
Open

Upstream contracts + v0.16 alpha#340
zeljkoX wants to merge 47 commits into
mainfrom
upstream-contracts-016alpha

Conversation

@zeljkoX

@zeljkoX zeljkoX commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

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

    • Added guarded multisig account support aligned with Miden Standards.
    • Added contract-version validation to prevent unsupported account interactions.
    • Added browser determinism and SDK integration coverage.
  • Breaking Changes

    • Guardian configuration no longer supports enabling or disabling Guardian; accounts always include Guardian support.
    • Removed the verify_guardian procedure from supported procedure names.
  • Documentation

    • Updated SDKs and examples for Miden 0.16 pre-release compatibility.
    • Added guidance on version mismatches, state incompatibility, and required upgrades.

zeljkoX and others added 30 commits June 11, 2026 13:47
…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).
* 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>
zeljkoX and others added 12 commits July 13, 2026 20:28
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>
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2fed8686-93fc-4bcb-8591-468c2da18efb

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

Walkthrough

The repository was migrated to Miden v0.16 and Rust 1.96.1. Legacy multisig and guardian MASM was replaced with the upstream AuthGuardedMultisig component, while Rust and TypeScript clients, server delta handling, RPC generation, CI, examples, fixtures, and documentation were updated accordingly.

Changes

Miden v0.16 migration

Layer / File(s) Summary
Workspace versions and CI
.github/workflows/ci.yml, Cargo.toml, Dockerfile, rust-toolchain.toml, .agents/skills/*
Workspace, toolchain, dependency, Docker, CI, and smoke-test pins now target Miden v0.16.
Upstream guarded multisig component
crates/contracts/*, crates/contracts/tests/*
Account construction and authentication tests use AuthGuardedMultisig; legacy builders, MASM modules, and guardian enablement toggles were removed.
Shared state and Rust SDK updates
crates/shared/*, crates/miden-multisig-client/src/*
Account patches, derived storage slots, contract-version checks, transaction scripts, and updated Miden APIs were integrated into the Rust SDK.
Server, RPC, and delta processing
crates/miden-rpc-client/*, crates/server/*
RPC bindings are generated at build time, and server delta reconstruction, replay protection, projections, fixtures, and account inspection use patch-based state handling.
TypeScript guarded multisig SDK
packages/miden-multisig-client/*
The TypeScript SDK now compiles one guarded component, uses standards-based storage and scripts, removes guardianEnabled, and adds browser determinism coverage.
Release metadata and documentation
README.md, docs/*, examples/*, packages/*/package.json
Release versions, Miden compatibility notes, browser overrides, examples, OpenAPI metadata, and operational guidance were updated.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested labels: enhancement

Suggested reviewers: haseebrabbani

Poem

A rabbit watched the old guards hop away,
While Standards built the paths of a brighter day.
Patches carried state through fields of green,
And v0.16 made every root pristine.
“Test the browser!” the bunny cried—
Then nibbled CI carrots with pride.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the PR’s main theme: upstream contract integration plus Miden v0.16 alpha updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upstream-contracts-016alpha

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

zeljkoX and others added 2 commits July 22, 2026 10:06
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>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 win

Represent cleared map entries as removals. StorageChange.after is None when a slot is cleared, but this loop serializes Word::empty() as a hex string. Map empty words to None here 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 win

Move 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 value

Remove 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 win

Add a unit test for the account.nonce() == 0 full-state reconstruction branch.

account_patch_from_delta special-cases accounts at nonce zero by rebuilding a full-state AccountPatch even though the incoming delta is only partial. Both existing tests construct accounts via Account::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 with nonce_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 value

Remove 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

📥 Commits

Reviewing files that changed from the base of the PR and between e0d9c49 and 0739474.

⛔ Files ignored due to path filters (9)
  • Cargo.lock is excluded by !**/*.lock
  • examples/_shared/multisig-browser/package-lock.json is excluded by !**/package-lock.json
  • examples/operator-smoke-web/package-lock.json is excluded by !**/package-lock.json
  • examples/smoke-web/package-lock.json is excluded by !**/package-lock.json
  • examples/web/package-lock.json is excluded by !**/package-lock.json
  • packages/guardian-client/package-lock.json is excluded by !**/package-lock.json
  • packages/guardian-evm-client/package-lock.json is excluded by !**/package-lock.json
  • packages/guardian-operator-client/package-lock.json is excluded by !**/package-lock.json
  • packages/miden-multisig-client/package-lock.json is 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.yml
  • AGENTS.md
  • Cargo.toml
  • Dockerfile
  • README.md
  • benchmarks/prod-server/src/operations.rs
  • crates/client/Cargo.toml
  • crates/client/src/transaction.rs
  • crates/contracts/Cargo.toml
  • crates/contracts/README.md
  • crates/contracts/build.rs
  • crates/contracts/masm/account_components/auth/multisig.masm
  • crates/contracts/masm/account_components/auth/multisig_ecdsa.masm
  • crates/contracts/masm/account_components/auth/multisig_guardian.masm
  • crates/contracts/masm/account_components/auth/multisig_guardian_ecdsa.masm
  • crates/contracts/masm/auth/guardian.masm
  • crates/contracts/masm/auth/guardian_ecdsa.masm
  • crates/contracts/masm/auth/multisig.masm
  • crates/contracts/masm/auth/multisig_ecdsa.masm
  • crates/contracts/src/lib.rs
  • crates/contracts/src/main.rs
  • crates/contracts/src/masm_builder.rs
  • crates/contracts/src/multisig_guardian.rs
  • crates/contracts/tests/auth/multisig.rs
  • crates/miden-keystore/Cargo.toml
  • crates/miden-keystore/src/keystore.rs
  • crates/miden-multisig-client/Cargo.toml
  • crates/miden-multisig-client/examples/procedure_roots.rs
  • crates/miden-multisig-client/src/account.rs
  • crates/miden-multisig-client/src/builder.rs
  • crates/miden-multisig-client/src/client/account.rs
  • crates/miden-multisig-client/src/client/helpers.rs
  • crates/miden-multisig-client/src/client/offline.rs
  • crates/miden-multisig-client/src/client/proposals.rs
  • crates/miden-multisig-client/src/error.rs
  • crates/miden-multisig-client/src/execution.rs
  • crates/miden-multisig-client/src/export.rs
  • crates/miden-multisig-client/src/procedures.rs
  • crates/miden-multisig-client/src/proposal.rs
  • crates/miden-multisig-client/src/transaction/builder.rs
  • crates/miden-multisig-client/src/transaction/configuration/config.rs
  • crates/miden-multisig-client/src/transaction/guardian.rs
  • crates/miden-multisig-client/src/transaction/mod.rs
  • crates/miden-multisig-client/src/transaction/payment.rs
  • crates/miden-rpc-client/Cargo.toml
  • crates/miden-rpc-client/build.rs
  • crates/miden-rpc-client/src/lib.rs
  • crates/server/Cargo.toml
  • crates/server/bench/loadgen/src/scenarios.rs
  • crates/server/src/dashboard/cursor.rs
  • crates/server/src/delta_summary/build.rs
  • crates/server/src/delta_summary/projection.rs
  • crates/server/src/evm/session.rs
  • crates/server/src/metadata/auth/miden_ecdsa.rs
  • crates/server/src/metadata/auth/miden_falcon_rpo.rs
  • crates/server/src/network/miden/account_inspector.rs
  • crates/server/src/network/miden/mod.rs
  • crates/server/src/services/configure_account.rs
  • crates/server/src/services/dashboard_account_snapshot.rs
  • crates/server/src/storage/filesystem.rs
  • crates/server/src/testing/e2e/switch_guardian_canonicalization.rs
  • crates/server/src/testing/fixtures/account.json
  • crates/server/src/testing/fixtures/commitments.json
  • crates/server/src/testing/fixtures/delta_1.json
  • crates/server/src/testing/fixtures/delta_2.json
  • crates/server/src/testing/fixtures/delta_3.json
  • crates/server/src/testing/fixtures/keys.json
  • crates/server/src/testing/generate_fixtures.rs
  • crates/server/src/testing/helpers.rs
  • crates/server/src/testing/integration/lookup_helpers.rs
  • crates/shared/Cargo.toml
  • crates/shared/src/account_delta.rs
  • crates/shared/src/auth_request_message.rs
  • crates/shared/src/lib.rs
  • crates/shared/src/lookup_auth_message.rs
  • docs/LOCAL_DEV.md
  • docs/MULTISIG_SDK.md
  • docs/PRODUCTION.md
  • docs/QUICKSTART.md
  • docs/TROUBLESHOOTING.md
  • docs/guides/aws-signers/.env.example
  • docs/guides/horizontal-scaling/.env.example
  • docs/guides/miden-dashboard/.env.example
  • docs/guides/miden-dashboard/.gitignore
  • docs/guides/observability/.env.example
  • docs/guides/postgres-tls/.env.example
  • docs/openapi-client.json
  • docs/openapi-dashboard.json
  • docs/openapi-evm.json
  • docs/openapi.json
  • examples/_shared/multisig-browser/package.json
  • examples/_shared/multisig-browser/src/multisigApi.ts
  • examples/_shared/multisig-browser/src/types.ts
  • examples/demo/src/actions/proposal_management.rs
  • examples/operator-smoke-web/package.json
  • examples/rust/Cargo.toml
  • examples/rust/rust-toolchain.toml
  • examples/rust/src/main.rs
  • examples/rust/src/multisig.rs
  • examples/smoke-web/package.json
  • examples/smoke-web/vite.config.ts
  • examples/web/package.json
  • examples/web/src/components/LoadMultisigDialog.tsx
  • examples/web/src/lib/multisigApi.ts
  • packages/guardian-client/package.json
  • packages/guardian-evm-client/package.json
  • packages/guardian-operator-client/package.json
  • packages/miden-multisig-client/.gitignore
  • packages/miden-multisig-client/README.md
  • packages/miden-multisig-client/masm/account_components/auth/guarded_multisig.masm
  • packages/miden-multisig-client/masm/account_components/auth/multisig.masm
  • packages/miden-multisig-client/masm/account_components/auth/multisig_ecdsa.masm
  • packages/miden-multisig-client/masm/account_components/auth/multisig_guardian.masm
  • packages/miden-multisig-client/masm/account_components/auth/multisig_guardian_ecdsa.masm
  • packages/miden-multisig-client/masm/auth/guardian.masm
  • packages/miden-multisig-client/masm/auth/guardian_ecdsa.masm
  • packages/miden-multisig-client/masm/auth/multisig.masm
  • packages/miden-multisig-client/masm/auth/multisig_ecdsa.masm
  • packages/miden-multisig-client/package.json
  • packages/miden-multisig-client/playwright.config.ts
  • packages/miden-multisig-client/scripts/generate-masm.mjs
  • packages/miden-multisig-client/src/account/builder.test.ts
  • packages/miden-multisig-client/src/account/builder.ts
  • packages/miden-multisig-client/src/account/masm/account-components/auth.ts
  • packages/miden-multisig-client/src/account/masm/auth.ts
  • packages/miden-multisig-client/src/account/masm/index.ts
  • packages/miden-multisig-client/src/account/storage.ts
  • packages/miden-multisig-client/src/client.test.ts
  • packages/miden-multisig-client/src/client.ts
  • packages/miden-multisig-client/src/inspector.test.ts
  • packages/miden-multisig-client/src/inspector.ts
  • packages/miden-multisig-client/src/multisig.test.ts
  • packages/miden-multisig-client/src/procedures.ts
  • packages/miden-multisig-client/src/transaction/updateGuardian.ts
  • packages/miden-multisig-client/src/transaction/updateProcedureThreshold.ts
  • packages/miden-multisig-client/src/transaction/updateSigners.ts
  • packages/miden-multisig-client/src/types.ts
  • packages/miden-multisig-client/src/utils/signature.ts
  • packages/miden-multisig-client/tests/advice-feltarray-ownership.test.ts
  • packages/miden-multisig-client/tests/browser/determinism.spec.ts
  • packages/miden-multisig-client/tests/browser/harness.html
  • packages/miden-multisig-client/tests/browser/harness.ts
  • packages/miden-multisig-client/tests/browser/vite.config.ts
  • packages/miden-multisig-client/tests/masm.test.ts
  • rust-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

Comment thread .github/workflows/ci.yml
Comment on lines +108 to +112
- name: Install Rust
uses: dtolnay/rust-toolchain@351f82a4dc29e4159746a068ed925da17341219f # 1.89.0
with:
toolchain: 1.93.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 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: change contract-behavior to toolchain: 1.96.1.
  • .github/workflows/ci.yml#L152-L155: change ts-sdk to toolchain: 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

Comment thread docs/MULTISIG_SDK.md Outdated
Comment on lines +958 to +960
- **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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.md

Repository: 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.

Comment thread docs/PRODUCTION.md Outdated
Comment on lines +146 to +149
- 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
- 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

Comment thread examples/rust/src/main.rs Outdated
Comment on lines +484 to +489
" ✓ Transaction executed (final nonce: {})",
tx_result
.account_patch()
.final_nonce()
.map(|nonce| nonce.as_canonical_u64())
.unwrap_or_default()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
" ✓ 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

Comment on lines +23 to +26
> **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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ 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.1

As 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

Comment on lines 52 to 60
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 },
]),
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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 one code mock.
  • packages/miden-multisig-client/src/inspector.test.ts#L141-L144: retain one overridden code mock.
  • packages/miden-multisig-client/src/inspector.test.ts#L162-L164: retain one code mock.
  • packages/miden-multisig-client/src/inspector.test.ts#L194-L194: remove the repeated code mock.
  • packages/miden-multisig-client/src/inspector.test.ts#L216-L220: remove the repeated code mock.
  • packages/miden-multisig-client/src/inspector.test.ts#L243-L243: remove the repeated code mock.
📍 Affects 1 file
  • packages/miden-multisig-client/src/inspector.test.ts#L52-L60 (this comment)
  • packages/miden-multisig-client/src/inspector.test.ts#L141-L144
  • packages/miden-multisig-client/src/inspector.test.ts#L162-L164
  • packages/miden-multisig-client/src/inspector.test.ts#L194-L194
  • packages/miden-multisig-client/src/inspector.test.ts#L216-L220
  • packages/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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 and guardianEnabled/verify_guardian concepts.
  • 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);
Comment on lines +205 to 207
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-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 78.31325% with 162 lines in your changes missing coverage. Please review.
✅ Project coverage is 78.21%. Comparing base (e0d9c49) to head (9a0696d).
⚠️ Report is 1 commits behind head on main.

❌ 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.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e0d9c49...9a0696d. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

5 participants