# NousResearch/hermes-agent · Nix npmDepsHash staleness and auto-fix workflow issues

## Open now

- Nothing open on GitHub.

These issues and PRs concern recurring breakage of Nix CI builds caused by stale or mismatched npmDepsHash values, and ongoing attempts to fix the automated workflow that is supposed to detect and commit updated hashes.

## TL;DR

- 12 member(s): 0 open issue(s), 5 closed issue(s), 0 open PR(s), 1 merged PR(s), 6 PR(s) closed without merging.
- A fix was merged to main in PR #15444. Verify it addresses your case.
- **Recommended:** read PR #15444 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.16`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #12965: Nix build broken: web/package-lock.json updated without regenerating npmDepsHash
- #15244: \[Bug\]: Nix ubuntu check failing on main again due to stale hermes-web npmDepsHash (recurrence of #12965)
- #15272: \[Bug\]: Nix CI broken on main — npmDepsHash is out of date (blocks all PRs)
- #39455: nix-lockfile-fix.yml can never commit its hash update — stages nix/tui.nix + nix/web.nix, but fix-lockfiles writes nix/lib.nix
- #48318: \[Bug\]: Nix messaging build fails due to stale workspace npmDepsHash

## Prior & competing PRs

- **#15444: fix(nix): use --rebuild in fix-lockfiles to bypass cached FOD store paths**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `nix/lib.nix`, `nix/web.nix`
  - fix hunks:
  - `nix/lib.nix`

    ```diff
    @@ -156,7 +156,7 @@
           for entry in "''${ENTRIES[@]}"; do
             IFS=":" read -r ATTR FOLDER NIX_FILE <<< "$entry"
             echo "==> .#$ATTR ($FOLDER -> $NIX_FILE)"
    -        OUTPUT=$(nix build ".#$ATTR.npmDeps" --no-link --print-build-logs 2>&1)
    +        OUTPUT=$(nix build ".#$ATTR.npmDeps" --no-link --rebuild --print-build-logs 2>&1)
             STATUS=$?
             if [ "$STATUS" -eq 0 ]; then
               echo "    ok"
    ```
  - `nix/web.nix`

    ```diff
    @@ -4,7 +4,7 @@ let
       src = ../web;
       npmDeps = pkgs.fetchNpmDeps {
         inherit src;
    -    hash = "sha256-TS/vrCHbdvXkPcAPxImKzAd2pdDCrKlgYZkXBMQ+TEg=";
    +    hash = "sha256-4Z8KQ69QhO83X6zff+5urWBv6MME686MhTTMdwSl65o=";
       };
     
       npm = hermesNpmLib.mkNpmPassthru { folder = "web"; attr = "web"; pname = "hermes-web"; };
    ```
  - `ui-tui/package-lock.json`

    ```diff
    @@ -89,7 +89,6 @@
           "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "@babel/code-frame": "^7.29.0",
             "@babel/generator": "^7.29.0",
    ```

    ```diff
    @@ -319,6 +318,31 @@
             "node": ">=6.9.0"
           }
         },
    +    "node_modules/@emnapi/core": {
    +      "version": "1.10.0",
    +      "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
    +      "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
    +      "dev": true,
    +      "license": "MIT",
    +      "optional": true,
    +      "peer": true,
    +      "dependencies": {
    +        "@emnapi/wasi-threads": "1.2.1",
    +        "tslib": "^2.4.0"
    +      }
    +    },
    +    "node_modules/@emnapi/runtime": {
    +      "version": "1.10.0",
    +      "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
    +      "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
    +      "dev": true,
    +      "license": "MIT",
    +      "optional": true,
    +      "peer": true,
    +      "dependencies": {
    +        "tslib": "^2.4.0"
    +      }
    +    },
         "node_modules/@emnapi/wasi-threads": {
           "version": "1.2.1",
           "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
    ```

    ```diff
    @@ -1485,7 +1509,6 @@
           "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "undici-types": "~7.19.0"
           }
    ```

    ```diff
    @@ -1496,7 +1519,6 @@
           "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
           "devOptional": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "csstype": "^3.2.2"
           }
    ```

    ```diff
    @@ -1507,7 +1529,6 @@
           "integrity": "sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "@eslint-community/regexpp": "^4.12.2",
             "@typescript-eslint/scope-manager": "8.58.1",
    ```

    ```diff
    @@ -1537,7 +1558,6 @@
           "integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "@typescript-eslint/scope-manager": "8.58.1",
             "@typescript-eslint/types": "8.58.1",
    ```

    ```diff
    @@ -1855,7 +1875,6 @@
           "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "bin": {
             "acorn": "bin/acorn"
           },
    ```

    ```diff
    @@ -2191,7 +2210,6 @@
             }
           ],
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "baseline-browser-mapping": "^2.10.12",
             "caniuse-lite": "^1.0.30001782",
    ```

    ```diff
    @@ -2877,7 +2895,6 @@
           "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "@eslint-community/eslint-utils": "^4.8.0",
             "@eslint-community/regexpp": "^4.12.1",
    ```

    ```diff
    @@ -3773,7 +3790,6 @@
           "resolved": "https://registry.npmjs.org/ink-text-input/-/ink-text-input-6.0.0.tgz",
           "integrity": "sha512-Fw64n7Yha5deb1rHY137zHTAbSTNelUKuB5Kkk2HACXEtwIHBCf9OH2tP/LQ9fRYTl1F0dZgbW0zPnZk6FA9Lw==",
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "chalk": "^5.3.0",
             "type-fest": "^4.18.2"
    ```

    ```diff
    @@ -5130,7 +5146,6 @@
           "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "engines": {
             "node": ">=12"
           },
    ```

    ```diff
    @@ -5230,7 +5245,6 @@
           "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
           "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
           "license": "MIT",
    -      "peer": true,
           "engines": {
             "node": ">=0.10.0"
           }
    ```

    ```diff
    @@ -6003,7 +6017,6 @@
           "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "esbuild": "~0.27.0",
             "get-tsconfig": "^4.7.5"
    ```

    ```diff
    @@ -6130,7 +6143,6 @@
           "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
           "dev": true,
           "license": "Apache-2.0",
    -      "peer": true,
           "bin": {
             "tsc": "bin/tsc",
             "tsserver": "bin/tsserver"
    ```

    ```diff
    @@ -6240,7 +6252,6 @@
           "integrity": "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "dependencies": {
             "lightningcss": "^1.32.0",
             "picomatch": "^4.0.4",
    ```

    ```diff
    @@ -6649,7 +6660,6 @@
           "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
           "dev": true,
           "license": "MIT",
    -      "peer": true,
           "funding": {
             "url": "https://github.com/sponsors/colinhacks"
           }
    ```
- **#15420: fix(nix): refresh tui + web npmDepsHash to unblock CI on every PR (#15244, #15272, #15314)**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#15444`, `#15444`, `#15444`, `#15444`, `#15444`
- **#39459: fix(nix): stage nix/lib.nix instead of removed per-package hash files**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `d02a59b67997b9533eb786633604b1bec9c24bf9`, `9eb0bcd60fc6d3fe28e0b1c5bbe188f94169f65c`, `#41867`, `#39455`
- **#39475: fix(nix): stage consolidated lockfile hash**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `d02a59b67997b9533eb786633604b1bec9c24bf9`, `#39455`
- **#39589: fix(nix): stage consolidated lockfile hash**. closed without merge
  - maintainer direction: category `duplicate_of`; implication `duplicate`; refs `#39459`, `#39455`, `#39459`
- **#39814: fix(nix): stage consolidated lockfile hash**. closed without merge
  - maintainer direction: category `uncategorized`; implication `needs_llm`; refs `#39455`
- **#41004: Fix #39455: Update nix-lockfile-fix.yml to stage nix/lib.nix**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `3ca0ef7e3`, `9eb0bcd60`, `#48457`

## Fix status

- Merged to main in PR #15444 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-04-25`.
- Subsystem: `cron`
