Skip to content

Probe real libraries under the simulation and publish what happens - #14

Merged
dhruvl merged 5 commits into
mainfrom
compat-probes
Jul 31, 2026
Merged

Probe real libraries under the simulation and publish what happens#14
dhruvl merged 5 commits into
mainfrom
compat-probes

Conversation

@dhruvl

@dhruvl dhruvl commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Adds probes/ — a dev-only harness that drives each library's happy path on a SimLoop and records one verdict line: works (what was exercised), fenced (the exact fence message), or fails (the exception). docs/compatibility.md publishes the table verbatim with pinned versions, a date, and instructions to regenerate; the README's honest-limits section links to it.

The current table, after the two unlocks the probes themselves motivated (#12's encoded-hostname fix and #13's server.sockets):

  • works: aiohttp server (both loop.create_server and the documented TCPSite path), anyio's asyncio backend, websockets over ws://, and the Redis RESP wire pattern over sim streams
  • fenced: aiohttp client (its connector opens a raw socket and hits the sock_connect fence — verbatim message in the doc)
  • fails: httpx — the connection through anyio actually succeeds; the stack then reads the raw socket object off the transport to report addresses, and the simulation's honest answer is None

Probe dependencies live in their own exactly-pinned probes dependency group (a plain uv run pytest never installs them), nothing enters the sdist (packaging tests untouched and passing), probes are deliberately not in CI, and mypy strict covers probes/ identically with or without the group installed.

233 fast + 10 slow pass, mypy strict clean, with and without the probes group.

dhruvl added 5 commits August 1, 2026 00:42
probes/ drives each library's happy path on a SimLoop and reports one
verdict line: works, fenced (with the exact fence message), or fails.
aiohttp serves a GET over the sim network, anyio's asyncio backend runs
task groups and streams, and the Redis wire protocol round-trips over
sim streams; the client stacks stop at sock_connect or name handling,
and docs/compatibility.md records each outcome verbatim with pinned
versions and regeneration instructions. Dev-only throughout: the probe
dependencies live in their own group, nothing ships in the sdist, and
CI never runs them.
aiohttp's documented TCPSite path and websockets both moved to works,
and httpx's row now records where its stack actually stops: the connect
succeeds, then anyio reads the raw socket object off the transport to
report addresses and the simulation's honest answer is None.
sim.random, sim.uuid4 and sim.time have been part of the package since
0.1.0 but the README never said so.
@dhruvl
dhruvl merged commit b45151d into main Jul 31, 2026
4 checks passed
@dhruvl
dhruvl deleted the compat-probes branch July 31, 2026 19:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant