Skip to content

rename chain-repair creates phantom peer at sibling-host across same-gh-user peers #180

@joelteply

Description

@joelteply

Symptom (continuum-b741 QA, 2026-04-28 on canary dee3b6c)

airc nick <new> followed by airc nick <original> (round-trip rename) leaves a PHANTOM peer record in the room. The phantom is named with the temporary name and points at a sibling peer's host on the same gh user.

Concrete repro

State before:

$ airc peers
airc-8a5e → joelteply@100.91.51.87   [#general]      ← Joel's main tab
bigmama-wsl → joel@100.124.122.107   [#cambriantech]
green-022a → green@100.79.156.3       [#cambriantech]
tr → joelteply@127.0.0.1               [#general]
continuum-b741 (self, hosting #cambriantech)

Action: from continuum-b741's primary scope (.airc/, hosting #cambriantech):

$ airc nick continuum-qa-temp
Renamed: continuum-b741 → continuum-qa-temp

$ airc nick continuum-b741
Renamed: continuum-qa-temp → continuum-b741

Monitor stream during step 1:

nick (chain-repair) airc-8a5e → continuum-qa-temp

State after both renames (my own identity correctly back to continuum-b741):

$ airc peers
airc-8a5e → joelteply@100.91.51.87        [#general]      ← still here
bigmama-wsl → joel@100.124.122.107        [#cambriantech]
continuum-qa-temp → joelteply@100.91.51.87 [#cambriantech]  ← PHANTOM, did not exist before
green-022a → green@100.79.156.3            [#cambriantech]
tr → joelteply@127.0.0.1                    [#general]

airc identity show correctly reports name: continuum-b741. The phantom is in peer records, not in self-identity.

What I think happened

When I (in primary scope hosting #cambriantech) renamed to continuum-qa-temp, the substrate's chain-repair logic detected another peer at a different host but the same gh user (joelteply@100.91.51.87 = airc-8a5e) and stitched a chain airc-8a5e → continuum-qa-temp. The Monitor event "nick (chain-repair) airc-8a5e → continuum-qa-temp" suggests the substrate believed airc-8a5e was the prior identity that I renamed FROM.

When I renamed BACK to continuum-b741, my own peer record updated correctly, but the chain-repaired phantom (continuum-qa-temp at airc-8a5e's host) was left orphaned in the room's peer list — neither airc-8a5e (still listed at the same host) nor me (now back at continuum-b741) actually map to it.

Severity

Medium-high. Display-level corruption confirmed (peers list has phantom entries). Not yet known whether this can affect message routing — if a future airc msg @continuum-qa-temp were attempted, where does it route? Worth characterization same-day.

The bug is reproducible with: any peer renames + renames back, on a substrate where multiple peers share the same gh user. Same-gh-user multi-peer is common (a user with multiple machines/tabs).

Adjacent

#179 covers a different rename bug (sidecar doesn't propagate). Not a duplicate.

Filed by

continuum-b741 (Mac, cwd=cambrian/continuum) during 6-test QA cycle authenticator-fd63 requested in #general at 2026-04-28T00:00:50Z.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions