tractor/examples
Gud Boi bf974c9870 Add a `wg`-tunnelled 2-host example set
Re-renders gh #482's examples w/ the corrected (infix) maddr
grammar, as the "layer A" slice of the wg plan: declarative
maddrs only, tunnel pre-provisioned out-of-band, zero runtime
changes.

- `wg_maddr.py`: a `frozen=True` `msgspec.Struct` addr carrying
  `bearer`/`peer_pubkey`/`inner` (+ `inner_proto`), a `.maddr`
  property that re-renders the canonical form, and pure
  `mb_pubkey()`/`wg8_pubkey()`/`parse_wg_maddr()`. The parser
  rejects #482's inverted suffix form w/ an actionable error and
  stays **side-effect free** — `verify_wg_peer()` is a separate,
  explicitly impure step the caller composes, never something a
  parse path shells out to.
- `host_a_srv.py`/`host_b_client.py`: the two-host runs, passing
  only `addr.inner` into `open_nursery()`/`open_root_actor()`,
  which is the whole point — the bearer + key layers are already
  established before any bind happens.
- `README.md`: the grammar + the 3-owners table, the `#108`
  branch install line, tunnel setup, and a "what changed vs
  #482" section enumerating the corrections.

Runnable-shaped but **not yet run against a live tunnel**; that's
next, and the reason these sit on the planning branch rather than
in `examples/` proper. `_segments()` marks its stopgap for when
the `wg` codec isn't installed.

(this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`))
2026-08-12 20:08:15 -04:00
..
advanced_faults Include `TransportClosed` in tpt-layer err handling 2026-02-19 13:55:02 -05:00
debugging Fix review nits from PR #460 self-review 2026-06-28 13:29:01 -04:00
integration mpi integration test 2026-04-10 20:58:54 -04:00
parallelism Rework landing example onto the `Context` API 2026-06-28 13:29:02 -04:00
trio Reduce "ignore cases" script to `trio`-only 2025-09-07 18:49:21 -04:00
wg_lan Add a `wg`-tunnelled 2-host example set 2026-08-12 20:08:15 -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 Use `.wait_for_result()` in dated examples 2026-06-28 13:29:01 -04:00
actor_spawning_and_causality.py Use `.wait_for_result()` in dated examples 2026-06-28 13:29:01 -04:00
actor_spawning_and_causality_with_daemon.py Drop lingering rpc_module_paths refs 2021-05-07 11:21:40 -04:00
asynchronous_generators.py Terminate async gen example caller to avoid (benign) errors in console output 2021-08-02 21:49:15 -04:00
full_fledged_streaming_service.py Final try, drop logging level in streaming example to see if macos can cope.. 2026-03-09 19:46:42 -04:00
infected_asyncio_echo_server.py Swap `open_channel_from()` to yield `(chan, first)` 2026-03-13 19:28:57 -04:00
multiple_streams_one_portal.py Update all examples to new streaming API 2021-04-28 12:23:08 -04:00
nested_actor_tree.py Add 5 examples filling doc-tutorial gaps 2026-06-28 13:29:01 -04:00
quick_cluster.py Remove lingering seg=False-flags from examples 2025-08-18 12:03:10 -04:00
remote_error_propagation.py Drop lingering rpc_module_paths refs 2021-05-07 11:21:40 -04:00
rpc_bidir_streaming.py Drop now-deprecated deps on modern `trio`/Python 2025-03-16 16:06:24 -04:00
service_daemon_discovery.py Add 5 examples filling doc-tutorial gaps 2026-06-28 13:29:01 -04:00
service_discovery.py Rename `Arbiter` -> `Registrar`, mv to `discovery._registry` 2026-04-02 17:59:13 -04:00
streaming_broadcast_fanout.py Add 5 examples filling doc-tutorial gaps 2026-06-28 13:29:01 -04:00
typed_payloads.py Add 5 examples filling doc-tutorial gaps 2026-06-28 13:29:01 -04:00
uds_transport_actor_tree.py Fix review nits from PR #460 self-review 2026-06-28 13:29:01 -04:00