fix(identity): ask the route question against a name that still answers - #870
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 515f492fc3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // identity resolution fail on the lookup, before any route was read. | ||
| // The MAC of the answering interface is the identity; the host never | ||
| // is, so this change re-derives the same identity over a live name. | ||
| SoftwareIdentityUplinkHost = "relay.ftw.energy" |
There was a problem hiding this comment.
Add a changeset for the identity fix
This changes user-visible gateway-identity-adopt behavior by restoring software identity resolution, but the commit contains no .changeset/*.md entry, so the release tooling will not record this fix in its generated release history. Add a patch changeset describing the restored identity adoption behavior.
AGENTS.md reference: AGENTS.md:L109-L114
Useful? React with 👍 / 👎.
ResolveStableSoftwareInterface asks the kernel which interface would carry the uplink, and anchors the software identity on that interface's permanent MAC. The question was asked against uplink.home.sourceful.energy — Home Link, retired in August 2026, DNS record and all — so every resolution now dies at the lookup, before a route is ever read. The name moves to relay.ftw.energy, which the box dials anyway. The MAC is the identity; the host never was, so the same box derives the same identity over the live name. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
d2bc3a0 to
40a1d81
Compare
Found by a session sweeping after Home Link's retirement:
gatewayidentity.SoftwareIdentityUplinkHoststill namesuplink.home.sourceful.energy, whose DNS record went with the service —digreturns nothing today. The stable-interface resolution therefore fails atLookupIP, before any route is read.The host is only a question to the kernel — which interface would carry my uplink? — and the identity is the answering interface's permanent MAC, never the name. Pointing the question at
relay.ftw.energy(which the box dials anyway) re-derives the same identity over a live name.The two ADRs that mention the old host are left as written: they record decisions made when it existed.
go test ./internal/gatewayidentity/...andgo vetgreen; the constant's pinning test moved with the constant.🤖 Generated with Claude Code