ADR 0003: Thin VS Code Extension, Thick Rust Server

  • Status: Accepted
  • Date: 2025-12-18

Context

Splitting logic between extension and server risks duplication:

  • two parsing implementations
  • divergent heuristics
  • inconsistent diagnostics

Rust provides safety and performance; TypeScript provides editor UX.

Decision

Keep the VS Code extension thin:

  • lifecycle management
  • configuration plumbing
  • UI rendering

All parsing, reconstruction, and diagnostic mapping logic lives in Rust.

Alternatives Considered

  • Implement parsing in TypeScript
    • rejected: performance and robustness concerns; duplication with Rust core
  • Hybrid parsing (some heuristics in extension)
    • rejected: increases inconsistency risk

Consequences

  • Better testability and determinism.
  • Extension becomes mostly a transport and UX layer.