Skip to content

[Build] Coordinate the Node 22.22.2 minimum before adopting jsdom 30 #779

Description

@seonghobae

Buyer and maintainer problem

BandScope currently declares the root runtime contract node >=22.13 <23, while jsdom@30.0.1 requires Node ^22.22.2 || ^24.15.0 || >=26.0.0. A hosted CI runner may use a sufficiently new Node patch release and pass, even though users and builders on Node 22.13.0–22.22.1 still satisfy BandScope's published engine range and cannot install the upgraded test dependency reliably.

This makes a direct Dependabot merge unsafe. The Node floor must move as one coordinated compatibility change rather than being hidden inside a two-file dependency bump.

Required scope

  • Raise the authoritative root engines.node floor to >=22.22.2 <23 only after verifying every workspace and native build path.
  • Update all Node setup actions, toolchain files, devcontainers, Docker images, local-development documentation, release instructions, and generated package metadata that encode the old floor.
  • Add an exact minimum-version CI lane that installs from a clean lockfile and runs lint, strict typecheck, complete measured tests, production build, Storybook/build tooling where applicable, and the Tauri integration boundary.
  • Regenerate the root npm workspace lock with the repository's pinned npm version and keep the diff free of unrelated lock metadata churn.
  • Upgrade jsdom only in the same reviewed compatibility slice after the minimum-version lane proves the new floor.
  • Update CHANGELOG.md and the operator/developer documentation with the compatibility boundary and rollback procedure.
  • Rerun repository CI, security, supply-chain, central coverage, current-head OpenCode/Noema/CodeRabbit review, unresolved-thread, independent approval, and branch-protection gates.

Acceptance criteria

  • No manifest, workflow, container, documentation, or release path still advertises Node 22.13 as supported.
  • A clean exact-head run on Node 22.22.2 passes the complete required suite.
  • A negative contract proves a lower Node 22 patch release is outside the supported range.
  • jsdom@30.x is installed without engine warnings or hidden fallback behavior.
  • The lockfile contains only the intended dependency graph changes.
  • CHANGELOG.md, architecture/doctoring records, and rollback instructions are current.

Supersession

This issue replaces the unsafe standalone merge path in PR #760. The existing PR may be recreated or superseded after the coordinated Node-floor migration is ready; predecessor-head checks are not transferable.

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