Upgrade GroupIndex canister to 2.0.2018
GitHub commit
https://github.com/open-chat-labs/open-chat/commit/df8e5d9b279d469276054ef7a4a0dc1093e147ee
Changelog
Description
This release supersedes 2.0.2017, whose upgrade failed to install. The cause: a post-upgrade one-off — a back-fill pushing existing community moderation flags out to the community canisters — attempted an inter-canister call while still in the upgrade context, which the Internet Computer forbids. The install was rejected and atomically rolled back, with no effect on the running canister, which has continued serving normally on 2.0.1932 throughout. The back-fill is now deferred until immediately after the upgrade completes (#9155), using the same event-delivery path every ordinary moderation-flag change already uses. The back-fill produces a brief burst of synchronisation events which is expected and harmless. (It escaped rehearsal because the test network had no flagged communities, so the failing code path never executed there — the fix records that lesson alongside the code.)
The release itself is unchanged from the 2.0.2017 proposal: it brings the group index up to date with the redesigned moderation system described in the trust and safety blog post, and completes the canister rollout — every canister in the moderation pipeline is then on the new system.
The most important change closes the last gap in the human reporting path. Reports on group and channel messages travel via the group index, and the version running today silently drops the child-sexual-abuse-material assertion carried by a report at that hop — so the immediate protective actions (deleting the message and quarantining the media in the evidence vault) do not fire for group and channel reports. With this release the assertion is forwarded intact, and the protective path works identically across direct chats, groups and channels. As everywhere else in the system, any suspension waits for a human verdict.
As with the preceding releases, the classification pipeline remains switched off: nothing is scanned or classified, and enabling classification remains a separate, dual-authorized platform-operator action behind the remaining governance preconditions.
Added
- Forward the CSAM assertion flag on reports so quarantine and deletion apply immediately, while the suspension waits for the human verdict (#9119)
c2c_moderation_referral— forwards moderation referrals from group/community canisters to the user_index (#9119)c2c_csam_detectedendpoint forwarding CSAM detections from groups/communities to user_index (#9093)set_group_moderation_flagsendpoint, and filter group search by moderation flags (#9089)
Changed
- Forward blob references with CSAM detections so the evidence vault can quarantine media (#9119)
- Sync community moderation flags to the community canisters (#9088)
Fixed
- Defer the moderation-flag back-fill to a timer: pushing to the local-index event queue makes an inter-canister call, which is forbidden during post-upgrade and failed the 2.0.2017 upgrade (#9155)
- Fix detection of when to retry c2c calls (#9106)
Wasm Verification
Verify that the hash of the gzipped WASM matches the proposed hash.
git fetch
git checkout df8e5d9b279d469276054ef7a4a0dc1093e147ee
./scripts/verify-release.sh 2.0.2018 136f37a4b79e0d8fdf20146263db4360280ba2221fad3b5b1c6d3a4a9da9f980
Proposal to execute nervous system function:
Nervous system function:
NervousSystemFunction { id: 9000, name: "Upgrade canister", description: Some( "This will instruct the OpenChatInstaller canister to upgrade the specified canister.", ), function_type: Some( GenericNervousSystemFunction( GenericNervousSystemFunction { target_canister_id: Some( jodzs-iqaaa-aaaar-qamqa-cai, ), target_method_name: Some( "upgrade_canister", ), validator_canister_id: Some( jodzs-iqaaa-aaaar-qamqa-cai, ), validator_method_name: Some( "upgrade_canister_validate", ), topic: Some( DappCanisterManagement, ), }, ), ), }
Payload sha256:
fec8a60edfd66b69aa453bb3a847967e1af12a1da528079596b06e133caaf8bc
Payload:
{ "canister_type": "GroupIndex", "version": { "major": 2, "minor": 0, "patch": 2018 }, "wasm_hash": "136f37a4b79e0d8fdf20146263db4360280ba2221fad3b5b1c6d3a4a9da9f980", "filter": null }