Stop the unlisting from listing Basilisk on Zed - #429
Open
MelbourneDeveloper wants to merge 2 commits into
Open
Conversation
Basilisk is not in the Zed extension registry and never was. There is no `[basilisk]` block in zed-industries/extensions/extensions.toml, no extensions/basilisk submodule, and no commit in that repo's history mentions Basilisk; the only related PR is #4871, for a differently-named extension, closed unmerged. The `publish-zed` job was removed from release.yml after its registry step failed the v0.41.0 release, and the listing had not landed before that. The roadmap plan said as much all along. The runbook did not know this. `delist/00-publish-zed-final.sh` would have opened a PR ADDING Basilisk to that registry in the middle of unlisting it, and `delist/06-unlist-zed.sh` would have asked a maintainer of someone else's repo to delete an entry that does not exist. What is actually public is the mirror, Nimblesite/basilisk-zed. Zed installs a dev extension straight from a clone of that layout, and its `main` still serves the OLD extension: a [language_servers.basilisk] block launching `basilisk lsp`, a command the inert CLI no longer has, under a description advertising diagnostics, autocomplete, refactoring and profiling. That is a live product claim for a checker that was producing incorrect results. So 00 now replaces the mirror contents with the notice-only extension and opens no registry PR, and 06 archives the mirror read-only the way 05 archives the Neovim one. Both re-check the registry first and refuse to run if a `[basilisk]` entry ever appears, because that would make every assumption here false. 01 no longer waits on a bump PR that is never coming. scripts/publish_zed_registry.py, its test, and delist/remove_registry_entry.py are deleted rather than kept as dead code: the only thing they can do is list Basilisk somewhere, and the CI step proving the listing edit goes with them. ROADMAP-NEXT-STEPS-PLAN.md gets a superseded banner naming the two claims in it that would cause harm if followed.
08-verify-unlisted.sh checked the Zed registry by fetching extensions/basilisk/extension.toml from the registry's raw host. Registry entries are git SUBMODULES, so the parent repo serves no files under extensions/<name>/ and that path 404s for every extension in the registry. Checked against controls: `ty` and `pyrefly` are both listed in extensions.toml and both return 404 on that path. The check reported "gone" for listed extensions and could not have failed. It now reads extensions.toml, the file that actually holds the listing — the same question 00 and 06 ask before they run. Two channels had no check at all. The Zed and Neovim mirrors ARE listings: both repos are public, Zed installs a dev extension from a clone of the mirror layout, and plugin managers install straight from basilisk.nvim. Unlisting them means archiving them, so 08 now asks the GitHub API whether each is archived and fails while either is still writable. The Marketplace check is left alone and its reasoning recorded: it is a real signal, verified against ms-python.python and rust-lang.rust-analyzer, which both return 200 while an unpublished extension returns 404. The gallery extensionquery API is the wrong thing to ask — it keeps answering for an unpublished extension, listing `unpublished` among its flags.
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.
TLDR
The unlisting runbook was about to list Basilisk on Zed. Basilisk is not in the Zed extension registry and never was, so
delist/00would have opened a PR adding it there in the middle of unlisting it, anddelist/06would have asked a maintainer of someone else's repo to remove an entry that does not exist. Both scripts now target the mirror, which is the whole Zed surface, and the registry-listing code is deleted.What Was Changed?
The evidence.
zed-industries/extensionshas no[basilisk]block inextensions.toml, noextensions/basilisksubmodule, and zero commits in its history mentioning Basilisk. The only related PR is #4871 — a differently-named extension, closed unmerged in February.publish-zedwas removed fromrelease.ymlafter its registry step failed the v0.41.0 release, and the listing had not landed before that.ROADMAP-NEXT-STEPS-PLAN.mdsaid so all along: "Basilisk still does not appear in that repo'sextensions.toml."The mirror is the whole Zed surface.
Nimblesite/basilisk-zedis public and Zed installs a dev extension straight from a clone of that layout. Itsmainstill serves the old extension — a[language_servers.basilisk]block launchingbasilisk lsp, a command the inert CLI no longer has, under a description advertising "diagnostics, autocomplete, go-to-definition, refactoring, integrated debugging, and profiling." That is a live product claim for a checker that was producing incorrect results.delist/00-publish-zed-final.shreplaces the mirror contents with the notice-only extension and opens no registry PR. It keeps the gates that matter: a real standalonewasm32-wasip2build, and a check that the rendered manifest declares no[language_servers,[debug_adaptersor[grammarsand carries the notice.delist/06-unlist-zed.sharchives the mirror read-only, exactly as05archives the Neovim one — deleting would break pinned clones and erase the record.[basilisk]entry ever appears, since that would make every assumption above false.delist/01-verify-final-release.shno longer waits on a bump PR that is never coming; an entry appearing at all is now the anomaly it reports.delist/README.mdreplaces the two Zed rows with one that says plainly: do not open a PR againstzed-industries/extensions. Version examples corrected to the real final release,v0.41.2.What Was Deleted?
scripts/publish_zed_registry.py,scripts/test_publish_zed_registry.pyanddelist/remove_registry_entry.py, plus the CI step proving the listing edit. The only thing that code can do is list Basilisk somewhere; keeping it as dead code during an unlisting is a loaded gun. Nothing else referenced them.Spec / Doc Changes
ZED-SPEC.md{#ZED-MIRROR}— the two paragraphs describing the registry bump and removal PRs are replaced with what is actually true, including why a listing PR must not be opened now.ROADMAP-NEXT-STEPS-PLAN.md— superseded banner. It is kept as the record, but it is named for the two claims that would cause harm if followed: the checker is not "under audit" (it is finished and being deleted), and the mirror push is not "safe to list".How Is This Verified?
shellcheck -S warningclean on all three changed scripts;bash -nclean.make _lint_docs—gen_readmes --check,gen_withdrawal_copy --check,test_published_readmes(5),check_public_copy(34 surfaces, including the editeddelist/README.md),test_check_public_copy(6). All pass.make _lint_desloppasses;ruff format --check --exclude '*/fixtures/*' .passes;ci.ymlparses, 14 jobs,zedjob down to 7 steps.Breaking Changes
None shipped to users — no Rust, no extension, no published artefact changes. This changes what the manual unlisting scripts do.
🤖 Generated with Claude Code