tsl-devkit/docs/superpowers/plans/2026-05-24-conan-dependency...

115 lines
3.8 KiB
Markdown

# Conan Dependency Upgrade Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Upgrade `lsp-server` Conan dependencies to the latest versions available on ConanCenter and adapt the project until it builds and passes targeted verification.
**Architecture:** Treat ConanCenter as the version authority for this task. Update only the versions that have newer published recipes, regenerate the build with the existing profiles, and make the smallest necessary source/build changes to restore compatibility. Keep unchanged packages pinned when ConanCenter has no newer recipe.
**Tech Stack:** Conan 2, CMake 4.2, Ninja, Clang toolchain, C++23 Modules
---
## Plan Meta
- **Plan Group:** deps-upgrade
- **Parent Plan:** none
- **Verification Scope:** local
- **Verification Gate:** must-pass
### Task 1: Update Conan dependency declarations
**Files:**
- Modify: `lsp-server/conanfile.txt`
- [x] Confirm the latest ConanCenter recipes:
`glaze/7.4.0`, `spdlog/1.17.0`, `fmt/12.1.0`,
`taskflow/4.0.0`, `tree-sitter/0.25.9`
- [x] Update `lsp-server/conanfile.txt`:
`glaze/7.0.2 -> glaze/7.4.0`
`taskflow/3.10.0 -> taskflow/4.0.0`
- [x] Leave `spdlog/1.17.0`, `fmt/12.1.0`, and `tree-sitter/0.25.9`
unchanged because ConanCenter does not expose newer recipes
### Task 2: Regenerate dependencies and capture compatibility failures
**Files:**
- Modify: `lsp-server/build/clang-linux/Release/**` (generated)
- Inspect: `lsp-server/src/**`
- Inspect: `lsp-server/test/**`
- [x] Run Conan install with the existing Linux Clang profile:
```bash
CONAN_HOME=/tmp/conan-home conan install lsp-server \
-pr:h=lsp-server/conan/profiles/linux-x86_64-clang \
-pr:b=lsp-server/conan/profiles/linux-x86_64-clang \
-of lsp-server/build/clang-linux/Release \
--build=missing
```
- [x] Reconfigure the existing build directory:
```bash
cmake -S lsp-server -B lsp-server/build/clang-linux/Release -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=$PWD/lsp-server/build/clang-linux/Release/generators/conan_toolchain.cmake \
-DBUILD_TESTS=ON
```
- [x] Build to identify required source-level adaptations:
```bash
cmake --build lsp-server/build/clang-linux/Release
```
### Task 3: Adapt code only where the upgraded APIs require it
**Files:**
- Modify: exact files reported by the build, likely under
`lsp-server/src/bridge/`, `lsp-server/src/codec/`,
`lsp-server/src/core/`, or related test targets
- [x] For `glaze` breakages, update serialization/meta/JSON-RPC call sites
to the current `glaze/7.4.0` API with the smallest possible diff
- [x] For `taskflow` breakages, update executor/task API usage to the
`taskflow/4.0.0` API with the smallest possible diff
- [x] Rebuild after each focused fix until the full build succeeds:
```bash
cmake --build lsp-server/build/clang-linux/Release
```
### Task 4: Run targeted verification and summarize the upgrade result
**Files:**
- Verify: `lsp-server/conanfile.txt`
- Verify: any source files touched in Task 3
- [x] Run dependency-focused tests:
```bash
ctest --test-dir lsp-server/build/clang-linux/Release \
-R 'test_ast|test_provider|test_semantic|test_symbol|test_scheduler' \
--output-on-failure
```
- [x] Run whitespace / patch hygiene check:
```bash
git -c core.trustctime=false -c core.checkStat=minimal diff --check
```
- [x] Report three facts in the final handoff:
upgraded versions, any compatibility edits made, and the exact
verification commands that passed
Known residual verification:
- `test_ast_script`, `test_symbol_script`, and `test_semantic_script` still fail on existing
TSF fixture parse/load errors under `lsp-server/test/test_tree_sitter/test`.
Dependency-focused targets `test_lsp_any`, `test_provider`, and `test_scheduler` pass.