Skip to content

fix(distcheck): drop the python flow's vestigial CLI-binary prerequisite - #993

Merged
thekevinscott merged 1 commit into
mainfrom
claude/issue-972-85vpou
Aug 20, 2026
Merged

thekevinscott merged 1 commit into
mainfrom
claude/issue-972-85vpou

Conversation

@thekevinbot

Copy link
Copy Markdown
Collaborator

Fixes #972

#738 moved the wheel's CLI in-process and deleted dirsql/_binary/, so the python distcheck flow stopped staging a cargo-built binary. gate.py never referenced one again, but three callers were never updated.

Changes

1. internals/distcheck/tests/integration/python_flow_test.py — dropped the target/{release,debug}/dirsql lookup and its pytest.skip; the maturin guard stays. The located path was never passed anywhere (run() takes (_PKG, _REPO)), so the flow's only real-subprocess coverage silently skipped on any checkout without a stray cargo build — a green run where the case never executed.

2. .github/workflows/dirsql-python-ci.yml — deleted the Build dirsql CLI binary step from the distcheck job. Install Rust / Rust cache stay: maturin build compiles the PyO3 extension.

3. internals/distcheck/README.md — the python bullet no longer claims the flow stages the binary under dirsql/_binary/, and the local-run comment no longer lists a cargo binary as a prerequisite.

The issue also cited :54 and :67 as stale (#942's workflow renames) — both were already corrected on main by 6c02901, so this PR leaves them alone.

The node flow is untouched: it genuinely needs the staged host CLI, so node_flow_test.py's guard is still correct in principle (see the note at the bottom).

Validation

The issue asked for (1)'s skip-to-run transition to be observed, not assumed. With no target/release/dirsql or target/debug/dirsql present and maturin on PATH:

# before
$ uv run --project internals/distcheck python -m pytest .../python_flow_test.py -q -rs
SKIPPED [1] .../python_flow_test.py:32: dirsql CLI binary not built (cargo build -p dirsql --features cli)
1 skipped in 0.01s

# after
$ uv run --project internals/distcheck python -m pytest .../python_flow_test.py -q -rs
1 passed in 39.84s

Manual run of what the distcheck job now executes, still with no binary in target/ — this is the direct evidence the removed step fed nothing:

$ ls target/release/dirsql target/debug/dirsql
ls: cannot access 'target/release/dirsql': No such file or directory
ls: cannot access 'target/debug/dirsql': No such file or directory
$ uv run --project internals/distcheck dirsql-distcheck python
python packaging distcheck: OK      # exit 0

Gates for both lanes this diff triggers, via dirsql-checks preflight --conventions <workflow>:

  • internals-distcheck-ci.yml — 0 failing pairs (colocated-test, unit-lint, integration-lint, unit-coverage, mutation, declared-deps)
  • dirsql-python-ci.yml — 0 failing pairs, 1 skipped (packaging, needs a built artifact)

Packaging distcheck (python) in CI is the remaining confirmation that the deleted step was dead: this PR touches dirsql-python-ci.yml, which is in that job's own paths:.

E2E Verification

N/A - test/CI-config/docs only. No packages/** source changed, so no attestation is stale.

  • Ran e2e suites locally for every affected SDK — N/A, no SDK package touched
  • Python SDK e2e: N/A
  • TypeScript SDK e2e: N/A
  • Rust core e2e (if applicable): N/A
  • packages/python/e2e-attestation.json refreshed if packages/python changed — not changed
  • packages/ts/e2e-attestation.json refreshed if packages/ts changed — not changed
  • Command(s) run: see Validation above
  • Result summary: the distcheck integration case goes skip → pass with no cargo binary; dirsql-distcheck python exits 0 in the same conditions.

Changelog / Migrations

  • Not required — nothing under packages/<pkg>/ or plugins/<pkg>/ changed, so changelog-gate reports "No package source changed; nothing to enforce."
  • Migration fragment not required — no public API or runtime behavior change.

PARITY.md needs no update: no SDK public API is touched.

Out of scope, found while validating

Running the full distcheck suite surfaced a pre-existing, unrelated failure in the sibling node case — #739 dropped @dirsql/cli-<slug> along with Platform.bin_name, but node_flow_test.py:28 still reads host.bin_name and looks under build/bundled-cli-<slug>/:

E   AttributeError: 'Platform' object has no attribute 'bin_name'
internals/distcheck/tests/integration/node_flow_test.py:28: AttributeError

It raises before its skip guard, so it fails rather than skips — and internals-distcheck-ci.yml runs only the conventions gates, never the integration suite, which is why nothing caught it. The README's node bullet describes the same retired @dirsql/cli-<slug> sub-package. Same shape as this issue but a different cause (#739, not #738), so it is left for its own issue rather than widened into this PR.


Generated by Claude Code

#738 moved the wheel's CLI in-process and deleted `dirsql/_binary/`, so the
python distcheck flow stopped staging a cargo-built binary. `gate.py` never
referenced one again, but three callers were never updated:

`python_flow_test.py` located `target/{release,debug}/dirsql` and skipped when
it was absent, then never used the path -- `run()` takes `(_PKG, _REPO)`. So
the only real-subprocess coverage of the flow silently skipped on a machine
with no cargo build lying around, which is every clean checkout. Observed
directly rather than assumed: with no binary present the case skipped before
this change and passes after it (39.84s, `1 passed`).

`dirsql-python-ci.yml`'s distcheck job then built that binary on every Python
PR for nothing. `Install Rust` / `Rust cache` stay -- `maturin build` compiles
the PyO3 extension. Verified by running the job's remaining command with no
binary in `target/`: `dirsql-distcheck python` -> `OK`, exit 0.

The README still described the flow as staging the binary; its two other
stale lines the issue cites (#942's workflow renames) were already corrected
on main by 6c02901.

The node flow is untouched: it genuinely needs the staged host CLI.

Fixes #972

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FPnyJVtn9Ld2iNbP9xnGus
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.

distcheck: vestigial CLI-binary prerequisite left behind by #738 (skipped integration test, dead CI step, stale README)

3 participants