Proposal to elect new release rc--2024-07-25_21-03

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

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

Release Notes for release-2024-07-25_21-03-base (2c0b76cfc7e596d5c4304cff5222a2619294c8c1)

This release is based on changes since release-2024-07-10_23-01-base (a3831c87440df4821b435050c8a8fcb3745d86f6).

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.

This release diverges from the base release. Merge base is 6135fdcf35e8226a0ff11342d608e5a5abd24129. A change was removed from this release. However, the same change is included under a different commit (587c1485b) in this release.

Features:

  • f5491f4b2 Consensus: Add backoff and jitter to HostOS upgrades (#395)
  • 3ba4a08a2 Crypto,Networking: quinn and rustls upgrade
  • 2bae326f0 Execution,Runtime: Add new type of task OnLowWasmMemory (#379)
  • e7a36d5c8 Execution,Runtime: Handle canister snapshots during subnet splitting (#412)
  • 59f22753b Execution,Runtime: Print instructions consumed in DTS executions in a more readable form
  • 9416ad7d0 Interface: Compute effective canister id for canister snapshot requests (#541)
  • d267d7f0f Message Routing: Revert to the memory allocator (#515)
  • 0f3b81c5f Message Routing: Implement handling reject signals from incoming stream slices.
  • 4c03f768f Networking: publish https outcalls adapter with http enabled for dfx
  • 1b550f2d0 Networking,pocket-ic(PocketIC): non-mainnet features
  • 7d70776f8 Node: Pull HostOS upgrade file in chunks
  • faa3c1ad8 pocket-ic: Support synchronous call endpoint in pocket-ic. (#348)
  • 476955407 pocket-ic: canister HTTP outcalls (#421)
  • 5237d0cbc pocket-ic: store registry file in state_dir (#356)
  • 75c57bc48 Runtime: Adjust max number of cached sandboxes
  • 9f25198cf Runtime: Reland switch to compiler sandbox for compilation

Bugfixes:

  • 4fd343cae Consensus: Fix inconsistency when purging validated pool below maximum element (#598)
  • 9243f5c75 Consensus: ic-replay when DTS is enabled
  • fc5913c1c Execution,Message Routing: Maintain snapshot_ids correctly (#360)
  • 3eb105c27 IDX: Remove unused aarch64 import (#507)
  • d1d720915 IDX: Disable unused aarch64-darwin code (#486)
  • 7708333b2 Execution,Runtime: Follow up on the reserved cycles limit fix (#383)
  • 932506f89 Message Routing: Add total_size to CanisterSnapshotBits (#479)
  • befc5a404 Message Routing,pocket-ic(PocketIC): resource leak in PocketIC server and bug in PocketIC library
  • 1955f41a9 languages(drun): Make drun deterministic again (#552)
  • 3ee248686 Networking: use the Shutdown struct instead of explicitly passing the cancellation token for the sender side of the consensus manager
  • bb2387f17 pocket-ic: make CallRequest of type V3 deterministic (#493)
  • c7bf31924 pocket-ic: make sure progress threads stop when deleting PocketIC instance
  • ff9e2941c Runtime: Cap Wasm64 heap memory size (#446)
  • d23960734 Runtime: Fix instrumentation for memory.init and table.init in Wasm 64-bit mode (#442)
  • 4a622c04c Runtime: Free SandboxedExecutionController threads (#354)
  • 587c1485b Runtime: Revert “feat: Switch to compiler sandbox for compilation”

Performance improvements:

  • 460693f61 Consensus,Execution,Runtime: Reduce cost of cloning tSchnorr inputs (#344)
  • fac32ae6f Crypto: Reduce the size of randomizers during Ed25519 batch verification (#413)
  • 390135775 Execution: Speed up parsing of optional blob in CanisterHttpRequestArgs (#478)

Chores:

  • 4cc989aa3 Boundary Nodes,Consensus,Financial Integrations,Message Routing,IDX,NNS: upgrade url and uuid and use workspace versions (#417)
  • c52bf40a1 Boundary Nodes,IDX,Networking: upgrade rustls
  • 5cfaea5ea Boundary Nodes,IDX,NNS,Node,pocket-ic: upgrade external crates and use workspace version
  • 1b4b3b478 Consensus: Update documentation to include tSchnorr (#523)
  • 282c6ec9c Consensus: Rename ecdsa block payload field and fix comments (#416)
  • 6ac0e1cce Consensus: Compute subnet members from membership directly (#444)
  • 2a530aa8f Consensus: Rename ecdsa modules, EcdsaClient, EcdsaGossip and EcdsaImpl (#367)
  • 1c78e64a0 Consensus: (github-sync) PR#314 / fix(): ic-replay: do not try to verify the certification shares for heights below the CU
  • 99f80a4e6 Consensus: Rename EcdsaPreSig*, EcdsaBlock*, EcdsaTranscript*, and EcdsaSig*
  • b13539c23 Consensus: Rename EcdsaPayload
  • 6057ce233 Consensus,Interface: Remove proto field used to migrate payload layout (#380)
  • dbaa4375c Crypto: Remove support for masked kappa in threshold ECDSA (#368)
  • f906cf8da Crypto: (github-sync) PR#248 / feat(crypto): add new signature verification package initially supporting canister signatures
  • bed4f13ef Crypto: Implement ZIP25 Ed25519 verification in ic_crypto_ed25519
  • 1ba3b5e0b Execution,Message Routing: Update error message for subnet methods that are not allowed through ingress messages (#574)
  • eec6107fa Execution,Message Routing,IDX,pocket-ic: Remove obsolete cost scaling feature flag (#502)
  • d1206f45a Execution,Runtime: Add logs to capture usages of legacy ICQC feature on system subnets (#607)
  • bc2755cff Execution,Runtime(execution): Remove wasm_chunk_store flag (#542)
  • 7a8c6c69f Execution,Runtime: Unify ECDSA and tSchnorr signing requests (#544)
  • 513b2baec Execution,Runtime(management-canister): Remove unimplemented delete_chunks API (#537)
  • e41aefe34 Execution,Runtime: Remove obsolete canister_logging feature flag (#505)
  • 005885513 Execution,Runtime: Remove deprecated controller field in update settings requests (#432)
  • 234e5c396 Execution,Runtime: Update Wasm benchmarks
  • 2411eb905 Execution,Runtime: rename iDKG key to threshold key
  • 3d1337795 Interface,Node: make the visibility rules consistent (#567)
  • 5dc3afeb5 Message Routing,Networking,Runtime(fuzzing): fix clippy warnings for fuzzers
  • 91ceadc58 Message Routing,NNS(nervous_system): Principals proto typo fix: 7 → 1 (#375)
  • 11bc5648c Networking: publish ic-https-outcalls-adapter-https-only (#578)
  • deafb0a12 Networking(http-endpoint): Increase SETTINGS_MAX_CONCURRENT_STREAMS to 1000 (#349)
  • 0775cd819 Networking: abort artifact download externally if peer set is empty
  • b2268cbaa Networking(ingress-watcher): Add metric to track capacity of the channel from execution
  • 1999421a1 Node: Update Base Image Refs [2024-07-25-0808] (#601)
  • 21c75cb41 Node: introduce release-pkg and ic-os-pkg package groups (#553)
  • c488577bc Node: Update Base Image Refs [2024-07-20-0145] (#492)
  • 52b65a8af Node: Update Base Image Refs [2024-07-17-0147] (#397)
  • eb775492d Node: firewall counter exporter (#343)
  • 3aae377ca Node: Log HostOS config partition (config.ini and deployment.json)
  • 233657b46 Node: Update container base images refs [2024-07-12-0623]
  • 16c2d6877 pocket-ic: release server v5.0.0 and library v4.0.0 (#485)
  • 4b2983084 pocket-ic: refactor progress threads in PocketIC (#353)
  • 3ba594f48 pocket-ic: collection of preparatory steps for canister HTTP outcalls in PocketIC and unrelated fixes (#352)
  • 45aefaf9f Runtime: Derive ParitalEq for all sandbox IPC types (#374)

Refactoring:

  • e21c3e74e Consensus,Networking: move the PriorityFn under interfaces and rename the PrioriyFnAndFilterProducer to PriorityFnFactory
  • 5b8fc4237 Crypto: remove CspPublicAndSecretKeyStoreChecker (#559)
  • 63da4b23a Crypto: unify threshold sign method names (#321)
  • 1413afe92 Crypto: replace ed25519-consensus with ic-crypto-ed25519 in prod (#347)
  • f3628917c Networking: introduce artifact downloader component (#403)

Tests:

  • 95f4680b0 Consensus: Move get_block_maker_by_rank into test utilities (#525)
  • ab43272aa Consensus,IDX: Extract a tECDSA system test library and inline some tests (#608)
  • f0f7659a8 Consensus: fix uploading of tECDSA benchmark system test results (#575)
  • 65f6d7dd0 Consensus: increase subnet size for sr_app_large_with_tecdsa_test to 37 (#586)
  • 311f6a76e Consensus: inline node_registration_test and ssh_access_to_nodes_test system tests (#481)
  • c54b0eb81 Consensus: move set_sandbox_env_vars function to consensus_system_test_utils (#472)
  • 53e47573a Consensus: move ssh_access to consensus_system_test_utils crate (#471)
  • 4f9c5dce3 Consensus: Inline adding_nodes_to_subnet_test and node_reassignment_test system tests (#466)
  • ea2f05d23 Consensus: move rw_message.rs out of /rs/tests/src into /rs/tests/consensus/utils (#378)
  • 10cca1d6f Consensus: Deduplicate code in {consensus,tecdsa}_performance_test (#346)
  • 373c9f93f Consensus: Add artificial network restrictions to consensus_performance_test & print some throughput information at the end of the test
  • 3f5b078b7 Consensus: inline consensus_performance system test
  • 72e6f39b0 Crypto: Re-enable NIDKG cheating dealer solving test
  • 61870cc77 Execution,Message Routing: Remove misleading callback_id from register_callback() test function (#497)
  • de3425fa6 Execution,IDX,Runtime: Make system api test to be state machine test (#377)
  • e15d65e1c Execution,Runtime: Add execution smoke tests (#526)
  • c12b4b26d Execution,Runtime: Support signing disabled iDKG keys in state_machine_tests
  • 214998263 Interface: add testonly tag for some test libraries
  • ce2486a3e IDX: add missing WASM_PATH env vars to the release-testing systests (#570)
  • 38c7a5098 Message Routing,IDX: check canister queue upgrade/downgrade compatibility against published version
  • a91bae41e Networking: decompress bitcoin data inside tests
  • ba82afe4d Runtime: Add unit tests for sandbox to replica IPC messages (#435)
  • 9552f0828 Runtime: Add unit tests for replica to sandbox IPC messages (#411)
  • 34ff2857a Runtime: (fuzzing) create new test library wasm_fuzzers

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

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.

3 Likes

Thanks for this release DFINITY🙂

For anyone interested in the divergence mentioned in the change summary, here’s the relevant part of the git graph →

The…

  • previous executed release (described as a ‘removed commit’ in the proposal summary),
  • the ‘same change under a different commit’,
  • and the ‘merge base’ commit

… are all highlighted in blue above (and labelled to make it clearer).

I’ve verified that the ‘removed commit’ and ‘same change under a different commit’ are binary equivalent. This step (on the part of a reviewer) could be easily automated for merge requests (due to the clearly modelled relationship between a source and merge commit). Cherry picked commits have a much looser relationship (as is the case with the previous executed release/‘removed commit’).

If the previous executed release branch had been cut using a merge commit rather than a cherry picked commit the git graph would also have been much clearer, e.g. →

Merging the previous executed release back into main in the example above is an unnecessary step, but I think it’s visually clearer (indicating that there’s actually no divergence).

I’m coming at this from the stand point of a reviewer seeking as many ways as possible to make IC-OS releases easier and more convenient to verify and review (in the hope that more people will be more likely to get involved in the future).

Do you have any thoughts on these ideas @DRE-Team? My thinking is that this sort of approach avoids the need to explain any kind of divergence (as in this proposal summary).

3 Likes

Hi @Luka, are you able to explain more about commit 2ef33c956 - fix(k8s-testnets): adapt firewall rules for k8s testnets (#436) · dfinity/ic@2ef33c9 (github.com)? This modifies GuestOS (as far as I understand) whitelisting an additional IPv6 prefix.

Shouldn’t all commits that modify GuestOS be considered relevant and included in the list of changes? For many voters out there I expect this is the only list they look at. Why not let each person make their own judgement call on which GuestOS changes are relevant/important to them?

Similarly, the above commit is relevant because it modifies HTTP handler configuration (and is
included in the list of changes above). Commit dd0be35c also modifies HTTP handler configuration (reducing max_tracing_flamegraph_concurrent_requests from 10 to 5), but it’s not included in the list of changes above.

Are you able to explain this @DRE-Team? Thanks.

i’m looking into some way to share all the list of commits that modify guestos. for release notes, we’d still want to make it even less than that just so we don’t have commits that don’t contribute much. for this particular commit, it was auto excluded from release notes based on some filter. will have to debug why exactly and get back to you next week. in terms of the change itself, it is kinda important but not really. it’s whitelisting a private ipv6 prefix so it shouldn’t make a huge difference. similar to the line above. i could’ve probably optimized and replaced the previous line with fd00::/8

1 Like

we wouldn’t have linear history on master in that case. it’s also not necessarily the case that we always want to do that. that being said, merging the RC branch into master would probably work.
in this case i just wanted to make sure there’s accurate description of what exactly is happening. if you have any other ideas, we could try implementing something else for future releases.

1 Like

@Lorimer i think in both cases looks like this is the cause for exclusion:

i’ll try to improve this logic a bit. we also plan on improving package dependencies for guestos so we can be less aggressive on these heuristics that exclude commits from release notes,

2 Likes

Thanks @Luka! Looks like there’s a good chance that logic is the issue. I raised questions about that specific line a few weeks ago :slightly_smiling_face:

(EXCLUDED_TEAMS has since been renamed to NON_REPLICA_TEAMS)

The master branch would describe the reality of the situation. Isn’t that better? There are already non-linearities in the deployment history. Can I ask what problems representing this on the master branch would cause? (at least in cases where there’s genuinely no divergence)

This sounds promising, except that release notes will intentionally (as opposed to accidentally) exclude commits that modify GuestOS. Why would DFINITY want to do this? In some ways this could be seen as worse. It certainly seems like a bad precedent to set for such critical proposals. I think the principle here is the most important thing (which is why I’ll reject this proposal, in peaceful protest of the obscured changes - I suspect there are more).

Thanks Luka. Do you have any thoughts about the deployment target commit message convention that we discussed with @sat last week in our CodeGov meeting. My impression was that this was being investigated.

this is a matter of trunk based development. sometimes there’s a hotfix on a previous release, but that hotfix is never merged into main. in this case it was. we can complicate the setup and sometimes merge and sometimes not. would this simplify review process? it seems if we complicate release process, review process is going to complicate too, or at least in this specific case.

we’d want the release notes to represent functional changes to replica instead of pure changelog. we still want to provide some methods to simplify code review. i don’t think either of these two approaches are exclusive of the other.

it’s just another heuristic in the end. i overall don’t have confidence that this would be better than relying on bazel to identify which commit changed what. we could use this in conjunction with bazel, but i don’t see how it could bring a benefit. the problem is that you’d have to choose one when there’s a conflict between the two. i would almost always trust bazel instead of a developer. it’s just much easier for developer to say that deployment target is “none” or some equivalent (we’d need this for example if we change tests or CI, there’s no deployment target). that’s not to say that developer is always going to be wrong, but it’s much easier for developer to be wrong than bazel to be “wrong”. i quote “wrong” because bazel technically cannot be wrong. if bazel says the commit changes some dependencies, we’ll get a different guestOS build.

i didn’t talk with @sat about this since he’s currently out on vacation.

If the change doesn’t belong on the master branch, it makes sense not to merge it. If it does, it can be merged. Aside from the git graph being more visually accurate, it means a community member can programmatically verify that merge commits don’t include changes other than what’s claiming to be merged (allowing them to inspect the cases where they do, e.g. due to merge conflicts). This would have saved needing to manually check for binary equivalence on this proposal.

If you’d like to keep things consistent (to reduce operational complexity), why not always ensure all deployed changes join the master branch. The scenario you described is what reverting is for. This makes the master branch a more comprehensive reflection of production over time.

Why open the door to obfuscated changes? DFINITY sets an example for other proposers to follow in the future. Why not display all changes that voters are voting on as a matter of principle?

That’s what I’m suggesting. If the developer and bazel disagree, then you can inspect and either fix another issue with the proposal summary tool, or remind the developer in question of the commit message convention. There are also already exiting conventions that committers are following consistently. I’m sure they could handle another (arguably more important) one.

Are you sure this is true? If the registry canister is modified (for example), does this alter the GuestOS build hash? :thinking:

Reviewers for the CodeGov project have completed our review of these replica updates.

Proposal ID: 131390
Vote: ADOPT
Full report on OpenChat

Please note that some of our reviewers commented that the errors in the summary from last week have been corrected. All reviewers adopted the proposal except @Lorimer, who provided this explanation for why he rejected…" Rejected due to obscured changes, which is something I think needs to be considered taboo." Further details about this decision can be found in prior posts he made in this thread on the forum.

At the time of this comment on the forum there are still 2 days left in the voting period, which means there is still plenty of time for others to review the proposal and vote independently.

We had several very good reviews of the Release Notes on these proposals by @Zane, @cyberowl, @ZackDS, @massimoalbarello, @ilbert, @hpeebles, and @Lorimer. The IC-OS Verification was also performed by @tiago89. I recommend folks take a look and see the excellent work that was performed on these reviews by the entire CodeGov team. Feel free to comment here or in the thread of each respective proposal in our community on OpenChat if you have any questions or suggestions about these reviews.

2 Likes

but then we’d merge a change to master just to revert it :roll_eyes:
the problem is that we cannot automate this. so we’re introducing operational complexity and introduce a chance for errors. how much are we getting in return and is it worth it?

i think the release notes are supposed to be just an overview of what was changed. adopted proposals end up on release page: https://dashboard.internetcomputer.org/releases
it makes sense that for review you’d want to get a list of all the things that changed in detail without any moderating. but after it’s adopted, i’d argue it’s much nicer that we end up with a sensible release notes instead of unmoderated mess on release page.

if you’d want to review the code, i think it’s best to not even go commit by commit, but instead just see the entire difference in code between last release and the current.

the issues we experience over the past few weeks have nothing to do with bazel part. bazel filters out commits that do not modify the replica. then we further remove some commits because we think they’re not relevant.
introducing the deploy target message would just make heuristic different. whether we’re trying to ask developers to guess if this is going to change replica, or we algorithmically try to exclude some package that do not make sense, it’s still just a guess. i think in fact the package filter works quite well since it’s very conservative in what it kicks out, and can be easily tuned. the issue we had with teams for this release is not a great heuristic IMO. i’ll see this week what we can do with it - either substantially improve it or remove it. developers tagging the deployment target i think would remove more commits than even these both together. i mean, i’m still just guessing, but i base it on amount of “chore” commits we have. i think we can expect the result would be quite similar if we had deployment target. i think lots of commits would be “deployment target: none”. if we want to ask developers to change their workflow to introduce more overhead, i think we need to have a reasonable assumption that we’re gonna get a good return there. what makes you convinced that we would?

almost 100%. it depends on the compiler in the end, but it’s very likely that if something in registry changes, even if ic-replica is not using it directly, that it’s gonna affect the build output because the replica is depending on registry package. i.e. replica package output will change for sure, and therefore most likely ic-replica output will too.

1 Like

Why not? Source control changes should be self-describing. If you have to put a preamble above the proposal summary change log to explain the Git graph, it’s probably because Git isn’t being used in the most effective way. Merging also means you can continue to use a simple ‘change log since commit’ reference (and it would always make sense).

Why would you need to automate it? It’s just normal branch management. The complexity is minimal, and it’s already there, you’d just be handling it upfront rather than pushing the complexity on to a preamble in the proposal summary.

  • A Git graph that makes sense by itself rather than requiring special mention in proposal summary to justify it
  • A ‘change log since commit’ reference that’s always accurate and comprehsive (automatically)

For a Web3 outfit I’d say those are pretty big win, and the cost is just sticking to a well structured Git workflow (I’m not suggesting anything exotic).

It’s supposed to be a change log. That’s what the usual ‘change log since’ comment alludes to. There’s already a sensible mechanism for structuring this change log (sections, based on commit message conventions). If you want to optimise for release notes, I don’t see why you’d want to take stuff away (other than because it’s currently hard to get it right). It would be better (if anything) to just add a paragraph at the start that describes the general theme of the proposal, what it seeks to achieve, how it relates to elements of the road map, and maybe what the most important commits are considered to be (there’s no reason this should come at the expense of hiding other commits that modify IC-OS).

I very much disagree. This would be practical if DFINTY were using dedicated release branches instead of trunk based development. But that’s not the case. As it currently stands this approach would yield a huge number of unrelated, unimportant changes, particularly for HostOS releases. DFINITY should be prioritising ways of making this less painful if the aim really is to achieve greater governance decentralisation.

If developers are making changes and they’re not mindful of whether or not those changes modify IC-OS, they surely should be… :neutral_face:

The current situation is bad for governance decentralisation (I wrote a whole post about it). What I’m suggesting is a step towards fixing the root of the problem. It’s obvious that something needs to be done (I don’t think that’s contentious). Do you have other suggestions?

1 Like

@Lorimer don’t get me wrong. i appreciate your input. i’m just trying to give you my view of things.

my main objective is that changes are indeed auditable. i.e. that a person can inspect the differences between latest release and the current one. i’d also like it to be easier for you and anyone else wanting to do this.

at the same time, we also have to consider if we’re as a collective investing more time to try to make it easier to check release notes than actually overcoming the hurdles in checking the changes. e.g., requiring developers to modify their workflow incurs cost and i don’t think in this case would necessarily make things better. similar goes for merging commits into master and then reverting them - it introduces overhead for each release we do. i don’t quite get from your response how much time would this save you or make it easier to review the code. in this particular case, it would also be nice to get some feedback from other members of CodeGov. maybe there’s something i’m not seeing to justify this change.

if you look into commit history of DRE, you can see that i’m trying to improve the release notes generation small steps at a time. i like this approach because it’s making the release notes continually better through code and no human needs to invest more time as a result of changes that i did. if you see some changes that are making things worse, please let me know.

some of that is not solving the real problem - we have some dependency chains that simply need to be untangled. these changes are a serious time investment and as much as i’d like it to be done asap, the truth is that it’s going to take significantly more time to solve it. it’s probably also the case that we’ll always have some screwed up dependencies paths and some of the work done on release controller is going to enable us to fix release notes much faster when that occurs.

i don’t want to discourage you to ask for improvements. i simply ask that you consider if there are any solutions that do not increase the cost of release notes (if you can make PRs to improve release-controller in dre repo, that’s even better). i think once we’re exhausted all options that do not increase the costs, we can then talk about approaches that do.

other than that, i was thinking of implementing some script similar to what we have for checking build determinism to help you identify the commits that modify the IC replica in an easier way. for example, it could print out all the commit links since last release and mark them in some way (e.g. “modifying replica”, “probably not modifying replica”, and “not modifying replica”). let me know what you think of this idea.

2 Likes

Would this be a script that improves the accuracy of the proposal summary change log? Would you be able to elaborate on how it would achieve this?

1 Like

it would be doing the same kind of filtering that we already do when generating release notes. except it wouldn’t remove any commits. it would just mark commits indicating if it changed the functionality of the replica or not. e.g. if some tests changed in rs/tests, this is in in dependency path of guestos so it would say “not modifying”. for something like governance canister changes that are currently in dependency path of replica but almost certainly not modifying replica functionality, it would say “probably not modifying”. and last if replica or orchestrator code was changed in the commit, it would mark it as modifying replica.

2 Likes

It sounds like this would be helpful, thanks @Luka. My first thought is why not put this in the release notes so that everyone can benefit. If markdown summary/detail tags are supported, the details that are considered to be unimportant (or likely irrelevant) could be collapsed and hidden by default (allowing a voter to choose to expand it if they’re interested in inspecting)

Like this

Hello

1 Like

That’s a good idea. Markdown is supported for NNS proposals in the Summary section.

1 Like

I really like that idea, but we have some limit on proposal summary length. It should be 30k characters. Currently the longest proposal in recent history is 16k: dre/replica-releases/2c0b76cfc7e596d5c4304cff5222a2619294c8c1.md at main · dfinity/dre · GitHub

There’s a decent chance we’d blow past that, but I think we can at least try recording full summaries in this github repo, and then after some time see if we could do it also directly on proposal. These files would then have some crossed out text that would be removed in proposal.

2 Likes