I4013 — A server bound to every interface advertises the addresses it has now
A server bound to 0.0.0.0 reads its interface addresses again before every beacon it signs (Beacon::follow), so that its advertisement follows a DHCP move instead of naming the address it held when it started.
BLOKOVÁNO vlna 0 · p1 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until milestone:mesh-connectivity is done. The status is derived from that, not declared.
Cíl
A server bound to 0.0.0.0 reads its interface addresses again before every beacon it signs (Beacon::follow), so that its advertisement follows a DHCP move instead of naming the address it held when it started.
Proč
On 2026-10-23 the hub of the owner's MacBook-2 advertised 192.168.100.96:8791 after DHCP had moved the machine to .100, and it had not advertised its tailnet address at all. No other machine could dial it until it was restarted by hand; after the restart it advertised .100 and the tailnet address.
Aktuální stav
shared.rs derives the advertised endpoints once, at activation; Beacon keeps them for its lifetime.
Cílový stav
A beacon built for a server bound to every interface reads advertised_endpoints again before each envelope; an empty reading keeps the last endpoints; a specific bind or a hosted hub's --advertise URL stays fixed.
Rozsah
- apps/majordomus-cli/src/mesh/provider.rs
- apps/majordomus-cli/src/mesh/manager.rs
- apps/majordomus-cli/src/shared.rs
- .ai/repo/project/issues/I4013.yaml
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- A followed beacon signs the endpoints its source answers now
- An empty answer keeps the last endpoints
- Only a server bound to the unspecified address follows its interfaces
Validace
- cargo test --doc mesh::provider
- cargo test --lib shared::
Požadované důkazy
- only_a_server_bound_to_every_interface_follows_them
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I4013.yaml. Read it back with majordomus plan show I4013.