From 4a6e59fc21ad913af7d4ce21927a87015af973e1 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 12:25:57 +0000 Subject: [PATCH] fix(js-runtimes): make the crate its own workspace root MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The governance and js-runtimes reusables check tools/js-runtimes out at .standards-js/ inside the caller's checkout, then run `cargo install --locked --path` on it. When the caller's root Cargo.toml is a workspace, cargo walks up from the staged crate, finds that workspace, and refuses: error: current package believes it's in a workspace when it's not So "JS runtimes — environment provisions Bun first" fails on any Rust-workspace consumer pinned at 75bd599; hyperpolymath/hypatia#929 hit it first. Callers without a root workspace, such as palimpsest-license, pass. An empty [workspace] table makes the crate its own root wherever it is staged. Standards has no root workspace, so nothing changes here: the lockfile is untouched, and `cargo test --locked` still passes (8 tests). Checked in a probe repository with a root workspace and the crate staged at .standards-js/tools/js-runtimes: `cargo metadata` fails (101) with the current manifest and passes with this one, and the job's `cargo install --locked` now builds. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01LET2eHeDbN3b4WuxYjMUX9 --- tools/js-runtimes/Cargo.toml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/js-runtimes/Cargo.toml b/tools/js-runtimes/Cargo.toml index 451dcb990..9586888c4 100644 --- a/tools/js-runtimes/Cargo.toml +++ b/tools/js-runtimes/Cargo.toml @@ -20,3 +20,11 @@ path = "src/main.rs" # I-JSON (RFC 7493) + JCS (RFC 8785), in-process (owner ruling D306). # Pinned by commit: ijson-jcs has no releases yet. ijson-jcs = { git = "https://github.com/hyperpolymath/ijson-jcs", rev = "3a9a4ee326a968a32b2f152b4faec243a2d00765" } + +# Its own workspace root, on purpose. The governance and js-runtimes +# reusables check this crate out at .standards-js/ INSIDE the caller's +# checkout and `cargo install --path` it from there. In a caller whose root +# Cargo.toml is a workspace, cargo would otherwise take this crate for an +# undeclared member and refuse to build it ("current package believes it's +# in a workspace when it's not"). Hit by hyperpolymath/hypatia#929. +[workspace]