identity drift: prod bot MXID (@voicebridge_as) vs docs/test-profile (@nether-voicebridge_bot) — first real beta user stranded #96
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
dark/nether-voicebridge#96
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Incident 2026-07-12 (first real self-serve attempt!):
@dau:tinier.townDM-invited@nether-voicebridge_bot:nether.imper the docs. Prod's[server.nether]setsbot_user_id = @voicebridge_as:nether.im, so no prod client syncs as the documented user — the invite sat pending. A staging e2e run (whosetestprofile DOES use the_botMXID, masquerading via the nvbtest as_token — same exclusive namespace) then consumed the invites at startup, federated-joined both of dau's DMs, and greeted from a throwaway drill process. Net effect: user stranded at an address nobody serves, plus staging can eat prod-adjacent invites.Shipped immediately: docs corrected to
@voicebridge_as:nether.im(repo86fbd34, wiki4efbd55).Remaining decisions:
@<stem>_botuser (invasive: every bridged-room membership, mgmt crypto store, tenants — probably not worth it), or the convention/docs/example configs treat the sender_localpart user as the canonical bot and the_botderivation note gets revisited. Pick one and makevalidate()or docs generation keep them honest.testprofile'sbot_user_idis inside the appservice's exclusive namespace, so drill runs can consume real pending invites for that MXID. Options: move the harness bot to a clearly-test localpart (still in namespace, e.g.@nether-voicebridge_e2etest:nether.im), or accept + document the hazard (mgmt scenarios only when no pending prod invites — unenforceable for strangers).@nether-voicebridge_botis now a member of two tinier.town DM rooms (one E2EE) with a greeting posted from a dead drill device; needs a polite exit (message + leave via as_token).Progress 2026-07-12:
@voicebridge_as:nether.im(repo86fbd34, wiki4efbd55, live).e2e.tomlsender_localpart→nether-voicebridge_e2e(mgmt bot =@nether-voicebridge_e2e_bot, registered + joined Auto Test 01/02; per-scenario bridge stores wiped once — identity change invalidates persisted sessions);mgmt_self_serve_linkLIVE PASS 76.5s on the new identity.e2e.example.tomldocuments the distinct-stem convention (5935c1e).@nether-voicebridge_bot:nether.imvia the Tuwunel admin room (deactivation auto-leaves its ~77 rooms — all e2e detritus + dau's two DMs; prod rooms are@voicebridge_as's and unaffected). Then item 1 (identity-convergence decision) can be closed as "prod stays voicebridge_as, conventional name retired", and item 4 (pending-invite watch) remains optional hardening.