SNS Updates 2025-03-1

This week, the Governance team is proposing one upgrade for the SNS framework. DFINITY plans to vote on this proposal the following Tuesday.

This proposal is shifted by a day because it took a bit longer to merge the changes that we wanted to include into the release.

SNS Governance

# Publish SNS Governance WASM Built at Commit ebb190b

__Proposer__: arshavir.ter.gabrielyan at dfinity.org

__Source code__: [ebb190bf1da0dba3e486b78c95cf5a3c5542e2f3][new-commit]

[new-commit]: https://github.com/dfinity/ic/tree/ebb190bf1da0dba3e486b78c95cf5a3c5542e2f3

## Features & Fixes

###  Added

* New type of SNS proposals `SetTopicsForCustomProposals` can be used to batch-set topics for all custom proposals (or any non-empty subset thereof) at once.

    Example usage:

    ```bash
    dfx canister --ic call ${SNS_GOVERNANCE_CANISTER_ID} manage_neuron '(
        record {
            subaccount = blob "'${PROPOSER_SNS_NEURON_SUBACCOUNT}'";
            command = opt variant {
                MakeProposal = record {
                    url = "https://forum.dfinity.org/t/sns-topics-plan";
                    title = "Set topics for custom SNS proposals";
                    action = opt variant {
                        SetTopicsForCustomProposals = record {
                            custom_function_id_to_topic = vec {
                                record {
                                    1001 : nat64;
                                    variant { ApplicationBusinessLogic };
                                };
                                record {
                                    1002 : nat64;
                                    variant { DaoCommunitySettings };
                                };
                            };
                        }
                    };
                    summary = "Set topics ApplicationBusinessLogic and \
                            DaoCommunitySettings for SNS proposals with \
                            IDs 1001 and 1002 resp.";
                }
            };
        },
    )'
    ```

###  Changed

* Enable
[automatic target version advancement](https://forum.dfinity.org/t/proposal-opt-in-mechanism-for-automatic-sns-target-version-advancement/39874)
for newly deployed SNSs. To opt out, please submit a `ManageNervousSystemParameters` proposal, e.g.:

    ```bash
    dfx canister --ic call ${SNS_GOVERNANCE_CANISTER_ID} manage_neuron '(
        record {
            subaccount = blob "'${PROPOSER_SNS_NEURON_SUBACCOUNT}'";
            command = opt variant {
                MakeProposal = record {
                    url = "https://forum.dfinity.org/t/proposal-opt-in-mechanism-for-automatic-sns-target-version-advancement";
                    title = "Opt out from automatic advancement of SNS target versions";
                    action = opt variant {
                        ManageNervousSystemParameters = record {
                            automatically_advance_target_version = opt false;
                        }
                    };
                    summary = "Disable automatically advancing the target version \
                            of this SNS to have full control over the delivery of SNS framework \
                            upgrades blessed by the NNS.";
                }
            };
        },
    )'
    ```

###  Fixed

* `ManageNervousSystemParameters` proposals now enforce that at least one field is set.

* Errors caused by trying to submit proposals restricted in pre-initialization mode should no
  longer overflow.


## New Commits

```
$ git log --format="%C(auto) %h %s" 00b04a892dfb2fee1459f1de9d4a731aa04f1ca3..ebb190bf1da0dba3e486b78c95cf5a3c5542e2f3 --  ./rs/sns/governance
 ebb190bf1d chore(sns): Rename `SetCustomProposalTopics` into `SetTopicsForCustomProposals` (#4185)
 4050fa7d4e feat(sns): Introduce `SetCustomProposalTopics` proposal type (#4162)
 873d9cb2ff refactor(nns): Make Governance environment parameters compatible with timer usages (#4161)
 9bcb5d989b fix(sns): Bound SNS Governance response size for proposal submission (#4125)
 8dd9666a3c test(sns): Custom upgrade paths work with advancing target SNS version (#4077)
 f70f89db22 feat(sns): Enable automatic advancement of SNS target versions for newly launches SNSs (#3901)
 c38ebaaf5d fix(sns): Disallow `ManageNervousSystemParameters` proposals that do not set any fields (#4037)
 b215232f64 fix(governance-tools): Proposal URL was wrong. (#3981)
 05601afe26 chore(nervous-system): Update changelog for release 2025-02-14 (#3967)
```


## Wasm Verification

See the general instructions on [how to verify] proposals like this. A "quick
start" guide is provided here.

[how to verify]: https://github.com/dfinity/ic/tree/ebb190bf1da0dba3e486b78c95cf5a3c5542e2f3/rs/nervous_system/docs/proposal_verification.md

See ["Building the code"][prereqs] for prerequisites.

[prereqs]: https://github.com/dfinity/ic/tree/ebb190bf1da0dba3e486b78c95cf5a3c5542e2f3/README.adoc#building-the-code

```
# 1. Get a copy of the code.
git clone git@github.com:dfinity/ic.git
cd ic
# Or, if you already have a copy of the ic repo,
git fetch
git checkout ebb190bf1da0dba3e486b78c95cf5a3c5542e2f3

# 2. Build canisters.
./ci/container/build-ic.sh -c

# 3. Fingerprint the result.
sha256sum ./artifacts/canisters/sns-governance-canister.wasm.gz
```

This should match `wasm` field of this proposal.