Repository navigation
Adopt invitation MLS with protected Cambium provisioning - #329
Merged
Merged
Conversation
…d-invitation-android-20261025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Accepted rendezvous children now remain usable after the short encrypted handoff acceptance deadline, until rotation, revocation, clear/sign-out or protected-state loss. Fresh late replies still refuse. Request, credential, room and invitation expiry and current-child guards remain enforced; no automatic reprovisioning or new authority is added.
Latest candidate 784bfd6 includes main 574ce60. 539 protocol and 109 focused app tests passed at lifetime commit61a9056b; its four changed files remain byte-identical after the current-main merge. Final merged source/Compose compilation and62 reaction/relay/shared-pool/NIP46 integration tests passed. This is component/composition evidence; updated-head hosted CI is separate.
The Android invitation-profile draft now uses our Cambium signer path as well as direct Heartwood bunkers. KithMoot retains its own target transport key in the existing Keystore-encrypted account record, sends only its public key through a strict Activity-only
heartwood_provision_rendezvousrequest, and validates the original persona, device, nonce, index and expiry before accepting the child-key-encrypted reply. Cold restore migrates a missing target before account adoption and preserves the retained account if that protected write fails.The selected signer/package, original job, session, stage and time window remain checked through request, vault acceptance and result publication. Cancellation or navigation during synchronous storage cannot publish fresh success; a stale completed write is retained for protected-status readback. No Cambium client secret, root secret or generic RPC/decrypt capability is exposed. The shared typed signer surface also handles restored direct bunker wrappers. Direct NIP46 index and expiry are corrected to JSON numbers, matching Heartwood's actual parser.
This retains the experimental invitation controls: independent inviter pin, fresh typed vault authorisation, atomic witnessed context/session adoption, exact response retry, trusted snapshot-v3 restart, loss/import/clone holds, independent keeper registration request/receipt exchange, member-only Add, Update, messages and current-member Remove, including removing the creator. Membership never grants storage keeper authority. The prior private inbox sender/keeper controls remain included. The initial app preview is single-home.
Validation:
Includes current main 574ce60 and private-read work #328. Requires forgesworn/cambium#35, forgesworn/vennel#315 and forgesworn/bothy-node#121/#122 for corresponding real signer/node adoption. Browser counterpart: forgesworn/kithmoot#575 and forgesworn/bark#63.
Keep draft. Release builds keep experimental MLS disabled; debug builds also require explicit
-Pkithmoot.experimentalInvitationMls=true. Actual UI through Cambium and physical Heartwood, complete browser/Android Link/Bothy delivery, live public-relay metadata measurement and independent security review remain unexecuted. Arbitrary jointly restored backups remain outside the selected profile. No installation, app release or production activation is included.