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 gate — fix: 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-specific — fix: 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 hazard — fix: 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-green — fix: 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.
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-migrateskill (ships inwads/data/skills) ·wads-ci-sweep/wads-ci-fix(local operational skills).Discoveries
1.
migrate_one.shauto-pushes with no review gate — fix: wads-ci-sweepThe 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/--reviewmode that stops after staging, so the diff + generatedci.yml+pyproject.tomlcan be reviewed before the publish-triggering push.2. PYPI_PASSWORD guidance is account-specific — fix: 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 thatgh 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 hazard — fix: 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_staledoes not imply previously-green — fix: wads-ci-sweepThe guidance treats
uv_staleas 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 nextshould surface (or advise checking) the repo's last CI conclusion before assuming a clean bump.