---
name: v0170-robust-join-design
description: v0.17.0 milestone DESIGNED (not yet built) — robust WAN join (ADR-0030) + presence-liveness truth; JIT ready for todlando
metadata: 
  node_type: memory
  type: project
  originSessionId: 712ec375-e0f7-42d6-afab-1b6b84a87330
---

**✅ BUILT + PUBLISHED 2026-06-28 — v0.17.0 counter 36 (all 5 waves shipped). See [[v0170-published]] for hashes + release gotchas.** (design below is historical.)

**v0.17.0 design DONE 2026-06-27** (grilled w/ operator), branch `v0.17.0-robust-join` off main @9e5b33b, design checkpoint @551f3dc. NEXT = build (todlando), counter 36. Two confirmed field bugs (SCELTOUIN) drove it:

1. **WAN join silently fails on half-broken IPv6** ([[broken-ipv6-poisons-iroh-discovery]]).
2. **Remote node paints another node's DEAD endpoints ONLINE** ([[presence-dead-shows-online]]).

**Artifacts:** ADR-0030 (robust WAN subnet join) + `docs/design/robust-wan-subnet-join.md` + CONTEXT.md glossary correction (TOTP-epoch=public-routes-the-meet vs TOTP-code=secret-SPAKE2-only; the keystone that licensed meet-before-code) + 4 REQ seeds + `V0.17.0-ROBUST-JOIN-AND-PRESENCE-JIT.md`.

**JIT waves (TWO parallel clusters — join W1-3 + presence/display W4-5):** W1 per-family bind gate (REQ-NET-FAMILY-GATE — bind only reachable families, SPT_DISABLE_IPV6/IPV4 knobs; THE urgent root fix, shippable alone) · W2 two-phase meet-before-code join (REQ-JOIN-TWO-PHASE — PairMeetReq→MetMember→prompt code→PairCodeSubmit→ceremony; 5-min held-addr; wrong-code retry=ceremony-only; --code one-shot) · W3 diagnosable join (REQ-JOIN-DIAGNOSTICS — progress + pre-prompt failure detail + brain.rs:1024 propagation + --verbose/SPT_LOG) · W4 presence-liveness truth (REQ-PRESENCE-LIVENESS-TRUTH — registryhost cold-on-live-node→**Suspended** not Dormant/Offline) · W5 subnet display parity (REQ-SUBNET-DISPLAY-PARITY — gossip bound/controlled+driver/harness fields, remove remote-reduction, NEW palette: fill=actionable; red-filled=unbound, amber-hollow=harness-only, gray-filled=suspended; design docs/design/subnet-presence-display.md) · W6 int+docs+release. **W1+W4 = correctness blockers; W2/W3/W5 = enhancements.** W5 depends on W4. See [[presence-dead-shows-online]] for the instance-state model.

Roles unchanged: todlando builds, doyle gates, deployah publishes. ADR-0030 doc-ratifies the join cluster (those 3 REQs at required_stages=[doc]); presence REQ is seed [].
