osmaczko 2321e4cb6d
fix: subscribe InboxV2 on routing_id, not the credential id
InboxV2 gated inbound on the credential id (hex of the DelegateCredential TLV),
but a sender addresses the Welcome to the invitee's routing address, which the
account directory resolves to the device key HttpRegistry stores the key-package
under. The two differ, so the Welcome fell through to PayloadOutcome::Empty and
the invitee never joined. EphemeralRegistry hid this by keying key-packages on
the credential id.

This is routing-vs-credential, not account-vs-device: the TLV-wrapped credential
differs from the address even when account key == device key (testnet today), so
a client associating over HttpRegistry hits it; only the in-process
EphemeralRegistry path is unaffected.

Add IdentityProvider::routing_id() (defaults to id()); DelegateSigner derives it
from its credential (the account address once associated, else id());
Core::assemble subscribes InboxV2 on routing_id(). id() still backs the MLS
credential, member id, sender id, and decode_sender, so membership and
attribution are unchanged. Regression test direct_v1_welcome_routes_on_routing_id
over a device-key-keyed registry (as HttpRegistry) fails without the fix.
2026-07-01 01:49:48 +02:00
..
2026-05-20 13:18:25 -07:00
2026-05-20 13:18:25 -07:00
2026-03-24 18:21:00 -07:00

Core

Crates in this directory will one day be separated into a separate shared repository.

They could be moved now, but it's desirable to have a monorepo setup at this time.

These crates MUST not depend on any code outside of this folder.