Relock onto sigil 0.20 and add the standard pipeline
The sigil: field carried a caret range, deprecated across the estate since 2026-08-25 -- the field declares a MINIMUM, not a range. Monorepo package pins brought to 0.20. Only pins naming a monorepo package via codeberg:sigil/sigil were moved; standalone libraries version independently.
Suite: 30 passed, 1 failed. THE FAILURE IS KNOWN AND EXPECTED.
test-help-integration renames the compiler-generated build/dev/lib/sigil/lsp/completion.json out of the way and then asserts that hover, completion and definition all still answer from warmed caches. Hover and completion do. Definition cannot: it needs module-details-file plus a file-exists? check, so it must re-read the JSON the test just removed.
The gap is in warm-docs-index!, which calls only search-docs. That warms the SEARCH INDEX, never load-module-details' module cache -- and its own comment says so: "so the first hover / completion". Definition was never covered.
Verified by measurement, not inference: with both renames disabled the same suite is 31 passed, 0 failed. The definition provider is correct; only the warm-up is incomplete.
Closing it means warming module details for every indexed module at server startup, trading LSP startup latency for cache resilience. That is a product decision, so the repo goes onto CI with the step visibly red rather than with the test deleted or the tradeoff made silently.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P6mPymR1ZBRV1nuyDpBxDF
.kiln/ci.sgv | 9 +++++++++
package.sgl | 8 ++++----
sigil.lock | 24 ++++++++++++------------
3 files changed, 25 insertions(+), 16 deletions(-).kiln/ci.sgvadded
(pipeline ci on: #[ (push) (manual) ] (job ci steps: #[ (shell name: deps "sigil deps install") (shell name: build "sigil build") (shell name: test "sigil test") ]))package.sglmodified
(package name: "sigil-lsp" version: "0.16.2" sigil: "^0.19" sigil: "0.20" description: "Language Server Protocol implementation for Sigil" url: "https://codeberg.org/sigil/sigil-lsp" license: "BSD-3-Clause" dependencies: (list (from-git url: "codeberg:sigil/sigil-json" version: "^0.16.0") (from-git url: "codeberg:sigil/sigil-log" version: "^0.16.0") (from-git url: "codeberg:sigil/sigil" package: "sigil-args" version: "^0.19") (from-git url: "codeberg:sigil/sigil" package: "sigil-format" version: "^0.19") (from-git url: "codeberg:sigil/sigil" package: "sigil-help" version: "^0.19"))) (from-git url: "codeberg:sigil/sigil" package: "sigil-args" version: "^0.20") (from-git url: "codeberg:sigil/sigil" package: "sigil-format" version: "^0.20") (from-git url: "codeberg:sigil/sigil" package: "sigil-help" version: "^0.20")))sigil.lockmodified
(lock (package name: "sigil-stdlib" url: "codeberg:sigil/sigil" ref: "^0.19" sha: "b99b8f2dd82e7ff7465c3d49a1f81250f2d00007" ref: ">=0.20, <1.0" sha: "2e452e2f641fcf63be4e88a2748b34791543be8f" package-selector: "sigil-stdlib" version: "0.19.0") version: "0.20.3") (package name: "sigil-json" url: "codeberg:sigil/sigil-json" ref: "^0.16.0" version: "0.16.0") (package name: "sigil-args" url: "codeberg:sigil/sigil" ref: "^0.19" sha: "b99b8f2dd82e7ff7465c3d49a1f81250f2d00007" ref: "^0.20" sha: "2e452e2f641fcf63be4e88a2748b34791543be8f" package-selector: "sigil-args" version: "0.19.0") version: "0.20.3") (package name: "sigil-format" url: "codeberg:sigil/sigil" ref: "^0.19" sha: "b99b8f2dd82e7ff7465c3d49a1f81250f2d00007" ref: "^0.20" sha: "2e452e2f641fcf63be4e88a2748b34791543be8f" package-selector: "sigil-format" version: "0.19.0") version: "0.20.3") (package name: "sigil-help" url: "codeberg:sigil/sigil" ref: "^0.19" sha: "b99b8f2dd82e7ff7465c3d49a1f81250f2d00007" ref: "^0.20" sha: "2e452e2f641fcf63be4e88a2748b34791543be8f" package-selector: "sigil-help" version: "0.19.0") version: "0.20.3"))