Nimblesite / Nimblesite/Basilisk

Shipwright: verify Zed extension reads shipwright.json + checks expectedVersion

Open
#35 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
54
Forks
3
PR merge metrics
No merged PRs in 30d

Description

Problem

basilisk-zed/src/lib.rs downloads the latest GitHub release and tracks cached_binary_version, but never reads shipwright.json (or deployment-toolkit.json) to learn the expected version, and never verifies the running server's version against an expected value from the manifest.

```rust
// src/lib.rs
let (path, version) = Self::download_binary()?;
self.cached_binary_version = Some(version);
// ...later:
if logic::is_newer_version(current, &latest_release.version) { /* warn */ }
```

Per [SWR-VERSION-LSP], IDE hosts must verify the LSP server's version (from InitializeResult.serverInfo.version) against the expectedVersion declared in shipwright.json. Per [SWR-IDE-ERROR], mismatches must be surfaced with expected, found, and path.

Spec citations

  • [SWR-VERSION-LSP] — verify server version from initialize metadata
  • [SWR-IDE-ERROR] — error surface for mismatches
  • [SWR-VERSION-CONTRACT] — manifest is the source of truth for expected version

Spec references

The Shipwright deployment specs are at https://github.com/Nimblesite/Shipwright (private repo). Use Playwright (mcp__playwright__browser_navigate) in an authenticated browser to view them.

Acceptance criteria

  • Zed extension parses shipwright.json (after rename — see manifest-rename issue) on startup
  • Reads expectedVersion for the basilisk component (resolves ${PRODUCT_VERSION})
  • Compares against InitializeResult.serverInfo.version after LSP initialize
  • On mismatch with hosts.zed.onMismatch: error, surfaces a notification with expected, found, and binary path; refuses to use the server
  • Existing is_newer_version GitHub-release check kept as a separate informational warning

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in basilisk-zed/src/lib.rs, then review the referenced Shipwright version-contract and IDE-extension specs in an authenticated browser with Playwright. Trace startup, binary download, and LSP initialization, keeping the existing is_newer_version warning separate. Done means the acceptance criteria are met, including the expected, found, and binary path notification on mismatch.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.