Skip to content

revert: roll back Node 26 / npm 12 toolchain stack (#76459, #76306, #76295, #75037) - #76563

Closed
teknium1 wants to merge 5 commits into
mainfrom
revert/node26-npm12-rollback
Closed

revert: roll back Node 26 / npm 12 toolchain stack (#76459, #76306, #76295, #75037)#76563
teknium1 wants to merge 5 commits into
mainfrom
revert/node26-npm12-rollback

Conversation

@teknium1

@teknium1 teknium1 commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Reverts the Node-26 / npm-12 toolchain stack that broke every installer and updater surface tonight (GUI installer, GUI updater, hermes update, nix), returning the toolchain floors to where they were: engines.node >=20, no engines.npm pin, no engine-strict, Node target major 22. System Node 22 / npm 10.x installs work again.

Reverted, newest first (per emozilla/ethernet's call):

Deliberately KEPT: the EBADENGINE recovery machinery from #76464 (hermes_cli/npm_engine.py, bootstrap_hermes_managed_node(), tests) — it originated in #75037's lineage but is floor-agnostic: it reads the required range from npm's own error output, so it stays dormant while no pin exists and works unchanged if/when the npm-12 migration is re-attempted with an installer-first rollout.

Conflict resolutions

All resolved to the pre-PR state (<mergeSha>^): package.json / website/package.json engines, apps/desktop/package.json deps, both lockfiles, uv.lock, backend-env.test.ts (later fmt commit touched it). hermes_cli/main.py kept the #76464 call sites (they no-op without an engine failure).

Validation

Broken (main) After revert
engines node >=26, npm >=11.17 (nonexistent npm version), engine-strict node >=20, no npm pin, no engine-strict
system Node 22 / npm 10.x EBADENGINE on every npm command works
managed Node 22 trees unfixable loop valid again
nix npm-12 overlay present removed

124 targeted tests green (test_npm_engine.py, test_cmd_update.py, test_hermes_constants.py, test_web_ui_build.py, test_gui_command.py, test_desktop_exe_integrity.py); hermes_constants + npm_engine real-import check passes; no residue (nix/npm-12-0-2.nix, nix/node-gyp-11-4-0.nix, .npmrc, website/.npmrc all gone).

Infographic

Node 26 / npm 12 rollback

@teknium1
teknium1 requested a review from a team August 2, 2026 03:58
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 6a9c035

❌ Job failures

Python tests / Run tests slice 4/8 · View job

Job Python tests / Run tests slice 4/8 failed.


⚠️ Action required

CI-sensitive file review · View job

This PR changes CI-sensitive files (eslint config, workflow YAMLs, or composite actions). These influence what the js-autofix job executes and pushes to main.

Sensitive files changed:

How to fix:

Add the ci-reviewed label after verifying:

  • no new eslint rules with custom fix functions that write outside linted paths,
  • no workflow changes that widen permissions or remove guards,
  • no composite action changes that alter what gets executed.

ℹ️ Info

Desktop E2E visual evidence · View test artifacts · View job

3 visual diffs.

inline evidence upload failed.

Failed to upload diff-1508682a2ae8-boot-ready-diff.png with gh image (exit code 1): Error uploading /home/runner/work/_temp/e2e-evidence/diff-1508682a2ae8-boot-ready-diff.png: step 0 (get upload token): uploadToken not found on repo page — do you have write access to NousResearch/hermes-agent? (or, if NousResearch enforces SAML SSO, authorize at https://github.com/orgs/NousResearch/sso)

The #75037 revert restored pyproject.toml's pre-sweep dependency bounds
and removed the global exclude-newer floor, so the lockfile had to be
re-resolved. Regenerated with --no-config: the worktree sits under the
main checkout, and uv's ancestor-config discovery was leaking the
parent pyproject's exclude-newer stamp into the lock — which CI (no
ancestor config) then rejected.
@teknium1
teknium1 force-pushed the revert/node26-npm12-rollback branch from 8782d5a to 6a9c035 Compare August 2, 2026 04:06
@alt-glitch alt-glitch added type/bug Something isn't working comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint comp/cli CLI entry point, hermes_cli/, setup wizard comp/desktop Electron desktop app (apps/desktop/*) comp/dashboard Web dashboard / control panel UI (dashboard/, landing) comp/tui Terminal UI (ui-tui/ + tui_gateway/) comp/lsp Language Server Protocol integration (P2 policy) area/config Config system, migrations, profiles area/docker Docker image, Compose, packaging area/install-update Installer, updater, packaging, wheels, doctor area/nix Nix flake, NixOS module, container packaging platform/windows Native Windows-specific behavior or breakage P2 Medium — degraded but workaround exists sweeper:risk-automation Sweeper risk: may affect CI, automerge, label sync, or maintainer automation sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-platform-windows Sweeper risk: may break or behave differently on native Windows labels Aug 2, 2026
@teknium1

teknium1 commented Aug 2, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #76562, which landed the forward fix instead: satisfiable engine floors (npm <11.10.0 || >=11.17.0, node >=20, toolchain target 22) while keeping #75037's vulnerability patches and adding invariant tests so an unsatisfiable floor can't recur. The full rollback is no longer needed.

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

Labels

area/config Config system, migrations, profiles area/docker Docker image, Compose, packaging area/install-update Installer, updater, packaging, wheels, doctor area/nix Nix flake, NixOS module, container packaging comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint comp/cli CLI entry point, hermes_cli/, setup wizard comp/dashboard Web dashboard / control panel UI (dashboard/, landing) comp/desktop Electron desktop app (apps/desktop/*) comp/lsp Language Server Protocol integration (P2 policy) comp/tui Terminal UI (ui-tui/ + tui_gateway/) P2 Medium — degraded but workaround exists platform/windows Native Windows-specific behavior or breakage sweeper:risk-automation Sweeper risk: may affect CI, automerge, label sync, or maintainer automation sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-platform-windows Sweeper risk: may break or behave differently on native Windows type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants