Repository navigation
ADR 0025 minimum supported versions
fiscalclock 0.1.0 supports Rust 1.85 and later, CPython 3.10 and later, and Node.js 22 and later, and CI tests each floor.
Last reviewed: 31 Oct 2026
Accepted on 31 Oct 2026 under the maintainer's delegation; may be revisited. The research proposal left this open ("Minimum versions: Rust MSRV, Python floor (3.10 or later), Node.js floor"), and the maintainer asked for the roadmap and 0.1.0 to be decided and built without them. Applied in 0.1.0.
A minimum version is a promise to users and a cost to maintainers: every floor must be tested, and raising it later is a breaking change that needs an ADR (AGENTS.md). The proposal set only one constraint, Python 3.10 or later, and tied the Python wheel strategy to the floor: abi3t wheels once 3.15 is the floor (ADR-0011).
Facts as of 31 Oct 2026:
- PEP 803 is Final and adds
abi3tfrom Python 3.15 (PEP 803). Python 3.15.0 was released on 9 Oct 2026 and 3.15.2 is the current 3.15 release (PEP 790). - Node.js 22, 24 and 26 are listed as LTS lines and Node.js 20 as end-of-life since 24 Mar 2026 (Node.js previous releases). That page does not distinguish active and maintenance LTS.
- npm trusted publishing requires npm 11.5.1 or later and Node.js 22.14.0 or later, according to a summary of the npm documentation (not raw-verified). This affects the release job, not users.
- Support the oldest versions that users are likely to run, without testing versions that are end-of-life.
- Every floor must be proven in CI, not claimed.
- Keep the Python wheel count small (ADR-0011).
-
1.85 (chosen). Pros: the crates use the 2024 edition and declare
rust-version = "1.85", and the CI jobmsrvproves it builds and passes conformance on 1.85. Cons: users on older toolchains cannot use the crate. - Latest stable only. Pros: no MSRV job. Cons: forces upgrades on users for no feature reason, and the crate would break silently for them.
-
3.10 (chosen). Pros: the floor the proposal names; one
abi3-py310wheel per platform covers 3.10 and later. Cons: 3.10 to 3.14 must be supported until the floor moves, which delaysabi3t. -
3.15. Pros:
abi3twheels from day one, one wheel per platform for both regular and free-threaded builds. Cons: excludes every CPython before 3.15, released three weeks before this decision.
- 22 (chosen). Pros: the oldest line listed as LTS as of 31 Oct 2026; CI tests 22 and 26. Cons: Node.js 20 users, end-of-life since March 2026, are excluded.
- 24 or 26. Pros: Temporal is enabled by default in Node.js 26 (release notes). Cons: excludes users on Node.js 22 LTS, and the package does not need Temporal, because ISO strings work everywhere (ADR-0006).
Rust 1.85, CPython 3.10, Node.js 22. As applied in 0.1.0:
- Rust:
rust-version = "1.85"incrates/core/Cargo.tomland both binding crates. Themsrvjob inci.ymlrunscargo checkand the conformance test on toolchain 1.85. - Python:
requires-python = ">=3.10"inpyproject.tomland theabi3-py310feature. CI tests 3.10 and 3.14 on three operating systems, plus 3.14t; the release smoke test installs the built wheel on 3.10. - Node.js:
"engines": {"node": ">=22"}inpackage.json. CI tests 22 and 26 on three operating systems; the release smoke test installs the packed tarball on 22.
Good:
- Each floor is proven by a CI job, not only declared.
- The Python floor lets one stable-ABI wheel per platform cover five CPython minor versions.
Bad:
- Free-threaded CPython 3.15 has no wheel until the floor reaches 3.15 or a
cp315twheel is added (ADR-0011). - Raising any floor is a breaking change that needs a new ADR.
- Intermediate versions (Python 3.11 to 3.13, Node.js 24) are covered by the floor's guarantees but not tested directly in CI.
- Architecture, Roadmap, Evidence
CHANGELOG.md- Related: ADR-0006, ADR-0011, ADR-0020
fiscalclock is licensed under MIT OR Apache-2.0 (MIT, Apache-2.0). Last reviewed: 31 Oct 2026. Found an error on this page? Report it with the documentation form.