Conversation
This was referenced Sep 23, 2026
lesnik512
force-pushed
the
docs/floors-standard-amendments
branch
from
September 23, 2026 23:31
2b448e2 to
b0b852e
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #107.
The
floorsjob asked for in #107 now runs in all 22 in-scope repos. Rolling it out surfaced threethings §7 does not say, one of which contradicts a claim §7 makes about the job.
The page gets one paragraph, three rules, one citation each, and the exemptions table gets one
row. The evidence for each rule is below rather than on the page: a standard should say what a repo
must do, not carry the investigation that produced the rule.
1. Wheel-only proves the declared range, not the declared floor
§7 says a floor "is a claim that the package installs and works against that version, and
floorsis the only job that tests it." The job does not test that. Disabling builds makes a wheel-less
version ineligible, and
lowest-directthen climbs to the lowest version that has a wheel, so thejob passes on a version the package never declared.
compose2poddeclaredPyYAML>=6. PyYAML 6.0 ships nocp312orcp313wheel, so the gateresolved 6.0.1 and 6.0.2 there and went green, while the declared floor was unreachable on both
(modern-python/compose2pod#135).
Both spellings §7 offers behave identically. On 3.12, uv 0.12.5,
--resolution lowest-direct:--no-buildPyYAML>=6--only-binary PyYAMLPyYAML>=6--no-buildPyYAML==6.0--only-binary PyYAMLPyYAML==6.0PyYAML>=6The last row is the point. Without the wheel-only flag the resolver picks 6.0 and dies compiling
it. The flag concealed this defect rather than failing to catch it. The variable is the
specifier, not the flag.
The amendment keeps wheel-only non-optional and adds what makes a green leg mean something: a
marked floor per interpreter whose wheel coverage differs, so the resolved version equals the
declared one, and a readback rather than an assumption. That is the shape
compose2pod,httpware,db-retryandmodern-di-aiogrameach arrived at independently.2. Nothing in
[dependency-groups]may bound a published dependencyuv runs one resolution across every group, so a bound there silently lifts or holds back a floor
and the job reports a version it never tested. Four instances, all found the hard way:
modern-di-aiohttppytest-aiohttprequiresaiohttp>=3.11modern-di-grpcgrpcio-toolspinsgrpcioto its own versiondb-retryadvanced-alchemyrequiressqlalchemy>=2.0.20modern-di-faststreamtyping-extensionsinlintThe last one is the inverse and was found by the repo owner in modern-python/modern-di-faststream#63.
It is why the rule is stated as both directions rather than "floor your harness".
3. src-layout repos need
PYTHONPATHon the run step§7 mandates
--no-install-project, which leaves no installed copy.[tool.pytest.ini_options]pythonpathcovers the pytest process but not an interpreter it spawns, so a test that subprocessesan import fails for a reason unrelated to floors. Four tests in
httpware, fixed withPYTHONPATH: src(modern-python/httpware#134). It is the org's only src-layout repo today, so thisis documentation for the next one rather than a live defect.
Exemptions
One row added, owed by modern-python/faststream-concurrent-aiokafka#85: that gate omits
3.14tbecause no
aiokafkarelease ships acp314torpy3-none-anywheel, so under--no-buildtheentry cannot resolve at all. Its
pytestjob reaches3.14tonly by building the sdist withAIOKAFKA_NO_EXTENSIONS=1, which this job forbids by design.Not in this PR
for it, and it is new tooling across 22 repos. It belongs in its own issue, as a sibling to Lint for published dependencies declared with no lower bound #108.
lowest/lowest-directrather thanfloors. Filed separately; thejob names in three of those repos are the owner's call, not a drive-by rename.
lite-bootstrap's missing wheel-only flag, the one repo that has neither spelling. That is arepo fix and goes to that repo.
uv run pytest: 132 passed, 29 skipped.