Proposal to elect new release rc--2025-05-15_03-20

Hello there!

We are happy to announce that voting is now open for a new GuestOS release.
The NNS proposal is here: IC NNS Proposal 136664.

Here is a summary of the changes since the last GuestOS release:

Release Notes for release-2025-05-15_03-20-base (59ad18a77fbeaf3ebbba863972ff20f7ab588d7a)

This release is based on changes since release-2025-05-08_03-21-base (2f52f298de53944209f550774505aa72a1a3ed17).

Please note that some commits may be excluded from this release if they’re not relevant, or not modifying the GuestOS image. Additionally, descriptions of some changes might have been slightly modified to fit the release notes format.

To see a full list of commits added since last release, compare the revisions on GitHub.

Features:

  • 12ade0592 Interface: Allow zero pre_signatures_to_create_in_advance in vetKD ChainKeyConfig (#5014)
  • a7a57d574 Node(IDX): Add prefix to artifact bundles (#5098)

Bugfixes:

  • b7e15a5d8 Execution,Interface: make upload_chunk idempotent (#5049)
  • 80d9fc533 Execution,Interface: clear canister logs before instantiating new canister during reinstall (#5064)

Performance improvements:

  • 6b72db3f9 Consensus,Interface(idkg): Performance improvement when building a transcript of a certain ID (#4999)

Chores:

  • 53ac5a6a1 Consensus,Interface: add more logs to nns delegation manager (#5050)
  • 204e1bda4 Consensus,Interface,Node: renaming mentions of ch1-obsdev1 into testnet (#5085)
  • 97a0e6132 Crypto: Modify VetKD key derivation (#5088)
  • 7a72da08c Crypto: Use a fixed length domain separator for IBE message mask (#5028)
  • 230b080ae Execution,Interface: refine ErrorHelp::ToolchainError (#5122)
  • f8d49eb9c Execution,Interface: Add error doc link for canister snapshot limit error. (#5078)
  • e309dc2af Execution,Interface: Add error doc for CanisterManagerError::ReservedCyclesLimitIsTooLow (#5074)
  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
  • 182119f38 Interface,Message Routing: Don’t deliver ALREADY_EXISTS checkpoint in state sync (#5121)
  • 7443f1e1c Owners(IDX): rules_rust: 0.56.0 → 0.61.0 (#4574)
  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
  • 7269994c8 Node(IDX): move ic-os upload to BUILD.bazel (#5070)
  • f5749622f Node(IDX): extract file size checks from icos_build (#5054)
  • ebd587595 Node(IDX): rename checksum_rule to artifact_bundle (#5002)
  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)

Tests:

  • 492fdcea6 Consensus,Interface(replay): Unit test for Player::get_changes_since in rs/replay. (#5022)
  • 59ad18a77 Interface(nervous_system/canister): Test getting large Registry mutations from a canister. (#5043)
  • 4b0953166 Interface: Extend some unit tests with vet keys (#5010)

Full list of changes (including the ones that are not relevant to GuestOS) can be found on GitHub.

IC-OS Verification

To build and verify the IC-OS GuestOS disk image, after installing curl if necessary (sudo apt install curl), run:

# From https://github.com/dfinity/ic#verifying-releases
curl -fsSL https://raw.githubusercontent.com/dfinity/ic/master/ci/tools/repro-check | python3 - -c 59ad18a77fbeaf3ebbba863972ff20f7ab588d7a --guestos

The two SHA256 sums printed above from a) the downloaded CDN image and b) the locally built image, must be identical, and must match the SHA256 from the payload of the NNS proposal.

While not required for this NNS proposal, as we are only electing a new GuestOS version here, you have the option to verify the build reproducibility of the HostOS by passing --hostos to the script above instead of --guestos, or the SetupOS by passing --setupos.

Hello there!

We are happy to announce that voting is now open for a new HostOS release.
The NNS proposal is here: IC NNS Proposal 136669.

Here is a summary of the changes since the last HostOS release:

Release Notes for release-2025-05-15_03-20-base (59ad18a77fbeaf3ebbba863972ff20f7ab588d7a)

This release is based on changes since release-2025-05-08_03-21-base (2f52f298de53944209f550774505aa72a1a3ed17).

Please note that some commits may be excluded from this release if they’re not relevant, or not modifying the HostOS image. Additionally, descriptions of some changes might have been slightly modified to fit the release notes format.

To see a full list of commits added since last release, compare the revisions on GitHub.

Bugfixes:

Chores:

Tests:

  • 95231520d Node: Support loading SetupOS config from drive, for tests (#4533)

Full list of changes (including the ones that are not relevant to HostOS) can be found on GitHub.

IC-OS Verification

To build and verify the IC-OS HostOS disk image, after installing curl if necessary (sudo apt install curl), run:

# From https://github.com/dfinity/ic#verifying-releases
curl -fsSL https://raw.githubusercontent.com/dfinity/ic/master/ci/tools/repro-check | python3 - -c 59ad18a77fbeaf3ebbba863972ff20f7ab588d7a --hostos

The two SHA256 sums printed above from a) the downloaded CDN image and b) the locally built image, must be identical, and must match the SHA256 from the payload of the NNS proposal.

While not required for this NNS proposal, as we are only electing a new HostOS version here, you have the option to verify the build reproducibility of the GuestOS by passing --guestos to the script above instead of --hostos, or the SetupOS by passing --setupos.

Proposal 136664 & 136669 - Hamish | CodeGov

Vote: Reject 136664 and Adopt 136669
Reason: I have failed to successfully run the GuestOS build verification script, and so far no-one has posted stating that they have successfully run the build script, this leaves me no choice but to reject the proposal. But the HostOS build verification passed successfully. In my opinion all commits listed for both proposals look fine so I have opted to vote to approve the HostOS proposal.

Features:

  • 12ade0592 Interface: Allow zero pre_signatures_to_create_in_advance in vetKD ChainKeyConfig (#5014)
    Review: Looks fine + matches description
    Notes: Updates the registry invariant checks to allow keys to be created with pre_signatures_to_create_in_advance set to 0, provided that the newly introduced MasterPublicKeyId::requires_pre_signatures function returns false. This is currently only the case for VetKeys.

  • a7a57d574 Node(IDX): Add prefix to artifact bundles (#5098)
    Review: Looks fine + matches description
    Notes: Adds prefixes to build artifact bundles (eg. “setup-os/disk-img”) and modifies _artifact_bundle_impl to output each bundle as a directory rather than a flat list of artifacts.

Bugfixes:

  • b7e15a5d8 Execution,Interface: make upload_chunk idempotent (#5049)
    Review: Looks fine + matches description
    Notes: Makes upload_chunk idempotent by returning ChunkValidationResult::AlreadyExists if attempting to upload a chunk which already exists.

  • 80d9fc533 Execution,Interface: clear canister logs before instantiating new canister during reinstall (#5064)
    Review: Looks fine + matches description
    Notes: Clears canister logs when (re)installing a canister before executing start and init, matching the behaviour as described in the IC specification.

  • 5f2102f11 Node: setup-disk.sh hardening (#5051)
    Review: Looks fine + matches description
    Notes: Adds additional steps to the purge_partitions function of the setup-disk.sh script to ensure any redundant files are successfully cleaned up.

Performance improvements:

  • 6b72db3f9 Consensus,Interface(idkg): Performance improvement when building a transcript of a certain ID (#4999)
    Review: Looks fine + matches description
    Notes: Implements support for iterating IDKG dealings which match on either their prefix or their group tag (previously you could only iterate by prefix). Then speeds up aggregating pre-signatures by searching based on the transcript Id’s group tag rather than iterating each item in the relevant object pool.

Chores:

  • 53ac5a6a1 Consensus,Interface: add more logs to nns delegation manager (#5050)
    Review: Looks fine + matches description
    Notes: Outputs log entries at various points within try_fetch_delegation_from_nns to help diagnose a flaky test.

  • 204e1bda4 Consensus,Interface,Node: renaming mentions of ch1-obsdev1 into testnet (#5085)
    Review: Looks fine + matches description
    Notes: Renames ch1-obsdev1 within ElasticSearch host urls to testnet now that the production cluster is up and running.

  • 97a0e6132 Crypto: Modify VetKD key derivation (#5088)
    Review: Looks fine + matches description
    Notes: Splits VetKD subkey generation into two distinct steps, the first step generates a key from the master public key based on the requesting canisterId, the next step generates a subkey from that canister key based on the provided context. Previously each step was using the same derive_sub_key function, but now the canister step uses the new derive_canister_key function which uses a different domain separator.

  • 7a72da08c Crypto: Use a fixed length domain separator for IBE message mask (#5028)
    Review: Looks fine + matches description
    Notes: Ensures all IBE domain separators are the same length by padding the input length with zeroes until it is 20 digits long.

  • 230b080ae Execution,Interface: refine ErrorHelp::ToolchainError (#5122)
    Review: Looks fine + matches description
    Notes: Simply updates the text within some error messages.

  • f8d49eb9c Execution,Interface: Add error doc link for canister snapshot limit error. (#5078)
    Review: Looks fine + matches description
    Notes: Returns more details in the error message whenever a CanisterSnapshotLimitExceeded error occurs.

  • e309dc2af Execution,Interface: Add error doc for CanisterManagerError::ReservedCyclesLimitIsTooLow (#5074)
    Review: Looks fine + matches description
    Notes: Returns more details in the error message whenever a ReservedCyclesLimitIsTooLow error occurs.

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Review: Looks fine + matches description
    Notes: Bumps Rust from v1.85.1 to v1.86.0 and then fixes the various clippy issues detected by the later version.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Review: Looks fine + matches description
    Notes: Bumps Rust from v1.84.0 to v1.85.0 and then fixes the various clippy issues detected by the later version.

  • 182119f38 Interface,Message Routing: Don’t deliver ALREADY_EXISTS checkpoint in state sync (#5121)
    Review: Looks fine + matches description
    Notes: Exits the state sync process early if make_checkpoint runs into an AlreadyExists error.

  • 7443f1e1c Owners(IDX): rules_rust: 0.56.0 → 0.61.0 (#4574)
    Review: Looks fine + matches description
    Notes: Bumps rules_rust from v0.56.0 to v0.61.0.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Review: Looks fine + matches description
    Notes: Renamed boot_args_template to extra_boot_args_template within Bazel definition files.

  • 7269994c8 Node(IDX): move ic-os upload to BUILD.bazel (#5070)
    Review: Looks fine + matches description
    Notes: Extracts the upload_artifacts step out of the icos_build function since it was being run for all packages regardless of if the artifacts needed to be uploaded, then adds an upload_artifacts step to only those packages that require it.

  • f5749622f Node(IDX): extract file size checks from icos_build (#5054)
    Review: Looks fine + matches description
    Notes: Extracts the file size checks out of the icos_build function and adds explicit calls to file_size_check for the various IC-OS images.

  • ebd587595 Node(IDX): rename checksum_rule to artifact_bundle (#5002)
    Review: Looks fine + matches description
    Notes: Renames checksum_rule to artifact_bundle and compute_checksums to bundle within some Bazel build scripts.

  • 69ea5347f Node: Remove unused boot argument from GRUB configuration (#5097)
    Review: Looks fine + matches description
    Notes: Removes the unused dfinity.boot_state arg from grub.cfg.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Review: Looks fine + matches description
    Notes: Update the base IC-OS image references.

Tests:

  • 492fdcea6 Consensus,Interface(replay): Unit test for Player::get_changes_since in rs/replay. (#5022)
    Review: Looks fine + matches description
    Notes: Extracts the bulk of the login within Player::get_changes_since into the new standalone get_changes_since function so that it can easily be tested, then adds some unit tests covering it.

  • 59ad18a77 Interface(nervous_system/canister): Test getting large Registry mutations from a canister. (#5043)
    Review: Looks fine + matches description
    Notes: This only touches test code so is fine.

  • 4b0953166 Interface: Extend some unit tests with vet keys (#5010)
    Review: Looks fine + matches description
    Notes: This only touches test code so is fine.

  • 95231520d Node: Support loading SetupOS config from drive, for tests (#4533)
    Review: Looks fine + matches description
    Notes: Adds support for loading SetupOS from a USB for testing.

About CodeGov

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these technical topics. We also have a group of Followees who vote independently on the Governance and the SNS & Neuron’s Fund topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron, KongSwap, and Alice with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

2 Likes

proposals - [136664, 136669] Cyberowl | CodeGov

Proposals:

136664
136669

Vote: [REJECT, ADOPT]

Reason & Feedback:

I want to REJECT 136664 proposal due to the failed GuestOS verification. I’ll await others’ findings before casting my vote, but I’d rather err on the side of caution—there’s reason to believe this change introduces a bug that could cause issues.

Checks:

Hash Match: [FAIL, PASS]
2 Urls: [PASS, PASS]
Proposer Check: [PASS, PASS]

Overall Summary:

Sets pre_signatures_to_create_in_advance to 0 for VetKd keys by introducing a new requires_pre_signatures method.
New MasterPublicKey type, the explicit two-stage derivation split via derive_canister_key and derive_sub_key.

Commits Summary

proposal/136664

12ade0592
Sets pre_signatures_to_create_in_advance to 0 for VetKd keys by introducing a new requires_pre_signatures method that dynamically configures pre-signature counts based on key type. It updates invariant checks to only reject zero pre-signature settings for key types that actually require them. The Rust toolchain is upgraded from version 1.84.0 to 1.85.1.

a7a57d574
This might be what is causing GuesOS validation script to fail.
The build artifacts started uploading to guest-os/update-img/… instead of the legacy guestos-os/update-img/…, so downstream scripts that still expect the old path can’t find the GuestOS image.

b7e15a5d8
Refactors Wasm chunk handling by introducing a ChunkValidationResult enum and a ValidatedChunk wrapper in the WasmChunkStore, allowing upfront hash-based deduplication so that duplicate chunks are detected and skipped without re-insertion. In the CanisterManager, upload_chunk now takes ownership of the chunk Vec<u8>, always charges cycles for hash computation (even on duplicates), and only performs memory and rate-limit checks for genuinely new chunks to optimize resource usage.

80d9fc533
Moves the clear_log() call into Stage 1 of execute_install, which runs before the canister’s start() and init() hooks fire, so logs from those hooks are now preserved—exactly as the PR description.

6b72db3f9
Reverts prev commit. Removal of IterationPattern and transcript-ID APIs, the switch to prefix-only iteration (with iter_by_prefix), the in-place filtering in pre_signer.rs.

53ac5a6a1
A bit more logs to nns delegation manager

204e1bda4
Moves elasticsearch.ch1-obsdev1.dfinity.network:443 to testnet.

97a0e6132
New MasterPublicKey type, the explicit two-stage derivation split via derive_canister_key and derive_sub_key, the replacement of the old hashing helpers with hash_to_scalar_two_inputs and domain separators, the unified error type.

7a72da08c
Matches description Use a fixed length domain separator for IBE message mask.

230b080ae
Fix err message ToolchainError.

f8d49eb9c
Fix err message CanisterSnapshotLimitExceeded.

e309dc2af
Fix err message ReservedCyclesLimitIsTooLow.

d1dc4c2dc
CI/CD image and toolchain upgrades (including the one-off SHA fix in ci-pr-only.yml).
Shift to Rust 1.86.0.
div_ceil, repeat_n, next_back(), pattern-matching, !is_empty() and the Clippy/rustfmt

f68a58fab
The Rust toolchain is upgraded from version 1.84.0 to 1.85.1. Container image is updated.
The benchmark instruction increases (0.57%-1.48% for ICRC-1 ledger) suggest a slight performance regression.

182119f38
Early-return on AlreadyExists, the #[must_use] guard, the new test for pre-existing checkpoints. Stronger integrity-check in make_checkpoint.

7443f1e1c
Reverts to rules_rust-0.56.0.tar.gz.

dabab3d1c
Matches description Update boot args key to extra_boot_args_template.

7269994c8
This is correct here remote_subdir = "guestos-os/update-img",.
But commit a7a57d574 has it remote_subdir = "guest-os/update-img"

f5749622f
file_size_check explicitly takes a test name and file label, strips size-check logic out of icos_build, and returns named image targets in a struct—pushing each environment to declare its own size-check rules with clear, descriptive names.

ebd587595
Replaces the old checksum_rule with a unified artifact_bundle.

f25b30020
Update base image refs

492fdcea6
Refactors Player’s registry‐query into a reusable get_changes_since function.
The tests expect a get_changes_since call that returns both inline values and chunked large-value keys, then two get_chunk calls for those chunks—and verify that get_changes_since correctly dechunkifies the large values and emits a flat sequence of RegistryTransportRecords.

59ad18a77
Test canister’s call_registry_get_changes_since method to fetch the changes. It then asserts that the canister returns the correct ContentSummary (key, length, and SHA-256 of the value) for large and small records and None when the record is deleted.

4b0953166
admin_helper.rs now include a VetKd entry in the JSON used by ic-admin’s create_subnet, recover_subnet, and update_subnet commands, and assert that the resulting KeyConfigRequest has pre_signatures_to_create_in_advance = 0. registry‐subnet‐features crate check that a protobuf round‐trip of ChainKeyConfig faithfully serializes and deserializes a VetKd entry with zero pre‐signatures.

proposal/136669

5f2102f11
The updated script’s purge_partitions now force-removes any leftover LVM metadata with pvremove, treats wipe failures as fatal errors via log_and_halt_installation_on_error instead of mere warnings.

d1dc4c2dc
CI/CD image and toolchain upgrades (including the one-off SHA fix in ci-pr-only.yml).
Shift to Rust 1.86.0.
div_ceil, repeat_n, next_back(), pattern-matching, !is_empty() and the Clippy/rustfmt

f68a58fab
The Rust toolchain is upgraded from version 1.84.0 to 1.85.1. Container image is updated.
The benchmark instruction increases (0.57%-1.48% for ICRC-1 ledger) suggest a slight performance regression.

69ea5347f
Matches description Remove unused boot argument from GRUB configuration

dabab3d1c
Matches description Update boot args key to extra_boot_args_template.

f25b30020
Update base image refs

95231520d
It adds a new preload-config.sh script that, on boot, checks for a USB block device labeled OVERRIDE, mounts it, and untars config.tar and data.tar into /config and /data.

About CodeGov

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these technical topics. We also have a group of Followees who vote independently on the Governance and the SNS & Neuron’s Fund topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron, KongSwap, and Alice with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

Proposal: 136664 - Manvick | ZenithCode

Vote: Proposal: 136664 - Reject and Proposal: 136669 - Adopt

Summary:

  1. Build Hash: Failed to successfully run the guest os verification script, Since no one is able to build it. Rejecting the proposal.
  2. Summary: The release notes matches the code changes
  3. Vote: Reject

Commits

Features:

  • 12ade0592 Interface: Allow zero pre_signatures_to_create_in_advance in vetKD ChainKeyConfig (#5014)
    Review: Matches description + changes are appropriate
    Notes: This commit allows VetKd keys to have zero pre_signatures_to_create_in_advance since they don’t use pre-signatures. It also updates checks and tests to reflect this, while still enforcing non-zero values for keys like Ecdsa and Schnorr that require them.

  • a7a57d574 Node(IDX): Add prefix to artifact bundles (#5098)
    Review: Matches description + changes are appropriate
    Notes: This commit adds a prefix option to artifact_bundle, allowing artifacts to be organized into subdirectories matching CDN structure. Additionally, it simplifies bundling logic, checksum generation, and updates build-ic.sh and Bazel files to support nested artifacts.

Bugfixes:

  • b7e15a5d8 Execution,Interface: make upload_chunk idempotent (#5049)
    Review: Matches description + changes are appropriate
    Notes: This commit makes the upload_chunk endpoint idempotent re-uploading the same chunk is now a no-op, except for charging cycles. It also refactors chunk validation logic and cycle accounting for better consistency, safety, and test coverage.

  • 80d9fc533 Execution,Interface: clear canister logs before instantiating new canister during reinstall (#5064)
    Review: Matches description + changes are appropriate
    Notes: This commit clears canister logs before creating a new canister during a reinstall, ensuring logs from start and init hooks are retained. It also aligns behavior with spec and adds tests verifying logs are reset and properly recorded during reinstallation.

Performance improvements:

  • 6b72db3f9 Consensus,Interface(idkg): Performance improvement when building a transcript of a certain ID (#4999)
    Review: Matches description + changes are appropriate
    Notes: This commit improves performance of IDKG transcript construction by iterating only over dealings and support shares with matching transcript IDs, instead of scanning all entries and filtering. This reduces overhead significantly under high load by leveraging key-based sorting in the artifact pool.

Chores:

  • 53ac5a6a1 Consensus,Interface: add more logs to nns delegation manager (#5050)
    Review: Matches description + changes are appropriate
    Notes: This commit adds detailed logging to the NNS delegation manager and QUIC connection manager to aid in debugging flaky tests. Logs now trace TCP, TLS, and HTTP connection stages, making it easier to pinpoint issues during HTTPS delegation fetching from NNS subnet nodes.

  • 204e1bda4 Consensus,Interface,Node: renaming mentions of ch1-obsdev1 into testnet (#5085)
    Review: Matches description + changes are appropriate
    Notes: Renamed all mentions of ch1-obsdev1 to testnet to finalize the migration to the dm1 production cluster.

  • 97a0e6132 Crypto: Modify VetKD key derivation (#5088)
    Review: Matches description + changes are appropriate
    Notes: This commit separates VetKD key derivation into two distinct stages via derive_canister_key and derive_sub_key, clarifying semantics between canister ID and context-based derivation. Updates utilities, tests, and serialization logic to align with the new structure.

  • 7a72da08c Crypto: Use a fixed length domain separator for IBE message mask (#5028)
    Review: Matches description + changes are appropriate
    Notes: This commit updates the IBE message mask domain separator to a fixed-length format by padding the message length to 20 digits. This improves consistency and avoids potential issues from variable-length domain separators.

  • 230b080ae Execution,Interface: refine ErrorHelp::ToolchainError (#5122)
    Review: Matches description + changes are appropriate
    Notes: This commit refines the ErrorHelp::ToolchainError message by adding a clarifying note that if the canister is being run in a test environment. Previously, the message only suggested a potential issue with the compiler or CDK toolchain and advised reporting it to the IC forum

  • f8d49eb9c Execution,Interface: Add error doc link for canister snapshot limit error. (#5078)
    Review: Matches description + changes are appropriate
    Notes: This commit adds user guidance for the CanisterManagerError::SnapshotLimitExceeded error by including a helpful suggestion and a documentation link. Related test assertions were also updated to accept this expanded error message.

  • e309dc2af Execution,Interface: Add error doc for CanisterManagerError::ReservedCyclesLimitIsTooLow (#5074)
    Review: Matches description + changes are appropriate
    Notes: This commit adds user guidance and a documentation link for the CanisterManagerError::ReservedCyclesLimitIsTooLow error.

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Review: Matches description + changes are appropriate
    Notes: The commit upgrades the Rust toolchain from 1.85.1 to 1.86.0 across the entire codebase. All relevant Docker containers, Bazel configurations (WORKSPACE.bazel), and GitHub CI workflows have been updated to use the new Package ic-build · GitHub image containing Rust 1.86.0.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Review: Matches description + changes are appropriate
    Notes: This commit updates the Rust toolchain from 1.84.0 to 1.85.1 across all relevant configuration files (rust-toolchain.toml, CI containers, Bazel rules).

  • 182119f38 Interface,Message Routing: Don’t deliver ALREADY_EXISTS checkpoint in state sync (#5121)
    Review: Matches description + changes are appropriate
    Notes: This commit skips redundant state sync if checkpoint already exists, avoiding unnecessary verification and improving efficiency during state synchronization.

  • 7443f1e1c Owners(IDX): rules_rust: 0.56.0 → 0.61.0 (#4574)
    Review: Matches description + changes are appropriate
    Notes: This commit upgrades rules_rust from 0.56.0 to 0.61.0 to support Rust 1.85.1, updating Bazel configurations and lock files to align with the new toolchain.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Review: Matches description + changes are appropriate
    Notes: This commit standardizes naming by renaming the Bazel label boot_args_template to extra_boot_args_template in ic-os/defs.bzl and ic-os/guestos/defs.bzl, ensuring consistent usage across build files.

  • 7269994c8 Node(IDX): move ic-os upload to BUILD.bazel (#5070)
    Review: Matches description + changes are appropriate
    Notes: this commit renames boot_args_template to extra_boot_args_template in image_deps() and references for naming consistency across the Bazel config. Clarifies the intent that the template augments boot arguments rather than defines them entirely.

  • f5749622f Node(IDX): extract file size checks from icos_build (#5054)
    Review: Matches description + changes are appropriate
    Notes: This commit extracts hardcoded file size checks from the icos_build macro and moves them into the corresponding BUILD files, increasing visibility and reducing macro complexity. It also enhances the file_size_check rule to allow naming via its caller, improving diagnostic clarity.

  • ebd587595 Node(IDX): rename checksum_rule to artifact_bundle (#5002)
    Review: Matches description + changes are appropriate
    Notes: This commit performs a straightforward renaming refactor, changing the Bazel rule name checksum_rule to artifact_bundle across various BUILD and .bzl files. This rename aligns with its function since it not only computes checksums but also bundles artifacts, such as binaries, canisters, and disk images, for potential publication or upload.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Review: Matches description + changes are appropriate
    Notes: Automated patch. Updates the base image reference for various IC OS components like boundary-guestos, guetsos(dev) etcetera.

Tests:

  • 492fdcea6 Consensus,Interface(replay): Unit test for Player::get_changes_since in rs/replay. (#5022)
    Review: Matches description + changes are appropriate
    Notes: This commit adds a unit test for Player::get_changes_since in rs/replay, verifying correct reconstruction of chunked registry records—a new capability introduced in PR 4947. It also refactors get_changes_since into a standalone function to simplify mocking and testing, without relying on internal Player state.

  • 59ad18a77 Interface(nervous_system/canister): Test getting large Registry mutations from a canister. (#5043)
    Review: Matches description + changes are appropriate
    Notes: This commit adds a test canister to verify registry_changes_since behavior inside a canister context. It ensures correct handling of large, small, and deleted registry records by reconstructing them through chunked responses.

  • 4b0953166 Interface: Extend some unit tests with vet keys (#5010)
    Review: Matches description + changes are appropriate
    Notes: This commit extends unit tests to include VetKD key configurations with zero pre-signatures. It updates test logic across multiple modules to support VetKD keys and validates proper serialization and handling alongside ECDSA and Schnorr keys.

Proposal: 136669 - Manvick | ZenithCode

Summary:

  1. Build Hash: Build hash for host os matches
  2. Summary: The release notes matches the code changes
  3. Vote: I vote to adopt the proposal
Commits

Bugfixes:

  • 5f2102f11 Node: setup-disk.sh hardening (#5051)
    Review: Matches description + changes are appropriate
    Notes: This commit improves the robustness of the disk setup process in the setup-disk.sh script by enhancing the cleanup logic for disk partitions and metadata. It specifically targets potential issues related to leftover partitions and LVM/device-mapper artifacts.

Chores:

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Review: Matches description + changes are appropriate
    Notes: The commit upgrades the Rust toolchain from 1.85.1 to 1.86.0 across the entire codebase. All relevant Docker containers, Bazel configurations (WORKSPACE.bazel), and GitHub CI workflows have been updated to use the new Package ic-build · GitHub image containing Rust 1.86.0.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Review: Matches description + changes are appropriate
    Notes: This commit upgrades the Rust toolchain version from 1.84.0 to 1.85.1, impacting CI, toolchains, and code compliance with the newer compiler and Clippy rules. Along with the version bump, it includes a broad sweep of minor refactors and style cleanups to satisfy stricter lints introduced in the updated toolchain.

  • 69ea5347f Node: Remove unused boot argument from GRUB configuration (#5097)
    Review: Matches description + changes are appropriate
    Notes: This commit removes the deprecated dfinity.boot_state kernel boot parameter from two GRUB configuration files used in bootloader and hostos.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Review: Matches description + changes are appropriate
    Notes: This commit performs a minor but important renaming for clarity and consistency: changing the key name boot_args_template to extra_boot_args_template within Bazel-related build configuration logic.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Review: Matches description + changes are appropriate
    Notes: Automated patch. Updates the base image reference for various IC OS components like boundary-guestos, guestos(dev) etcetera

Tests:

  • 95231520d Node: Support loading SetupOS config from drive, for tests (#4533)
    Review: Matches description + changes are appropriate
    Notes: This commit introduces functionality to load configuration and data into SetupOS from a USB device labeled OVERRIDE. This feature supports testing scenarios by allowing pre-bundled config/data to be injected automatically during boot via a FAT-formatted image.

Proposal 136664 - Ipsita | ZenithCode

Summary

  1. Vote: I was not able to build it. Rejecting this proposals since no one else was able to build it.
  2. Hash: Not able to build
  3. Reason to Adopt The release notes match the commits and the code changes.

Commits

Features:

  • 12ade0592 Interface: Allow zero pre_signatures_to_create_in_advance in vetKD ChainKeyConfig (#5014)
    Notes: This commit modifies registry validation and tests to permit pre_signatures_to_create_in_advance = 0 for VetKd keys, which do not use pre-signatures and a new method requires_pre_signatures() is added to ensure this logic is enforced based on key type.
    Review: Code changes look good and match release notes.

  • a7a57d574 Node(IDX): Add prefix to artifact bundles (#5098)
    Notes: This commit introduces a mandatory prefix on artifact bundles to align CDN structure, improves bundling logic to replace symlinks by actual files for nested dirs, and reorders corresponding build scripts.
    Review: Code changes look good and match release notes.

Bugfixes:

  • b7e15a5d8 Execution,Interface: make upload_chunk idempotent (#5049)
    Notes: Makes upload_chunk endpoint idempotent by skipping re-insertion of already existing chunks, re-implements cycle charging to consume_cycles_for_instructions, and makes insert_chunk dependent on pre-validated hashes of chunks.

  • 80d9fc533 Execution,Interface: clear canister logs before instantiating new canister during reinstall (#5064)
    Notes: Moved the clear_log() call earlier in the reinstall flow to ensure logs from start and init hooks are captured post-reinstall.
    Review: Code changes look good and match release notes.

Performance improvements:

  • 6b72db3f9 Consensus,Interface(idkg): Performance improvement when building a transcript of a certain ID (#4999)
    Notes: Performance is improved by filtering dealings and support shares directly by transcript ID during IDKG transcript construction.
    Review: Code changes look good and match release notes.

Chores:

  • 53ac5a6a1 Consensus,Interface: add more logs to nns delegation manager (#5050)
    Notes: Adds detailed info-level logs for TCP connections, TLS streams, and HTTP handshakes in the NNS delegation manager, plus connection success logs in the QUIC connection manager to improve observability.
    Review: Code changes look good and match release notes.

  • 204e1bda4 Consensus,Interface,Node: renaming mentions of ch1-obsdev1 into testnet (#5085)
    Notes: Updates all references of the Elasticsearch and Kibana host from ch1-obsdev1 to testnet across CI workflows and configs to ensure metrics and logs are now routed to the new production cluster in dm1, completing the transition from development to production infrastructure.

  • 97a0e6132 Crypto: Modify VetKD key derivation (#5088)
    Notes: This commit implements a secure two-stage public key derivation method in VetKD by applying domain-separated hash-to-scalar operations on canister and context inputs using the BLS12-381 G2 curve.
    Review: Code changes look good and match release notes.
    7a72da08c Crypto: Use a fixed length domain separator for IBE message mask (#5028)
    Notes: Updates the MaskMsg domain separator to use a fixed-length, zero-padded 20-digit format {:020} for message length, ensuring uniform domain separator length and improving best practices in the IBE message masking process.

  • 230b080ae Execution,Interface: refine ErrorHelp::ToolchainError (#5122)
    Notes: This commit refines the ErrorHelp::ToolchainError and related canister error messages to advise users to ensure their test environments are up to date before attributing issues to the compiler/CDK toolchain.
    Review: Code changes look good and match release notes.

  • f8d49eb9c Execution,Interface: Add error doc link for canister snapshot limit error. (#5078)
    Notes: CanisterSnapshotLimitExceeded error is enhanced by adding a a reference link and updating the related test to verify the presence of the improved error message.
    Review: Code changes look good and match release notes.

  • e309dc2af Execution,Interface: Add error doc for CanisterManagerError::ReservedCyclesLimitIsTooLow (#5074)
    Notes: ReservedCyclesLimitIsTooLow error is enhanced by providing a helpful suggestion and linking relevant documentation for improved developer guidance.
    Review: Code changes look good and match release notes.

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Notes: Upgrades the Rust toolchain from version 1.85.1 to 1.86.0
    Review: Code changes look good and match release notes.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Notes: Upgrades the Rust toolchain from 1.84.0 to 1.85.1 and include clippy-driven refactoring to simplify conditionals, map operations, and test assertions across the codebase.
    Review: Code changes look good and match release notes.

  • 182119f38 Interface,Message Routing: Don’t deliver ALREADY_EXISTS checkpoint in state sync (#5121)
    Notes: Prevents redundant state syncs by skipping deliver_state_sync if a checkpoint at the target height already exists.
    Review: Code changes look good and match release notes.

  • 7443f1e1c Owners(IDX): rules_rust: 0.56.0 → 0.61.0 (#4574)
    Notes: Upgrades rules_rust from 0.56.0 to 0.61.0 to enable compatibility with Rust 1.85.1, facilitating future toolchain updates and maintaining Bazel build support.
    Review: Code changes look good and match release notes.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Notes: Renamed the boot_args_template key to extra_boot_args_template across Bazel build definitions for improved naming consistency.
    Review: Code changes look good and match release notes.

  • 7269994c8 Node(IDX): move ic-os upload to BUILD.bazel (#5070)
    Notes: This commit refactors the ic-os build logic by removing the upload_artifacts logic from the generic icos_build() function and moving it explicitly to the relevant BUILD.bazel files.
    Review: Code changes look good and match release notes.

  • f5749622f Node(IDX): extract file size checks from icos_build (#5054)
    Notes: This commit moves file size checks out of the icos_build macro into explicit file_size_check targets in BUILD files for better visibility and also modifies the macro to return image labels used in BUILD files to attach these checks.
    Review: Code changes look good and match release notes.

  • ebd587595 Node(IDX): rename checksum_rule to artifact_bundle (#5002)
    Notes: Renames checksum_rule with artifact_bundle throughout the build system to describe the rule’s function of bundling artifacts together.
    Review: Code changes look good and match release notes.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Notes: Updates the base container image references to newer versions to have secure container images.
    Review: Code changes look good and match release notes.

Tests:

  • 492fdcea6 Consensus,Interface(replay): Unit test for Player::get_changes_since in rs/replay. (#5022)
    Notes: Modifies the registry query logic by extracting get_changes_since into a testable async function using a PerformQuery trait, enabling mock-based testing with mockall.
    Review: Code changes look good and match release notes.

  • 59ad18a77 Interface(nervous_system/canister): Test getting large Registry mutations from a canister. (#5043)
    Notes: Adds a new test-only canister ic-registry-fetch-large-record-test-canister to the Nervous System codebase, along with integration tests and the necessary build and dependency setup.
    Review: Code changes look good and match release notes.

  • 4b0953166 Interface: Extend some unit tests with vet keys (#5010)
    Notes: This commit adds unit tests for VetKd keys with zero pre-signatures in registry admin modules, supporting the VetKdCurve::Bls12_381_G2 key type. It updates test data and assertions to include VetKdKeyId alongside existing key types.
    Review: Code changes look good and match release notes.

Proposal 136669 - Ipsita | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: Not able to build, adopting since others were able to build it.
  3. Reason to Adopt The release notes match the commits and the code changes.
Commits

Bugfixes:

  • 5f2102f11 Node: setup-disk.sh hardening (#5051)
    Notes: This commit includes forced removal of LVM metadata (pvremove), enforces partition wipe verification, and clears device mapper mappings (dmsetup remove_all).
    Review: Code changes look good and match release notes.

Chores:

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Notes: Upgrades the Rust toolchain from version 1.85.1 to 1.86.0.
    Review: Code changes look good and match release notes.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Notes: Upgrades the Rust toolchain from 1.84.0 to 1.85.1 and include clippy-driven refactoring to simplify conditionals, map operations, and test assertions across the codebase.
    Review: Code changes look good and match release notes.

  • 69ea5347f Node: Remove unused boot argument from GRUB configuration (#5097)
    Notes: Removes the unused dfinity.boot_state=$BOOT_STATE argument from the GRUB bootloader configurations.
    Review: Code changes look good and match release notes.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Notes: Renamed the boot_args_template key to extra_boot_args_template across Bazel build definitions for improved naming consistency.
    Review: Code changes look good and match release notes.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Notes: Updates the base container image references to newer versions to have secure container images.
    Review: Code changes look good and match release notes.

Tests:

  • 95231520d Node: Support loading SetupOS config from drive, for tests (#4533)
    Notes: This commit introduces a script that mounts a USB drive labeled OVERRIDE to preload configuration and data files before the SetupOS configuration service starts and also adds a utility to package these files into a FAT image to enable easy loading of test configurations.
    Review: Code changes look good and match release notes.

Proposal 136664 | Yuvika - Zentih Code

Summary

  1. Vote: Reject - Since others were also not able to build and I was also not able to successfully run the guest os verification script.
  2. Hash: Having some issues building. Will try again and update the post if successful.
  3. Reasons to adopt: Release notes match the commits.

Commit

Features:

  • 12ade0592 Interface: Allow zero pre_signatures_to_create_in_advance in vetKD ChainKeyConfig (#5014)
    Notes: This update enables VetKD keys to function without requiring pre-generated signatures, aligning checks and tests accordingly. Other key types like ECDSA and Schnorr still require non-zero values.
    Review: Code changes look good and match release notes.

  • a7a57d574 Node(IDX): Add prefix to artifact bundles (#5098)
    Notes: Introduces a prefix parameter in artifact_bundle to structure output files into subfolders, improving organization in line with CDN requirements. Also updates build scripts and streamlines checksum handling.
    Review: Code changes look good and match release notes.

Bugfixes:

  • b7e15a5d8 Execution,Interface: make upload_chunk idempotent (#5049)
    Notes: Re-sending the same chunk now has no effect except for cycle usage. Refines validation and accounting logic for better test coverage and reliability.
    Review: Code changes look good and match release notes.

  • 80d9fc533 Execution,Interface: clear canister logs before instantiating new canister during reinstall (#5064)
    Notes: Ensures canister logs are cleared during reinstall so that start and init hook outputs are captured cleanly. Tests confirm expected behavior per specification.
    Review: Code changes look good and match release notes.

Performance improvements:

  • 6b72db3f9 Consensus,Interface(idkg): Performance improvement when building a transcript of a certain ID (#4999)
    Notes: Speeds up transcript creation by scanning only relevant dealings and support shares. This avoids unnecessary processing under load, thanks to artifact pool optimizations.**
    Review: Code changes look good and match release notes.

Chores:

  • 53ac5a6a1 Consensus,Interface: add more logs to nns delegation manager (#5050)
    Notes: Adds detailed logs for debugging flaky tests related to HTTPS delegation by tracing networking layers including TCP, TLS, and HTTP.
    Review: Code changes look good and match release notes.

  • 204e1bda4 Consensus,Interface,Node: renaming mentions of ch1-obsdev1 into testnet (#5085)
    Notes: Completes the migration to the dm1 cluster by updating naming references from ch1-obsdev1 to testnet.
    Review: Code changes look good and match release notes.

  • 97a0e6132 Crypto: Modify VetKD key derivation (#5088)
    Notes: Separates canister-based and context-based key derivation for VetKD into distinct functions. Updates code and tests for clarity.
    Review: Code changes look good and match release notes.

  • 7a72da08c Crypto: Use a fixed length domain separator for IBE message mask (#5028)
    Notes: Pads message lengths to 20 digits for consistent IBE domain separation, avoiding issues from variable-length identifiers.

  • 230b080ae Execution,Interface: refine ErrorHelp::ToolchainError (#5122)
    Notes: Improves error clarity by adding notes for users running in test environments. Helps distinguish compiler issues from test misconfigurations.
    Review: Code changes look good and match release notes.

  • f8d49eb9c Execution,Interface: Add error doc link for canister snapshot limit error. (#5078)
    Notes: Provides documentation and guidance in the error message for SnapshotLimitExceeded, enhancing user experience and debugging.
    Review: Code changes look good and match release notes.

  • e309dc2af Execution,Interface: Add error doc for CanisterManagerError::ReservedCyclesLimitIsTooLow (#5074)
    Notes: Incorporates helpful error messaging and documentation to guide users facing low reserved cycles issues.
    Review: Code changes look good and match release notes.

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Notes: Bumps Rust version across the codebase, Dockerfiles, Bazel rules, and CI pipelines to 1.86.0.
    Review: Code changes look good and match release notes.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Notes: Updates the Rust toolchain from 1.84.0 to 1.85.1 and synchronizes all related configuration files.
    Review: Code changes look good and match release notes.

  • 182119f38 Interface,Message Routing: Don’t deliver ALREADY_EXISTS checkpoint in state sync (#5121)
    Notes: Avoids redundant processing in state sync by detecting and skipping existing checkpoints.
    Review: Code changes look good and match release notes.

  • 7443f1e1c Owners(IDX): rules_rust: 0.56.0 → 0.61.0 (#4574)
    Notes: Upgrades Bazel’s rules_rust to align with Rust 1.85.1 and updates dependencies accordingly.
    Review: Code changes look good and match release notes.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Notes: Standardizes naming across Bazel files by changing boot_args_template to extra_boot_args_template.
    Review: Code changes look good and match release notes.

  • 7269994c8 Node(IDX): move ic-os upload to BUILD.bazel (#5070)
    Notes: Moves logic to BUILD.bazel and clarifies the naming to indicate additive boot arguments.
    Review: Code changes look good and match release notes.

  • f5749622f Node(IDX): extract file size checks from icos_build (#5054)
    Notes: Improves readability by relocating file size validation out of macros into BUILD files and enhancing diagnostic messages.
    Review: Code changes look good and match release notes.

  • ebd587595 Node(IDX): rename checksum_rule to artifact_bundle (#5002)
    Notes: Refactors Bazel rules for clarity, renaming checksum_rule to artifact_bundle to better reflect its dual role in bundling and checksumming.
    Review: Code changes look good and match release notes.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Notes: update adjusting base image versions for components like guestos and boundary images.
    Review: Code changes look good and match release notes.

Tests:

  • 492fdcea6 Consensus,Interface(replay): Unit test for Player::get_changes_since in rs/replay. (#5022)
    Notes: Tests registry reconstruction through chunked responses. Also refactors code for testability by isolating core logic.
    Review: Code changes look good and match release notes.

  • 59ad18a77 Interface(nervous_system/canister): Test getting large Registry mutations from a canister. (#5043)
    Notes: Adds a test canister to verify correct handling of large and small registry mutations via chunked access.
    Review: Code changes look good and match release notes.

  • 4b0953166 Interface: Extend some unit tests with vet keys (#5010)
    Notes: Enhances tests to validate zero pre-signature behavior for VetKD keys alongside ECDSA and Schnorr, including serialization and validation.
    Review: Code changes look good and match release notes.

Proposal 136669 | Yuvika - Zentih Code

Summary

  1. Vote: Adopt
  2. Hash: Host os hash matches.
  3. Reasons to adopt: Release notes match the commits.
Commit

Bugfixes:

  • 5f2102f11 Node: setup-disk.sh hardening (#5051)
    Notes: This commit triggers the deletion of LVM metadata using pvremove, enforces partition wipe confirmation, and removes all device mapper mappings via dmsetup remove_all.
    Review: Code changes look good and match release notes.

Chores:

  • d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
    Notes: Updates the Rust toolchain from version 1.85.1 to 1.86.0.
    Review: Code changes look good and match release notes.

  • f68a58fab Interface: update Rust to 1.85.1 (#4340)
    Notes: Updates the Rust toolchain from version 1.84.0 to 1.85.1, and incorporates Clippy-guided refactoring to streamline conditionals, mapping logic, and test assertions across the codebase.
    Review: Code changes look good and match release notes.

  • 69ea5347f Node: Remove unused boot argument from GRUB configuration (#5097)
    Notes: Eliminates the unnecessary dfinity.boot_state=$BOOT_STATE parameter.
    Review: Code changes look good and match release notes.

  • dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
    Notes: Renamed the boot_args_template key to extra_boot_args_template throughout the codebase. Bazel definitions were updated to ensure improved naming consistency.
    Review: Code changes look good and match release notes.

  • f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)
    Notes: Updates references to base container images with newer versions to enhance security and ensure up-to-date container environments.
    Review: Code changes look good and match release notes.

Tests:

  • 95231520d Node: Support loading SetupOS config from drive, for tests (#4533)
    Notes: This commit adds a script that mounts a USB drive labeled OVERRIDE to preload configuration and data files before the SetupOS configuration service initializes. It also includes a utility that bundles these files into a FAT image to simplify loading test configurations.
    Review: Code changes look good and match release notes.

Proposal 136664 | Tim - CodeGov

Vote: Reject

Reason: Build is successful, commits match descriptions and the reasoning behind the changes is sound but the hashes do not match. I’ve reviewed commits for Consensus, Crypto and Interface as detailed below.

Review

Features:

[12ade0592]
Adapts tests to allow KeyConfig::pre_signatures_to_create_in_advance to equal 0, as this is the configuration used for VetKD keys.

Performance improvements:

[6b72db3f9]
Renames IDkgObjectPool::iter_by_prefix method to ...iter_by, now taking an IterationPattern rather than a prefix as a parameter. This is utilised in several further methods so that when building an IDKG transcript, iteration over dealings and support shares can be limited to those of a specific transcript ID.

Chores:

[53ac5a6a1]
Adds additional logging messages to the NNS delegation manager and Quic Transport connection manager.

[204e1bda4]
Modifies Elasticsearch URLs to use testnet in place of ch1-obsdev1.

[97a0e6132]
Adds MasterPublicKey type and derive_canister_key method for deriving a canister (master) public VetKD key, which is then used by the DerivedPublicKey::derive_sub_key method which optionally derives a subkey if a user-provided context string is provided.

[7a72da08c]
Modifies the IBE (identity based encryption) domain separator in ic-vetkd-utils to be zero-padded up to 20 digits with the intention of ensuring a fixed length for this separator.

[d1dc4c2dc]
Updates Rust version to 1.86.0.

[f68a58fab]
Updates Rust version to 1.85.1 + refactoring changes.

[182119f38]
Adapts make_checkpoint method in state sync to return a boolean indicating whether a checkpoint has been created. If not, IncompleteState::state is assigned DownloadState::Complete within the add_chunk method and state sync is aborted.

[dabab3d1c]
Renames “boot_args_template” to “extra_boot_args_template” in GuestOS input definitions.

[f25b30020]
Updates Boundary GuestOS, GuestOS, HostOS and SetupOS base image container references.

Tests:

[492fdcea6]
Adds test_get_changes_since and modifies Player::get_changes_since as described in the commit notes.

[59ad18a77]
Adds a new canister fetch_large_record_test_canister for the specific purpose of testing the RegistryCanister::registry_changes_since method.

[4b0953166]
Extends various tests to include vetKeys master key alongside previously added encryption keys.

Proposal 136669 | Tim - CodeGov

Screenshot 2025-05-19 143553

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. HostOS commits (proposal 136669) mostly overlap with GuestOS commits (proposal 136664). I’ve reviewed below the commits that are specific to this proposal.

Review

[5f2102f11]
Adapts purge_partitions function in setupos-scripts/setup-disk.sh to remove LVM (logical volume manager) metadata first, expand logging and halt on failure.

[69ea5347f]
Removes an unused argument dfinity.boot_state=$BOOT_STATE from GRUB configuration.

[95231520d]
Adds new scripts incorporating clone_from_usb function to support loading SetupOS config from a drive.

About CodeGov

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, API Boundary Node Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these technical topics. We also have a group of Followees who vote independently on the Governance and the SNS & Neurons’ Fund topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralisation of SNS projects such as WaterNeuron, KongSwap, and Alice with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

Proposal #136664 — Zack | CodeGov

for GuestOS release-2025-05-15_03-20-base. &

Proposal #136669 — Zack | CodeGov

for HostOS release-2025-05-15_03-20-base.

Vote: Adopted
Reason: Even though the build has only reproducible HOSTOS this has happened before and was adopted by Dfinity and since the listed commits all match their descriptions, with some feature additions for vetKD currently being tested on the fuqsr subnet.
UPDATE : looks like it was rejected after all.

Commits

Features:
12ade0592 Interface:
Changes to allow for pre_signatures_to_create_in_advance to be 0 in vetKD ChainKeyConfig since it does mot use this.
There is a check added for requires_pre_signatures that returns true for Ecdsa and Schnorr, and false for VetKd. Testing will follow.
a7a57d574 Node(IDX):
Adds prefixes to build artifact bundles ... os/disk-img, and also changes the the output of artifact_bundle to a directory instead of a list.

Bugfixes:
b7e15a5d8 Execution,Interface:
Makes upload_chunk idempotent to support safe retries and avoid redundant storage of identical chunks. Duplicate uploads now incur cycle costs but otherwise result in a no-op.
80d9fc533 Execution,Interface:
Adds clear canister logs to Stage1 before instantiating new canister during reinstall to match the documentation.(The Internet Computer Interface Specification | Internet Computer)

  • for HostOS
    5f2102f11 Node:
    Makes chenges to the setup-disk.sh scripts disk wipe routine in the purge_partitions function for hardening.
    For each disk in the large_drives array it logs which drive is being wiped.
    Removes LVM metadata and makes sure it checks all partition suffixes (/dev/sda1, /dev/sda2 etc).
    Wipes partition table and filesystem signatures, checks if any known partitions still exist and if any it hatls with error.
    Removes any remaining device mapper mappings

Performance improvements:
6b72db3f9 Consensus,Interface(idkg):
Performance improvement when building a transcript of a certain ID by allowing to iterate over all IDKG dealings and support shares of a particular transcript ID.
Also adds the IterationPattern enum for a way to abstract how IDKG signed dealings or transcripts) should be iterated over, based on specific matching logic.

Chores:
53ac5a6a1 Consensus,Interface: add more logs to nns delegation manager (#5050)
204e1bda4 Consensus,Interface,Node: renaming mentions of ch1-obsdev1 into testnet (#5085)
97a0e6132 Crypto: Modify VetKD key derivation (#5088)
7a72da08c Crypto: Use a fixed length domain separator for IBE message mask (#5028)
230b080ae Execution,Interface: refine ErrorHelp::ToolchainError (#5122)
f8d49eb9c Execution,Interface: Add error doc link for canister snapshot limit error. (#5078)
e309dc2af Execution,Interface: Add error doc for CanisterManagerError::ReservedCyclesLimitIsTooLow (#5074)
d1dc4c2dc Interface: Update Rust to 1.86.0 (#5059)
f68a58fab Interface: update Rust to 1.85.1 (#4340)
182119f38 Interface,Message Routing: Don’t deliver ALREADY_EXISTS checkpoint in state sync (#5121)
7443f1e1c Owners(IDX): rules_rust: 0.56.0 → 0.61.0 (#4574)
dabab3d1c Node: Update boot args key to extra_boot_args_template (#5073)
7269994c8 Node(IDX): move ic-os upload to BUILD.bazel (#5070)
f5749622f Node(IDX): extract file size checks from icos_build (#5054)
ebd587595 Node(IDX): rename checksum_rule to artifact_bundle (#5002)
f25b30020 Node: Update Base Image Refs [2025-05-08-0807] (#5033)

  • for HostOS
    d1dc4c2dc Interface:
    Duplicate
    f68a58fab Interface:
    Duplicate
    69ea5347f Node:
    Removes unused boot argument dfinity.boot_state=$BOOT_STATE variable from GRUB config.
    dabab3d1c Node:
    Renames boot_args_template to extra_boot_args_template
    f25b30020 Node:
    Duplicate

Tests:
492fdcea6 Consensus,Interface(replay): Unit test for Player::get_changes_since in rs/replay. (#5022)
59ad18a77 Interface(nervous_system/canister): Test getting large Registry mutations from a canister. (#5043)
4b0953166 Interface: Extend some unit tests with vet keys (#5010)

  • for HostOS
    Tests:
    95231520d Node:
    Support loading SetupOS config from drive, for tests by adding preload-config.sh to use the clone_from_usb function to the setup OS scripts.
About CodeGov

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these technical topics. We also have a group of Followees who vote independently on the Governance and the SNS & Neuron’s Fund topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron, KongSwap, and Alice with a known neuron and credible Followees.

Learn more about CodeGov and its mission at codegov.org.

We want to thank our vigilant reviewers for catching a bug in our release pipeline.

The PR #5070 refactored the upload code and introduced an issue where -dev variants of the GuestOS images were uploaded to the same path as production artifacts. The problematic hash can be verified to match -dev image by running the following commands:

$ git checkout release-2025-05-15_03-20-base
$ bazel build //ic-os/guestos/envs/dev --config=release
$ sha256 bazel-bin/ic-os/guestos/envs/dev/update-img.tar.zst 

Our team is adding automated checks to our release pipelines and manual steps to our release playbook to ensure these issues are caught sooner, and we do not waste the valuable time of our reviewers in the future.

3 Likes