Proposal to elect new release rc--2025-01-23_03-04

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 Proposal for version 550209a750be0575cc4afff5e23c04b03048c08e submitted with ID 134966](https://dashboard.internetcomputer.org/proposal/Proposal for version 550209a750be0575cc4afff5e23c04b03048c08e submitted with ID 134966).

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

Release Notes for release-2025-01-23_03-04-base (550209a750be0575cc4afff5e23c04b03048c08e)

This release is based on changes since release-2025-01-16_16-18-base (233c1ee2ef68c1c8800b8151b2b9f38e17b8440a).

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:

  • 14ba37e5c Consensus,Interface: Introduce VetKdPayload type (#3458)
  • 178aceab8 Execution,Interface: Allow accepting and burning cycles in replicated queries (#363)
  • de11e7933 Interface: Allow direct replacement of a node in subnet (#3377)
  • 6b3c8440e Interface(ic-nervous-system-agent): Add submit_proposal helper (#3451)
  • 51f818e45 Node: Add time synchronization check to setupOS (#3433)

Bugfixes:

  • 6d3c48889 Consensus,Interface(consensus): Fix the hashes-in-blocks feature implementation (#3529)
  • 8df6997dd Consensus,Interface: Replace removed ic-admin’s subcommands in ic-recovery (#3511)
  • 49e2de0d0 Execution,Interface: Fix sandbox processes metric (#3527)
  • 40b9f6c59 Execution,Interface: Charge for ic0_cycles_burn128 (#3542)
  • 82576adb0 Execution,Interface: Correct the value returned for replicated vs non replicated execution in system api (#3540)
  • 2f6fcec04 Execution,Interface: Fix canister_age metric (#3443)
  • be8de1981 Interface(ICRC_Ledger): Use default deserialization value of 0 for ledger state’s ledger_version (#3520)
  • ac71086bf Node: Update development nns_url (#3486)

Chores:

  • 00f10afcf Consensus,Interface: Group together the abortable channels and move the consensus event loops at the end (#3518)
  • f367c148b Consensus,Interface: Group the creation of bouncers similar to artifact pools (#3474)
  • 816f0edab Consensus,Interface: Improve the creation of the p2p handlers and managers (#3467)
  • 8b3296e0f Execution,Interface: Infrastructure to increase Wasm64 heap memory size (#3385)
  • 9b6d8dce4 Execution,Interface,Message Routing: Remove stream size tracking (#3382)
  • fc2787097 Interface: Bump rust to 1.84 (#3469)
  • eb9afbb50 Interface,Message Routing: Improve some state tool error messages (#3495)
  • 8bc6f97b6 Owners(IDX): Bump cc-rs (#3501)
  • 550209a75 Node: delete deploy-update-ssh-account-keys (#3549)
  • 0126ae64c Node: Update Base Image Refs [2025-01-21-0151] (#3537)

Refactoring:

  • 834bead31 Consensus,Interface(consensus): Refactor code in NiDkg to prepare VetKD implementation (#3522)
  • 6b09303da Consensus,Interface: Serialize current and next transcripts into pb::NiDkgTranscript (#3039)
  • 5993fe22c Execution,Interface: Rename SystemStateChanges to SystemStateModifications for consistency (#3555)
  • a4dd63884 Node: rename ssh services (#3548)

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/550209a750be0575cc4afff5e23c04b03048c08e/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c 550209a750be0575cc4afff5e23c04b03048c08e --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 IC release.
The NNS proposal is here: [IC NNS Proposal Proposal for version 4ba583480e05a518aa2bcf36f5a0e48475e8edc2 submitted with ID 134967](https://dashboard.internetcomputer.org/proposal/Proposal for version 4ba583480e05a518aa2bcf36f5a0e48475e8edc2 submitted with ID 134967).

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

Release Notes for release-2025-01-23_03-04-hashes-in-blocks (4ba583480e05a518aa2bcf36f5a0e48475e8edc2)

This release is based on changes since release-2025-01-23_03-04-base (550209a750be0575cc4afff5e23c04b03048c08e).

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.

Other changes:

  • 4ba583480 Consensus,Interface: Re-enabled hashes-in-blocks feature

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/4ba583480e05a518aa2bcf36f5a0e48475e8edc2/ci/tools/repro-check.sh && chmod +x repro-check.sh && ./repro-check.sh -c 4ba583480e05a518aa2bcf36f5a0e48475e8edc2 --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

proposal - 134966 — Cyberowl | CodeGov

Vote: ADOPT

Reason:

All commits match their description and no errors were found. The verification build hash also matches release_package_sha256_hex.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

Overall Summary:

The most important changes are the intro of memory limits for Wasm64 canisters max_wasm64_memory_size and dynamically adapting validation logic for Wasm32/64 architectures. Also intro of CPU overhead charge for ic0_cycles_burn128 via charge_for_cpu(&mut caller, overhead::CYCLES_BURN128).

Commits Summary

14ba37e5c
New VetKdPayload mechanism for passing VetKD agreements through consensus. Adds a data structure and conversion methods for encoding/decoding these agreements as part of a batch payload, including rejection cases and ensuring payload size limits.

178aceab8
Split the notion of “execution state changes” from “system state changes”, and adjust the code paths that apply those changes after a Wasm execution. Replicated queries is updated so that these queries now also increment the canister’s version and may accept cycles.

de11e7933
These changes make it possible to redeploy a node by replacing the old node ID with a new one, even if the old node was still in a subnet. If multiple nodes share the same IP, the code removes them all before adding the new node, then updates the subnet membership accordingly. Previously, users had to propose removal and replacement of the node ID via NNS.

6b3c8440e
New PocketIcAgent type that wraps a reference to PocketIc and allows specifying a custom principal (sender) when making calls. New submit_proposal method is added to the GovernanceCanister abstraction to streamline creating proposals and map any errors into a higher-level SubmitProposalError type.

51f818e45
This script verifies that the Chrony service is active and the system clock is synchronized, then sets the hardware clock to UTC, halting installation with logs if any failures occur.

6d3c48889
Modify how missing ingress messages are identified and retrieved by introducing a new SignedIngressId that includes both the IngressMessageId and the hash of the serialized ingress. Checks for both the ID and signature hash to ensure it fetches the correct ingress message.

8df6997dd
Fixed commands get_propose_to_update_elected_replica_versions_command and get_propose_to_deploy_guestos_to_all_subnet_nodes_command now uses guestos in add_positional_argument.

49e2de0d0
Updates the sandboxed execution controller to collect the “active” and “evicted” last-used metrics into separate vectors and then observe them in bulk instead of doing so in each iteration.

40b9f6c59
This commit introduces a CPU overhead charge for ic0_cycles_burn128 via charge_for_cpu(&mut caller, overhead::CYCLES_BURN128).

82576adb0
Updates ic0_in_replicated_execution to distinguish between replicated and non-replicated execution for reply and reject callbacks.

2f6fcec04
Fix inaccurate metric reporting for newly created canisters by excluding their initial zero-value execution timestamps from age calculations. They adjust monitoring thresholds to better track long-lived canisters and update tests to verify proper metric collection after sufficient execution rounds.

be8de1981
Adds v2_noledgerversion variants for ckBTC/ckETH ledgers to handle canisters missing internal version metadata. This is to fix migration bug.

ac71086bf
Matches description fix nns_url

00f10afcf
New abstraction, AbortableBroadcastChannels, to manage communication channels for various system components like consensus, ingress, DKG, and certification. This refactor centralizes the creation and management of these channels, reducing redundancy and improving modularity in the code.

f367c148b
A new ArtifactPools struct consolidates the logic for creating and initializing pools like ingress_pool, idkg_pool, and others, removing redundant code and improving modularity. Bouncers struct is introduced to group related bouncer implementations, enabling more consistent and maintainable handling of message validation. The IDKG pool initialization is simplified by using the block’s timestamp directly instead of a separate time source.

816f0edab
Added AbortableBroadcastChannelManager to handle consensus client lifecycle. Refactored state sync management into a unified StateSyncManager struct with start() method. Replaced scattered setup logic with centralized build()/start() patterns across P2P components.

8b3296e0f
Added separate memory limits (max_wasm64_memory_size, max_canister_memory_size_wasm64) for Wasm64 canisters. Updated validation/instrumentation logic to dynamically select memory limits based on Wasm32/64 architecture.

9b6d8dce4
Removed stream response size tracking metrics and associated accounting logic. Replaced Streams wrapper struct with direct StreamMap usage, eliminating StreamHandle indirection. Simplified stream entry handling using BTreeMap::entry() API throughout.

fc2787097
Updated all references to the ghcr.io/dfinity/ic-build image to a new version with SHA256 checksum 2e8185171700872d48fdfb4b08e175fca5be27b3fbbc4d7bed681ec8486f8b1d. Removed all configurations and dependencies targeting wasm32-wasi from various Rust-related files.

eb9afbb50
Replaced unwrap() with proper error propagation in metadata loading/writing, adding descriptive error contexts. Created write_metadata_proto function to centralize serialization logic. Marked import command as deprecated in favor of copy.

8bc6f97b6
Updated cc crate from 1.0.83 → 1.1.37 and jobserver from 0.1.26/27 → 0.1.32

550209a75
Deleted deploy-updated-ssh-account-keys service/script files and their host OS build configuration entries

0126ae64c
Updating base container image references.

834bead31
Changed current_transcript() to return Option and added unwrap()/expect() at call sites. Replaced into_next_transcripts() with as_next_transcripts() that uses current transcripts when next unavailable

6b09303da
Refactored DKG transcript handling to split NiDkgTag-based differentiation into distinct HighThreshold and LowThreshold transcripts. Removal of TaggedNiDkgTranscript wrapper with key ID tracking.

5993fe22c
SystemStateChanges struct and related methods/variables renamed to SystemStateModifications throughout codebase. Updated “changes” → “modifications” in method names take_system_state_changes → take_system_state_modifications

a4dd63884
Changed “account” to “user” terminology setup-ssh-account-keys → setup-ssh-user-keys and clarified host key generation (setup-ssh-keys → generate-host-ssh-keys). Updated docs/Boot.adoc to match service name changes and correct threshold transcript references

proposal - 134967 — Cyberowl | CodeGov

Vote: ADOPT

Reason:

Only one commit to enable HASHES_IN_BLOCKS_FEATURE_ENABLED and it matches description and no errors were found. The verification build hash also matches release_package_sha256_hex.

Hash Match: MATCH

2 Urls: MATCH

Feedback: NONE

Proposer Check: MATCH

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.

2 Likes

Proposal #134966 — Zack | CodeGov

for release-2025-01-23_03-04-base.

Vote: Adopted.
Reason: Builds fine and the hash matches for GUESTOS, HOSTOS and SETUPOS.

Review of commits: pending

Proposal #134967 — Zack | CodeGov

for release-2025-01-23_03-04-hashes-in-blocks.

Vote: Adopted.
Reason: Builds fine and the hash matches for GUESTOS, HOSTOS and SETUPOS.

Other changes:
4ba583480 Consensus,Interface: Re-enabled hashes-in-blocks feature
The only change sets HASHES_IN_BLOCKS_FEATURE_ENABLED to true in order to enable the feature.

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 134966 - Hamish | CodeGov

Vote: Adopt
Reason: I have successfully run the build script and in my opinion all the commits listed look fine and match their descriptions.

Full review:

Features:

  • 14ba37e5c Consensus,Interface: Introduce VetKdPayload type (#3458)
    Review: Looks fine + matches description
    Notes: Adds a load of new types relating to VetKeys (eg. VetKdPayload, VetKdAgreement, VetKdPayloadValidationFailure, etc.) and also moves 2 utility functions from rs/interfaces to rs/types.

  • 178aceab8 Execution,Interface: Allow accepting and burning cycles in replicated queries (#363)
    Review: Looks fine + matches description
    Notes: Refactors the sandbox and the execution environment so that each replicated canister call now returns a CanisterStateChanges instance which contains the system_state_changes (eg. cycles changes) and then an optional execution_state_modifications (eg. memory changes). This is then used to allow replicated queries to accept cycles from incoming requests.

  • de11e7933 Interface: Allow direct replacement of a node in subnet (#3377)
    Review: Looks fine + matches description
    Notes: Updates the Registry canister, implementing the ability for node providers to directly replace an existing node which is part of a subnet with another node, provided that the 2 nodes have the same IP address.

  • 6b3c8440e Interface(ic-nervous-system-agent): Add submit_proposal helper (#3451)
    Review: Looks fine + matches description
    Notes: Adds the PocketIcAgent struct and then implements CallCanisters for it and also for PocketIc, allowing them to be a drop in replacement for ic_agent::Agent for making calls to canisters either from a specified sender, or from the anonymous principal. Then adds manage_neuron and submit_proposal helper function which take any CallCanisters implementation, making it easy to submit proposals via ic_agent::Agent or when using PocketIc.

  • 51f818e45 Node: Add time synchronization check to setupOS (#3433)
    Review: Looks fine + matches description
    Notes: Uses Network Time Protocol to synchronise the hardware clock when starting up SetupOS.

Bugfixes:

  • 6d3c48889 Consensus,Interface(consensus): Fix the hashes-in-blocks feature implementation (#3529)
    Review: Looks fine + matches description
    Notes: Fixes the hashes in blockes feature by introducing the SignedIngressId type which caters for the fact that ingress_message_id alone doesn’t uniquely identify a message, since a message could have exactly the same content but have a different signature. So this type stores both the ingress_message_id and the ingress_bytes_hash (which is a hash of the full message including the signature) to uniquely identify each message, then when reassembling blocks it ensures that the correct message is added based on both the message content and signature matching.

  • 8df6997dd Consensus,Interface: Replace removed ic-admin’s subcommands in ic-recovery (#3511)
    Review: Looks fine + matches description
    Notes: Updates the names of some IC admin functions (propose-to-update-elected-replica-versions → propose-to-revise-elected-guestos-versions and propose-to-update-subnet-replica-version → propose-to-deploy-guestos-to-all-subnet-nodes).

  • 49e2de0d0 Execution,Interface: Fix sandbox processes metric (#3527)
    Review: Looks fine + matches description
    Notes: Gathers all the sandbox process metrics data into vectors and then flushes them within a tight loop to avoid the likelihood of under-reporting due to a measurement being taken midway through the data being flushed.

  • 40b9f6c59 Execution,Interface: Charge for ic0_cycles_burn128 (#3542)
    Review: Looks fine + matches description
    Notes: Adds a charge of 500 cycles for calling ic0_cycles_burn128.

  • 82576adb0 Execution,Interface: Correct the value returned for replicated vs non replicated execution in system api (#3540)
    Review: Looks fine + matches description
    Notes: Fixes a bug where some within some contexts ic0_in_replicated_execution was incorrectly returning true.

  • 2f6fcec04 Execution,Interface: Fix canister_age metric (#3443)
    Review: Looks fine + matches description
    Notes: Excludes newly created canisters from the canister age metrics (number of rounds since full execution) and also adds a few larger buckets for collecting the metrics into.

  • be8de1981 Interface(ICRC_Ledger): Use default deserialization value of 0 for ledger state’s ledger_version (#3520)
    Review: Looks fine + matches description
    Notes: Makes the ledger_version field default to 0 if not present rather than the current version, this is because if the field is not present, then the ledger must be on a version before the field was introduced, aka version 0.

  • ac71086bf Node: Update development nns_url (#3486)
    Review: Looks fine + matches description
    Notes: Within test setups, replaces the fake NNS url https://wiki.internetcomputer.org with https://cloudflare.com/cdn-cgi/trace because the former doesn’t support IPv6.

Chores:

  • 00f10afcf Consensus,Interface: Group together the abortable channels and move the consensus event loops at the end (#3518)
    Review: Looks fine + matches description
    Notes: Extracts the logic to set up the various outbound/inbound channels required by consensus out of start_consensus and into the new AbortableBroadcastChannels struct.

  • f367c148b Consensus,Interface: Group the creation of bouncers similar to artifact pools (#3474)
    Review: Looks fine + matches description
    Notes: Extracts the logic to set up the various bouncers required by consensus out of start_consensus and into the new Bouncers struct.

  • 816f0edab Consensus,Interface: Improve the creation of the p2p handlers and managers (#3467)
    Review: Looks fine + matches description
    Notes: Refactors the StateSyncManager to simplify its creation and usage.

  • 8b3296e0f Execution,Interface: Infrastructure to increase Wasm64 heap memory size (#3385)
    Review: Looks fine + matches description
    Notes: Introduces the new max_wasm64_memory_size setting and switches canisters running in wasm64 mode to using this setting instead of the current max_wasm_memory_size setting, for now both are set to the same value of 4GB but going forward the wasm64 setting will be increased.

  • 9b6d8dce4 Execution,Interface,Message Routing: Remove stream size tracking (#3382)
    Review: Looks fine + matches description
    Notes: Removes a load of code which used to track the memory usage of the streams and data involved in handling guaranteed responses.

  • fc2787097 Interface: Bump rust to 1.84 (#3469)
    Review: Looks fine + matches description
    Notes: Bumps Rust from 1.82.0 to 1.84.0 and fixes a few issues raised by the new clippy version (eg. eliding unnecessary lifetimes).

  • eb9afbb50 Interface,Message Routing: Improve some state tool error messages (#3495)
    Review: Looks fine + matches description
    Notes: Modifies the functions within the state_tool which read/write metadata to return errors rather than unwrapping, then outputs more details to the client in the case of an error.

  • 8bc6f97b6 Owners(IDX): Bump cc-rs (#3501)
    Review: Looks fine + matches description
    Notes: Bumps cc from 1.0.83 to 1.1.37.

  • 550209a75 Node: delete deploy-update-ssh-account-keys (#3549)
    Review: Looks fine + matches description
    Notes: Removes the unused deploy-updated-ssh-account-keys service.

  • 0126ae64c Node: Update Base Image Refs [2025-01-21-0151] (#3537)
    Review: Looks fine + matches description
    Notes: Updates the base IC-OS image references.

Refactoring:

  • 834bead31 Consensus,Interface(consensus): Refactor code in NiDkg to prepare VetKD implementation (#3522)
    Review: Looks fine + matches description
    Notes: Refactors dkg::Summary::current_transcript to return an Option because going forward a transcript won’t always be able to be returned for the VetKd tag.

  • 6b09303da Consensus,Interface: Serialize current and next transcripts into pb::NiDkgTranscript (#3039)
    Review: Looks fine + matches description
    Notes: Serializes the map of transcripts into a vec of transcripts because each transcript already contains its tag and so the map can still be correctly reconstructed during deserialization.

  • 5993fe22c Execution,Interface: Rename SystemStateChanges to SystemStateModifications for consistency (#3555)
    Review: Looks fine + matches description
    Notes: Renames system_state_changes to system_state_modifications in a few places.

  • a4dd63884 Node: rename ssh services (#3548)
    Review: Looks fine + matches description
    Notes: Renames a few ssh services (eg. setup-ssh-keys to generate-host-ssh-keys).

Proposal 134967

Vote: Adopt
Reason: I have successfully run the build script and there is only a single additional commit which simply re-enables the HASHES_IN_BLOCKS_FEATURE_ENABLED flag.

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 134966 – Zane | CodeGov

Vote: ADOPT

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

Features:

14ba37e5c Added new module to ic-interfaces for vetkd payload related errors, 2 structs are defined in the module: InvalidVetKdPayload and VetKdPayloadValidationFailed, both has been added as variants of InvalidPayloadReason and VetKdPayloadValidationFailed respectively. Also added vetkd module to ic-types, it contains two enums defining vetkeys error codes, consensus agreement result and a struct for the VetKdPayload, which is a map indexing agreements by their callback id. Protobuf definitions and conversion logic for VetKdErrorCode and VetKdAgreement has also been added. Finally iterator_to_bytes and slice_to_messages have been moved from rs/interfaces/src/batch_payload.rs to rs/types/types/src/batch.rs.

178aceab8 Modified canister sandbox and execution environment logic to allow more granularity over which changes need to be persisted, allowing to save system state changes when execution ones have to be discarded, i.e replicated query. This was done by making StateModifications and CanisterStateChanges type fields mandatory and wrapping into a single optional field all the fields used to track execution state changes. Part of the reason for this change is to allow replicated queries to charge and burn cycles, so ic0_msg_cycles_refunded_helper, ic0_msg_cycles_available_helper and ic0_cycles_burn128 have been update to allow ReplicatedQuery api type if it is run in replicated mode.

de11e7933 Refactored node management logic to support replacing of a node running in a subnet with a new one provided it has the same IP. The mutation logic was moved out of do_remove_node to a separate function called make_remove_or_replace_node_mutations, this was done to make it possible to reuse it elsewhere so that multiple replace/removal mutations can be constructed before being applied, making it possible to perform them atomically. Furthermore logic was added for replace mutations. Previously trying to remove a node in a subnet would result in a panic, now if a new node id is provided, the subnet’s membership will be updated and the old node will be removed.
do_add_node_ was updated to make use of make_remove_or_replace_node_mutations directly instead of calling do_remove_node. When adding a new node, if exactly one node is found to use the same IP, a replace mutation is constructed and applied, otherwise the old logic is used.

6b3c8440e Added PocketIcAgent struct which is a PocketIc wrapper used to specify a sender Principal when making calls. Added manage_neuron and submit_proposal helper functions to facilitate writing integration tests. propose_and_wait was updated to use the pocket ic agent and submit_proposal. Modified SectionTimer implementation of Drop trait to log in console if the current thread is unwinding due to a panic.

Bugfixes:

6d3c48889 Fixed hashes in blocks bug caused by IngressMessageId not being a reliable way to uniquely identify ingress messages, which led to nodes reconstructing different blocks from the one the block maker proposed, potentially leading to finalization stalling.
To solve this issue SignedIngressId struct has been introduced as a new identifier for ingress messages, it still contains IngressMessageId for convenience as it used in the ingress pool, but relies on ingress_bytes_hash, which is obtained by hashing the signed request bytes, to identify the message.

8df6997dd Updated ic recovery tool to use new subcommands when calling ic-admin.

49e2de0d0 In monitor_and_evict_sandbox_processes use two vectors to store time of last usage for active and evicted processes and moved metrics observation to a tight loop to both decrease the likelihood of metrics being scraped during collection and to record possibly more up to date metrics.

40b9f6c59 Charge 500 instructions for ic0_cycles_burn128 system API.

82576adb0 Fixed ic0_in_replicated_execution function to match behaviour described in the IC interface specification by returning proper value for ReplyCallback and RejectCallback ApiType variants based on current execution mode. InspectMessage also mistakenly was reported as running in replicated mode, when it only runs on a single node.

2f6fcec04 When initializing SchedulerMetrics increased the histogram of number of rounds for which a canister hasn’t been scheduled from 500 to 5k. In inner_round only observe the canister_age metric for canister whose last_full_execution_round is greater than 0.

be8de1981 Use default deserialization value of 0 for ledger state’s ledger_version instead of setting it to LEDGER_VERSION by calling default_ledger_version.

ac71086bf Same as description.

Chores:

8b3296e0f Added scaffolding code required to specify a separate heap size for canister with wasm64 enabled, but for the time being it is still set to 4GiB.

9b6d8dce4 Deleted logic and tests related to tracking stream size for guaranteed responses.

eb9afbb50 Modified load_metadata_proto to return a Result with std::io::Error as the error type, this way the user can be notified in case file.read_to_end fails, previously the tool would panic.
The logic to write metadata has been moved to a helper method write_metadata_proto and similarly for load_metadata_proto it returns a Result with std::io::Error if either encoding or writing steps fail.

fc2787097 Bumped Rust version from 1.82 to 1.84.

8bc6f97b6 Same as description.

0126ae64c Updated base image refs for ICOS.

Refactoring:`

5993fe22c Renamed SystemStateChanges to SystemStateModifications.

a4dd63884 Same as description.

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 134967 – Zane | CodeGov

Vote: ADOPT

Reason: Build completes successfully and hashes match, this build is the same as the one proposed with 134966 but with the feature flag for hashes in blocks feature enabled, so I’ve decided voted to adopt.

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

Summary:

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

Detailed Review:

Commits

Features:

  • 14ba37e5c Consensus,Interface: Introduce VetKdPayload type (#3458)
    Notes: The PR has introduced certain new types and enums in code related to vetkeys. VetKdPayload, VetKdAgreement, VetKdErrorCode etc etc are added t vetkd.rs file. Also functions like iterator_to_bytes and slice_to_messages are moved from rs/interfaces to rs/types to make testing them easier.
    Review: Code changes look good and match release notes.
  • 178aceab8 Execution,Interface: Allow accepting and burning cycles in replicated queries (#363)
    Notes: Code changes has been done in casnister_sandbox where system_state_changes is now divided into system_state_changes and execution_state_modifications and relevant code paths has been updated. Now each replicated canister calls returns CanisterStateChanges which allows replicated queries to accept cycles.execution_state_changes is specifically made optional in struct CanisterStateChanges .
    Review: Code changes look good and match release notes.
  • de11e7933 Interface: Allow direct replacement of a node in subnet (#3377)
    Notes: This PR now allows the ability for a node to be replaced even when it is in the subnet with another node which has the same ip. Function make_remove_or_replace_node_mutations has been added to prepare remove node mutation. Function do_replace_node_with_another is also implemented in do_remove_node_directly.rs for replacing the node in the subnet. Certain tests helpers and tests have been added to enhance the test suite around the functionality introduced.
    Review: Code changes look good and match release notes.
  • 6b3c8440e Interface(ic-nervous-system-agent): Add submit_proposal helper (#3451)
    Notes: The PR introduces a new PocketIcAgent type that wraps PocketIC and allows specifying non-anonymous principal ( sender ) when making calls. Submit_proposal helper method is added along with SubmitProposalError, to simplify and make the proposal creation code more organized. Also CallCanisters is implemented for both PocketIcAgent and PocketIc thus enabling a more uniform calling interface.
    Review: Code changes look good and match release notes.
  • 51f818e45 Node: Add time synchronization check to setupOS (#3433)
    Notes: Its a simple addition in setup os, to check for system clock synchronization with ntp, and forces hw clock to be in utc.
    Review: Code changes look good and match release notes.

Bugfixes:

  • 6d3c48889 Consensus,Interface(consensus): Fix the hashes-in-blocks feature implementation (#3529)
    Notes: The PR attempts to fix hashes-in-clock feature. Currently this feature is disabled on mainnet, so no issues there. Currently the ingressMessageId does not uniquely identify ingressMessage. For same ingress message content with different signatures, ingressMessageId could be same. This can lead to to generation of wrong message from ingressMessageId and thus the wrong block.
    To fix this SignedIngressId type is now introduced with contains both ingressMessageId and hash of original ingress message message bytes. Now when reconstructing the block with ingressMesasgeId, double check is done using SignedIngressId.
    Review: Code changes look good and match release notes.
  • 8df6997dd Consensus,Interface: Replace removed ic-admin’s subcommands in ic-recovery (#3511)
    Notes: Certain ic-admin functions names have been changed and relevant tests are also updated. Propose-to-update-elected-replica-versions is updated to propose-to-revise-elected-guestos-versions, and propose-to-update-subnet-replica-version is updated to propose-to-deploy-guestos-to-all-subnet-nodes.
    Review: Code changes look good and match release notes.
  • 49e2de0d0 Execution,Interface: Fix sandbox processes metric (#3527)
    Notes: This PR modifies the metric data collection in small vectors f64 values for more efficient and consistent data gathering. Also the metrics are observed in a tight loop thus preventing underreporting of the number of sandboxes.
    Review: Code changes look good and match release notes.
  • 40b9f6c59 Execution,Interface: Charge for ic0_cycles_burn128 (#3542)
    Notes: CYCLES_BURN128 constant is introduced with a value of 500 cycles, and is used to charge for cycles when ic0_cycles_burn128 is called.
    Review: Code changes look good and match release notes.
  • 82576adb0 Execution,Interface: Correct the value returned for replicated vs non replicated execution in system api (#3540)
    Notes: This PR fixes a bug in system api where inspect_message, reply_callback , and reject_callback where returning incorrect value of true. Now value is returned based on a match on self.execution_parameters.execution_mode.
    Review: Code changes look good and match release notes.
  • 2f6fcec04 Execution,Interface: Fix canister_age metric (#3443)
    Notes: The PR fixes scheduler_canister_age_rounds for newly created canisters. As they had 0 as a value for last round they executed, they ended up having very large value of current round. Now they are excluded from cxanister_age metric observation. Also the upper bound of canister age in histogram has been updated to 5000.
    Review: Code changes look good and match release notes.
  • be8de1981 Interface(ICRC_Ledger): Use default deserialization value of 0 for ledger state’s ledger_version (#3520)
    Notes: ledger_version was previously incorrectly set to current version , and now has been corrected to 0 so that if the ledger_version is not set then the ledger should be on the version before the field has been introduced hence 0.
    Review: Code changes look good and match release notes.
  • ac71086bf Node: Update development nns_url (#3486)
    Notes: In the development environment nns_url has been updated from pointing to wik.internetcomputer.org to cloudflare.com/cdn-cgi/trace as it supports ipv6.
    Review: Code changes look good and match release notes.

Chores:

  • 00f10afcf Consensus,Interface: Group together the abortable channels and move the consensus event loops at the end (#3518)
    Notes: The code where various channels outbound/inbound were set has been refactored and removed from start_consensus() function to struct AbortableBroadcastChannels struct in rs/replica/setup_ic_network/src/lib.rs.
    Review: Code changes look good and match release notes.
  • f367c148b Consensus,Interface: Group the creation of bouncers similar to artifact pools (#3474)
    Notes: ArtifactPools is introduced to consolidate code for creating pools like ingress_pool, idkg_pool which were previously initialized from init_artifact_pools(), thus removing some redundant code. Bouncers structure is also defined to group bouncer related implementations of ingress, consensus, dkg etc etc to make it more consistent.
    Review: Code changes look good and match release notes.
  • 816f0edab Consensus,Interface: Improve the creation of the p2p handlers and managers (#3467)
    Notes: Added a new struct AbortableBroadcastChannelManager to consensus_manager and refactored state_sync_manager to improve creation of p2p handlers and managers.
    Review: Code changes look good and match release notes.
  • 8b3296e0f Execution,Interface: Infrastructure to increase Wasm64 heap memory size (#3385)
    Notes: Introduces a new constant MAX_WASM64_MEMORY_IN_BYTES and new config max_wasm64_memory_size. Code changes has been done to make sure to use this config where the canisters are running in wasm64 mode. This is to support increase in the memory later on by just changing one constant. Right now the value is 4GB only.
    Review: Code changes look good and match release notes.
  • 9b6d8dce4 Execution,Interface,Message Routing: Remove stream size tracking (#3382)
    Notes: A lot of code has been removed which was tracking stream size as the size limit is lowered to 10MB x number of subnets.
    Review: Code changes look good and match release notes.
  • fc2787097 Interface: Bump rust to 1.84 (#3469)
    Notes: The PR upgrades rust from 1.82 to 1.84, also fixes some of the code for the new version.
    Review: Code changes look good and match release notes.
  • eb9afbb50 Interface,Message Routing: Improve some state tool error messages (#3495)
    Notes: Improves the text of error messages in state_tool copy command. Also modifies function to return errors rather then just unwrapping.
    Review: Code changes look good and match release notes.
  • 8bc6f97b6 Owners(IDX): Bump cc-rs (#3501)
    Notes: upgrades cc from 1.0.83 to 1.1.37. Also a minor mump to jobserver.
    Review: Code changes look good and match release notes.
  • 550209a75 Node: delete deploy-update-ssh-account-keys (#3549)
    Notes: unused code deploy-update-ssh-account-keys is now removed as it is no longer needed.
    Review: Code changes look good and match release notes.
  • 0126ae64c Node: Update Base Image Refs [2025-01-21-0151] (#3537)
    Notes: Updates base image references.
    Review: Code changes look good and match release notes.

Refactoring:

  • 834bead31 Consensus,Interface(consensus): Refactor code in NiDkg to prepare VetKD implementation (#3522)
    Notes: This PR refactors code to prepare for vetkd implementation. Modifies Summary::current_transcript to return Option rather than panicking as there will be situations where next_transcripts will contain tags which may not be present in current_transcripts. .Also reimplements into_next_transcripts and move it to dkg crate.
    Review: Code changes look good and match release notes.
  • 6b09303da Consensus,Interface: Serialize current and next transcripts into pb::NiDkgTranscript (#3039)
    Notes: Since NiDkgTag is already a part of NiDkgTranscript , it does not make sense to serialize NiDkgTag separately. Hence code changes are done to rename build_tagged_transcripts_vec to build_transcripts_vec and return Vecpb::NiDkgTranscript instead of Vecpb::TaggedNiDkgTranscript.
    Review: Code changes look good and match release notes.
  • 5993fe22c Execution,Interface: Rename SystemStateChanges to SystemStateModifications for consistency (#3555)
    Notes: A simple renaming of SystemStateChanges to SystemStateModifications at multiple places.
    Review: Code changes look good and match release notes.
  • a4dd63884 Node: rename ssh services (#3548)
    Notes: Renames a few ssh services specifically setup-ssh-account-keys → setup-ssh-user-keys and setup-ssh-keys → generate-host-ssh-keys.
    Review: Code changes look good and match release notes.

Proposal: 134967

Summary:

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

Detailed Review:

Other changes:

4ba583480 Consensus,Interface: Re-enabled hashes-in-blocks feature
Notes: hashes-in-block feature has been again enabled by changing the constant HASHES_IN_BLOCKS_FEATURE_ENABLED to true
Review: Code changes look good and match release notes.

1 Like

Proposal 134966 - 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

  • 14ba37e5c
    Summary: Introduce VetKdPayload type (#3458)
    Notes: Introduces several new types related to VetKeys, such as VetKdPayload, VetKdAgreement, and VetKdPayloadValidationFailure. Additionally, moves two utility functions from rs/interfaces to rs/types.
    Review: Code changes matches the commit message.

  • 178aceab8
    Summary: Enable accepting and burning cycles in replicated queries (#363)
    Notes: Updates the sandbox and execution environment to return a CanisterStateChanges instance for replicated canister calls. This encapsulates system_state_changes (e.g., cycle adjustments) and optionally execution_state_modifications (e.g., memory updates), facilitating cycles acceptance during replicated queries.
    Review: Code changes matches the commit message.

  • de11e7933
    Summary: Allow direct node replacement in a subnet (#3377)
    Notes: Modifies the Registry canister to enable node providers to replace an existing subnet node with another, as long as the IP addresses match.
    Review: Code changes matches the commit message.

  • 6b3c8440e
    Summary: Add submit_proposal helper (#3451)
    Notes: Adds the PocketIcAgent struct and implements CallCanisters for it and PocketIc, making them compatible replacements for ic_agent::Agent. Introduces manage_neuron and submit_proposal helper functions to simplify proposal submissions.
    Review: Code changes matches the commit message.

  • 51f818e45
    Summary: Add time synchronization check to setupOS (#3433)
    Notes: Incorporates Network Time Protocol (NTP) to synchronize the hardware clock during SetupOS initialization.
    Review: Code changes matches the commit message.

Bugfixes:

  • 6d3c48889
    Summary: Resolve issues with the hashes-in-blocks feature (#3529)
    Notes: Corrects the hashes-in-blocks feature by introducing SignedIngressId, which ensures unique identification of messages by combining ingress_message_id with a hash of the full message, including the signature.
    Review: Code changes matches the commit message.

  • 8df6997dd
    Summary: Update ic-recovery with renamed IC admin subcommands (#3511)
    Notes: Adapts IC recovery processes to align with updated IC admin subcommands, such as renaming specific proposal commands for better clarity.
    Review: Code changes matches the commit message.

  • 49e2de0d0
    Summary: Correct sandbox process metrics reporting (#3527)
    Notes: Consolidates sandbox process metrics into vectors and flushes them in a tight loop, reducing the risk of incomplete data reporting.
    Review: Code changes matches the commit message.

  • 40b9f6c59
    Summary: Implement charges for ic0_cycles_burn128 (#3542)
    Notes: Adds a fixed cycle cost for invoking ic0_cycles_burn128.
    Review: Code changes matches the commit message.

  • 82576adb0
    Summary: Fix incorrect return values for execution context (#3540)
    Notes: Resolves inconsistencies in ic0_in_replicated_execution return values in certain contexts.
    Review: Code changes matches the commit message.

  • 2f6fcec04
    Summary: Refine canister age metric reporting (#3443)
    Notes: Excludes new canisters from canister age metrics and introduces broader metric collection buckets.
    Review: Code changes matches the commit message.

  • be8de1981
    Summary: Use default value for ledger_version deserialization (#3520)
    Notes: Defaults ledger_version to 0 if not explicitly set, reflecting the versioning logic before its introduction.
    Review: Code changes matches the commit message.

  • ac71086bf
    Summary: Update test environment NNS URL (#3486)
    Notes: Replaces an outdated fake NNS URL with a more suitable alternative supporting IPv6.
    Review: Code changes matches the commit message.

Chores:

  • 00f10afcf
    Summary: Consolidate abortable channels and restructure event loops (#3518)
    Notes: Groups outbound/inbound channel setup logic into a new AbortableBroadcastChannels struct, simplifying start_consensus.
    Review: Code changes matches the commit message.

  • f367c148b
    Summary: Simplify bouncer creation process (#3474)
    Notes: Moves bouncer setup logic into a standalone Bouncers struct.
    Review: Code changes matches the commit message.

  • 816f0edab
    Summary: Enhance creation of P2P handlers (#3467)
    Notes: Streamlines the initialization of StateSyncManager for improved usability.
    Review: Code changes matches the commit message.

  • 8b3296e0f
    Summary: Support larger Wasm64 memory sizes (#3385)
    Notes: Adds a max_wasm64_memory_size setting, initially set to match the existing memory limit but allowing for future increases.
    Review: Code changes matches the commit message.

  • 9b6d8dce4
    Summary: Remove stream size tracking (#3382)
    Notes: Eliminates code related to stream memory usage tracking, simplifying the response handling logic.
    Review: Code changes matches the commit message.

  • fc2787097
    Summary: Update Rust version (#3469)
    Notes: Upgrades Rust to 1.84.0, addressing issues flagged by the updated Clippy tool.
    Review: Code changes matches the commit message.

  • eb9afbb50
    Summary: Improve error messages in state tools (#3495)
    Notes: Refines error handling in state_tool functions, providing more detailed client feedback.
    Review: Code changes matches the commit message.

  • 8bc6f97b6
    Summary: Update cc-rs dependency (#3501)
    Notes: Upgrades the cc crate to the latest version for compatibility.
    Review: Code changes matches the commit message.

  • 550209a75
    Summary: Remove obsolete SSH service (#3549)
    Notes: Deletes the unused deploy-update-ssh-account-keys service.
    Review: Code changes matches the commit message.

  • 0126ae64c
    Summary: Update base image references (#3537)
    Notes: Updates IC-OS base image references.
    Review: Code changes matches the commit message.

Refactoring:

  • 834bead31
    Summary: Prepare NiDkg for VetKD implementation (#3522)
    Notes: Adjusts dkg::Summary::current_transcript to return an Option, anticipating cases where a transcript is unavailable for VetKd.
    Review: Code changes matches the commit message.

  • 6b09303da
    Summary: Serialize transcripts as vectors (#3039)
    Notes: Serializes transcript maps into vectors for easier deserialization while preserving tag-based reconstruction.
    Review: Code changes matches the commit message.

  • 5993fe22c
    Summary: Rename system state changes (#3555)
    Notes: Updates terminology from SystemStateChanges to SystemStateModifications for improved consistency.
    Review: Code changes matches the commit message.

  • a4dd63884
    Summary: Rename SSH services (#3548)
    Notes: Renames SSH-related services for clarity, such as changing setup-ssh-keys to generate-host-ssh-keys.
    Review: Code changes matches the commit message.

Proposal 134967

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

Other changes:

  • 4ba583480
    Summary: Re-enabled hashes-in-blocks feature
    Notes: HASHES_IN_BLOCKS_FEATURE_ENABLED is set to true.
    Review: Code changes matches the commit message.
1 Like

Proposal 134966 - 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:

  • 14ba37e5c
    Summary: Introduce VetKdPayload type.
    Notes: Add new VetKeys related types (VetKdPayload, VetKdAgreement, VetKdPayloadValidationFailure) and refactors utility functions from rs/interfaces to rs/types for improved organization.
    Review: The description matches the code changes.

  • 178aceab8
    Summary: Allow accepting and burning cycles in replicated queries.
    Notes: Refactor the sandbox and execution environment to return a CanisterStateChanges instance for replicated canister calls, enabling cycles acceptance and providing a structured representation of system and execution state modifications.
    Review: The description matches the code changes.

  • de11e7933
    Summary: Allow direct replacement of a node in subnet.
    Notes: Allow node providers to replace existing subnet nodes with others having identical IP addresses in the Registry canister.
    Review: The description matches the code changes.

  • 6b3c8440e
    Summary: Add submit_proposal helper.
    Notes: Introduces the PocketIcAgent struct and implements CallCanisters for it and PocketIc, enabling their use as replacements for ic_agent::Agent and providing helper functions like manage_neuron and submit_proposal for simplified neuron management and proposal submissions.
    Review: The description matches the code changes.

  • 51f818e45
    Summary: Add time synchronization check to setupOS.
    Notes: Integrate Network Time Protocol (NTP) into SetupOS to synchronize the hardware clock during the initialization process.
    Review: The description matches the code changes.

Bugfixes:

  • 6d3c48889
    Summary: Fix the hashes-in-blocks feature implementation.
    Notes: Improves the hashes-in-blocks feature by introducing SignedIngressId, which combines ingress_message_id with a hash of the signed message for enhanced security and uniqueness.
    Review: The description matches the code changes.

  • 8df6997dd
    Summary: Replace removed ic-admin’s subcommands in ic-recovery.
    Notes: Refactor IC recovery procedures by aligning them with the latest, more descriptive naming conventions for IC admin subcommands.
    Review: The description matches the code changes.

  • 49e2de0d0
    Summary: Fix sandbox processes metric.
    Notes: Optimize sandbox process metric reporting by consolidating them into vectors and flushing them in a tight loop, minimizing the chance of data loss.
    Review: The description matches the code changes.

  • 40b9f6c59
    Summary: Charge for ic0_cycles_burn128.
    Notes: Add a fixed cycle cost for invoking the ic0_cycles_burn128 canister method.
    Review: The description matches the code changes.

  • 82576adb0
    Summary: Correct the value returned for replicated vs non replicated execution in system api.
    Notes: Resolve discrepancies in the ic0_in_replicated_execution function’s return values across different execution scenarios.
    Review: The description matches the code changes.

  • 2f6fcec04
    Summary: Fix canister_age metric.
    Notes: Exclude new canisters from age-related metrics and refines metric granularity by introducing wider collection buckets.
    Review: The description matches the code changes.

  • be8de1981
    Summary: Use default deserialization value of 0 for ledger state’s ledger_version.
    Notes: Set the default ledger_version to 0 if not explicitly specified, aligning with the pre-versioning behavior.
    Review: The description matches the code changes.

  • ac71086bf
    Summary: Update development nns_url.
    Notes: Update the fake NNS URL to a more suitable IPv6-compatible alternative, addressing potential issues with the previous outdated URL.
    Review: The description matches the code changes.

Chores:

  • 00f10afcf
    Summary: Group together the abortable channels and move the consensus event loops at the end.
    Notes: Refactor consensus setup by encapsulating outbound/inbound channel logic into an AbortableBroadcastChannels struct, improving start_consensus readability and maintainability.
    Review: The description matches the code changes.

  • f367c148b
    Summary: Group the creation of bouncers similar to artifact pools.
    Notes: Refactor bouncer setup logic by encapsulating it within a dedicated Bouncers struct.
    Review: The description matches the code changes.

  • 816f0edab
    Summary: Improve the creation of the p2p handlers and managers.
    Notes: Simplify the initialization process for StateSyncManager, enhancing its ease of use.
    Review: The description matches the code changes.

  • 8b3296e0f
    Summary: Infrastructure to increase Wasm64 heap memory size.
    Notes: Add a new setting max_wasm64_memory_size, initially aligned with the current memory limit, enabling potential future increases in Wasm64 memory capacity.
    Review: The description matches the code changes.

  • 9b6d8dce4
    Summary: Remove stream size tracking.
    Notes: Remove code for tracking stream memory usage, streamlining response handling logic.
    Review: The description matches the code changes.

  • fc2787097
    Summary: Bump rust to 1.84.
    Notes: Upgrade the Rust compiler to 1.84.0 and resolve warnings generated by the updated Clippy linting tool.
    Review: The description matches the code changes.

  • eb9afbb50
    Summary: Improve some state tool error messages.
    Notes: Refactor state_tool error handling by providing more specific and informative client feedback.
    Review: The description matches the code changes.

  • 8bc6f97b6
    Summary: Bump cc-rs.
    Notes: Upgrade the cc crate to the latest version to ensure compatibility and address potential issues.
    Review: The description matches the code changes.

  • 550209a75
    Summary: delete deploy-update-ssh-account-keys.
    Notes: Remove the obsolete deploy-update-ssh-account-keys service.
    Review: The description matches the code changes.

  • 0126ae64c
    Summary: Update Base Image Refs [2025-01-21-0151].
    Notes: Update the base IC-OS image references.
    Review: The description matches the code changes.

Refactoring:

  • 834bead31
    Summary: Refactor code in NiDkg to prepare VetKD implementation.
    Notes: Adjust dkg::Summary::current_transcript to return an Option, as transcripts may not always be available for the VetKd tag in future implementations.
    Review: The description matches the code changes.

  • 6b09303da
    Summary: Serialize current and next transcripts into pb::NiDkgTranscript.
    Notes: Optimize transcript map serialization by converting them into vectors, enabling efficient deserialization while maintaining tag-based reconstruction capabilities.
    Review: The description matches the code changes.

  • 5993fe22c
    Summary: Rename SystemStateChanges to SystemStateModifications for consistency.
    Notes: Standardize terminology by replacing SystemStateChanges with SystemStateModifications for better consistency.
    Review: The description matches the code changes.

  • a4dd63884
    Summary: rename ssh services.
    Notes: Rename SSH-related services, such as changing setup-ssh-keys to generate-host-ssh-keys for clarity.

Proposal 134966

Summary

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

Commits

Other changes:

  • 4ba583480
    Summary: Re-enabled hashes-in-blocks feature
    Notes: Re-enabled the hashes-in-block feature by setting the constant HASHES_IN_BLOCKS_FEATURE_ENABLED to true.
    Review: The description matches the code changes.
1 Like

Proposal Reviews | Tim - CodeGov

Proposal 134966

Vote: Adopt

Reason: Build is successful, hashes match, commits match descriptions and the reasoning behind the changes is sound. I have selectively reviewed Consensus, Interface and Node commits as detailed below.

Review

Features:
[14ba37e5c)]
Adds new types VetKdPayload, InvalidVetKdPayloadReason, VetKdPayloadValidationFailure, VetKdErrorCode and VetKdAgreement along with further changes as per the description.

[de11e7933]
Adds new methods do_replace_node_with_another and make_remove_or_replace_node_mutations in order to allow direct replacement of a node in subnet. Changes do_add_node_ to check for and remove multiple nodes with the same IP address as the new node.

[6b3c8440e]
Adds submit_proposal and manage_neuron methods to rs/nervous_system/agent/. Also adds PocketIcAgent type in order to allow sender to be specified.

[51f818e45]
Adds new script to SetupOS scripts to set the hardware clock to UTC and check that the system clock is synchronised.

Bugfixes:
[6d3c48889]
Adds new type SignedIngressId containing both message ID and hash, to replace most instances of IngressMessageId in order to ensure that the messages identified are unique. This is part of the hashes-in-blocks implementation.

[8df6997dd]
Replaces previously removed ic-admin subcommands in ic-recovery in order to fix test failures.

[be8de1981]
Alters the ledger_version field of Ledger in the ICRC1 ledger such that it no longer defaults to the current version specified by the LEDGER_VERSION const, as per explanation in commit notes.

[ac71086bf]
Changes nns_url in development modes from wiki.internetcomputer.org to cloudflare.com/cdn-cgi/trace in order to solve a testing issue.

Chores:
[00f10afcf]
Adds new type AbortableBroadcastChannels in order to group together various pre-existing abortable broadcast channel types.

[f367c148b]
Adds type Bouncers in order to group together various pre-existing bouncer types + associated code changes.

[816f0edab]
Several changes to P2P processes including new type AbortableBroadcastChannelManager, changes to the implementation of AbortableBroadcastChannelBuilder, StateSyncManager and setup_consensus_and_p2p.

[fc2787097]
Upgrades Rust version to 1.84 and rules_rust to 0.56.0. @dsharifi Due to the large number of changes in this commit it was not possible to view the full set of changes in GitHub, including any of the Rust code changes.

[eb9afbb50]
Adds more detail to some error messages for the state-tool copy command.

[550209a75]
Removes now redundant deploy-updated-ssh-account-keys script.

[0126ae64c]
Updates base container image references for GuestOS, HostOS, SetupOS and Boundary Node GuestOS.

Refactoring:
[834bead31]
Changes to transcript management in preparation for VetKD implementation, as per the detailed and very helpful description in the commit notes. @Sawchord @eichhorl

[6b09303da]
Serialises transcripts directly into pb::NiDkgTranscript instead of using pb::TaggedNiDkgTranscript. Corrects the make_nodes_registry state machine test as per the description.

[a4dd63884]
Renames setup-ssh-account-keys and setup-ssh-keys services.

Proposal 134967

Vote: Adopt

Reason: Build is successful and hashes match. The proposal consists of a single commit which re-enables the hashes-in-blocks feature by setting the HASHES_IN_BLOCKS_FEATURE_ENABLED flag to true.

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 134966 – ilbert | CodeGov

Vote: couldn’t vote as the voting period ended.
Reason: All reviewed commits match their description and hashes match.

Review:
For the Execution and Runtime layers, the main changes introduced in this proposal are:

  • Introduces the possibility for canisters to accept and burn cycles in replicated queries
  • Refactors and minor improvements

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

178aceab8:
The commit message is pretty exhaustive on the changes made, and I’ve checked that they match with it.

49e2de0d0:
Collects the time_since_last_usage metric for the sandbox processes in two different arrays based on their status, and observes the related metrics only after cycling through all the sandbox processes.

40b9f6c59:
Adds a CYCLES_BURN128 constant with a value of 500 instructions and uses the value to compute the cycles to charge in the cycles_burn128 system API invocation.

82576adb0:
Changes the ic0_in_replicated_execution method of the SystemApiImpl struct to return 0 if the API type being executed is InspectMessage or NonReplicatedQuery and adds a check on the execution mode for the ReplyCallback and RejectCallback variants.

2f6fcec04:
Changes the iterator on the active canisters inside the inner_round of the SchedulerImpl struct to collect the canister age metric only if the last_full_execution_round (which is an u64 id) is not 0, which means that the canister has just been created.

8b3296e0f:
Adds the max_wasm64_memory_size field to the Config struct of the embedders, which defaults to the newly introduced MAX_WASM64_MEMORY_IN_BYTES (= 4GiB for now). Renames the max_canister_memory_size into max_canister_memory_size_wasm32 in the Config struct of the execution environment, adds the max_canister_memory_size_wasm64 (= max stable memory size in bytes + MAX_WASM64_MEMORY_IN_BYTES) to the same struct.
Changes the validate_and_instrument function of the wasm_utils module o call the instrument function with the maximum Wasm memory size parameter according to the module’s memory type. The memory type is checked using the newly introduced has_wasm64_memory, which returns true if the module’s memory is of type 64-bit. Also, adapts the validate_wasm_binary function to pass the proper maximum Wasm memory size to the validate_initial_wasm_memory_size function.
Adds the max_canister_memory_size method to the ExecutionEnvironment struct, which returns the maximum allowed memory size from the config field, based on the is_wasm64 flag passed as input. This method is called in the check_canister_invariants method of the SchedulerImpl struct.
Adds the get_max_canister_memory_size method to the CanisterManager struct, which returns the maximum allowed memory size from the config field, based on the is_wasm64_execution flag passed as input.
Added a comment on GitHub.

9b6d8dce4:
Removes the Streams and StreamHandle structs from the metadata_state module. Removes the related logics from the codebase.
Matches description.

5993fe22c:
Applies the renaming described in the commit message. Matches description.


Proposal 134967 – ilbert | CodeGov

Vote: couldn’t vote as the voting period ended.
Reason: All reviewed commits match their description and hashes match.

Review:
This release is the same as the one in 134966 with the addition of the commit 4ba583480, which matches its 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.

1 Like

Hey @alex-df, I just wanted to bring this comment to your (and your colleagues’) attention, in case you’ve missed it on GitHub.
I think the change made in that commit can potentially introduce a bug in the Execution layer, but maybe I’m just missing something.
Let me know what you think!

2 Likes