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>
206d47fe6dversecafe committed on 8/20/2026, 12:22:36 AMparentf2758b4
10 files changed+977-5