Three regression nets, each built from production evidence:
- tests/agent/transports/test_provider_wire_snapshot.py + tests/fixtures/provider_wire_snapshot.json:
the request every registered provider is sent (51 providers x reasoning unset/high/off), built
through the production assembly path (build_api_request: cache decoration, sanitization,
transport kwargs, Codex preflight, middleware). A shared-code edit that changes what any
provider receives fails naming the provider and the first diverging key; a new provider fails
until its wire is recorded. Network and DNS are blocked so capability probes (Ollama
/api/show, LM Studio, catalogs) record their offline answer, not a live server's.
Mutation check: +1 on the shared timeout fails 38 providers.
- tests/agent/test_error_classifier_observed.py: error bodies Hermes actually received (relay
traces and agent.log, scrubbed), raised as the real openai/httpx exception types. Two known
gaps are run-time xfails that flip to passing when their fix lands: #49769 (OpenRouter
"can only afford N" 402 classified as terminal billing) and #85005 ("not a multimodal model"
not recognised as an image rejection).
- tests/agent/test_prompt_cache_prefix_contract.py: a real AIAgent on a caching route against
the recording fake provider; every request must re-send the previous request's content and
only append. Pins a live cache bust as a run-time xfail: the #81867 skill-scaffold split is
applied only while the skill message is inside the last-N marker window, so request 3 of a
skill session re-sends the scaffold as a plain string and re-writes it (~20k tokens on call 2
of skill-invoked sessions in agent.log).