Summary
On a fresh Windows install of wire 0.16.0 (wire-x86_64-pc-windows-msvc.exe), I observed three different code paths resolving the same peer to three different endpoints — which contradicts RFC-006 Part B ("endpoints[] is the single peer-routing source", #268).
Peer: saffron-burrow (did:wire:saffron-burrow-f1fdd0e9).
Repro
# 1. Onboard
$ wire up @wireup.net
claimed raven-kettle on https://wireup.net
# 2. Try to dial peer (peer had already dialed me)
$ wire dial saffron-burrow@wireup.net
error: wire dial: federation pair to `saffron-burrow@wireup.net` failed:
pair_drop_ack to saffron-burrow failed across 1 endpoint(s):
• http://127.0.0.1:18791 (Federation): POST .../v1/events/...
# 3. Whois the same handle
$ wire whois saffron-burrow@wireup.net
error: well_known_agent_card_a2a failed: 404 Not Found:
{"error":"... \"saffron-burrow\" isn't claimed on this switchboard"}
# 4. Pending shows the inbound pair-intro (received OK)
$ wire pending
[{"peer_handle":"saffron-burrow","peer_relay_url":"http://127.0.0.1:18791",
"peer_slot_id":"b9ca8820d49000c829f8e9dc735f18c9",
"peer_endpoints":[{"relay_url":"http://127.0.0.1:18791","scope":"federation",...}], ...}]
# 5. Accept (succeeded — operator consent)
$ wire accept saffron-burrow
{"status":"bilateral_accepted","handle":"saffron-burrow@http://127.0.0.1:18791", ...}
# 6. Send — and it delivers, but to a THIRD slot/relay
$ wire send saffron-burrow "ping"
phyllis: saffron-burrow's line is silent — relay sees no pulls yet.
{"status":"delivered","relay_url":"https://wireup.net",
"slot_id":"0e5d7616f4e95b08c314a07a95d52efa", ...}
What's inconsistent
| Path |
Endpoint used |
Result |
wire dial pair_drop_ack |
http://127.0.0.1:18791 (from card endpoints[]) |
Network error — loopback unreachable from federation peer |
wire whois directory lookup |
wireup.net/.well-known/wire/agent |
404 (not claimed in directory) |
wire send after accept |
https://wireup.net slot 0e5d7616... |
Delivered |
| Pending-inbound card |
peer_relay_url: 127.0.0.1:18791, peer_slot_id: b9ca8820... |
— |
Three different routes, three different relay/slot pairs for one peer.
If RFC-006 Part B is the format-freeze gate and endpoints[] is the single source, then wire send should be using the same endpoints[] the card carried — not a separate wireup.net slot the card never advertised. Either:
- (a)
wire send is bypassing endpoints[] (RFC-006 Part B regression), or
- (b)
wire dial / wire accept are storing endpoints from a stale/wrong source, or
- (c)
wire whois directory lookup and the actual reachable federation slot have drifted (directory record missing while slot exists).
Risk / impact
- Operator sees
whois 404 → assumes peer doesn't exist → may reject a real pair request.
- Pending-inbound shows only loopback endpoints → operator can't tell if accepting will result in a working bilateral link.
- Bilateral pair succeeds with
status: bilateral_accepted even though the dial-side pair_drop_ack failed earlier. Status is misleading.
- Reply path correctness depends on which code path the daemon picks — different verbs taking different routes is a foot-gun for debugging.
Versions / env
- Host: Windows 10 Pro (DESKTOP-1LK5VSJ), x86_64
wire 0.16.0 (Windows MSVC release asset, sha256 eab201377ecfdca4d95e493d7357e279cb85237a5a0fb661aac1794daadfff71)
- Relay:
wireup.net
- Peer ran wire from another host with
wire up (exact relay binding unknown — that's part of the question, since whois says they're not claimed but their slot does receive wire send)
Asks
- Confirm which of dial / whois / send is authoritative under RFC-006 Part B.
- Whichever is wrong: align it.
- Operator-facing: when
endpoints[] only contains loopback URLs, surface the warning in pending output ("peer endpoints are loopback-only — bilateral reply path may not work") so the operator knows what they're accepting.
Summary
On a fresh Windows install of
wire 0.16.0(wire-x86_64-pc-windows-msvc.exe), I observed three different code paths resolving the same peer to three different endpoints — which contradicts RFC-006 Part B ("endpoints[]is the single peer-routing source", #268).Peer:
saffron-burrow(did:wire:saffron-burrow-f1fdd0e9).Repro
What's inconsistent
wire dialpair_drop_ackhttp://127.0.0.1:18791(from cardendpoints[])wire whoisdirectory lookupwireup.net/.well-known/wire/agentwire sendafter accepthttps://wireup.netslot0e5d7616...peer_relay_url: 127.0.0.1:18791,peer_slot_id: b9ca8820...Three different routes, three different relay/slot pairs for one peer.
If RFC-006 Part B is the format-freeze gate and
endpoints[]is the single source, thenwire sendshould be using the sameendpoints[]the card carried — not a separatewireup.netslot the card never advertised. Either:wire sendis bypassingendpoints[](RFC-006 Part B regression), orwire dial/wire acceptare storing endpoints from a stale/wrong source, orwire whoisdirectory lookup and the actual reachable federation slot have drifted (directory record missing while slot exists).Risk / impact
whois404 → assumes peer doesn't exist → may reject a real pair request.status: bilateral_acceptedeven though the dial-sidepair_drop_ackfailed earlier. Status is misleading.Versions / env
wire 0.16.0(Windows MSVC release asset, sha256eab201377ecfdca4d95e493d7357e279cb85237a5a0fb661aac1794daadfff71)wireup.netwire up(exact relay binding unknown — that's part of the question, sincewhoissays they're not claimed but their slot does receivewire send)Asks
endpoints[]only contains loopback URLs, surface the warning inpendingoutput ("peer endpoints are loopback-only — bilateral reply path may not work") so the operator knows what they're accepting.