Skip to content

release-train: develop -> staging - #114

Merged
tracebloc-release-train[bot] merged 2 commits into
stagingfrom
release-train/to-staging
Aug 13, 2026
Merged

release-train: develop -> staging#114
tracebloc-release-train[bot] merged 2 commits into
stagingfrom
release-train/to-staging

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Automated promotion by the release train (RFC-0008 D14). Head is the train-managed release-train/to-staging branch (a mirror of develop), so it never collides with a human PR. Merged only when the fr-gate is green.


Note

Low Risk
Docs and CI/Makefile tooling only; no runtime product code. Scheduled workflow depends on PyPI availability.

Overview
Adds a PyPI-backed guard so documented pip install "tracebloc[...]" lines cannot drift from real package extras (the failure mode where pip warns but exits 0 on unknown extras).

scripts/check-sdk-extras.py scans .md/.mdx for install specs, resolves version floors like pip (newest stable satisfying >=), and checks each extra against that release’s Provides-Extra on PyPI. sdk-extras-check.yml runs it on push/PR (docs paths), weekly schedule, and dispatch; make check-all / check-sdk-extras wire the same check locally while make check stays offline.

Install docs are brought in line: Python 3.12 (with 3.11/3.12 requirement notes), floor >=0.18.1, and tools-help/tracebloc.mdx replaces removed [boosting] / [survival] with current per-library extras plus a note on 0.10.0 removals; start-training.mdx matches those install lines.

Reviewed by Cursor Bugbot for commit f3bd876. Bugbot is set up for automated code reviews on this repo. Configure here.

…nd#1858) (#113)

* fix(docs): install commands named extras removed in SDK 0.10.0 (backend#1858)

`tools-help/tracebloc.mdx` documented `tracebloc[boosting]` and
`tracebloc[survival]`. Both were removed in 0.10.0, eight published
releases ago. `pip` does not fail on an unknown extra — it warns,
installs the core SDK only, and exits 0 — so a reader following the page
got a core-only install and discovered it later as an ImportError, far
from the command that caused it.

Replace them with the per-library extras (`xgboost` / `catboost` /
`lightgbm`, `lifelines` / `scikit-survival`) and note that the Hugging
Face stack now ships inside `[pytorch]`.

Also bump the `>=0.8.1` floor to `>=0.18.1` in both pages that carry it.
The stale floor is what made this silent: it floats forward to a release
that no longer has the extras, while still being satisfiable by 0.8.1 on
an unsupported Python. `join-use-case/start-training.mdx` told readers to
create a Python 3.9 environment, on which the old floor quietly resolves
to 0.8.1 instead of erroring; with the current floor pip now fails
loudly, and the page asks for 3.12.

Add `scripts/check-sdk-extras.py` plus a workflow to run it: every
documented `tracebloc[...]` spec must name an extra that exists in the
release its floor resolves to. Verified it fails on the pre-fix content
and passes on the fixed tree. Wired into `make check-all`, and the
Makefile comment that claimed no content gate exists is updated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* docs: reword Python-version note to match the >=0.18.1 pin (loud pip error, not silent 0.8.1 fallback); addresses @saadqbal review, docs#113.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

Comment thread scripts/check-sdk-extras.py
@tracebloc-release-train tracebloc-release-train Bot added gate-nudge Toggled by the release train to (re-)fire the fr-gate and removed gate-nudge Toggled by the release train to (re-)fire the fr-gate labels Aug 13, 2026
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

1 issue from previous review remains unresolved.

Fix All in Cursor

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit f62b210. Configure here.

@tracebloc-release-train tracebloc-release-train Bot added the gate-nudge Toggled by the release train to (re-)fire the fr-gate label Aug 13, 2026
… readers get (#115)

Bugbot Medium on the staging promotion PR #114.

`parse_version` reduces a tag to a tuple of leading digits, so `0.19.0a1` became
(0, 19, 0) and outranked `0.18.1` at (0, 18, 1). `resolve_version` then answered
"which version does this documented specifier select?" with a PRE-RELEASE — and
pip does not install those without `--pre`, which none of the documented
`pip install "tracebloc[...]"` commands pass.

So the gate would check the extras of a version no reader can obtain, and pass or
fail the docs against a package nobody installs. Both directions are wrong: a
missing extra in a stable release goes unnoticed, and an extra that exists only
in an alpha reads as present.

Latent today -- all 11 published releases are stable -- like most of this class.
It arms itself the day an alpha is published.

Hand-rolled PEP 440 detection because the script is STDLIB-ONLY by construction:
sdk-extras-check.yml runs `python3 scripts/check-sdk-extras.py` with no
setup-python and no pip install, so `packaging.version` is not importable and
reaching for it would mean adding a dependency step to a docs check. `.postN` is
deliberately excluded from the marker set -- post releases install by default.

Stated rather than overclaimed: if a package had ONLY pre-releases the fallback
picks an arbitrary one, because parse_version reduces 1.0.0a1 and 1.0.0b2 to the
same tuple and ordering them needs real PEP 440 parsing. That branch is a guard
against an empty max(), not a path anyone rides.

Verified: 10 classification cases (a/b/rc/alpha/preview/dev true, post/plain
false); the reported bug both ways -- with the filter 0.18.1, without it
0.19.0a1; and the real gate still runs clean against live PyPI.
@tracebloc-release-train tracebloc-release-train Bot removed the gate-nudge Toggled by the release train to (re-)fire the fr-gate label Aug 13, 2026
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

@tracebloc-release-train tracebloc-release-train Bot added the gate-nudge Toggled by the release train to (re-)fire the fr-gate label Aug 13, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit f3bd876. Configure here.

@tracebloc-release-train tracebloc-release-train Bot removed the gate-nudge Toggled by the release train to (re-)fire the fr-gate label Aug 13, 2026
@tracebloc-release-train
tracebloc-release-train Bot merged commit a38fb09 into staging Aug 13, 2026
18 checks passed
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