# Add strata-ls Tier A: a real LSP server over stdio · versecafe/strata

[View on GitCafe](https://git.cafe/versecafe/strata/commit/206d47fe6dee76b4d428d15cc9f607d255e71816)

Repository: [versecafe/strata](https://git.cafe/versecafe/strata)

Visibility: public

Requested revision: 206d47fe6dee76b4d428d15cc9f607d255e71816

Requested commit: 206d47fe6dee76b4d428d15cc9f607d255e71816

Commit: 206d47fe6dee76b4d428d15cc9f607d255e71816

Tree: 61fdccdb10ee3484da6964783cd6774ee9a5c817

Author: versecafe

Committer: versecafe

## Message

```
Add strata-ls Tier A: a real LSP server over stdio

Standard initialize/didOpen/didChange/didSave/didClose handshake,
publishing textDocument/publishDiagnostics sourced from the real
strata-check and strata-lint entry points (check_package_combined,
lint) rather than a reimplemented diagnostic model. Checker findings
map to Error severity, lint findings to Warning per D-56's default
warn posture, malformed expect(...) suppressions to Error.

Byte-offset-to-UTF-16 span conversion (line_index.rs) is unit-tested
against ASCII, BMP, and astral-plane content. Hand-rolled
Content-Length-framed JSON-RPC transport rather than pulling in
lsp-server/tower-lsp, matching the workspace's existing
minimal-dependency convention; lsp-types is the one new dependency,
used only for message-shape types.

Deferred and documented in server.rs: incremental sync (needs the
package-summary machinery from D-045), hover/goto/completion (HIR has
no position-indexed symbol table yet — that's new infrastructure, not
a thin rendering layer), and multi-file workspace packages (a
forge/strata build concern, not strata-ls's).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

```

## Parents

- [f2758b4b975cd2937fe4da67f2dd7d5da7db16a5](https://git.cafe/versecafe/strata/commit/f2758b4b975cd2937fe4da67f2dd7d5da7db16a5?format=markdown)

[Source at this commit](https://git.cafe/versecafe/strata/tree/206d47fe6dee76b4d428d15cc9f607d255e71816?format=markdown)
