Skip to content

Commit d51655c

Browse files
committed
T1.17 fix 1 docs: HOST-3 approved by the reviewers; the NumPy path to validate
HOST-3 is approved as kept by the reviewers (Codex, T1.17 round 1). installation.md marks the NumPy 1.23.5 runtimes' upgrade as to be validated and words the failure it guards against without contradicting it. E75(h), as built and the tracker record the round; the binding job is noted as droppable later. Signed-off-by: Adi Wadaskar <awadaskar@nvidia.com>
1 parent 51711df commit d51655c

5 files changed

Lines changed: 17 additions & 12 deletions

File tree

‎docs/design/rust-core/phase-1/as-built.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,8 @@ Clean-container wheel smoke (E75, under E16).
345345
- The job: `wheel-smoke` in `ci.yml`, a matrix of two lanes, `floor` and `newest`, both gating, needing `native-wheel` and `native-test-ops` and installing their artifacts as built; its one step runs `scripts/rust_core/wheel_smoke.py --lane <lane> --container`, and each lane uploads `wheel-smoke-<lane>` (both `pip freeze --all` files, the JUnit reports and `environment.json`) whether it passed or not. It runs beside the jobs that need `native-wheel`; nothing waits for it.
346346
- The lanes are `wheel_smoke.LANES`, the one definition CI and a local run read: the floor's pins exactly (`check_resolved`), the newest lane's `pandas>=3`, `numpy>=2` and `pyarrow` unbounded, held to pandas 3 and NumPy 2; `tests/test_wheel_smoke.py` holds the floor to the `floor-pandas2.2` cell's pins and `BINDING_FLOOR`, and the job to both lanes and both artifacts.
347347
- The container: the lane's official Python image pinned by index digest (`python:3.10.22-trixie`, `python:3.14.8-trixie`, from the public ECR mirror), run with `docker run` as the runner's user, the checkout mounted read-only at `/repo`, each wheel read-only, writing only to the output directory; the platform is the wheel's (`_docker_platform`: x86_64 or aarch64 Linux, anything else refused), so an x86_64 CI wheel runs on an arm64 machine under emulation. The image holds the interpreter, pip and a C toolchain and no Python package; every distribution installed is a wheel (`--only-binary=:all:`), the API and PQL distributions copied out of the checkout and built into wheels first, so the toolchain only compiles the clean-import test's shim.
348-
- Each lane, in order (`smoke`): the shipped wheel, then the test-ops wheel, each in a virtual environment of its own with the lane's pins as requirements and constraints, the test-ops one also constrained to everything the shipped one resolved (`third_party`), the two required to resolve alike; in each, a probe run with `-I` from outside the checkout must import `sdm_client` and `sdm_client._native` from the environment's site-packages, not the checkout, and find `TEST_OPS` as the wheel's build; `pip check` must pass; then the binding's tests run from outside the checkout into a JUnit report, `test_binding.py` on the shipped wheel and every `test_*.py` of `rust/bindings/sdm-py/tests` on the test-ops one, and `junit_verdict` refuses a report missing, unreadable, naming a file not asked for, or with any file passing nothing or showing a failure, error or skip.
348+
- Each lane, in order (`smoke`): the shipped wheel, then the test-ops wheel, each in a virtual environment of its own with the lane's pins as requirements and constraints, the test-ops one also constrained to everything the shipped one resolved (`third_party`), the two required to resolve alike; in each, a probe run with `-I` from outside the checkout must import `sdm_client` and `sdm_client._native` from the environment's site-packages, not the checkout, and find `TEST_OPS` as the wheel's build; `pip check` must pass; then the binding's tests run from outside the checkout into a JUnit report, `test_binding.py` on the shipped wheel and every `test_*.py` of `rust/bindings/sdm-py/tests` on the test-ops one, and `junit_verdict` refuses a report missing, unreadable, naming a file not asked for, or with any file passing nothing or showing a failure, error or skip. Pytest runs with nothing of the caller's selection (fix round 1): every `PYTEST_*` variable dropped and plugin autoload off, an empty configuration file of the smoke's own (`-c`), conftest files read only from the tests' directory (`--confcutdir`), and the smoke's plugin (`_GUARD`, loaded by name) recording each test collected and deselected and where the test process imported `sdm_client` and `sdm_client._native` from; `collection_verdict` refuses any deselection, a test of `EXPECTED` (every test of each file, by name and parameters; `tests/test_wheel_smoke.py` holds it to the files' own test functions) not collected, a report whose passed tests are not, file by file, every test collected, and a module imported from anywhere but the environment, the checkout included.
349349
- `test_arrow_lifetimes.py` (test-ops builds only, so `native-test-ops` runs it at the floor too): one column of each closed-set type, each with a null, crosses through the test-only fetch that echoes what it admitted, and every buffer it comes back with, children and dictionary included, is at the input's address (`_addresses`); pyarrow's default pool, which allocates the input's buffers and each exported array's private data, keeps its count after the input is collected while the run or an output holds the data and returns to its count before the input exactly once nothing does; sixteen converted forms (large and fixed-size binary and text, float16, second and millisecond timestamps, durations and times, date64, large and fixed-size lists, a dictionary of large text, a dictionary decoded, a run-end array) come back in the canonical types a `schema` expectation names (check (b) passing), with the values and null masks written apart from the input; an output exported after its input is collected, the run has errored and the run is destroyed holds its values and null masks, and a capsule taken before the run went is read after it; a cancel releases the reply the run held at once and makes every later step, reply and cancel `RUN_CANCELLED`; a cancel while another call is in the run is `RUN_BUSY`.
350350
- The missing-library control (`missing_library_control`), last in each lane: the shipped environment's client reinstalled from a copy of the wheel without its extension module (`without_native`) must fail the probe with an import error naming `sdm_client._native`, and fail the binding's tests, or the lane fails.
351-
- Recorded, not judged: the warnings pyarrow's own `to_pandas()` raises before any client module is imported (`to_pandas_warnings`), register HOST-3's evidence: the BlockManager `DeprecationWarning` in the floor lane, none in the newest.
351+
- Recorded, not judged: the warnings pyarrow's own `to_pandas()` raises before any client module is imported (`to_pandas_warnings`), register HOST-3's evidence: the BlockManager `DeprecationWarning` in the floor lane, none in the newest; HOST-3 approved as kept by the reviewers (Codex, T1.17 round 1).
352352
- Run locally against any wheel: `wheel_smoke.py --lane floor --wheel W --test-ops-wheel T --out DIR --container` for Linux wheels (CI's, from `gh run download`), or `--python <a Python 3.10 or 3.14>` in place of `--container` for a wheel of this machine; a lane takes a minute or two.

0 commit comments

Comments
 (0)