Skip to content

CI migration sweep: tooling discoveries & improvements #51

Description

@thorwhalen

Running journal of unexpected findings (and their fixes) surfaced while migrating repos to the wads uv-based CI, so the tooling can be improved to handle them. Appended as the sweep continues.

"Fix lands in" legend: wads (CLI / uv-ci template / ci_config) · wads-migrate skill (ships in wads/data/skills) · wads-ci-sweep / wads-ci-fix (local operational skills).

Discoveries

1. migrate_one.sh auto-pushes with no review gatefix: wads-ci-sweep
The helper commits + pushes (→ triggers a PyPI publish) automatically; only the undeclared-import audit pauses it. For foundational repos this risks an unreviewed publish. Proposal: a --no-push / --review mode that stops after staging, so the diff + generated ci.yml + pyproject.toml can be reviewed before the publish-triggering push.

2. PYPI_PASSWORD guidance is account-specificfix: wads-migrate skill + wads-ci-sweep
The "403 → set PYPI_PASSWORD" note assumes per-repo secrets. Repos under an org that defines an org-level PYPI_PASSWORD (ALL-repo visibility) inherit it and need nothing; only repos under a personal account need a repo-level secret. The publish-failure sections should distinguish the two cases — and note that gh secret list -R <repo> shows only repo-level secrets, hiding the inherited org one (so it looks "missing" when it isn't).

3. Consumer-breaks-on-unpublished-dependency hazardfix: wads-ci-sweep failure-mode catalogue; possible wads publish-time warning
A repo can migrate and go green, yet a consumer repo's CI fails on ImportError: cannot import name X from <sibling-pkg> — because the sibling has the feature committed to GitHub but never published to PyPI (its version was never bumped when the feature landed, so PyPI is stuck at a release predating it). Diagnosis: compare the sibling's installed-from-PyPI symbols vs its source. Fix: publish the sibling (bump version), then bump the consumer's lower-bound pin. Possible wads enhancement: warn at publish time if the public API grew since the last published version without a version bump.

4. uv_stale does not imply previously-greenfix: wads-ci-sweep
The guidance treats uv_stale as a trivial, low-risk pin bump (batch 10+). But such a repo can already be failing CI for unrelated reasons; the bump won't fix that, and the red is easy to misattribute to the bump. The recipe / sweep.py next should surface (or advise checking) the repo's last CI conclusion before assuming a clean bump.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions