Support policy
tradefloor is before 1.0, so the API can change in any minor release. Pin the version you tested with:
pip install "tradefloor==0.8.7"
The model is versioned separately, as presets, so a result names both: the package version and the preset it ran on. This page is a summary of SUPPORT.md in the library repository, which is the policy itself.
Supported releases
| Version | Supported |
|---|---|
| 0.8.5 and the 0.8 patches after it | Yes. The first long-term support line, with pt-v20 as the default. |
| 0.8.1 and earlier | No fixes. Every release from 0.5.0 on stays installable from PyPI and crates.io. |
The 0.8 line gets bug and security fixes for 24 months from the day 0.8.5 was tagged. After that it stays installable and gets no more fixes. The next long-term support line is named at least 6 months before this one ends, so the two overlap. Old releases are never removed, and a release is never yanked to hide a model change, because published results replay on the version that made them.
To report a vulnerability, use the private security advisory form on GitHub.
Changes allowed in a patch release
A 0.8.x patch may ship:
- a bug fix that leaves every known-answer digest unchanged
- a security fix, under the same condition
- wheels for a new CPython version or platform, built from the same source and giving the same digests
- documentation and error messages
These stay fixed for the life of the 0.8 line:
- every shipped preset's coefficients, and so its fingerprint
- the known-answer digests, because a digest that moves means the market moved
- the default preset, pt-v20
- the random draw schedule: how many draws are taken, from which stream and in what order
- the public API of the Python package and the Rust crate. Nothing is removed or renamed, no signature changes in a way that breaks a call, and no new features are added
- saved formats. A checkpoint,
RunManifestor recorded transcript written by one 0.8 patch loads in every other - what an LLM agent is shown and how it answers: observation payload version 1 and decision contract version 2
A defect that would change a market cannot ship in a patch. It is written up as an erratum in the release notes and in tradefloor.envelope, where tf.envelope.check() can refuse the questions it affects, and the fix ships in the next minor release, as a new preset if it changes coefficients.
Presets across releases
A preset is frozen when it first ships in a tagged release. From then on its coefficients, its fingerprint and its known-answer digest stay the same, and a later release can measure it again and publish new figures about it without changing what it computes. A better coefficient becomes a new preset with a new name.
From the 0.8 line on, a new preset becomes the default only in a minor release such as 0.9.0, never in a patch. 0.8.5 was the one exception, because the policy starts there. The release notes say which preset moved and what changes for a user.
A preset that is no longer measured or recommended is retired. It keeps running exactly and stays in the package, because removing it would break every result that cites it. Reproducibility says what a preset name pins and what it does not.
Release checks
Every release builds wheels for five targets (Linux x86_64 and aarch64, macOS arm64 and x86_64, Windows x86_64), runs the known-answer tests on each and stops if any target's digests differ from the others or from the committed ones. The tests hash these runs, one digest each:
simone fixed untraded market of twelve companies over five sessions on the default presetmetathe coefficients the library reports for that preset, kept apart so a reporting fix cannot pass for a market changebondsthe same market on a roster with the three rate indicespresetsone 60-session untraded market on every shipped preset, each hashed on its ownhighseeda market on a seed above 2**32tradedthe reference agents and an agent that sends and cancels limit orders, through tf.evaluate on pt-v20, hashing every order, fill and scorecard fieldbookthe order book on a fixed script of market and limit orders and cancelsFor 0.8.5 and 0.8.6 the simulation digest begins 72485a9f, the preset digest 87f0b185, the traded digest 8e032d38 and the book digest b14d1f50. The presets and traded digests are new in 0.8.5.
The release notes list what changed in each version.