Skip to content

Index observability: otel spans, TASTy diagnostics, client error surfacing#93

Merged
rochala merged 1 commit into
mainfrom
feat/index-observability
Jun 15, 2026
Merged

Index observability: otel spans, TASTy diagnostics, client error surfacing#93
rochala merged 1 commit into
mainfrom
feat/index-observability

Conversation

@rochala

@rochala rochala commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

What

Threads tracing and failure-surfacing through the index + LSP layers, plus a Java-frontend correctness fix. (Originally stacked on #92; rebased onto main now that #92 is merged.)

  • Client error surfacingServerImpl.op(name)(fa) wraps every LSP op in a span and, on failure, pushes the full stacktrace to the client Output channel (window/logMessage, Error) so it's visible in the editor without the trace backend. New LoggingUtils.logError.
  • Indexing spansIndexManager / TastyIndexer / SymbolIndexer now take Tracer[IO]; bootstrap opens an index.bootstrap root span and each library nests under an index.jar span carrying symbol counts and recording exceptions.
  • TASTy diagnosticsTastyIndexer returns (Indexed, List[IndexDiagnostic]) and attaches TASTy read errors/warnings to the current span.
  • JavaFrontendDriver fix — type-check against a fresh StoreReporter rather than leaking the caller's reporter state.

Test

./mill __.compile clean; ./mill sls.test 598/598 green.

Note: under the heavier ./mill _.test (all modules in parallel) the timing-sensitive DidSaveCompileConcurrencySpec (300ms window, from #92) can flake. Not touched by this PR — worth making that spec load-robust separately.

🤖 Generated with Claude Code

…acing

Threads tracing and failure-surfacing through the index + LSP layers, and
fixes a stray-state bug in the Java frontend.

- ServerImpl: an `op(name)(fa)` wrapper traces every LSP op in a span and, on
  failure, pushes the full stacktrace to the client Output channel
  (window/logMessage, Error) so it's visible in the editor without the trace
  backend. New LoggingUtils.logError.
- Indexing spans: IndexManager/TastyIndexer/SymbolIndexer take `Tracer[IO]`;
  bootstrap opens an `index.bootstrap` root span, each library nests under an
  `index.jar` span carrying symbol counts and recording exceptions.
- TASTy diagnostics: TastyIndexer returns `(Indexed, List[IndexDiagnostic])`
  and attaches read errors/warnings to the current span.
- JavaFrontendDriver: type-check against a fresh StoreReporter instead of
  leaking the caller's reporter state.

Stacked on the compile-concurrency PR (shares ServerImpl).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rochala rochala marked this pull request as ready for review June 15, 2026 21:20
@rochala rochala merged commit f59c426 into main Jun 15, 2026
1 check passed
@rochala rochala deleted the feat/index-observability branch June 15, 2026 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant