proximo

A shared route answers on two peer names, derived from its local hosts

A colleague cannot reach a route by its .test name: .test is not delegable, proximo's DNS server answers every name under it with 127.0.0.1, and two machines running a project called shop is the ordinary case. A shared route needs a name that says which machine it is on, that a colleague can bookmark, and that a Collision on the sharing machine cannot quietly redirect.

Decision. A shared route answers on two peer names, derived from the two hosts ADR 0003 already gives it, by one rule: replace .<tld> with .<machine>.<suffix>.

Derived from api.test in project shop
Bare peer name the Bare host api.<machine>.<suffix>
Qualified peer name the Qualified host api.shop.<machine>.<suffix>

The TLD stays exactly one per machine. This clarifies ADR 0003 rather than amending it: the machine answers a second suffix, but claims nothing for it on the host resolver.

Considered options

The Bare peer name only. Simpler, one name to explain. Rejected: it is precisely the name a Collision can move, which is the failure ADR 0003 exists to remove (#77).

A flattened Qualified name, <name>--<project>.<machine>.<suffix>. Chosen first, when a per-machine wildcard certificate covered exactly one label; the double hyphen kept the mapping invertible where a single one would collide with service names that contain a hyphen. Rejected once the wildcard was gone (#98): it was the wildcard's price, never parity with the local shape, which was always dotted. It defines a second grammar with its own collision class, can exceed the 63-octet label limit, and skips the <project> cookie scope ADR 0003's trade presumes.

A suffix under a domain the team owns. Immune to a future Public Suffix List entry. Rejected (#101): the exposure it avoids is neutral or beneficial under a private-use suffix — a listing of the parent would make each machine its own site — while under an owned domain a cookie scoped to that domain reaches everything else the team serves there. A signed parent zone would also make privately served answers fail validation.

Deriving <machine> from the hostname or the OS user. Rejected: both usually carry a person's name, and both change when the machine does.

Consequences