Proposal to elect new release rc--2025-01-09_03-19

Hello there!

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

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

Release Notes for release-2025-01-09_03-19-base (aa705aaa621c2e0d4f146f3a1de801edcb0fa0d5)

This release is based on changes since release-2025-01-03_03-07-base (76a634c31dfb840da25fbe286855eb0be1818ca8).

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:

  • 41b1a2ed4 Consensus,Interface(recovery): Add CLI option to use existing binaries for local recoveries (#3301)
  • c7141f639 Execution,Interface: Use state layout tmp dir for compilation cache (#3140)
  • c741e3494 Interface: ICRC-ledger: Implement V4 for ICRC ledger - migrate balances to stable structures (#2901)
  • aa705aaa6 Node: Run chown/chmod in setup-permissions in parallel (#3373)
  • 36e2b45d4 Node: Configuration revamp (SetupOS integration) (#3270)

Bugfixes:

  • f73b98993 Execution,Interface: Reject code in synchronous rejects (#3362)
  • a9d2098e8 Execution,Interface: Include reservation cycles in error reported during taking a canister snapshot (#3331)
  • 1ed522a29 Execution,Interface,Message Routing: Check low wasm memory hook status after an upgrade/reinstall/uninstall/install (#3195)

Performance improvements:

  • e742c7d60 Interface,Message Routing: Move heavy object deallocation off the critical Execution path (#3241)

Chores:

  • 67cd0a790 Consensus,Interface: Increment metric in case of NiDkgTag mismatches (#3329)
  • 227e8e3de Execution,Interface: Ignore Wasmtime validation errors (#3338)
  • 9377651bb Execution,Interface,Node(execution-environment): Specify image-classification canister WASM as a Bazel dependency (#3355)
  • 0cd1ac662 Interface: Update ic-agent and ic-agent’s reverse dependencies to v0.39 (#3282)

Refactoring:

  • 6410e399d Consensus,Interface: Factor out DKG submodule into its own crate (#3340)
  • f90023fe7 Consensus,Interface(Consensus): Move some files around to decrease consensus internal dependencies (#3130)
  • 983a05359 Consensus,Interface(Consensus): Factor CUP functionality out of dkg submodule (#3126)
  • ba248f767 Execution,Interface: Rename field in InsufficientCyclesInMemoryGrow error (#3333)

Documentation:

  • cc086f3a1 Owners(ICRC_Ledger): Add rustdoc to icrc-ledger-types (#3345)

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 disk image, run:

# From https://github.com/dfinity/ic#verifying-releases
sudo apt-get install -y curl && curl --proto '=https' --tlsv1.2 -sSLO https://raw.githubusercontent.com/dfinity/ic/aa705aaa621c2e0d4f146f3a1de801edcb0fa0d5/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c aa705aaa621c2e0d4f146f3a1de801edcb0fa0d5 --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.

5 Likes

Proposal 134773 - Hamish Peebles | CodeGov

Vote: ADOPTED
Reason: In my opinion all commits listed look fine and match their descriptions. I have been unable to successfully run the build script but given that others have done so I have opted to approve.

Full review:

Features:

  • 41b1a2ed4 Consensus,Interface(recovery): Add CLI option to use existing binaries for local recoveries (#3301)
    Review: Looks fine + matches description
    Notes: Adds the use_local_binaries flag to the recovery scripts which makes them use local binaries rather than having to download them.

  • c7141f639 Execution,Interface: Use state layout tmp dir for compilation cache (#3140)
    Review: Looks fine + matches description
    Notes: Passes the state_manager.state_layout().tmp() path down through the layers to the Hypervisor so that in a subsequent change this directory can be used for the compilation cache.

  • c741e3494 Interface: ICRC-ledger: Implement V4 for ICRC ledger - migrate balances to stable structures (#2901)
    Review: Looks fine + matches description
    Notes: Updates the ICRC ledger to store all balances in stable memory, also removes the automatic trimming of balances now that the storage capacity is much higher.

  • aa705aaa6 Node: Run chown/chmod in setup-permissions in parallel (#3373)
    Review: Looks fine + matches description
    Notes: Improves the speed of replica reboots by setting up file permissions in parallel.

  • 36e2b45d4 Node: Configuration revamp (SetupOS integration) (#3270)
    Review: Looks fine + matches description
    Notes: Switches SetupOS over to using the new IC-OS config tool for reading and validating config.

Bugfixes:

  • f73b98993 Execution,Interface: Reject code in synchronous rejects (#3362)
    Review: Looks fine + matches description
    Notes: Fixes the error code returned when a call to the management canister fails validation.

  • a9d2098e8 Execution,Interface: Include reservation cycles in error reported during taking a canister snapshot (#3331)
    Review: Looks fine + matches description
    Notes: Fixes the returned cycles amount to include the reservation_cycles whenever there is a InsufficientCyclesInMemoryGrow error.

  • 1ed522a29 Execution,Interface,Message Routing: Check low wasm memory hook status after an upgrade/reinstall/uninstall/install (#3195)
    Review: Looks fine + matches description
    Notes: Calls canister.update_on_low_wasm_memory_hook_condition() after upgrading a canister so that the hook status depends only on the state after the upgrade rather than before.

Performance improvements:

  • e742c7d60 Interface,Message Routing: Move heavy object deallocation off the critical Execution path (#3241)
    Review: Looks fine + matches description
    Notes: Implements the DeallocatorThread which deallocates objects using a separate thread with a customisable delay between each deallocation. If the queue grows too large then objects will be deallocated eagerly by the main thread.

Chores:

  • 67cd0a790 Consensus,Interface: Increment metric in case of NiDkgTag mismatches (#3329)
    Review: Looks fine + matches description
    Notes: NiDkgTranscripts are currently serialized as (nidkg_tag, nidkg_transcript), but going forward the plan is to simply serialize them as nidkg_transcript under the assumption that the tag can be extracted from the transcript. This change verified that the serialized tag always matches the tag contained within the transcript by logging and incrementing a metric counter if ever that is not the case.

  • 227e8e3de Execution,Interface: Ignore Wasmtime validation errors (#3338)
    Review: Looks fine + matches description
    Notes: Excludes the full error details from the response if wasmtime::Module::validate fails, then adds the ignore attribute to 2 tests: test_initial_wasmtime_config and toolchain_error_message.

  • 9377651bb Execution,Interface,Node(execution-environment): Specify image-classification canister WASM as a Bazel dependency (#3355)
    Review: Looks fine + matches description
    Notes: Makes the image-classification canister a Bazel dependency so that it can easily be shared by any tests that require it.

  • 0cd1ac662 Interface: Update ic-agent and ic-agent’s reverse dependencies to v0.39 (#3282)
    Review: Looks fine + matches description
    Notes: Bumps the versions of some IC crates (eg. ic-agent, ic-cbor, ic-certification, etc).

Refactoring:

  • 6410e399d Consensus,Interface: Factor out DKG submodule into its own crate (#3340)
    Review: Looks fine + matches description
    Notes: Extracts the consensus::dkg submodule into its own consensus-dkg package.

  • f90023fe7 Consensus,Interface(Consensus): Move some files around to decrease consensus internal dependencies (#3130)
    Review: Looks fine + matches description
    Notes: Moves some dependencies around within the consensus package in preparation for extracting the dkg submodule.

  • 983a05359 Consensus,Interface(Consensus): Factor CUP functionality out of dkg submodule (#3126)
    Review: Looks fine + matches description
    Notes: Moves CUP related code out of consensus::dkg and into the new cup_utils submodule in preparation for extracting the dkg submodule.

  • ba248f767 Execution,Interface: Rename field in InsufficientCyclesInMemoryGrow error (#3333)
    Review: Looks fine + matches description
    Notes: Renames the threshold field of InsufficientCyclesInMemoryGrow to required.

Documentation:

  • cc086f3a1 Owners(ICRC_Ledger): Add rustdoc to icrc-ledger-types (#3345)
    Review: Looks fine + matches description
    Notes: Adds doc comments to types within the icrc-ledger-types package.
About CodeGov…(click to expand)

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

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

2 Likes

proposal - 134773 - Cyberowl | CodeGov

Vote: ADOPT

Reason:

The script has some issues this week where it would give the error When not specifying any option please run this script inside an IC git repository. In the check_ic_repo function, the updated script now checks whether the remote URL contains the substring dfinity/ic, rather than just checking if it ends with ic.git or ic.

Either way used the previous script with the new hash and it built and generated the valid hash for the Guest-OS. I am moving forward with ADOPT because the hash is still valid and all the changes match their descriptions.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

Overall Summary:

The change that stands out in these commits is the migration of ledger balances data from heap memory to stable memory structures, including removing unnecessary arguments and replacing the old “maximum_number_of_accounts” trimming logic. Additionally, the ledger’s in-memory balances now use stable-memory storage, and downgrades to older ledger versions are blocked unless the ledger was previously updated to a compatible intermediate version.

Commits Summary

41b1a2ed4
The changes introduce a new use_local_binaries option to the recovery flow, allowing to skip downloading required executables if they already exist locally on the machine (e.g. /opt/ic/bin/). This flag updates various parts of the recovery CLI to detect when we should rely on existing binaries rather than fetching them from a release URL.

c7141f639
New temp_dir: &Path parameter that is passed into the Hypervisor so it can store or manage temporary files in a known directory. This allows the hypervisor logic to store in state_layout vs in memory.

c741e3494
Looks like these are the final changes to migrate ledger balances data from heap memory to stable memory structures. Removed some of the args that are not needed anymore in this new version. Remove the old “maximum_number_of_accounts” trimming logic and switch the ledger’s in-memory balances to stable-memory–based storage. The changes block downgrades to older ledger versions unless the ledger was previously updated to a compatible intermediate version.

aa705aaa6
Uses find combined with xargs for parallel execution (-P 0), improving performance when applying chown and chmod to large directories, whereas the original script uses chown and chmod with the -R flag for recursive operations, which may be slower for large file sets.

36e2b45d4
Removal of old setups-script config file. New scripts were added to get and check config file. Config now gets imported from source /opt/ic/bin/config.sh. Removes certain arguments (use_nns_public_key, use_ssh_authorized_keys, use_node_operator_private_key) from the CreateSetuposConfig command, replacing them with inline checks (e.g., verifying file existence) and makes the validation of node_reward_type optional. Replaces the use of config.ini and deployment.json files for configuration with a single deserialized SetupOSConfig object.

f73b98993
Fix reject code for reject_subnet_message_user_error.

a9d2098e8
reservation_cycles are included in error CanisterManagerError::InsufficientCyclesInMemoryGrow.

1ed522a29
Moved the logic for determining whether “on_low_wasm_memory” hook execution is needed out of MemoryUsage and into the canister’s system state, checking a new function is_low_wasm_memory_hook_condition_satisfied. This also refactors and consolidates the queueing logic for that hook, giving the canister a single place (the canister’s TaskQueue) where all tasks, including the low-memory hook, are maintained consistently.

e742c7d60
Background thread mechanism (DeallocatorThread) for asynchronously deallocating large or complex objects, thereby distributing the workload of memory deallocation and reducing the risk of long synchronous pauses. Multiple modules are modified to pass around a DeallocationSender or DeallocatorThread so they can queue objects for deallocation instead of dropping them immediately. A backlog threshold ensures that, if too many objects pile up, the system falls back on synchronous deallocation.

67cd0a790
If a DKG summary payload references transcripts under incorrect tags, the code logs a warning and increments a “tag_mismatch” metric. This is meant to help with diagnosing any mismatches or errors in the DKG summary by checking the actual transcript’s tag against the summary’s key.

227e8e3de
test_initial_wasmtime_config and toolchain_error_message are now marked with #[ignore] so that they do not run by default.

9377651bb
IMAGE_CLASSIFICATION_CANISTER_WASM_PATH as Bazel dependency.

0cd1ac662
The updates primarily include version bumps for (ic-agent, ic-utils, ic-cbor, etc.) to align with version 3, the addition of ic-canister-sig-creation for signature handling, and the introduction of ic-http-gateway for HTTP gateway capabilities.

6410e399d
Move the DKG functionality into its own dedicated crate, ic-consensus-dkg, extracting it from the broader ic-consensus crate. All references to ic_consensus::dkg are updated to point to the new crate (ic_consensus_dkg) throughout the codebase.

f90023fe7
Reorganizes the DKG logic by extracting it out of the main ic-consensus crate and moving it into a separate crate named ic-consensus-dkg. It updates references and imports throughout the codebase to reflect the new module structure. Additionally, some smaller refactorings include moving bouncer_metrics.rs to the ic_consensus_utils crate and introducing or removing crate features in the Cargo.toml files.

983a05359
Moves the logic for creating registry-based catch-up packages (CUPs) out of the DKG code and into a new cup_utils.rs module.

ba248f767
Matches description Rename field in InsufficientCyclesInMemoryGrow error . Now the field is required.

cc086f3a1
Documentation improvements across the icrc-ledger-types package. It adds detailed explanations for various structs, enums, and functions, referencing their corresponding ICRC standards and endpoints, such as ICRC-1, ICRC-2, and ICRC-3.

About CodeGov…(click to expand)

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

Learn more about CodeGov and it’s mission at codegov.org.

Proposal 134773 – ilbert | CodeGov

Vote: ADOPTED.
Reason:
I wasn’t able to build the image from the build script at this commit, as it was failing with the “When not specifying any option please run this script inside an IC git repository” error. I think a regression was introduced at commit 4bd2abd. The workaround I found is to run the script from the parent commit b556319 and pass the current commit as argument:

sudo apt-get install -y curl && curl --proto '=https' --tlsv1.2 -sSLO https://raw.githubusercontent.com/dfinity/ic/b5563194861aa63efe9d0472579f2e00ea38c386/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c aa705aaa621c2e0d4f146f3a1de801edcb0fa0d5 --guestos

Since I was able to reproduce the build with this workaround and all the reviewed commits are matching their description, I’ve decided to ADOPT the proposal.

Review:
For the Execution and Runtime layers, this release doesn’t introduce significant changes.

I’ve reviewed all the commits listed in the proposal, for the Execution and Runtime layers:

c7141f639:
Updates the new method of the Hypervisor struct to accept a Path argument, which is ignored for now. A TODO comment explains that this directory will be used to store the compilation cache. Inside the new method, it also updates the compilation_cache field of the newly created Hypervisor instance by using the MAX_COMPILATION_CACHE_SIZE constant instead of the value from the config parameter.
Updates the setup_execution method of the ExecutionServices struct to receive a Path parameter, that is forwarded to the Hypervisor::new. Updates the invocations of the setup_execution method to pass the tmp path from the StateLayout.

f73b98993:
Updates the reject_subnet_message_user_error method of the SystemStateChanges struct to create a reject context from the UserError parameter.

a9d2098e8:
Updates the creation of the InsufficientCyclesInMemoryGrow error inside the take_canister_snapshot method of the CanisterManager struct in order to report a required amount of cycles as the sum of the freezing threshold and the reservation cycles. This error is returned if the canister doesn’t have an amount cycles that is greater than the sum above.

1ed522a29:
Introduces the update_on_low_wasm_memory_hook_condition method in the CanisterState struct. This method invokes the update_on_low_wasm_memory_hook_status of the system_state field, passing the total amount of memory used by the canister and the amount of Wasm memory used by the canister. The latter is calculated in the newly introduced wasm_memory_usage method, as the Wasm memory usage returned by the execution state if any, or 0 otherwise.
Updates the process_install_code_result method of the ExecutionEnvironment struct to invoke the update_on_low_wasm_memory_hook_condition of the canister state in case the result of the install_code message is finished.
This commit also introduces some refactors in the system_state file, by moving the TaskQueue and OnLowWasmMemoryHookStatus and their tests to the new task_queue file.
Adds the update_on_low_wasm_memory_hook_status method to the SystemState struct, which invokes the newly introduced is_low_wasm_memory_hook_condition_satisfied function to decide whether to enqueue or remove the OnLowWasmMemory task.
Renames the check_on_low_wasm_memory_hook_condition method of the SandboxSafeSystemState struct into update_status_of_low_wasm_memory_hook_condition and refactors it to use the is_low_wasm_memory_hook_condition_satisfied function.

227e8e3de:
Avoids printing the wasmtime validation error in the can_compile function.

9377651bb:
Matches description.

ba248f767:
Matches description.

About CodeGov…(click to expand)

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

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

2 Likes

Proposal 134663 – Zane | CodeGov

Vote: ADOPT

Reason: I’ve run into some issues with the build script, it was slightly changed for this week’s release and the modified check_ic_repo function doesn’t behave properly on my setup, though I’m not the only one having issues as other reviewes have reported it too. Anyway since by reverting the change the build completes successfully with matching hashes and reviewed commits also match their descriptions, I’ve decided voted to adopt.

Features:

41b1a2ed4 Added new flag to recovery tool, called use_local_binaries, when enabled the binaries won’t be downloaded and will instead be fetched from /opt/ic/bin.

c7141f639 Propagate tmp dir used for the state layout to execution environment and hypervisor. In a future PR it will be used to store compilation cache results.

c741e3494 Reserved memory id for storing balances in stable memory and extended migration logic used for allowances to also work with balances. maximum_number_of_accounts and accounts_overflow_trim_quantity fields have been removed from init and upgrade args and over all deprecated in the ICRC1 ledger since with stable memory balances are no longer trimmed rendering them useless.

aa705aaa6 Modified erestorecon script to force reset security context. Modified setup-permissions script to set permissions in parallel by using -P flag.

Bugfixes:

f73b98993 Derive reject code from UserError in reject_subnet_message_user_error instead of hardcoding a CanisterError reject code.

a9d2098e8 Properly calculate amount of cycles required when a InsufficientCyclesInMemoryGrow error is returned by accounting for reservation_cycles

1ed522a29 Update low wasm memory hook status after DtsInstallCodeResult by fetching the most up to date memory usage and determining if a hook execution task should be added to the task queue or removed, in case it was scheduled to run before the install code, but the conditions for it don’t apply anymore. Moved TaskQueue logic from system_state.rs to a separate dedicated file.

Performance improvements:

e742c7d60 Implemented DeallocatorThread and DeallocationSender to handle deallocation of complex objects over time in a backgorund thread to avoid potential stalling of other execution paths. Each thread has a max deallocation backlog of 500 objects, after which the sender will fallback to directly dropping the object. It is possible to configure the interval at which each deallocation is performed by specifying sleep_between_drops when initializing the DeallocatorThread. For the Execution layer, the value has been set to 0.1 ms, while for the state manager it is set to 1 ms.

Chores:

67cd0a790 In validate_payload iterate transcripts and increment tag_mismatch metric if the tag doesn’t match transcript.dkg_id.dkg_tag

227e8e3de Added #[ignore] annotation to test_initial_wasmtime_config and test_wasmtime_validation_error_is_ignored. No longer format error returned by wasmtime::Module::validate into WasmValidationError.

9377651bb Added image-classification canister WASM as a Bazel dependency.

Refactoring:

6410e399d Same as description.

f90023fe7 Same as description.

983a05359 Same as description.

ba248f767 Renamed threshold field of InsufficientCyclesInMemoryGrow to required to better reflect what it represents.

Documentation:

cc086f3a1 Added documenation comments to icrc-ledger-types

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

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

2 Likes

Proposal #134773 — Zack | CodeGov

for release-2025-01-09_03-19-base.

Vote: Adopted
Reason: Builds fine and the hash matches for GUESTOS, HOSTOS and SETUPOS along with all the listed commits.

Review of commits:
About CodeGov (click to expand).

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.


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

1 Like

Proposal 134773 - Ipsita | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: All the hashes match
  3. Reasons to adopt: The release notes match the commits and the code changes. Builds successfully and all the hashes match

Commits

Features

  • 41b1a2ed4
    Summary: Add CLI option to use existing binaries for local recoveries
    Notes: Add ic-admin to the guest os and adds cli argument so that the recovery tool uses local binaries from /opt/ic/bin.This enables local subnet recovery via ssh.
    Review: Code changes matches the commit message.

  • c7141f639
    Summary: Use state layout tmp dir for compilation cache
    Notes: Passes temporary directory to execution so that the files from compilation cache can be written there instead of /tmp.
    Review: Code changes matches the commit message.

  • c741e3494
    Summary: Implement V4 for ICRC ledger - migrate balances to stable structures
    Notes: ICRC ledger migrates the balance stored by the ledger from heap to stable memory
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • aa705aaa6
    Summary: Run chown/chmod in setup-permissions in parallel
    Notes: Increase the speed of reboot by setting permissions in parallel.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 36e2b45d4
    Summary: Configuration revamp (SetupOS integration)
    Notes: Integrates the ic-os config tool into setup os which is utilized for config sanitization, organization, and access.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

Bugfixes

  • f73b98993
    Summary: Reject code in synchronous rejects
    Notes: Fixes the reject code in synchronous rejects in management canister so that the error code is derived from user error instead of hard coded user error.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • a9d2098e8
    Summary: Include reservation cycles in error reported during taking a canister snapshot
    Notes: When error is reported while taking canister snapshots due to insufficient funds we only returned freezing threshold amount which is incorrect, this PR also adds reservation_cycles while returning the error.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 1ed522a29
    Summary: Check low wasm memory hook status after an upgrade/reinstall/uninstall/install
    Notes: This PR ensures that the status of the hook condition is updated each time we run upgrade/reinstall/uninstall/install code.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

Performance improvements

  • e742c7d60
    Summary: Move heavy object deallocation off the critical Execution path
    Notes: reuses state manager’s deallocation thread during execution moving half of the work load to a background thread.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

Chores

  • 67cd0a790
    Summary: Increment metric in case of NiDkgTag mismatches
    Notes: This PR adds log and metric to confirm our assumption nidkg_tag == nidkg_transcript.tag.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 227e8e3de
    Summary: Ignore wasmtime validation errors
    Notes: This PR ignores wasmtime validation errors and also adds a test case for it.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 9377651bb
    Summary: Specify image-classification canister WASM as a Bazel dependency
    Notes: image-classification.wasm.gz is made Bazel dependency, so that multiple tests can share it
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 0cd1ac662
    Summary: Update ic-agent and ic-agent’s reverse dependencies to v0.39
    Notes: Upgrades version of some ic-crates like
    1. ic-response-verification
    2. ic-certification
    3. ic-certificate-verification
    4. ic-http-certification
    5. ic-cbor
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

Refactoring

  • 6410e399d
    Summary: Factor out DKG submodule into its own crate
    Notes: moves the dkg code from it’s own submodule in consensus/src to it’s own crate in consensus.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 6410e399d
    Summary: Move some files around to decrease consensus internal dependencies
    Notes: moves some dependencies around in the consensus package to prepare to move dkg submodule into it’s own crate.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • 983a05359
    Summary: Move some files around to decrease consensus internal dependencies
    Notes: moves make_registry_cup and make_registry_cup_from_cup function from dkg submodule into its own module cup_utils.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

  • ba248f767
    Summary: Rename field in InsufficientCyclesInMemoryGrow error
    Notes: Field threshold is renamed to required in InsufficientCyclesInMemoryGrow error since the error not only includes freezing threshold but also includes reservation_cycles.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.

Documentation

  • cc086f3a1
    Summary: Add rustdoc to icrc-ledger-types
    Notes: Adds comments in icrc-ledger-types for documentation.
    Review: Code changes matches the commit message. Since heap memory limitation is no longer a concern logic for trimming balance is also removed.
1 Like

Proposal 134773 | Tim - CodeGov

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. In my case the build script ran successfully without needing any changes, although I note that some of our other team members found that this script returned an error.

I have selectively reviewed Consensus, Interface and Node commits as below.

Review

Features:

[41b1a2ed4]
Adds use_local_binaries flag, which is to be used in subnet recovery to indicate that the recovery is being run directly on a node, in which case locally available binaries will be used.

[c741e3494]
Upgrades LEDGER_VERSION to 2, in which ledger balances are stored in stable structures instead of on the heap, + associated changes as outlined in the description.

[aa705aaa6]
Adapts setup-permissions.sh to run chown and chmod commands in parallel.

[36e2b45d4]
Adds functions generate_systemd_config_files_new_config and generate_network_config_new_config, called in ic_os/os_tools/setupos_tool/ in order to utilise the new IC-OS config tool in SetupOS.

Performance improvements:

[e742c7d60]
Adds deallocator_thread.rs, introducing DeallocatorThread and DeallocatorSender types, utilised in the execution environment to deallocate complex objects in the background so as to spread the cost of deallocation over a longer period of time and avoid long pauses.

Chores:

[67cd0a790]
Adds a metric “tag_mismatch”, to be incremented when a NiDKG key/tag mismatch occurs, along with a corresponding log.

[0cd1ac662]
Dependency version changes to several crates + code fixes necessitated by these changes.

Refactoring:

[6410e399d]
Adds consensus/dkg/ directory / crate and moves the relevant code into it.

[f90023fe7]
Changes in preparation for 6410e399d above.

[983a05359]
Moves CUP-related functions from rs/consensus/src/dkg.rs into their own new module.

Documentation:

[cc086f3a1]
Documentation changes within icrc-ledger-types Rust files.

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 topics and Synapse on most other 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 and KongSwap with a known neuron and credible Followees.

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

1 Like

Proposal 134773 - Yuvika | ZenithCode

Summary

  1. Vote: Adopt
  2. Hash: Hashes match
  3. Reasons to adopt: Builds fine + hashes match + release notes match the commits

Commits

Features

  • 41b1a2ed4
    Summary: Add CLI option to use existing binaries for local recoveries.
    Notes: Enhances the guest OS by adding ic-admin . It also improves the recovery tool by allowing the use of local binaries from /opt/ic/bin .
    Review: The description matches the code changes.

  • c7141f639
    Summary: Use state layout tmp dir for compilation cache.
    Notes: Allows the execution phase to use the temporary directory specified in the state layout for the compilation cache, instead of relying on the system’s default /tmp directory.
    Review: The description matches the code changes.

  • c741e3494
    Summary: Implement V4 for ICRC ledger - migrate balances to stable structures.
    Notes: This ledger upgrade migrates balances from heap memory to stable memory. The migration happens during upgrades and may continue post-upgrade using timers, making the ledger temporarily unavailable. Migration progress is tracked by a metric and logs, and the is_ledger_ready endpoint indicates availability. Downgrades are possible during migration but prohibited after successful completion.
    Review: The description matches the code changes.

  • aa705aaa6
    Summary: Run chown/chmod in setup-permissions in parallel.
    Notes: Increase speed of the reboot by running chown and chmod commands in parallel.
    Review: The description matches the code changes.

  • 36e2b45d4
    Summary: Configuration revamp (SetupOS integration).
    Notes: Integrate the newly created IC-OS config tool into SetupOS, enhancing config handling with sanitization, organization, and controlled access. Importantly, this change currently has no effect on HostOS or GuestOS as the old config mechanism remains in us.
    Review: The description matches the code changes.

Bugfixes:

  • f73b98993
    Summary: Reject code in synchronous rejects.
    Notes: Corrects the reject code in synchronous mgmt canister calls, ensuring it accurately reflects the underlying UserError instead of using a generic CanisterError code.
    Review: The description matches the code changes.

  • a9d2098e8
    Summary: Include reservation cycles in error reported during taking a canister snapshot.
    Notes: Corrects canister snapshot balance checks by accurately accounting for freezing threshold and subnet capacity considerations, preventing incorrect required balance reporting to users. reservation_cycles is returned along with the threshold in the error. Tests were also added.
    Review: The description matches the code changes.

  • 1ed522a29
    Summary: Check low wasm memory hook status after an upgrade/reinstall/uninstall/install.
    Notes: Ensures the hook condition status is updated during every code upgrade, reinstall, uninstall, and install operation.
    Review: The description matches the code changes.

Performance improvements:

  • e742c7d60
    Summary: Move heavy object deallocation off the critical Execution path.
    Notes: Optimizes execution by reusing the State Manager’s deallocator thread, offloading up to half the work to the background.
    Review: The description matches the code changes.

Chores:

  • 67cd0a790
    Summary: Increment metric in case of NiDkgTag mismatches.
    Notes: Optimizes NiDkg transcript serialization by storing them as a vector. Additionally, it adds logging and metrics to verify the existing assumption that nidkg_tag == nidkg_transcript.tag.
    Review: The description matches the code changes.

  • 227e8e3de
    Summary: Ignore Wasmtime validation errors.
    Notes: Ignore wasmtime validation errors and add a test for the same.
    Review: The description matches the code changes.

  • 9377651bb
    Summary: Specify image-classification canister WASM as a Bazel dependency.
    Notes: Makes the image-classification.wasm.gz binary a Bazel dependency, enabling test sharing and simplifying large WASM usage.
    Review: The description matches the code changes.

  • 0cd1ac662
    Summary: Update ic-agent and ic-agent’s reverse dependencies to v0.39.
    Notes: Updates the following crates to 3.0.2 : ic-response-verification, ic-certification, ic-certificate-verification, ic-http-certification, ic-cbor. Some other crates were also updated to fix breaking changes.
    Review: The description matches the code changes.

Refactoring:

  • 6410e399d
    Summary: Factor out DKG submodule into its own crate.
    Notes: Refactor the dkg code into a separate crate within the consensus module, enhancing maintainability and potentially improving compile times.
    Review: The description matches the code changes.

  • f90023fe7
    Summary: Move some files around to decrease consensus internal dependencies .
    Notes: refactor the Consensus module by removing internal dependencies, moving bouncer_metrics to ic-consensus-utils, and relocating dkg_key_manager within the dkg submodule, as a preparatory step for extracting the dkg submodule into a separate crate.
    Review: The description matches the code changes.

  • 983a05359
    Summary: Factor CUP functionality out of dkg submodule.
    Notes: Refactor make_registry_cup and make_registry_cup_from_cup from the dkg submodule to a new cup_utils module for better organization and improved accessibility by other crates, as they utilize both dkg and idkg functionality.
    Review: The description matches the code changes.

  • ba248f767
    Summary: Rename field in InsufficientCyclesInMemoryGrow error.
    Notes: Rename the threshold in InsufficientCyclesInMemoryGrow error to required to better reflect that it encompasses both the freezing threshold and also the reservation cycles.
    Review: The description matches the code changes.

Documentation:

  • cc086f3a1
    Summary: Add rustdoc to icrc-ledger-types.
    Notes: Update comments to icrc-ledger-types for documentation.
    Review: The description matches the code changes.
1 Like

Proposal: 134773 - Manvick | ZenithCode

Summary:

  1. Build Hash: Build has from the proposal, local build and CDN matches and is “ 71b3c4b933b5ea4da76473bc27b10324127b8095bc115833b3d21bfc2f82ef60”.
  2. Summary: The release notes matches the code changes
  3. Vote: I vote to adopt the proposals

Detailed Review:

Commits

Features

  • 41b1a2ed4
    Summary: Add CLI option to use existing binaries for local recoveries.
    Notes: Enhances the guest operating system by including ic-admin. Additionally, it improves the recovery tool by allowing the use of binaries located in /opt/ic/bin.
    Review: Code changes look good and match release notes.

  • c7141f639
    Summary: Use state layout tmp dir for compilation cache.
    Notes: Shifts the cache directory from the system default /tmp to the temporary directory specified in the state layout during the execution phase.
    Review: Code changes look good and match release notes.

  • c741e3494
    Summary: Implement V4 for ICRC ledger - migrate balances to stable structures.
    Notes: This upgrade transitions balances from heap memory to stable memory during updates. The migration process may extend post-upgrade with timers, temporarily impacting ledger availability. Migration progress is tracked via logs and metrics, and the is_ledger_ready endpoint provides status updates. Downgrades are permitted during migration but restricted post-completion.
    Review: Code changes look good and match release notes.

  • aa705aaa6
    Summary: Run chown/chmod in setup-permissions in parallel.
    Notes: This change accelerates the reboot process by executing chown and chmod operations concurrently.
    Review: Code changes look good and match release notes.

  • 36e2b45d4
    Summary: Configuration revamp (SetupOS integration).
    Notes: The new IC-OS configuration tool is integrated into SetupOS, bringing improved sanitization, organization, and controlled access to configurations. The legacy configuration mechanism remains active for HostOS and GuestOS.
    Review: Code changes look good and match release notes.

Bugfixes:

  • f73b98993
    Summary: Reject code in synchronous rejects.
    Notes: Ensures that reject codes reflect the actual UserError instead of a generic CanisterError.
    Review: Code changes look good and match release notes.

  • a9d2098e8
    Summary: Include reservation cycles in error reported during taking a canister snapshot.
    Notes: Adjusted balance checks for canister snapshots to account for freezing thresholds and subnet capacity, preventing inaccurate balance errors. reservation_cycles is now part of the error response. Tests were added to verify these changes.
    Review: Code changes look good and match release notes.

  • 1ed522a29
    Summary: Updated low Wasm memory hook status during lifecycle events.
    Notes: Ensures the status of hook conditions is refreshed during code upgrades, reinstalls, uninstalls, and installs.
    Review: Code changes look good and match release notes.

Performance improvements:

  • e742c7d60
    Summary: Move heavy object deallocation off the critical Execution path.
    Notes: Improved execution efficiency by utilizing the State Manager’s deallocator thread to offload significant work to the background.
    Review: Code changes look good and match release notes.

Chores:

  • 67cd0a790
    Summary: Increment metric in case of NiDkgTag mismatches.
    Notes: Optimized NiDkg transcript serialization by storing them as vectors and included logging and metrics to confirm the assumption that nidkg_tag == nidkg_transcript.tag.
    Review: Code changes look good and match release notes.

  • 227e8e3de
    Summary: Ignore Wasmtime validation errors.
    Notes: Ignored Wasmtime validation errors and introduced tests to validate this behavior.
    Review: Code changes look good and match release notes.

  • 9377651bb
    Summary: Specify image-classification canister WASM as a Bazel dependency.
    Notes: Simplified test sharing and the use of large WASM binaries by making image-classification.wasm.gz a Bazel dependency.
    Review: Code changes look good and match release notes.

  • 0cd1ac662
    Summary: Update ic-agent and ic-agent’s reverse dependencies to v0.39.
    Notes: Upgraded several crates, including ic-response-verification, ic-certification, and others, to address breaking changes and enhance compatibility.
    Review: Code changes look good and match release notes.

Refactoring:

  • 6410e399d
    Summary: Factor out DKG submodule into its own crate.
    Notes: Refactored the DKG code into its own crate within the consensus module, improving maintainability and potentially reducing compile times.
    Review: Code changes look good and match release notes.

  • f90023fe7
    Summary: Move some files around to decrease consensus internal dependencies .
    Notes: Simplified dependencies by relocating bouncer_metrics to ic-consensus-utils and moving dkg_key_manager to the DKG submodule. This paves the way for isolating the DKG submodule as a separate crate.
    Review: Code changes look good and match release notes.

  • 983a05359
    Summary: Factor CUP functionality out of dkg submodule.
    Notes: Transferred make_registry_cup and related functions to a new cup_utils module, enhancing organization and accessibility for other crates.
    Review: Code changes look good and match release notes.

  • ba248f767
    Summary: Rename field in InsufficientCyclesInMemoryGrow error.
    Notes: Updated the threshold field to required to better clarify its inclusion of both the freezing threshold and reservation cycles.
    Review: Code changes look good and match release notes.

Documentation:

  • cc086f3a1
    Summary: Add rustdoc to icrc-ledger-types.
    Notes: Enhanced comments in icrc-ledger-types to improve Rustdoc documentation.
    Review: Code changes look good and match release notes.
1 Like