Skip to content

lnd versionRange excludes LND 0.20, contradicting the docs and the 0.20 code path #30

Description

@helix-nine

startos/dependencies.ts currently pins:

versionRange: '>=0.21.1-beta:4',

That floor excludes LND 0.20 entirely, but the package is built and documented to support it.

Where it came from

It was not a deliberate change. git log -L 46,46:startos/dependencies.ts traces it to 4909031 — the start-sdk 2.0.7 fleet bump (#28), whose subject is "bump start-sdk to 2.0.7; refresh bitcoin-core-startos,lnd-startos pin(s)":

-      versionRange: '>=0.20.1-beta:12',
+      versionRange: '>=0.21.1-beta:4',

That sweep mechanically raised every dependent's versionRange to its dependency's newly-published revision. For most packages that is correct; here it collided with a deliberate exception. AGENTS.md:14 states the rule it broke, in as many words:

Supports LND 0.20 and 0.21 (>=0.20.1-beta:12) … and don't re-pin the dependency to >=0.21.

It shipped in 0.3.0:4 and is live in the published 0.3.0:6.

Impact

  • LND 0.20 is still published (0.20.1-beta:13 in the registry). A user running it now has an unsatisfiable dependency — StartOS surfaces "needs update" and BOLT12 Pay will not run against a node it was designed to support.
  • The 0.20 code path is effectively dead. dependencies.ts reads LND's installed version via sdk.getServiceManifest(...).const() and posts the Auto-Configure task only to pre-0.21 nodes, via the raw effects.action.createTask effect. Under a >=0.21.1-beta:4 floor no reachable install can hit that branch — including the deliberate raw-effect workaround AGENTS.md warns not to "simplify" away.
  • All three docs contradict the code: AGENTS.md:14, README.md:104/139/168, instructions.md:15/18/20/31. instructions.md ships in the s9pk and tells users "Install and fully sync LND (0.20 or newer)" under the Instructions tab.

Resolution

Two coherent options — this is a product call, not a mechanical one:

  1. Restore >=0.20.1-beta:12. Matches AGENTS.md, the docs, and the version-gated task logic. My read is that this is what was intended, since nothing in chore: bump start-sdk to 2.0.7 (0.3.0:4) #28 was about dropping 0.20.
  2. Keep the >=0.21 floor deliberately and drop the 0.20 story everywhere: the AGENTS.md bullet and its "don't re-pin" instruction, the README table row and lines 139/168, the instructions.md section, and the now-unreachable pre-0.21 branch plus its raw-createTask workaround.

Either way the fix is one release; today the package ships code and docs that disagree about which LND versions it supports.

Worth checking whether the same sweep re-pinned a deliberate floor in other packages.

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