What is wrong
pyproject.toml declares name = "perimeter". That name is already taken on PyPI by a different project:
$ curl -s https://pypi.org/pypi/perimeter/json | jq '.info.version, .info.home_page, .info.author'
"0.14"
"https://github.com/yunojuno/django-perimeter"
"YunoJuno"
So the first attempt to publish under perimeter will be rejected, and — worse — any automated check that asks "is this project on PyPI?" by name will answer yes, at 0.14, which is somebody else's Django middleware.
This is not hypothetical: a portfolio-wide release check hit exactly that trap on its first pass and reported INDEX_AHEAD_OF_REPO: pypi has 0.14 but the repo declares 0.1.0 for this repository — a completely plausible finding about an entirely unrelated package. It only stopped being wrong once the checker started verifying that the PyPI entry's own repository URL and author actually match this repo.
Why it matters here
#49 ("Cut the first signed tag") is open. The name collision is upstream of it: a signed tag that names an artifact nobody can install under that name is a tag with no destination.
The repo is otherwise in a clean never-shipped state — no tags, no releases, nothing on PyPI — which is a fine place to be, but it means the name has never been tested against the index.
Also true: pyproject.toml says 0.1.0, CITATION.cff says 0.1.0, and package.json says 0.0.0.
What would help
Pick a distinguishing distribution name before the first publish, the way this portfolio already did for cairn-assistant, gauntlet-evals, nearmiss-safety, chalkline-ctdl, plumbline-eval and encore-plex — all of which have the same collision risk on their bare names and all of which avoided it. The import package name does not have to change with it.
Choosing the name is a product call, so nothing has been renamed, tagged or published here.
Found by a release-reality checker run across the portfolio on 2026-09-06 (condition INDEX_NAME_TAKEN).
Prepared with AI assistance; reviewed before submission.
What is wrong
pyproject.tomldeclaresname = "perimeter". That name is already taken on PyPI by a different project:So the first attempt to publish under
perimeterwill be rejected, and — worse — any automated check that asks "is this project on PyPI?" by name will answer yes, at 0.14, which is somebody else's Django middleware.This is not hypothetical: a portfolio-wide release check hit exactly that trap on its first pass and reported
INDEX_AHEAD_OF_REPO: pypi has 0.14 but the repo declares 0.1.0for this repository — a completely plausible finding about an entirely unrelated package. It only stopped being wrong once the checker started verifying that the PyPI entry's own repository URL and author actually match this repo.Why it matters here
#49 ("Cut the first signed tag") is open. The name collision is upstream of it: a signed tag that names an artifact nobody can install under that name is a tag with no destination.
The repo is otherwise in a clean never-shipped state — no tags, no releases, nothing on PyPI — which is a fine place to be, but it means the name has never been tested against the index.
Also true:
pyproject.tomlsays0.1.0,CITATION.cffsays0.1.0, andpackage.jsonsays0.0.0.What would help
Pick a distinguishing distribution name before the first publish, the way this portfolio already did for
cairn-assistant,gauntlet-evals,nearmiss-safety,chalkline-ctdl,plumbline-evalandencore-plex— all of which have the same collision risk on their bare names and all of which avoided it. The import package name does not have to change with it.Choosing the name is a product call, so nothing has been renamed, tagged or published here.
Found by a release-reality checker run across the portfolio on 2026-09-06 (condition
INDEX_NAME_TAKEN).Prepared with AI assistance; reviewed before submission.