Skip to content

Stop the unlisting from listing Basilisk on Zed - #429

Open
MelbourneDeveloper wants to merge 2 commits into
mainfrom
zed-mirror-unlist
Open

Stop the unlisting from listing Basilisk on Zed#429
MelbourneDeveloper wants to merge 2 commits into
mainfrom
zed-mirror-unlist

Conversation

@MelbourneDeveloper

Copy link
Copy Markdown
Collaborator

TLDR

The unlisting runbook was about to list Basilisk on Zed. Basilisk is not in the Zed extension registry and never was, so delist/00 would have opened a PR adding it there in the middle of unlisting it, and delist/06 would 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/extensions has no [basilisk] block in extensions.toml, no extensions/basilisk submodule, and zero commits in its history mentioning Basilisk. The only related PR is #4871 — a differently-named extension, closed unmerged in February. publish-zed was removed from release.yml after its registry step failed the v0.41.0 release, and the listing had not landed before that. ROADMAP-NEXT-STEPS-PLAN.md said so all along: "Basilisk still does not appear in that repo's extensions.toml."

The mirror is the whole Zed surface. Nimblesite/basilisk-zed is public and Zed installs a dev extension straight from a clone of that layout. 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, 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.sh replaces the mirror contents with the notice-only extension and opens no registry PR. It keeps the gates that matter: a real standalone wasm32-wasip2 build, and a check that the rendered manifest declares no [language_servers, [debug_adapters or [grammars and carries the notice.
  • delist/06-unlist-zed.sh archives the mirror read-only, exactly as 05 archives the Neovim one — deleting would break pinned clones and erase the record.
  • Both scripts re-check the registry first and refuse to run if a [basilisk] entry ever appears, since that would make every assumption above false.
  • delist/01-verify-final-release.sh no longer waits on a bump PR that is never coming; an entry appearing at all is now the anomaly it reports.
  • delist/README.md replaces the two Zed rows with one that says plainly: do not open a PR against zed-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.py and delist/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 warning clean on all three changed scripts; bash -n clean.
  • make _lint_docsgen_readmes --check, gen_withdrawal_copy --check, test_published_readmes (5), check_public_copy (34 surfaces, including the edited delist/README.md), test_check_public_copy (6). All pass.
  • make _lint_deslop passes; ruff format --check --exclude '*/fixtures/*' . passes; ci.yml parses, 14 jobs, zed job down to 7 steps.
  • No remaining reference to any deleted file except the two that deliberately explain the deletion.

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

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant