Skip to content

Tracking PR for v0.15.0 release#2674

Draft
bobbinth wants to merge 25 commits intomainfrom
next
Draft

Tracking PR for v0.15.0 release#2674
bobbinth wants to merge 25 commits intomainfrom
next

Conversation

@bobbinth
Copy link
Copy Markdown
Contributor

This is a tracking PR for v0.15.0 release.

bobbinth and others added 25 commits March 23, 2026 20:41
* fix(ci): install Rust 1.91 for cargo-msrv compatibility

cargo-msrv 0.19.3 requires rustc 1.91.1 or newer, but the stable
toolchain currently ships 1.90.0. Install the 1.91 toolchain and
set RUSTUP_TOOLCHAIN=1.91 on the cargo-msrv install and MSRV
check steps so the tool can build and run.

* Revert "fix(ci): install Rust 1.91 for cargo-msrv compatibility"

This reverts commit 4485176.

* chore: bump toolchain

* chore: clippy
Add scheme-specific constructors that accept typed public keys instead
of a generic PublicKeyCommitment, preventing mismatches between key type
and authentication scheme:

- falcon512_poseidon2(pub_key): creates component from a Falcon512 key
- ecdsa_k256_keccak(pub_key): creates component from an ECDSA K256 key
- from_public_key(pub_key): creates component from a PublicKey enum

Also add From<ecdsa_k256_keccak::PublicKey> for PublicKeyCommitment for
parity with the existing Falcon512 conversion.
* chore: rename from PSM to Guardian

* fix: prefer state guardian in comments

* fix: rename guardian multisig to guarded multisig

* fix: restore changelog note and apply nightly formatting

* fix: move guardian rename changelog notes to v0.15

* style: clarify guardian masm comments

* fix: comment
…#2736)

* refactor: lowercase note script filenames in miden-agglayer

* docs(agglayer): update SPEC.md note script filenames to lowercase

Agent-Logs-Url: https://github.com/0xMiden/protocol/sessions/4f7eb749-9710-4a36-8caf-486f12ae21d7

Co-authored-by: partylikeits1983 <77119221+partylikeits1983@users.noreply.github.com>

* fix: update SPEC.md to reference .masm

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* feat(asset): add AssetAmount wrapper type for fungible amounts

Introduce a validated AssetAmount(u64) newtype that encapsulates the
max-amount check (2^63 - 2^31) at construction time.

- Add AssetAmount with MAX constant, new(), as_u64(), From<u8/u16/u32>,
  TryFrom<u64>, Display, Serializable, Deserializable
- Integrate into FungibleAsset: replace raw u64 amount field
- Delegate validation in FungibleAsset::new() to AssetAmount::new()
- Keep FungibleAsset::MAX_AMOUNT as backward-compatible alias
- Keep amount() returning u64 to minimize downstream churn

Closes #2532

* refactor: remove as_u64, delegate add/sub to AssetAmount

Remove the redundant as_u64() accessor since From<AssetAmount> for u64
already provides the same conversion. Replace all call sites with
u64::from().

Add add() and sub() methods to AssetAmount so that FungibleAsset can
delegate arithmetic to the inner type instead of performing it inline.
Add unit tests for both new methods.

* style: fix rustfmt and clippy lints

Expand import list to one-per-line, merge duplicate use super
statements, collapse single-line assert_eq, and suppress
should_implement_trait on AssetAmount::add/sub.

* docs: add changelog entry for AssetAmount wrapper

* refactor: make AssetAmount::MAX a u64 constant, use .into() in tests

* fix: add type annotations for .into() in tests to resolve ambiguity

* refactor: implement Add and Sub traits for AssetAmount

---------

Co-authored-by: Bobbin Threadbare <43513081+bobbinth@users.noreply.github.com>
Co-authored-by: Marti <marti@miden.team>
* feat: add `metadata_into_note_type` procedure to note.masm

Add a procedure to extract the note type from the metadata header
and unit tests for both public and private note types.

* refactor: address PR review — move stack layout to Where docs, consolidate tests with rstest

* chore: add CHANGELOG entry for metadata_into_note_type

* refactor: address review — clarify bit position, add stack layout docs, use NoteType comparison

* refactoring changes

Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>

* docs: link CHANGELOG entry for metadata_into_note_type to PR #2738

---------

Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>
…er build scripts (#2538)

* refactor: avoid unnecessary asm/ tree copy in standards build script

miden-standards: Remove the full asm/ directory copy to OUT_DIR entirely.
This crate never mutates its source tree, so the assembler and error
extractor can read directly from the crate's asm/ directory.

miden-protocol: Replace the bulk copy of the entire asm/ tree with
targeted staging of only the two directories that need modification
(kernels/transaction/ and protocol/). The assembler requires shared
modules to be physically present alongside these source files, but
shared_utils/ and shared_modules/ themselves don't need to be copied.
Event extraction now reads directly from the original source.

Also simplifies copy_dir_recursive (replacing the old copy_directory
with its awkward prefix-stripping API) and removes dead code.

https://claude.ai/code/session_01HDd5o3XxcgZiGrvBDFsUr1

refactor: scope change to standards build only, leave protocol as-is

The protocol crate needs source-level staging because the assembler's
`$kernel::` import resolution requires shared modules to be physically
co-located with kernel source. This cannot be avoided without assembler
changes, so revert the protocol build.rs to the base branch version.

https://claude.ai/code/session_01HDd5o3XxcgZiGrvBDFsUr1

* refactor: remove copy_directory from agglayer build.rs

Read MASM sources directly from the crate's asm/ directory instead of
copying them to OUT_DIR first. The copy is unnecessary because agglayer
doesn't mutate the directory structure during compilation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: generate agglayer error constants into OUT_DIR

Write error constants to OUT_DIR instead of src/errors/agglayer.rs, matching
the pattern used by miden-standards. The include now uses
concat!(env!("OUT_DIR"), ...) so error generation always runs regardless of
BUILD_GENERATED_FILES_IN_SRC.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: validate canonical_zeros.masm instead of generating it

The canonical zeros are deterministic Keccak256 values that never change.
Instead of generating the file at build time (guarded by BUILD_GENERATED_FILES_IN_SRC),
the committed file is now validated against the expected content. To regenerate,
run with REGENERATE_CANONICAL_ZEROS=1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: remove BUILD_GENERATED_FILES_IN_SRC from agglayer

Both error constants and canonical zeros no longer write to src/, so
BUILD_GENERATED_FILES_IN_SRC is unused and can be removed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: fix trailing empty doc comment line

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
* refactor: reduce max assets per note from 255 to 64

* feat: add add_assets_exceeding_max_per_note_fails test

* Update crates/miden-protocol/asm/kernels/transaction/lib/note.masm

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update crates/miden-protocol/asm/kernels/transaction/lib/memory.masm

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: correct CHANGELOG issue link from miden-base to protocol repo

Agent-Logs-Url: https://github.com/0xMiden/protocol/sessions/7e834550-7f38-4d90-9c05-d46e3a7e37fa

Co-authored-by: partylikeits1983 <77119221+partylikeits1983@users.noreply.github.com>

* refactor: address PR comments: add max assets success test, fix memory layout table

* chore: fix changelog

* Update crates/miden-protocol/src/transaction/kernel/memory.rs

Co-authored-by: Philipp Gackstatter <PhilippGackstatter@users.noreply.github.com>

* Update crates/miden-testing/src/kernel_tests/tx/test_output_note.rs

Co-authored-by: Philipp Gackstatter <PhilippGackstatter@users.noreply.github.com>

* refactor: use rstest for tests & update changelog

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Philipp Gackstatter <PhilippGackstatter@users.noreply.github.com>
…onstruction (#2758)

* chore: make note procedure names consistent

* chore: add changelog

* chore: update swap tag construction
* Add cycle counts to successful and failed notes

* Changelog

* Cycle count order comment

* Make fields private
* fix: improve deserialization error handling in AccountCode

* chore: update changelog

* refactor: removed AccountCode::from_bytes()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.