tractor/examples
Gud Boi 768b531662 Retract the hand-rolled tunnel peeler from plan-03
§3.2 specced a pure fn `_peel_tunnel_segs(proto_names) ->
(bearer_names, tunnel_specs, overlay_names)` to split a maddr at
its tunnel seg. It should never be written: `py-multiaddr` ships
that whole surface already and the plan simply missed it, even
though gh #443's 2nd bullet links the README sections in
question.

Replaced w/ a ⚠️ CORRECTION carrying the verified API table
(`.decapsulate_code(P_WG)` for the bearer, `.split()`/`.join()`
for a seg tail, `.value_for_protocol()` to read a value,
`.encapsulate()` to recompose) plus *why* it works on an infix
`/wg/` seg: the cut is by proto-code, never by matching an addr
value, and the key seg has no addr of its own.

Also,
- adopt `bearer`/`overlay` as the role names throughout, and say
  plainly why not `inner`/`outer` — the call-stack reading of
  "inner" is the exact opposite of the encapsulation one.
- warn that `value_for_protocol('ip4')` on a full tunnelled
  maddr silently yields the *bearer's* host; only call it on a
  peeled sub-maddr.
- note nesting (wg-in-wg) falls out of `.decapsulate_code()`
  cutting at the *last* occurrence, so peel repeatedly rather
  than recursing through a bespoke splitter.
- `mk_maddr()` for `TunnelledAddress` is `.encapsulate()`
  composition, not `str` building.
- README: drop the "degrades to a plain segment split" para,
  since that path is gone — no codec now means one actionable
  raise.

(this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`))
2026-08-29 22:02:56 -04:00
..
advanced_faults Include `TransportClosed` in tpt-layer err handling 2026-02-19 13:55:02 -05:00
debugging Polish the debugger examples 2026-08-29 19:01:34 -04:00
discovery Harden the dedicated registrar example 2026-08-29 20:05:28 -04:00
integration Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
multihost/wg_lan Retract the hand-rolled tunnel peeler from plan-03 2026-08-29 22:02:56 -04:00
parallelism Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
trio Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
__init__.py Make example a subpkg for `python -m <mod>` testing 2022-07-27 11:40:02 -04:00
__main__.py Use trio.run() in windows tests 2021-05-07 11:21:40 -04:00
a_trynamic_first_scene.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
actor_spawning_and_causality.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
actor_spawning_and_causality_with_daemon.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
asynchronous_generators.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
full_fledged_streaming_service.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
infected_asyncio_echo_server.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
multiple_streams_one_portal.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
nested_actor_tree.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
quick_cluster.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
remote_error_propagation.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
rpc_bidir_streaming.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
service_daemon_discovery.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
service_discovery.py Show the discovered actor address 2026-08-29 20:24:25 -04:00
streaming_broadcast_fanout.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
typed_payloads.py Polish the non-debug docs examples 2026-08-29 18:58:43 -04:00
uds_transport_actor_tree.py Widen `accept_addr` in the UDS example 2026-08-29 21:46:38 -04:00