Skip to content

lint: sync upstream rslint #1617 (per-document core resolution, RuntimeManager) #13

Description

@fi3ework

What

Upstream rslint PR web-infra-dev/rslint#1617 (`refactor: use project-local core in VS Code`, merged 2026-08-08, shipped in `@rslint/core` 0.8.0) reshaped the extension our `stacks/lint` copy is ported from:

  • The workspace-root coordinator is gone. A `RuntimeManager` resolves the nearest project-local `@rslint/core` per open document (`CoreResolver.ts`), with an exact resource-scoped `rslint.corePath` override, and shares one runtime per physical installation inside a workspace folder while isolating distinct copies (including same-version copies).
  • The Go binary, config host, protocol version and ESLint-plugin worker host are all sourced from the selected core (`resolveRslintBinary` is now exported from `@rslint/core/config-loader`).
  • Incremental UTF-16 document sync replaces full sync.
  • Bundled runtime fallback, Yarn PnP path, legacy binary settings and per-platform VSIX publishing were removed.

Our port (`WorkspaceRslintCoordinator`, per-folder runtime, full sync) predates this.

Why it is deferred

The lint × Rstack bridge (ADR 0003, `docs/adr/0003-lint-through-editor-worker.md`) is being built on the current per-folder coordinator. The two are orthogonal: the lint worker takes explicit `--core` / `--config` paths, so how many runtimes a folder gets is the manager's business, and a bridged folder always has exactly one. Doing both at once would mix a behavioural sync with an architectural change.

Scope of the sync

  • Diff `packages/vscode-extension/src` between the pre-#1617 tag our copy tracks and `origin/main`, port `RuntimeManager` / `CoreResolver` / incremental sync, preserving the adaptations listed in `packages/vscode/AGENTS.md`.
  • Reconcile per-document runtimes with the per-folder Ownership rule (a bridged folder stays one runtime; native folders may hold one runtime per distinct core).
  • The setting side (`rstack.rslint.corePath` replacing `binPath`/`customBinPath`) is already taken by ADR 0003; this issue is the runtime model.
  • Keep ported E2E suites' assertion semantics; upstream's 153-test extension run is the reference.

Blocked by: the ADR 0003 implementation landing first.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions