)]}'
{
  "commit": "37e94535f8a06142cb2cdda0775a7f7264232eab",
  "tree": "89921477e2fb1bee264f8181881320f038617d32",
  "parents": [
    "eeea2daa520080c7c30b57cba6f1c1b3bec17aff"
  ],
  "author": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Sat Jul 25 12:10:01 2026 +0200"
  },
  "committer": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Sat Jul 25 15:03:55 2026 +0200"
  },
  "message": "Bazel: Bump rules_js, rules_ts and rules_nodejs\n\nUpdate the JS ruleset stack: aspect_rules_js 3.1.2 -\u003e 3.2.3,\naspect_rules_ts 3.8.8 -\u003e 3.9.2, rules_nodejs 6.7.4 -\u003e 6.7.5, and adapt\nthe tree to what the new versions require and enable.\n\nThe rules_ts options validator now resolves outDir through the tsconfig\nextends chain and rejects the inherited yarn/IDE outDir\n(../../.ts-out/...), which escapes the Bazel package. Override it in the\nbazel tsconfigs, kept in sync with the out_dir attributes the ts_project\ntargets already carry.\n\nrules_nodejs 6.7.5 reads the node version from .nvmrc\n(node_version_from_nvmrc), so the version is pinned in one cross-tool\nfile that nvm, editors and CI honor as well -- previously the yarn dev\nflow had no node pin at all. Versions newer than the ruleset\u0027s built-in\ntable are auto-fetched and recorded in MODULE.bazel.lock. This retires\nthe hand-maintained node checksum dict, the per-platform use_repo\nboilerplate and the unused root alias of the pnpm extension (rules_js\nresolves its own pnpm; the npm_translate_lock update machinery never\nconsumed the root alias).\n\nThe bundled pnpm moves to 10.34.5, whose import marks git-hosted tarball\nresolutions with gitHosted: true (10.34.1 lockfile schema). Whether it\nalso records an integrity field for such tarballs depends on the local\nstore state: a cold store downloads the tarballs and emits integrity, a\nwarm store omits it and strips it on re-import -- same version, same\ninputs, different lockfile. Reproducer:\nhttps://github.com/davido/pnpm-codeload-repro, filed upstream as\nhttps://github.com/pnpm/pnpm/issues/13338. The committed lock is the\nwarm-store form, consistent with the action caches below.\n\nThat nondeterminism broke CI: every fresh checkout re-ran pnpm import\n(cold) and failed with \"pnpm-lock.yaml file updated\". The root cause is\nthat the npm_translate_lock action caches were gitignored, so\nupdate_pnpm_lock could never see that the lock is current. Check the\n.aspect/rules/external_repository_action_cache files in, as the rules_js\ndocumentation prescribes -- the action cache \"persists the state of\npackage and lock files that may effect the pnpm-lock.yaml generation and\nshould be checked into the source control along with the pnpm-lock.yaml\nfile\" (\"update_pnpm_lock\" in\nhttps://github.com/aspect-build/rules_js/blob/main/docs/pnpm.md): with\nmatching caches the import is skipped entirely and CI no longer depends\non pnpm\u0027s store-state behavior.\n\nThis stack also pulls in aspect_tools_telemetry, which reports ruleset\nusage with repo and user fingerprints at module-resolution time; opt the\nwhole tree out via ASPECT_TOOLS_TELEMETRY\u003d-all in .bazelrc.\n\nRelease-Notes: skip\nChange-Id: I018b2e4754a921a69b6004ca78c38dbf08bd7539\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b1e9051847ac4f4dc5c4c98a3aed6ca1f60ad643",
      "new_mode": 33261,
      "new_path": ".aspect/rules/external_repository_action_cache/npm_translate_lock_LTE4Nzc1MDcwNjU\u003d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "51238c9d9ff44a0b88f4f046d240c89de2c1be86",
      "new_mode": 33261,
      "new_path": ".aspect/rules/external_repository_action_cache/npm_translate_lock_NDEzOTg2ODE\u003d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3612935fbb2adefbb519b9d3795d5e59567b855a",
      "new_mode": 33261,
      "new_path": ".aspect/rules/external_repository_action_cache/npm_translate_lock_ODE4NDE3MDEy"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "33edcc5a888c1223a59efa05675b9373959cf0aa",
      "new_mode": 33261,
      "new_path": ".aspect/rules/external_repository_action_cache/npm_translate_lock_ODE4OTg1MjQ0"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "23457d5771ba074f8b908447e9b5458bb379405a",
      "new_mode": 33261,
      "new_path": ".aspect/rules/external_repository_action_cache/npm_translate_lock_ODUwOTM3NTg\u003d"
    },
    {
      "type": "modify",
      "old_id": "b864a3bb669a80dae36d784e1e6de60c46d04e3f",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "f5d330fa49983de8897ceb25264e7addba8cba36",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "modify",
      "old_id": "cc71eb5d0eb91278a809c6024e8a069ee1adeaf6",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "f42cfc0036981c261dfd637f01b6a8c3ce17605f",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ca5c350055ccb6dacb495a786f60c8232abed8f2",
      "new_mode": 33188,
      "new_path": ".nvmrc"
    },
    {
      "type": "modify",
      "old_id": "037a989d4974850e5568c5674e29e5a1f5dc7dca",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "55fbaa8e9d466307a9a3159a65e92cfa09419d68",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "fe7c2bee4474ceb105ef2e35253166d042246030",
      "old_mode": 33188,
      "old_path": "MODULE.bazel.lock",
      "new_id": "7e2e9dee81f082df55c9d581355e7bede733a8c3",
      "new_mode": 33188,
      "new_path": "MODULE.bazel.lock"
    },
    {
      "type": "modify",
      "old_id": "da97189df5796daff95d063fd07fa7f4df36af9d",
      "old_mode": 33188,
      "old_path": "polygerrit-ui/app/pnpm-lock.yaml",
      "new_id": "6d865aa0f5c9c6fb8db537d5692884fa09f71212",
      "new_mode": 33188,
      "new_path": "polygerrit-ui/app/pnpm-lock.yaml"
    },
    {
      "type": "modify",
      "old_id": "730fc4d0a6f134f85eb609d023c1f5be31850ed0",
      "old_mode": 33188,
      "old_path": "polygerrit-ui/app/tsconfig_bazel.json",
      "new_id": "8cd5dfb2c6da52f876c9abc00d7a0a4ac8592141",
      "new_mode": 33188,
      "new_path": "polygerrit-ui/app/tsconfig_bazel.json"
    },
    {
      "type": "modify",
      "old_id": "7d74ffaf424e8025d11ef4a08f05f16f8b0e7d44",
      "old_mode": 33188,
      "old_path": "polygerrit-ui/app/tsconfig_bazel_test.json",
      "new_id": "e6fc2ccb6072c9df10a17a31c58a21dc2ce314d0",
      "new_mode": 33188,
      "new_path": "polygerrit-ui/app/tsconfig_bazel_test.json"
    },
    {
      "type": "modify",
      "old_id": "d839cc8b8fc0df11f238837106b33633223a3435",
      "old_mode": 33188,
      "old_path": "polygerrit-ui/polygerrit.MODULE.bazel",
      "new_id": "e04ccd6184a7d0fa953075d1bf63879ccf10f89d",
      "new_mode": 33188,
      "new_path": "polygerrit-ui/polygerrit.MODULE.bazel"
    }
  ]
}
