LLM.md: all nine answer, and how the two that did not got there

0.1.6 served eight languages and logged `spawn EPERM` for TypeScript and
JavaScript once per root. 0.1.7 serves all nine, verified on the gVisor node.

Keeping the failure in the record rather than only the result: it is the
clearest evidence the graceful-degrade design works, and the next language to
need a jail change will look exactly like it.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
zooqueen
2026-08-09 12:32:23 -07:00
co-authored by Hanzo Dev
parent 481d69e8b7
commit 94245f16f0
2 changed files with 11 additions and 7 deletions
+10 -6
View File
@@ -397,12 +397,16 @@ BINARY and a self-exec'd test suite proves nothing.
`python-sdk/pkg/hanzo-tools-lsp`) with `repo`/`rev` parameters — a file goes
to the local stdio server, a repo goes to `/v1/code/lsp/*`. Not a new tool.
4. **More languages** = install the server in the Dockerfile and add its entry.
DONE for the nine above, and verified on the gVisor node at 0.1.6: Go,
Python, Rust, C, C++, Java, PHP and Ruby all answered `locate definition`
jailed, Ruby into the interpreter's own library with `external: true`.
TypeScript and JavaScript did not, for the `socketpair` reason above — one
language's server failing is one language, which is the graceful-degrade
design doing its job and the reason the other eight shipped anyway.
DONE, and verified on the gVisor node: all nine answer `locate definition`
jailed — Go, TypeScript, JavaScript, Python, Rust, C, C++, Java, PHP, Ruby —
with Ruby resolving into the interpreter's own library at `external: true`.
It took two images to get there, and the failure is worth keeping. At 0.1.6
TypeScript and JavaScript were the only two that did not answer: `spawn
EPERM`, because `socketpair` was denied (see the invariant above). Every
other language kept working and the daemon logged the reason per root, which
is the graceful-degrade design earning its keep — one server failing cost one
language, not the service.
Two things a repo needs before its dependencies resolve, neither a bug:
`cargo fetch --locked` wants a committed `Cargo.lock`, and `npm ci` wants a
+1 -1
View File
@@ -76,7 +76,7 @@ test:
# a number at or below what is published publishes the next patch above the
# registry. So this line is the floor, not the output, and it can never mint a
# tag that already covers different bytes.
version: 0.1.7
version: 0.1.8
images:
- name: lsp