Skip to content

ci: fan distcheck source changes into the SDK workflows - #963

Closed
thekevinbot wants to merge 3 commits into
mainfrom
claude/issue-961-2egsh3
Closed

thekevinbot wants to merge 3 commits into
mainfrom
claude/issue-961-2egsh3

Conversation

@thekevinbot

@thekevinbot thekevinbot commented Aug 20, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #961.

Problem

dirsql-python-ci.yml and dirsql-typescript-ci.yml each run a distcheck job that shells into the internals/distcheck package (uv run --project internals/distcheck dirsql-distcheck python / ... node) — those two jobs are the only executors of the publishability flows. Neither workflow listed internals/distcheck/** in its paths:, and internals-distcheck-ci.yml runs only that package's own conventions lane, so a PR touching just internals/distcheck/src/** merged without either flow it changed ever running.

Residual gap from #834, carried over from #847/#848.

Change

Both SDK workflows now watch, on push and pull_request alike:

      - 'internals/distcheck/src/**'
      - 'internals/distcheck/pyproject.toml'

internals/distcheck/tests/** stays out: the package's own tests are internals-distcheck-ci's lane, and nothing in the SDK workflows runs them. The internals-distcheck-ci.yml header comment claiming consumers are "deliberately not fanned out to" is made false by this change and is rewritten to match.

Validation

Per #834's method: this PR is its own test for the workflow files it touches (both self-paths fire), and the new globs took the throwaway probe — #964, based on this branch so the pull_request filters evaluated are this PR's, diff confined to one file under internals/distcheck/src/. Closed unmerged.

Four runs dispatched on probe head a17e51f, cancelled once dispatch was observed:

Workflow Dispatched Note
dirsql Python CI ✅ new — the gap #961 reports
dirsql TypeScript CI ✅ new — the gap #961 reports
Internals distcheck CI ✅ pre-existing
PR Monitor ✅ no paths: filter

Negative control held: dirsql-rust-ci, plugin-dirsql-embedding-ci, docs-ci, changelog-check, release-ci and putitoutthere-config-check all stayed out.

claude/961-distcheck-paths-probe is still on the remote: the sandbox proxy rejects delete-ref pushes (send-pack: unexpected disconnect), which is why the #834 probe branches are still there too. Safe to delete from the UI.

Release impact

None. .github/workflows/ only — release.yml runs on the merge push but putitoutthere's change detection matches no package glob, so it plans zero packages. No source files change, so no e2e attestation is staled.

E2E Verification

N/A - CI configuration only

The `distcheck` job in dirsql-python-ci and dirsql-typescript-ci invokes
`internals/distcheck` (`uv run --project internals/distcheck
dirsql-distcheck python` / `... node`), but neither workflow watched that
package, and internals-distcheck-ci runs only its conventions lane. A PR
changing internals/distcheck/src/** could therefore merge without either
publishability flow it changed ever executing.

Both workflows now watch `internals/distcheck/src/**` and
`internals/distcheck/pyproject.toml` on push and pull_request.
`tests/**` stays out: the package's own tests are internals-distcheck-ci's
lane, and nothing in the SDK workflows runs them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7Wu2kXb8q3DktFa4H4tqE
Reverses the fan-out approach of the previous commit. Adding
internals/distcheck/** to the SDK workflows' paths broke the naming
contract -- dirsql-python-ci is the Python package's lane -- and pulled 55
check runs (ruff, ty, the 3.10/3.12/3.13 matrices, binding tests, mutation,
e2e attestation) into a change to repo tooling none of them touch. That is
the fan-out #834 removed.

The gap it was closing is real: internals-distcheck-ci runs conventions
gates only, none of which invokes a flow, and tests/integration/ self-skips
without a built binary that this lane never builds. So the flows this
package ships had no CI execution of their own.

Close it in the lane that owns the package instead: python-flow and
node-flow run `dirsql-distcheck python` / `... node` directly, building the
SDK artifacts the flows consume the same way the SDK workflows' distcheck
jobs do. The SDK jobs stay -- a packages/python change must still prove the
wheel is publishable -- and neither workflow watches the other's directory.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7Wu2kXb8q3DktFa4H4tqE
The comments restated what the job names and steps already say; only the
"consumers are deliberately not fanned out to" line carries a decision a
reader could not infer, so that is what is left.

`cargo build -p dirsql --features cli` was copied from dirsql-python-ci's
distcheck job without checking whether it is still needed. It is not:
python_flow/gate.py records that #738 dropped dirsql/_binary/, so the wheel's
extension module carries the CLI and there is nothing to stage. The Rust
toolchain stays -- maturin compiles the extension. The same dead step is
still in dirsql-python-ci and wants its own cleanup.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7Wu2kXb8q3DktFa4H4tqE

Copy link
Copy Markdown
Collaborator Author

Closed unmerged along with #961. Full reasoning is in the issue's closing comment: internals/distcheck is a test harness rather than a dependency, so a change to it doesn't warrant re-running the SDK matrices — and the narrower version (flow jobs in the package's own lane, which this branch ends at and which probe #969 verified working) buys debugging clarity rather than correctness, at the cost of two jobs on a directory that changes about once a month.

The branch is left in place: c67795c is the version worth reviving if this is ever revisited.


Generated by Claude Code

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.

CI paths: distcheck consumers don't trigger on internals/distcheck changes

2 participants