bridge.py:
- Fix _on_tunnel_opened/_on_tunnel_closed instance attrs shadowing methods
of the same name, causing NoneType-not-callable on every tunnel close
- Fix auto_seed not firing on --connect path: NID registration now triggers
whenever the NID is first learned from an announce, not only on is_new
- Move nid_is_new check inside _remote_bridges_lock to prevent double
rad-node-connect on concurrent announces
- Distinguish link CLOSED vs timeout in link establishment log message
- Add startup re-announce loop so peers that start slightly later are
discovered without manual --connect; delays are configurable
- Add announce_retry_delays parameter (default 5,15,30s; use 60,300,900s
on LoRa to respect duty cycle limits)
cli.py:
- Expose --announce-retry-delays flag with validation and helpful error
README.md:
- Rewrite setup section based on real end-to-end test (two machines,
radicle-node listen config, rad remote add workflow)
- Remove --connect and rad node connect from required steps; both are
now automatic via auto-discovery and auto-seed
- Add LoRa duty cycle note for announce delays
- Add full git workflow: init, push, clone, fetch across mesh