- Rename python/configs/usage.md → usage-simple.md so both scripts have a
parallel runnable reference file in the same directory
- Add python/configs/usage-phases.md: runnable sh commands + real expected
output for phases.py against every error-path config, including a note on
the key difference from simple.py (HTTP 4xx exits 0 in phases.py vs 1 in
simple.py because phases.py completes at the network level)
- Update doc cross-links in docs/usage/py-simple.md and py-phases.md
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Hand-drives raw sockets to time each HTTP phase individually — DNS
(getaddrinfo), TCP connect, TLS handshake (ssl.wrap_socket, https only),
TTFB (sendall → first recv), Transfer (first byte → EOF), Total.
Partial phases are preserved on failure (same invariant as Go's probe.go).
Error classification mirrors Go's priority: dns → timeout → tls → connect.
Output format matches Go's single-sample text layout.
Input: bare URL args or plain-text config file (same format as simple.py).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>