Proposal to elect new release rc--2025-04-16_11-12

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

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

Release Notes for release-2025-04-16_11-12-base (c9210f4d299546658760465d7fde93913989f70b)

This release is based on changes since release-2025-04-11_13-20-base (579b8ba3a31341f354f4ddb3d60ac44548a91bc2).

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:

  • 6b953276b Consensus,Interface: periodically fetch the nns delegation (#3902)
  • 66ffd5231 Execution,Interface: Charge for snapshot data download (#4787)
  • 23abac589 Execution,Interface: Enable snapshot data download in statemachine tests (#4729)

Bugfixes:

  • 56b0c90d2 Consensus,Interface(consnesus): Fix reshare chain key validation (#4829)
  • 7575e49a4 Execution,Interface: Improve constants in wasm chunk store (#4712)
  • 5599a9860 Interface(ICRC_Ledger): Recompute ICRC ledger certified data in post upgrade (#4796)
  • 79f0a7d1f Interface,Message Routing: switch to checkpoint for wasm binaries in canister snapshots (#4777)

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
  • 6876dcac8 Consensus,Interface(ic-replay): add more logs to ic-replay (#4685)
  • d6c72756c Execution,Interface: Remove old sandbox rpc calls (#4728)
  • bd371e73a Execution,Interface: EXC: Fix flaky monitor thread test (#4789)
  • 5c0d15487 Interface,Message Routing: Deserialize wasm with hash always present (#4734)
  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
  • f9a54926d Node: export hostos config as metric (#4785)

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

1 Like

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

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

Release Notes for release-2025-04-16_11-12-base (c9210f4d299546658760465d7fde93913989f70b)

This release is based on changes since release-2025-04-11_13-20-base (579b8ba3a31341f354f4ddb3d60ac44548a91bc2).

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.

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
  • f9a54926d Node: export hostos config as metric (#4785)

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

2 Likes

@dmanu implemented changes in the release controller (automation) with which we’ll get a weekly HostOS version elect proposal, in addition to the regular GuestOS!
This was a feature requested and agreed with you guys (!) upon a while ago, but there were always more urgent things to tackle. We finally have it! Yaay! :tada:
Thanks Manuel!

2 Likes

proposal - 136310 Cyberowl | CodeGov

Vote: ADOPT

Reason:

The build was successful, and all the commit descriptions matched the changes in the code.

Checks

Hash Match: MATCH
2 Urls: MATCH
Feedback: NONE
Proposer Check: MATCH

Overall Summary:

Adds configurable 5 M‑instruction baseline snapshot fee in SchedulerConfig; CanisterManager pre‑charges baseline + size cycles, aborting with CanisterSnapshotNotEnoughCycles. Sets CHUNK_SIZE = 1 MiB, computes PAGES_PER_CHUNK from OS PAGE_SIZE, with compile‑time alignment check; snapshot tests now assert SHA‑256 of each uploaded chunk matches metadata from read_canister_snapshot_metadata.

Commits Summary

Features:
6b953276b
Replaces the static OnceCell holding the NNS certificate delegation with a live watch channel fed by a new DelegationManager task that refreshes the delegation every ten minutes and exports detailed metrics. All HTTP endpoints, HTTPS‑outcalls, and Pocket‑IC components now read the delegation dynamically via the channel, while IC‑stack bootstrapping starts (and can cancel) the manager instead of loading the delegation once at startup.

66ffd5231
A configurable 5_000_000 instruction baseline charge for reading any canister snapshot and threads this parameter into SchedulerConfig. CanisterManager now deducts cycles equal to that baseline plus the data size (with size awareness for each snapshot kind) before allowing the read, failing fast with a new CanisterSnapshotNotEnoughCycles error when funds are insufficient.

23abac589
Adds performance instrumentation for snapshot reads: a new Criterion benchmark exercises read_canister_snapshot_data across 10 MiB–4 GiB canisters. Helper ingress wrappers for reading snapshot metadata and data.

Bugfixes:
56b0c90d2
Adds decode_initial_dealings, a helper that understands both the old ComputeInitialIDkgDealingsResponse and the incoming ReshareChainKeyResponse formats. validate_reshare_dealings is simplified to call this decoder, leaving all subsequent verification unchanged, so the validator automatically handles whichever format the registry migration supplies.

7575e49a4
Defines CHUNK_SIZE as 1 MiB, deriving PAGES_PER_CHUNK based on the OS PAGE_SIZE, and enforcing alignment via a compile-time test to ensure memory efficiency and cross-platform consistency. Snapshot testing is extended to verify the integrity of chunk metadata by capturing and comparing SHA-256 hashes returned from upload_chunk calls against those recorded in read_canister_snapshot_metadata.

5599a9860
Certified data is now explicitly set in post_upgrade using ICRC-3-compliant labels like last_block_hash and last_block_index. Recomputes certified data immediately upon upgrade to prevent invalid ICRC-3 certificates.

79f0a7d1f
Matches description switch to the files in the new checkpoint to back data structures like pagemaps and wasm binaries.

Chores:
b60e4861d
Adds logging to Node operator private key failed read states.

6876dcac8
Enhances the ic-replay tool by renaming the internal restore function to restore_from_backup for improved clarity and limiting its visibility to within the crate. It also introduces structured info!, warn!, and error! logging throughout the replay process to aid in debugging and better trace restoration stages.

d6c72756c
Removes the old serialized RPC calls OpenWasmSerialized and CreateExecutionStateSerialized. It updates all relevant modules and test binaries to use open_wasm and create_execution_state, and eliminates now-redundant types and dependencies.

bd371e73a
Addresses test flakiness in the sandboxed execution controller by reducing loop iterations from 10,000 to 1,000 and enforcing success of stop signals with .unwrap() on channel sends.

5c0d15487
Makes the binary_hash field mandatory across protobuf definitions.

896a78fbe
Update Base Image Refs

f9a54926d
New hostos_config_version metric by reading the HostOS config version from /boot/config/config.json using jq and exposing it via write_metric_attr.

proposal - 136311 Cyberowl | CodeGov

Vote: ADOPT

Reason:

The build was successful, and all the commit descriptions matched the changes in the code.

Checks

Hash Match: MATCH
2 Urls: MATCH
Feedback: NONE
Proposer Check: MATCH

Commits Summary

b60e4861d
Same as above Adds logging to Node operator private keyfailed read states.

896a78fbe
Same as above Update Base Image Refs

f9a54926d
Same as above

New `hostos_config_version` metric by reading the HostOS config version from `/boot/config/config.json` using `jq` and exposing it via `write_metric_attr`. 
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 136310 - Hamish | CodeGov

Vote: Adopt
Reason: I have actually been unable to run the build verification script, the error says it failed while trying to fetch lmdb, I’ve included a screenshot of the error below. However, given that I have reviewed each commit, and in my opinion they all look fine, and given that @cyberowl has successfully run the build verification script, I have opted to adopt this proposal.

Features:

  • 6b953276b Consensus,Interface: periodically fetch the nns delegation (#3902)
    Review: Looks fine + matches description
    Notes: Each replica loads a delegation from the NNS so that it can issue certificates on its behalf, this change modifies the logic so that replicas get a fresh NNS delegation every 10 minutes by using the newly introduced DelegationManager which internally fetches a new delegation at a configured interval.

  • 66ffd5231 Execution,Interface: Charge for snapshot data download (#4787)
    Review: Looks fine + matches description
    Notes: Introduces cycles charges for reading canister snapshots by charging a baseline fee + a fee for reading the bytes.

  • 23abac589 Execution,Interface: Enable snapshot data download in statemachine tests (#4729)
    Review: Looks fine + matches description
    Notes: Extends the state machine tests with 2 new functions, read_canister_snapshot_metadata and read_canister_snapshot_data, and also adds the ability to set the canister_snapshot_download and canister_snapshot_upload feature flags within these tests. Then finally adds some benchmarks which cover reading canister snapshot data.

Bugfixes:

  • 56b0c90d2 Consensus,Interface(consnesus): Fix reshare chain key validation (#4829)
    Review: Looks fine + matches description
    Notes: Fixes the validate_reshare_dealings function to be able to decode payload data in the old format (ComputeInitialIDkgDealingsResponse) and the new format (ReshareChainKeyResponse).

  • 7575e49a4 Execution,Interface: Improve constants in wasm chunk store (#4712)
    Review: Looks fine + matches description
    Notes: Updates the constants in the wasm chunk store such that the CHUNK_SIZE is explicitly set as opposed to being derived.

  • 5599a9860 Interface(ICRC_Ledger): Recompute ICRC ledger certified data in post upgrade (#4796)
    Review: Looks fine + matches description
    Notes: Fixes the ICRC ledger by making it set the certified within post_upgrade, where previously it would only be set after the first transfer is processed.

  • 79f0a7d1f Interface,Message Routing: switch to checkpoint for wasm binaries in canister snapshots (#4777)
    Review: Looks fine + matches description
    Notes: Ensures that after a checkpoint, the canister wasms within all snapshots are back by files as opposed to potentially being in memory.

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
    Review: Looks fine + matches description
    Notes: Logs error details to console if a node operator’s private key fails to be read during node registration.

  • 6876dcac8 Consensus,Interface(ic-replay): add more logs to ic-replay (#4685)
    Review: Looks fine + matches description
    Notes: Adds a load of logging to ic-replay to cover the subnet restoration process.

  • d6c72756c Execution,Interface: Remove old sandbox rpc calls (#4728)
    Review: Looks fine + matches description
    Notes: Cleans up the canister sandbox code by removing all the logic which was required to handle the in-memory compilation cache now that it has been removed in favour of the on-disk implementation.

  • bd371e73a Execution,Interface: EXC: Fix flaky monitor thread test (#4789)
    Review: Looks fine + matches description
    Notes: Fixes 2 flaky sandbox monitor thread tests by moving the call to controller.stop_monitoring_thread.send(false).unwrap(); inside the loop which waits for the monitoring results.

  • 5c0d15487 Interface,Message Routing: Deserialize wasm with hash always present (#4734)
    Review: Looks fine + matches description
    Notes: Modifies the binary_hash fields of ExecutionStateBits and CanisterSnapshotBits to be mandatory rather than optional now that these fields are now populated in all use cases, they were only ever optional so that introducing them would be a non-breaking change.

  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
    Review: Looks fine + matches description
    Notes: Updates the base IC-OS images.

  • f9a54926d Node: export hostos config as metric (#4785)
    Review: Looks fine + matches description
    Notes: Adds the hostos_config_version metric which will be exposed by each node.

Proposal 136311 - Hamish | CodeGov

Vote: Adopt
Reason: As was the case for proposal 136310, I failed to run the build verification script for this proposal. However, I have again opted to adopt the proposal since @cyberowl was successfully able to run the build verification script and in my opinion all of the commits look fine and were already covered in my review of proposal 136310.

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: 136310 Manvick | ZenithCode

Summary:

  1. Build Hash: Build hash from the proposal, local build and CDN matches.
  2. Summary: The release notes matches the code changes
  3. Vote: I vote to adopt the proposal

Commits

Features:

  • 6b953276b Consensus,Interface: periodically fetch the nns delegation (#3902)
    Review: Matches description + changes are appropriate
    Note: This commit improves the IC HTTP endpoints by adding periodic fetching of NNS delegation certificates. Previously, the certificate was only fetched at startup, however, now they are fetched every 10 minutes.

  • 66ffd5231 Execution,Interface: Charge for snapshot data download (#4787)
    Review: Matches description + changes are appropriate
    Note: This commit adds a new instruction cost accounting mechanism for canister snapshot data downloads on IC. Previously, downloading snapshot data had no execution cost charged to the canister, however, with this commit, a baseline fee has been added based on the size in bytes of the downloaded data along with a baseline fee.

  • 23abac589 Execution,Interface: Enable snapshot data download in statemachine tests (#4729)
    Review: Matches description + changes are appropriate
    Note: This commit enhances IC’s testing and benchmarking tools by enabling and measuring snapshot binary data download functionality. It adds functions like ‘with_snapshot_upload_enabled’ which make it possible to test snapshot data download’s behavior inside the StateMachine test framework.

Bugfixes:

  • 56b0c90d2 Consensus,Interface(consnesus): Fix reshare chain key validation (#4829)
    Review: Matches description + changes are appropriate
    Note: This commit fixes a decoding issue duuring registry validation migration. It updates the validation logic to support legacy ComputeInitialIDkgDealingsResponse and new ReshareChainKeyResponse formats ensuring compatibility during the transition.

  • 7575e49a4 Execution,Interface: Improve constants in wasm chunk store (#4712)
    Review: Matches description + changes are appropriate
    Note: This commit improves the wasm_chunk_store by setting a fixed chunk size, 1MiB, and deriving other constants like pages per chunk from the OS page size. Additionally, it updates tests to validate the max number of stored chunks and verifies chunk hashes in the snapshot metadata.

  • 5599a9860 Interface(ICRC_Ledger): Recompute ICRC ledger certified data in post upgrade (#4796)
    Review: Matches description + changes are appropriate
    Note: This commit fixes an issue in ICRC ledger where certified data was not updated after a canister upgrade. Now, ‘post_upgrade’ function recomputes and sets the correct certified data to comply with the ICRC-3 standards and avoids invalid certificate before the first post-upgrade transaction.

  • 79f0a7d1f Interface,Message Routing: switch to checkpoint for wasm binaries in canister snapshots (#4777)
    Review: Matches description + changes are appropriate
    Note: This commit fixes the issue of wasm binaries in canister snapshots not switching to checkpoint based files after a checkpoint has been created. Now, both canisters and snapshot wasm binaries are redirected to use the checkpoint files correctly.

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
    Review: Matches description + changes are appropriate
    Note: This commit improves logging during node registration mentioning specifically if a private key was found, read successfully, or if the system fell back to HSM in Node operator.

  • 6876dcac8 Consensus,Interface(ic-replay): add more logs to ic-replay (#4685)
    Review: Matches description + changes are appropriate
    Note: improves logging in ic-replay by adding timestamps, log labels, and detailed messages for key events.

  • d6c72756c Execution,Interface: Remove old sandbox rpc calls (#4728)
    Review: Matches description + changes are appropriate
    Note: This commit removes old OpenWasm and CreateExecutionState sandbox RPC variants that supported in-memory compiled wasm modules.

  • bd371e73a Execution,Interface: EXC: Fix flaky monitor thread test (#4789)
    Review: Matches description + changes are appropriate
    Note: This commit improves the stability of flaky tests in the sandboxed execution controller by adjusting how the monitoring thread is triggered and verified.

  • 5c0d15487 Interface,Message Routing: Deserialize wasm with hash always present (#4734)
    Review: Matches description + changes are appropriate
    Note: This commit removes the optionality of the binary_hash field in canister snapshot and execution state protobufs, thus making it mandatory. Legacy support for missing binary_hash is also removed.

  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
    Review: Matches description + changes are appropriate
    Note: This is an automated update that updates base container image references for components like boundaryos, guestos, setupos.

  • f9a54926d Node: export hostos config as metric (#4785)
    Review: Matches description + changes are appropriate
    Note: This commit adds a prometheus-styled metric to expose HostOS config version. A new function, ‘update_config_version_metric’ has been added to custom-metrics.sh

Proposal: 136311 Manvick | ZenithCode

Summary:

  1. Build Hash: Build hash from the proposal, local build and CDN matches.
  2. Summary: The release notes matches the code changes
  3. Vote: I vote to adopt the proposal

Commits

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
    Review: Matches description + changes are appropriate
    Note: This commit improves logging during node registration mentioning specifically if a private key was found, read successfully, or if the system fell back to HSM in Node operator.

  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
    Review: Matches description + changes are appropriate
    Note: This is an automated update that updates base container image references for components like boundaryos, guestos, setupos.

  • f9a54926d Node: export hostos config as metric (#4785)
    Review: Matches description + changes are appropriate
    Note: This commit adds a prometheus-styled metric to expose HostOS config version. A new function, ‘update_config_version_metric’ has been added to custom-metrics.sh

Proposal 136310 - Ipsita | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: Not able to build
  3. Reason to Adopt The release notes match the commits and the code changes. I was not able to build, adopting the proposal since Manvick from our team was able to build. Will try to build again tomorrow.

Commits

Features:

  • 6b953276b Consensus,Interface: periodically fetch the nns delegation (#3902)
    Notes: Introducing periodical retrieval of NNS delegations every 10 minutes using tokio::time::interval, instead of the previous behavior of retrieving only upon replica startup, includes unit and system tests for checking delegation timestamp update and monitors performance metrics,thus ensuring the load on NNS nodes remains minimal.
    Review: Code changes look good and match release notes.
  • 66ffd5231 Execution,Interface: Charge for snapshot data download (#4787)
    Notes: The commit introduces a new baseline instruction cost (canister_snapshot_data_baseline_instructions) and the read_snapshot_data function was changed to charge cycles based on the baseline plus the size of the snapshot data being downloaded.
    Review: Code changes look good and match release notes.
  • 23abac589 Execution,Interface: Enable snapshot data download in statemachine tests (#4729)
    Notes: Enables snapshot data download in state machine tests via read_canister_snapshot_data_bench, benchmarking binary snapshot reading, using ReadCanisterSnapshotDataArgs and CanisterSnapshotDataKind.
    Review: Code changes look good and match release notes.

Bugfixes:

  • 56b0c90d2 Consensus,Interface(consnesus): Fix reshare chain key validation (#4829)
    Notes: Fixed reshare chain key validation by introducing decode_initial_dealings to support both ComputeInitialIDkgDealingsResponse and ReshareChainKeyResponse and preventing DecodingError.
    Review: Code changes look good and match release notes.
  • 7575e49a4 Execution,Interface: Improve constants in wasm chunk store (#4712)
    Notes: Replaced dynamic calculation of CHUNK_SIZE with a fixed 1 MiB constant (pub const CHUNK_SIZE: u64 = 1024 * 1024), derived PAGES_PER_CHUNK from it using PAGE_SIZE and added tests to ensure CHUNK_SIZE aligns with OS page size.
    Review: Code changes look good and match release notes.
  • 5599a9860 Interface(ICRC_Ledger): Recompute ICRC ledger certified data in post upgrade (#4796)
    Notes: The ​​commit adds the ic-cbor crate for ICRC-3 ledger certified data, modifies post_upgrade_internal to recompute certified data after an upgrade, and updates the test suite to verify correct ledger state and ICRC-3 certificate handling post-upgrade.
    Review: Code changes look good and match release notes.
  • 79f0a7d1f Interface,Message Routing: switch to checkpoint for wasm binaries in canister snapshots (#4777)
    Notes: The code change ensures that WASM binaries in canister snapshots are deserialized from checkpoint files by assigning the checkpoint-backed binary to the snapshot’s execution state using new_snapshot.execution_snapshot_mut().wasm_binary = wasm_binary.
    Review: Code changes look good and match release notes.

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
    Notes: The code adds detailed logging to check whether the node_operator_private_key.pem file was found and successfully read, or if the system is falling back to HSM, using UtilityCommand::notify_host() to clearly log the signer selection path during node registration.
    Review: Code changes look good and match release notes.
  • 6876dcac8 Consensus,Interface(ic-replay): add more logs to ic-replay (#4685)
    Notes: The commit improves ic-replay observability by adding info, warn, and error level logs with timestamps to critical decision points, including CUP verification, state hash checks, and backup restoration. It also renames the restore function to restore_from_backup for better clarity.
    Review: Code changes look good and match release notes.
  • d6c72756c Execution,Interface: Remove old sandbox rpc calls (#4728)
    Notes: The commit removes legacy OpenWasm and CreateExecutionState sandbox RPC call variants used for in-memory compilation, simplifying the codebase now that the system fully uses the on-disk compilation cache.
    Review: Code changes look good and match release notes.
  • bd371e73a Execution,Interface: EXC: Fix flaky monitor thread test (#4789)
    Notes: The commit fixes a flaky test by reducing the polling loop from 10,000 to 1,000 iterations and making sure the monitoring thread is properly triggered with.unwrap(), making the test more reliable and predictable.
    Review: Code changes look good and match release notes.
  • 5c0d15487 Interface,Message Routing: Deserialize wasm with hash always present (#4734)
    Notes: Removes the optional tag from the binary_hash field in ExecutionStateBits and CanisterSnapshotBits, making it as a required field and ensures CanisterModule::new_from_file always performs lazy loading using a known hash to support future implementation of MR-651.
    Review: Code changes look good and match release notes.
  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
    Notes: Updates the base container image references to newer versions to have secure container images.
    Review: Code changes look good and match release notes.
  • f9a54926d Node: export hostos config as metric (#4785)
    Notes: Adds a new Prometheus gauge metric hostos_config_version to expose the HostOS config version by reading it from /boot/config/config.json and the update_config_version_metric function parses the config_version using jq.
    Review: Code changes look good and match release notes.

Proposal 136311 - Ipsita | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: Not able to build
  3. Reason to Adopt The release notes match the commits and the code changes. I was not able to build, adopting the proposal since Manvick from our team was able to build. Will try to build again tomorrow.
Commit

Chores:

  • b60e4861d Consensus,Interface(node): Improve orchestrator node_operator_private_key.pem logging (#4753)
    Notes: The code adds detailed logging to check whether the node_operator_private_key.pem file was found and successfully read, or if the system is falling back to HSM, using UtilityCommand::notify_host() to clearly log the signer selection path during node registration.
    Review: Code changes look good and match release notes.

  • 896a78fbe Node: Update Base Image Refs [2025-04-15-0151] (#4814)
    Notes: Updates the base container image references to newer versions to have secure container images.
    Review: Code changes look good and match release notes.

  • f9a54926d Node: export hostos config as metric (#4785)
    Notes: Adds a new Prometheus gauge metric hostos_config_version to expose the HostOS config version by reading it from /boot/config/config.json and the update_config_version_metric function parses the config_version using jq.
    Review: Code changes look good and match release notes.

Proposal 136310 | Yuvika - Zentih Code

Summary

  1. Vote: Adopt
  2. Hash: Hashes match
  3. Reasons to adopt: release notes match the commits + unable to build, but a team member Manvick, is able to and will try again tomorrow.

Commits

Features:

  • 6b953276b
    Summary : periodically fetch the NNS delegation.
    Notes: Added a new DelegationManager , that fetches NNS delegation certificates every 10 minutes.
    Review: The description matches the code changes.

  • 66ffd5231
    Summary: Charge for snapshot data download.
    Notes: Added a new baseline cost along with an additional fee for downloading snapshot data depending on the size in bytes.
    Review: The description matches the code changes.

  • 23abac589
    Summary: Enable snapshot data download in statemachine tests.
    Notes: Update state machine tests by adding functionality to set certain feature flags such as canister_snapshot_download and canister_snapshot_upload as well as new methods such like read_canister_snapshot_metadata and read_canister_snapshot_data.
    Review: The description matches the code changes.

Bugfixes:

  • 56b0c90d2
    Summary: Fix reshare chain key validation.
    Notes: Update logic to decode ComputeInitialIDkgDealingsResponse and ReshareChainKeyResponse properly.
    Review: The description matches the code changes.

  • 7575e49a4
    Summary: Improve constants in wasm chunk store.
    Notes: Update CHUNK_SIZE variable to be a constant, instead of being derived.
    Review: The description matches the code changes.

  • 5599a9860
    Summary: Recompute ICRC ledger certified data in post upgrade.
    Notes: Ensure ICRC-3 compliant certified data is computed and set in post_upgrade method.
    Review: The description matches the code changes.

  • 79f0a7d1f
    Summary: switch to checkpoint for wasm binaries in canister snapshots.
    Notes: Ensure both snapshot and canister wasm binaries use the checkpoint files appropriately.
    Review: The description matches the code changes.

Chores:

  • b60e4861d
    Summary: Improve orchestrator node_operator_private_key.pem logging.
    Notes: Update logging when a failure is encountered while reading a node operator’s private key during node registration.
    Review: The description matches the code changes.

  • 6876dcac8
    Summary: add more logs to ic-replay.
    Notes: Add log labels, timestamps and detailed messages in ic-replay.
    Review: The description matches the code changes.

  • d6c72756c
    Summary: Remove old sandbox rpc calls.
    Notes: Remove in-memory compiled cache wasm modules from canister sandbox code.
    Review: The description matches the code changes.

  • bd371e73a
    Summary: EXC: Fix flaky monitor thread test.
    Notes: Update the monitoring thread in the flaky sandbox tests to ensure it is properly triggered.
    Review: The description matches the code changes.

  • 5c0d15487
    Summary: Deserialize wasm with hash always present.
    Notes: Make the binary_hash field mandatory.
    Review: The description matches the code changes.

  • 896a78fbe
    Summary: Update Base Image Refs [2025-04-15-0151].
    Notes: Update the base image references used for IC OS.
    Review: The description matches the code changes.

  • f9a54926d
    Summary: export hostos config as metric.
    Notes: Add update_config_version_metric to custom-metrics.sh. This will add a new metric hostos_config_version.
    Review: The description matches the code changes.

Proposal 136311 | Yuvika - Zentih Code

Summary

  1. Vote: Adopt
  2. Hash: Hashes match
  3. Reasons to adopt: release notes match the commits + unable to build, but a team member Manvick, is able to and will try again tomorrow.
Commits

Chores:

  • b60e4861d
    Summary: Improve orchestrator node_operator_private_key.pem logging.
    Notes: Improve logging for when private keys of the node operator are found but not read depending on the path used.
    Review: The description matches the code changes.

  • 896a78fbe
    Summary: Update Base Image Refs [2025-04-15-0151].
    Notes: Update the base image references used for IC OS.
    Review: The description matches the code changes.

  • f9a54926d
    Summary: export hostos config as metric.
    Notes: update_config_version_metric adds a new metric hostos_config_version in custom-metrics.sh, that is read from /boot/config/config.json path.
    Review: The description matches the code changes.

Proposal #135310 for GuestOS — Zack | CodeGov

for release-2025-04-16_11-12-base.

Vote: Adopted
Reason: The build is reproducible and all three OS hashes match (GUESTOS, HOSTOS and SETUPOS) as well as the listed commits descriptions.

Commits

Proposal #135311 for HostOS — Zack | CodeGov

for release-2025-04-16_11-12-base.

Vote: Adopted
Reason: The build is reproducible and all three OS hashes match (GUESTOS, HOSTOS and SETUPOS) as well as the listed commits descriptions.

OBS: while it builds fine on Ubuntu Desktop 24.04.2 LTS with matching the minimal hardware requirements (24GB for the new script), there are issues and it fails on Ubuntu server even with higher level hardware !

Commits
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 136310 – Zane | CodeGov

Vote: ADOPT
Reason: Build completes successfully, both hashes and reviewed commits match their descriptions, so I’ve voted to adopt.

Features:

6b953276b Changed delegation_from_nns field’s type so that instead of only being initialized once when the replica is started, it can be updated dynamically by using a tokyo channel. In construct_ic_stack an async tokyo task is spawned by calling start_nns_delegation_manager and the returned asynchronous listener’s handle is then passed to the http components of the stack. The update logic is encapsulated by the newly introduced DelegationManager struct, which is responsible for periodically fetching the NNS delegation (every 10 minutes at the moment), keeping track of related metrics and updating the listener if the value has changed.

66ffd5231 Added cycle charging in read_snapshot_data by calling consume_cycles_for_instructions, the number of cycles is calculated by using a baseline number of instructions, i.e DEFAULT_CANISTERS_SNAPSHOT_DATA_BASELINE_INSTRUCTIONS, adding the byte size of the data to be download to it and finally using the subnet size to scale it. If the canister doesn’t have enough cycles to cover the cost of the call then CanisterSnapshotNotEnoughCycles variant of CanisterManagerError is returned.

23abac589 Modified the StateMachineBuilder struct used to create replicated state machine instances detached from the network layer, which are leveraged by tests and benchmarks, to support toggling of canister snapshot download/upload feature flags. Added two helper methods to the test StateMachine struct which conveniently wrap calls to the IC00 endpoints to read snapshot’s data/metadata. In benches/management_canister/utils.rs the env method that creates a test StateMachine instance has been modified to enable both flags. A new benchmark has been added to the canister snapshot benches called read_canister_snapshot_data_bench, this measures how long it takes to read main memory data from canister snapshot by starting at a given offset, two variations are included one that just reads the data and one that also creates an on disk checkpoint immediately after. The results of this bench are stored using the read_canister_snapshot_data bench group. Finally existing bench methods have been updated to avoid dropping the StateMachine instance so as to avoid the time taken for this operation being counted in the bench results.

Bugfixes:

56b0c90d2 Moved response decoding from validate_reshare_dealings to a separate method called decode_initial_dealings and added support for new ReshareChainKeyResponse format.

7575e49a4 Modified PAGES_PER_CHUNK and CHUNK_SIZE constants in wasm chunk store so that the chunk’s size is fixed, i.e 1 MiB, while pages per chunk are calculated dividing the chunk’s size by the page size, which is OS dependent, instead of doing it the other way around. chunk_size_multiple_of_os_page_size test has been added to ensure proper memory alignment by checking CHUNK_SIZE is divisible by PAGE_SIZE with no remainder. In the take_snapshot_with_maximal_chunk_store the feature flag for snapshot download is enabled when building the execution environment instance, when uploading the wasm chunks there is no more need for OS specific logic as a result of the new way the chunk size is defined, error logs have been marginally improved by providing an error message in case of a panic and the individual hashes are collected in a vec. Finally the rest of the test’s logic has been implemented, after the chunks have been uploaded and a snapshot is taken, read_canister_snapshot_metadata gets called and the returned chunk hashes contained in the snapshot metadata are compared to the ones stored locally to ensure they match.

5599a9860 Modified ICRC1 ledger’s postupgrade hook to set the certified data to the root hash of the ledger state either immediately or after all migrations have completed.

79f0a7d1f Added logic in switch_to_checkpoint to also update the snapshots’ wasm binary so that they are backed by the file from the latest checkpoint layout.

Chores:

b60e4861d Added console logs to provide better insights on whether the node operator private key was found and could be read when creating a new instance of NodeRegistration.

6876dcac8 Improved logging in ic-replay by specifying severity/adding timestamps to some existing logs and adding new ones in get_state_hash and verify_latest_cup. Renamed restore to restore_from_backup and limited its visibility to the crate it’s defined in.

d6c72756c Cleaned up deprecated logic which was previously used to handle the in memory compilation cache from canister sandbox.

bd371e73a In monitor_and_evict_thread_collects_rss and monitor_and_evict_thread_collects_metrics tests moved calls to trigger the monitoring thread to happen on each iteration instead of only before the loop starts. Previously it could happen that in case the sandboxes stats/metrics weren’t updated fast enough due to async behaviour, the monitoring thread would sleep for 10 seconds, rendering many of the following iterations redundant and leading to test flakiness. The change also allowed to reduce the number of worst case iterations from 10k to 1k and decreased execution time from 100 secs to 10 in cases where the results are never received, this is possible cause previously the loop would need to wait for the monitoring thread to schedule a new execution on its own, so by waiting 10ms on each pass that’d happen ~10 times, but by manually triggering it, it’s no longer necessary.

5c0d15487 Modified binary_hash field of ExecutionStateBits and CanisterSnapshotBits to no longer be optional.

896a78fbe Updated ICOS image refs.

f9a54926d In hostos-scripts/monitoring/custom-metrics.sh added update_config_version_metric function which reads the config version from /boot/config/config.json json file and writes it to hostos_config_version gauge metric.

Proposal 136311 – Zane | CodeGov

Vote: ADOPT
Reason: Build completes successfully and hashes match. All commits have already been reviewed as part of 136310.

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.