{"repo":"NousResearch/hermes-agent","public_id":"12965","display_label":"Nix npmDepsHash staleness and auto-fix workflow issues","summary":"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.","subsystem":"cron","counts":{"members":12,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":5,"merged_prs":1,"attempt_prs":6},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":15444},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-04-25T00:44:32+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.16363636363636358},"fix_edges":[{"issue_number":15244,"pr_number":15444,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":15272,"pr_number":15444,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":12965,"title":"Nix build broken: web/package-lock.json updated without regenerating npmDepsHash","url":null,"state":"closed"},{"kind":"issue","number":15244,"title":"[Bug]: Nix ubuntu check failing on main again due to stale hermes-web npmDepsHash (recurrence of #12965)","url":null,"state":"closed"},{"kind":"issue","number":15272,"title":"[Bug]: Nix CI broken on main — npmDepsHash is out of date (blocks all PRs)","url":null,"state":"closed"},{"kind":"issue","number":39455,"title":"nix-lockfile-fix.yml can never commit its hash update — stages nix/tui.nix + nix/web.nix, but fix-lockfiles writes nix/lib.nix","url":null,"state":"closed"},{"kind":"issue","number":48318,"title":"[Bug]: Nix messaging build fails due to stale workspace npmDepsHash","url":null,"state":"closed"},{"kind":"pr","number":15420,"title":"fix(nix): refresh tui + web npmDepsHash to unblock CI on every PR (#15244, #15272, #15314)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#15444","number":15444},{"kind":"pr","value":"#15444","number":15444},{"kind":"pr","value":"#15444","number":15444},{"kind":"pr","value":"#15444","number":15444},{"kind":"pr","value":"#15444","number":15444}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":15444,"title":"fix(nix): use --rebuild in fix-lockfiles to bypass cached FOD store paths","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["nix/lib.nix","nix/web.nix"],"fix_hunks":[{"file":"nix/lib.nix","hunks":["@@ -156,7 +156,7 @@\n       for entry in \"''${ENTRIES[@]}\"; do\n         IFS=\":\" read -r ATTR FOLDER NIX_FILE <<< \"$entry\"\n         echo \"==> .#$ATTR ($FOLDER -> $NIX_FILE)\"\n-        OUTPUT=$(nix build \".#$ATTR.npmDeps\" --no-link --print-build-logs 2>&1)\n+        OUTPUT=$(nix build \".#$ATTR.npmDeps\" --no-link --rebuild --print-build-logs 2>&1)\n         STATUS=$?\n         if [ \"$STATUS\" -eq 0 ]; then\n           echo \"    ok\""]},{"file":"nix/web.nix","hunks":["@@ -4,7 +4,7 @@ let\n   src = ../web;\n   npmDeps = pkgs.fetchNpmDeps {\n     inherit src;\n-    hash = \"sha256-TS/vrCHbdvXkPcAPxImKzAd2pdDCrKlgYZkXBMQ+TEg=\";\n+    hash = \"sha256-4Z8KQ69QhO83X6zff+5urWBv6MME686MhTTMdwSl65o=\";\n   };\n \n   npm = hermesNpmLib.mkNpmPassthru { folder = \"web\"; attr = \"web\"; pname = \"hermes-web\"; };"]},{"file":"ui-tui/package-lock.json","hunks":["@@ -89,7 +89,6 @@\n       \"integrity\": \"sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"@babel/code-frame\": \"^7.29.0\",\n         \"@babel/generator\": \"^7.29.0\",","@@ -319,6 +318,31 @@\n         \"node\": \">=6.9.0\"\n       }\n     },\n+    \"node_modules/@emnapi/core\": {\n+      \"version\": \"1.10.0\",\n+      \"resolved\": \"https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz\",\n+      \"integrity\": \"sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==\",\n+      \"dev\": true,\n+      \"license\": \"MIT\",\n+      \"optional\": true,\n+      \"peer\": true,\n+      \"dependencies\": {\n+        \"@emnapi/wasi-threads\": \"1.2.1\",\n+        \"tslib\": \"^2.4.0\"\n+      }\n+    },\n+    \"node_modules/@emnapi/runtime\": {\n+      \"version\": \"1.10.0\",\n+      \"resolved\": \"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz\",\n+      \"integrity\": \"sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==\",\n+      \"dev\": true,\n+      \"license\": \"MIT\",\n+      \"optional\": true,\n+      \"peer\": true,\n+      \"dependencies\": {\n+        \"tslib\": \"^2.4.0\"\n+      }\n+    },\n     \"node_modules/@emnapi/wasi-threads\": {\n       \"version\": \"1.2.1\",\n       \"resolved\": \"https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz\",","@@ -1485,7 +1509,6 @@\n       \"integrity\": \"sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"undici-types\": \"~7.19.0\"\n       }","@@ -1496,7 +1519,6 @@\n       \"integrity\": \"sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==\",\n       \"devOptional\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"csstype\": \"^3.2.2\"\n       }","@@ -1507,7 +1529,6 @@\n       \"integrity\": \"sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"@eslint-community/regexpp\": \"^4.12.2\",\n         \"@typescript-eslint/scope-manager\": \"8.58.1\",","@@ -1537,7 +1558,6 @@\n       \"integrity\": \"sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"@typescript-eslint/scope-manager\": \"8.58.1\",\n         \"@typescript-eslint/types\": \"8.58.1\",","@@ -1855,7 +1875,6 @@\n       \"integrity\": \"sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"bin\": {\n         \"acorn\": \"bin/acorn\"\n       },","@@ -2191,7 +2210,6 @@\n         }\n       ],\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"baseline-browser-mapping\": \"^2.10.12\",\n         \"caniuse-lite\": \"^1.0.30001782\",","@@ -2877,7 +2895,6 @@\n       \"integrity\": \"sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"@eslint-community/eslint-utils\": \"^4.8.0\",\n         \"@eslint-community/regexpp\": \"^4.12.1\",","@@ -3773,7 +3790,6 @@\n       \"resolved\": \"https://registry.npmjs.org/ink-text-input/-/ink-text-input-6.0.0.tgz\",\n       \"integrity\": \"sha512-Fw64n7Yha5deb1rHY137zHTAbSTNelUKuB5Kkk2HACXEtwIHBCf9OH2tP/LQ9fRYTl1F0dZgbW0zPnZk6FA9Lw==\",\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"chalk\": \"^5.3.0\",\n         \"type-fest\": \"^4.18.2\"","@@ -5130,7 +5146,6 @@\n       \"integrity\": \"sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"engines\": {\n         \"node\": \">=12\"\n       },","@@ -5230,7 +5245,6 @@\n       \"resolved\": \"https://registry.npmjs.org/react/-/react-19.2.5.tgz\",\n       \"integrity\": \"sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==\",\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"engines\": {\n         \"node\": \">=0.10.0\"\n       }","@@ -6003,7 +6017,6 @@\n       \"integrity\": \"sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"esbuild\": \"~0.27.0\",\n         \"get-tsconfig\": \"^4.7.5\"","@@ -6130,7 +6143,6 @@\n       \"integrity\": \"sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==\",\n       \"dev\": true,\n       \"license\": \"Apache-2.0\",\n-      \"peer\": true,\n       \"bin\": {\n         \"tsc\": \"bin/tsc\",\n         \"tsserver\": \"bin/tsserver\"","@@ -6240,7 +6252,6 @@\n       \"integrity\": \"sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"dependencies\": {\n         \"lightningcss\": \"^1.32.0\",\n         \"picomatch\": \"^4.0.4\",","@@ -6649,7 +6660,6 @@\n       \"integrity\": \"sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==\",\n       \"dev\": true,\n       \"license\": \"MIT\",\n-      \"peer\": true,\n       \"funding\": {\n         \"url\": \"https://github.com/sponsors/colinhacks\"\n       }\n"]}]},{"kind":"pr","number":39459,"title":"fix(nix): stage nix/lib.nix instead of removed per-package hash files","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"d02a59b67997b9533eb786633604b1bec9c24bf9","number":0},{"kind":"commit","value":"9eb0bcd60fc6d3fe28e0b1c5bbe188f94169f65c","number":0},{"kind":"pr","value":"#41867","number":41867},{"kind":"pr","value":"#39455","number":39455}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":39475,"title":"fix(nix): stage consolidated lockfile hash","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"d02a59b67997b9533eb786633604b1bec9c24bf9","number":0},{"kind":"pr","value":"#39455","number":39455}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":39589,"title":"fix(nix): stage consolidated lockfile hash","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#39459","number":39459},{"kind":"pr","value":"#39455","number":39455},{"kind":"pr","value":"#39459","number":39459}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":39814,"title":"fix(nix): stage consolidated lockfile hash","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#39455","number":39455}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":41004,"title":"Fix #39455: Update nix-lockfile-fix.yml to stage nix/lib.nix","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"3ca0ef7e3","number":0},{"kind":"commit","value":"9eb0bcd60","number":0},{"kind":"pr","value":"#48457","number":48457}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}