chore: repoint every repository URL at sethbang/venice-py - #39
Merged
Conversation
Phase 5, the last step of the venice-ai -> venice-py rename. The repo was renamed on GitHub first, deliberately: redirects go old -> new and never the reverse, so the old URLs kept working right up to this commit while the new ones would have 404'd before it. 69 references across 10 files, plus docusaurus projectName and editUrl, the two clone-and-cd instructions, the README banner and codecov badge, the pyproject project URLs, and the publish-testpypi header comment. Swept with a negative lookahead, sethbang/venice-ai(?![-\w]), not a plain substitution: that string is a prefix of three sibling repos under this owner (venice-ai-rc, venice-ai-priv, venice-ai-streamlit-demo), and rewriting the archive guard in ci-validation.yaml to 'sethbang/venice-py-rc' would fail silently by starting the codecov upload on the archive. Verified unchanged. Nothing else moves. The old distribution name, @venice-ai/x402-client, the legacy skill directory names, the redis container names, venice-ai-docs and the v1 pin advice all still say venice-ai because that is what they mean. Counts for all ten checked before and after. Both publish workflows already guard on github.repository_owner, so neither silently skips under the new name. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The rename broke `Dependency Security Audit` — first failure in 15 runs, and the only change between the last green run and it was the repo name. `virtualenvs-in-project: true` puts .venv inside the workspace, and a virtualenv bakes absolute paths into pyvenv.cfg, bin/activate and every console-script shebang. The workspace path is /home/runner/work/<repo>/<repo>, so renaming the repo invalidates every one of them. The cache key was `venv-<os>-<lockhash>` — unchanged by a rename — so the job restored a .venv built for the old path. It then fails misleadingly. Poetry reads the dist-info metadata, finds it all present and prints "No dependencies to install or update"; the breakage only surfaces at `poetry run pip-audit` as `Command not found: pip-audit`, which reads like a missing dependency rather than a dead interpreter path. It would not have self-healed: actions/cache does not re-save on a hit, so every later run would restore the same broken venv. Keyed by github.repository now, so any future rename starts a fresh namespace. e2e.yml needs the same treatment in both jobs, restore-keys included — a bare `<os>-poetry-` prefix falls straight back to the pre-rename cache. ci-validation.yaml, skills.yml and examples.yml cache under ~/ instead of the workspace, so they are path-independent and deliberately unchanged. That is why all five required checks passed while this one did not. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 5 — the last step of the
venice-ai→venice-pyrename. The repo is now sethbang/venice-py; this lands the URLs.Why the rename came first
GitHub redirects old → new, never new → old. So
sethbang/venice-aiURLs kept working right up to this commit, whilesethbang/venice-pyURLs would have 404'd before it. Renaming first meant nothing was broken in between; sweeping first would have.What changed
69 references across 10 files, plus:
docusaurus.config.ts—projectNameandeditUrlgit clone … && cdinstructionsraw.githubusercontent.com) and the codecov badgepyproject.tomlHomepage / Repository / Issue Tracker / Changelog — these are what PyPI displays, and they update with the next releasepublish-testpypi.yaml's header comment recording the registered repo nameWhy a lookahead, not a substitution
sethbang/venice-aiis a prefix of three sibling repos under this owner —venice-ai-rc,venice-ai-priv,venice-ai-streamlit-demo. A plainsedrewrites the archive guard inci-validation.yaml:That fails silently — the codecov upload just starts running on the private archive. Guarding only
-rcwouldn't have been enough either; the character class covers the whole family. Verified unchanged.What deliberately still says
venice-aiBecause that is what it means, not because it was missed. All counted before and after the sweep:
sethbang/venice-ai-rc(archive guard)@venice-ai/x402-client(npm, different registry)venice-ai-redis-node-*(docker containers)venice-ai-docs(live Cloudflare Pages project)venice-ai-multimodal/-production/-x402)pip install venice-ai(the old distribution name)venice-ai<2(v1 exists only under the old name)venice-ai-test(a User-Agent literal in a VCR test)Verification is tracked-files-only, matching what the sweep rewrites — untracked local files legitimately still say
venice-aiand aren't its business.Publishing is unaffected
Both publish workflows already guard on
github.repository_owner == 'sethbang', so neither silently skips under the new name. A second Trusted Publisher forsethbang/venice-pywas registered on both PyPI and TestPyPI before the rename, with the existing entries left live — those get removed only after a TestPyPI rc dispatch proves the chain.Verification
make format-check, pyright, and the Docusaurus build underonBrokenLinks: 'throw'(82 documents) all clean. The sweep's own verifier compares before/after counts for every non-target and exits 1 on any drift — exercised on both paths, including deliberately removing the lookahead to confirm it catches the corrupted guard.🤖 Generated with Claude Code