Summary

Backend Canister Upgrade

This release reworks the DNS caching used by email recovery: concurrent lookups are merged, known results are served from cache while refreshing in the background, and failures now report their cause. It also removes leftover scaffolding from the completed OpenID credential key migration.

What's Changed

Since proposal-backend-142131

  • feat(be,fe): generic stale-while-revalidate single-flight cache (#3995)
  • feat(be): add sso_domain/sso_name to stored OpenID credentials with batched backfill migration (#4013)
  • chore(be): remove OpenID credential key migration scaffolding (#3997)
  • refactor(be,fe): explicit DoH fallback for email recovery; de-duplicate wizards (#3992)
  • feat(scripts): add create-staging for provisioning new staging envs (#3985)
  • feat(be,fe): instrument DoH failure cause for the recovery funnel (#3990)

Full release notes

Wasm Verification

To build the wasm modules yourself and verify their hashes, run the following commands from the root of the Internet Identity repository:

git pull  # to ensure you have the latest changes.
git checkout 9ae51005f9ab8afe26366ad45c8ea706b6ce8d3c
./scripts/verify-hash --ii-hash 917a42d0f8621ab59921b3ad320bdc2fd30951721e1687e7e5d1be035936fce9

Backend Argument Verification

Run the following command to verify the backend upgrade argument hash:

didc encode -d ./src/internet_identity/internet_identity.did -t '(opt InternetIdentityInit)' '(
  opt record {
    sso_credential_migration = opt vec {
      record {
        name = opt "DFINITY";
        issuer = "https://dfinity.okta.com";
        discovery_domain = "dfinity.org";
        client_id = "0oa1vmzsb82J4wuj3358";
      };
    };
  },
)' | xxd -r -p | sha256sum

The output should match the argument hash.

Original NNS proposal

Payload

Proposal to execute nervous system function:

Nervous system function:

NervousSystemFunction { id: 1000, name: "Vote on NNS proposal", description: Some( "Vote yes to a given NNS proposal. If there is no strict majority, vote for the majority outcome.", ), function_type: Some( GenericNervousSystemFunction( GenericNervousSystemFunction { target_canister_id: Some( tsbvt-pyaaa-aaaar-qafva-cai, ), target_method_name: Some( "approve_proposal", ), validator_canister_id: Some( tsbvt-pyaaa-aaaar-qafva-cai, ), validator_method_name: Some( "approve_proposal_validate", ), topic: Some( ApplicationBusinessLogic, ), }, ), ), }

Payload sha256:

2eefa91e65df6a1604b77e8c2669f2f3d45037e8e08cf03a449d8c514914aa19

Payload:

142269

Overview