Compatibility and migration to 1.0
Version 1.0 freezes the reliability and evidence contracts without freezing every character of presentation forever.
Supported runtime
The 1.x series supports exactly Python 3.11, 3.12, and 3.13, with pytest 8 or
9. The wheel metadata enforces Python >=3.11,<3.14; CI exercises all six
Python/pytest combinations both serially and with xdist.
Stable 1.x contracts
Within 1.x:
installing the plugin remains a true passthrough until
--receptor=llmor--receptor=ciis selected;pytest’s numeric exit status remains authoritative and is never changed;
leading verdict labels and documented result meanings remain compatible;
existing command-line options and configuration keys are not removed or reinterpreted incompatibly;
pytest-receptor.events@1remains readable by the supportedread_artifact()API;artifact consumers may receive additive fields or event types and must ignore unknown fields while preserving unknown records;
an incompatible artifact change requires
events@2; an incompatible public behavior change requires a new major package version.
Exact golden reports protect against accidental formatting drift. A minor 1.x release may make an additive presentation improvement, such as exposing new pytest evidence, provided the meanings above and token-economy goal are kept. Consumers should key on verdicts and documented fields, not offsets or ANSI layout.
Migrating from 0.7
No invocation change is required:
pytest --receptor=llm
pytest --receptor=ci
The important additions are opt-in or corrective:
--receptor-events=PATHwrites the versioned JSONL evidence stream;--receptor-events-max-bytes=BYTESsets its audited hard ceiling;pytest_receptor.read_artifact()is the supported machine-consumer API;reruns and subtests now retain attempt/subtest identity without inflating the logical test count;
compact truncation is auditable, while the full disk report retains complete messages and captured sections;
normalized root-cause groups carry stable SHA-256 fingerprints in the final artifact record.
The human default remains unchanged pytest. Existing
receptor_normalizers and receptor_rerun_command settings continue to work.