)]}'
{
  "log": [
    {
      "commit": "17fbde8c1ac4aa4b5977130ee46d5e782122063f",
      "tree": "d8cdc56486af1aae44d929cc34ad2d5529a9d769",
      "parents": [
        "549860fef3700c647c20d8d0211df77d6307a487"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 19 21:21:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 21:21:29 2026"
      },
      "message": "Bump google.golang.org/grpc from 1.78.0 to 1.79.3 (#648)\n\nBumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.78.0 to 1.79.3.\n- [Release notes](https://github.com/grpc/grpc-go/releases)\n- [Commits](https://github.com/grpc/grpc-go/compare/v1.78.0...v1.79.3)\n\n---\nupdated-dependencies:\n- dependency-name: google.golang.org/grpc\n  dependency-version: 1.79.3\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "549860fef3700c647c20d8d0211df77d6307a487",
      "tree": "866168f30833d55ea6d36a5e36bc805d4dbff882",
      "parents": [
        "46f258f4b4d3e3a861def93f6cd1205d20b4589b"
      ],
      "author": {
        "name": "Philipp Wollermann",
        "email": "philwo@google.com",
        "time": "Thu Mar 19 14:38:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 14:38:14 2026"
      },
      "message": "contextmd: Add missing fields from RequestMetadata proto (#646)\n\n* contextmd: Add missing fields from RequestMetadata proto\n\nSupport the action_mnemonic, target_id, and configuration_id fields\nfrom the RequestMetadata proto, which were previously missing from\nour Metadata type. Wire them through ExtractMetadata, WithMetadata,\nMergeMetadata, and capToLimit. Add corresponding tests.\n\nSet CorrelatedInvocationsId in WithMetadata. The CorrelatedInvocationsID\nfield is already present in the Metadata struct and handled by\nExtractMetadata and MergeMetadata, but was never set on the outgoing\nRequestMetadata proto in WithMetadata.\n\n* Address review feedback for contextmd changes\n\n- Update MergeMetadata doc comment to list all fields taken from the\n  first argument and fix \"correlated action id\" → \"correlated\n  invocations ID\".\n- Add missing CorrelatedInvocationsID assertion in round-trip test.\n- Fix capToLimit to drop ConfigurationID, TargetID, ActionMnemonic\n  before trimming ActionID/InvocationID, preventing potential panic\n  when the new fields push total length beyond what ActionID and\n  InvocationID can absorb."
    },
    {
      "commit": "46f258f4b4d3e3a861def93f6cd1205d20b4589b",
      "tree": "066e2838c3a56a5a6a43bc29a998c061afdc6906",
      "parents": [
        "833c62379621e334760374dd87fb542b92531b19"
      ],
      "author": {
        "name": "Tiago Quelhas",
        "email": "tjgq@google.com",
        "time": "Thu Mar 12 15:09:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 15:09:12 2026"
      },
      "message": "Fix UnimplementedContentAddressableStorageServer imports in tests (#647)\n\n`repb.UnimplementedContentAddressableStorageServer` and `regrpc.UnimplementedContentAddressableStorageServer` produce stubs with different method signatures (at least in google3). Without this change, a subsequent google3 import of http://github.com/bazelbuild/remote-apis would fail."
    },
    {
      "commit": "833c62379621e334760374dd87fb542b92531b19",
      "tree": "6b84469648b7c964d0eaa2a5141e9b96ac0f6d87",
      "parents": [
        "39d78dcb378f8effe60c150d21035f6de556b577"
      ],
      "author": {
        "name": "Tiago Quelhas",
        "email": "tjgq@google.com",
        "time": "Tue Mar 10 16:37:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 16:37:34 2026"
      },
      "message": "Fix UnimplementedContentAddressableStorageServer import (#645)\n\n`repb.UnimplementedContentAddressableStorageServer` and `regrpc.UnimplementedContentAddressableStorageServer` produce stubs with different method signatures (at least in google3). Without this change, a subsequent google3 import of http://github.com/bazelbuild/remote-apis would fail."
    },
    {
      "commit": "39d78dcb378f8effe60c150d21035f6de556b577",
      "tree": "0cc675d11ba21b4f24d68e48be146b164b668110",
      "parents": [
        "f61d3747b8964cd5c9734ecfb2c7c826be50feda"
      ],
      "author": {
        "name": "Tiago Quelhas",
        "email": "tjgq@google.com",
        "time": "Thu Mar 05 16:01:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 05 16:01:29 2026"
      },
      "message": "Upgrade to latest spec version (#644)\n\n"
    },
    {
      "commit": "f61d3747b8964cd5c9734ecfb2c7c826be50feda",
      "tree": "6a695b0280c7631c817bae7db9df890c1a9d7f97",
      "parents": [
        "01a6811d4b373303aa081083c9e3fc7c95d499a1"
      ],
      "author": {
        "name": "Philipp Wollermann",
        "email": "philwo@google.com",
        "time": "Thu Feb 26 20:41:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 20:41:28 2026"
      },
      "message": "Upgrade to Bazel 9.0.0 with bzlmod and Go 1.25 (#640)\n\nMigrated the project to Bazel 9.0, bzlmod, Go 1.25 and latest versions\nof our dependencies. Hopefully this makes future upgrades much easier.\n\nA few target names of go_library rules changed due to the Gazelle\nupgrade, which I hope is not a problem - if anyone depends on them it\nshould be trivial to update the references when upgrading to the latest\nversion of the SDK.\n\nFixed a few little things that became necessary after the upgrades:\n- go/pkg/client/client.go had a non-constant format string in call to\n  status.Errorf, fixed by using status.Error instead.\n- REAPI got a few new methods in the CAS, which caused build failures\n  in the CAS fakes. Fixed by marking those methods as unimplemented.\n- Updated the .bazelci/presubmit.yml to use Ubuntu 24.04 and Go 1.25.7\n  and merged all steps using `go` into a single job to reduce\n  unnecessary duplicate downloads and setup time."
    },
    {
      "commit": "01a6811d4b373303aa081083c9e3fc7c95d499a1",
      "tree": "78d500b1027549297667952fa715d8b7701ac9c4",
      "parents": [
        "00f58e6fde90e4329cd720d2cdaeb07092702b8a"
      ],
      "author": {
        "name": "Philipp Wollermann",
        "email": "philwo@google.com",
        "time": "Sat Feb 07 02:06:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 07 02:06:02 2026"
      },
      "message": "Speedup digest validation by avoiding regex (#639)\n\n* Speedup digest validation by avoiding regex.\n\nUsing a simple loop to check for hex characters is ~14x faster on my\nmachine than using a regex.\n\n```bash\n$ GOTOOLCHAIN\u003dgo1.20.7 go test -run\u003d\u0027^$\u0027 -bench\u003d. -count\u003d10 ./go/pkg/digest \u003e ~/bench.txt\n\n$ cat ~/bench.txt\ngoos: linux\ngoarch: amd64\npkg: github.com/bazelbuild/remote-apis-sdks/go/pkg/digest\ncpu: AMD Ryzen 9 9950X3D 16-Core Processor\nBenchmarkIsHex-32               42152578                29.57 ns/op\nBenchmarkIsHex-32               41104626                29.80 ns/op\nBenchmarkIsHex-32               40768939                29.43 ns/op\nBenchmarkIsHex-32               38164249                29.78 ns/op\nBenchmarkIsHex-32               41709770                29.62 ns/op\nBenchmarkIsHex-32               36868351                30.04 ns/op\nBenchmarkIsHex-32               41430778                29.11 ns/op\nBenchmarkIsHex-32               40080670                29.34 ns/op\nBenchmarkIsHex-32               42535590                29.54 ns/op\nBenchmarkIsHex-32               39850868                29.71 ns/op\nBenchmarkHexStringRegex-32       2697667               444.3 ns/op\nBenchmarkHexStringRegex-32       2686531               444.9 ns/op\nBenchmarkHexStringRegex-32       2718772               442.0 ns/op\nBenchmarkHexStringRegex-32       2680062               441.6 ns/op\nBenchmarkHexStringRegex-32       2707995               440.6 ns/op\nBenchmarkHexStringRegex-32       2725570               443.0 ns/op\nBenchmarkHexStringRegex-32       2723361               440.8 ns/op\nBenchmarkHexStringRegex-32       2716153               441.3 ns/op\nBenchmarkHexStringRegex-32       2707498               441.0 ns/op\nBenchmarkHexStringRegex-32       2658169               443.4 ns/op\nPASS\nok      github.com/bazelbuild/remote-apis-sdks/go/pkg/digest    28.745s\n\n$ benchstat -col .name ~/bench.txt\ngoos: linux\ngoarch: amd64\npkg: github.com/bazelbuild/remote-apis-sdks/go/pkg/digest\ncpu: AMD Ryzen 9 9950X3D 16-Core Processor\n     │    IsHex    │             HexStringRegex             │\n     │   sec/op    │    sec/op     vs base                  │\n*-32   29.59n ± 1%   441.80n ± 1%  +1392.82% (p\u003d0.000 n\u003d10)\n```\n\n* Use bentekkie@\u0027s suggested variant, which is more readable and has similar performance"
    },
    {
      "commit": "00f58e6fde90e4329cd720d2cdaeb07092702b8a",
      "tree": "e646d73585e0ba021710868c5f7664ed26a1a31f",
      "parents": [
        "a01d8dc79d0da7afcbd594d8bb849f2c7bb0a508"
      ],
      "author": {
        "name": "Matt Tescher",
        "email": "tescherm@gmail.com",
        "time": "Fri Jan 30 16:29:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 30 16:29:48 2026"
      },
      "message": "Update ExecuteAndWait to retry WaitExecution NOT_FOUND errors (#636)\n\nCo-authored-by: Matt Tescher \u003cmtescher@nvidia.com\u003e"
    },
    {
      "commit": "a01d8dc79d0da7afcbd594d8bb849f2c7bb0a508",
      "tree": "f601888d93c5d9525e81501ac7fa2722ff40106e",
      "parents": [
        "23d034ea0b76d44541d87fc017606721a6b8920e"
      ],
      "author": {
        "name": "Michael Fitzner",
        "email": "fitzner.michael@gmail.com",
        "time": "Tue Dec 02 15:08:38 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 15:08:38 2025"
      },
      "message": "Bazel Credential Helper Bugfix Time Format Issue (#633)\n\n* Bugfix Time Format Issue\n\nBugfix time conversion issue when converting from time.RFC3339 to time.UnixDate as this\nis problematic because RFC3339 is a standardized, unambiguous format with timezone\ninformation (e.g., \"2023-01-01T12:00:00Z\"), while UnixDate is a human-readable\nformat without explicit timezone indicators (e.g., \"Sun Jan 1 12:00:00 GMT 2023\").\nThis conversion can lead to timezone ambiguity and parsing errors in systems\nexpecting RFC3339 format, potentially causing authentication failures.\n\nConvert to UTC to avoid parsing errors when timezone can\u0027t be determined.\n\n* Incorporate Review Feedback\n\nSwitch to much simpler construct.."
    },
    {
      "commit": "23d034ea0b76d44541d87fc017606721a6b8920e",
      "tree": "4f8741ce0ffbe0d651f55217424446a05b3d45de",
      "parents": [
        "4cdfee7bdc2dc17a9e99a0c9b4afd22ac4f7e25d"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Mon Nov 24 18:30:15 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 18:30:15 2025"
      },
      "message": "Prevent downloaded files escape from outDir (#634)\n\nAdd additional file path check to make sure all the downloaded files will be under the outDir.\n\nAny attempt of escaping the outDir will fail the download.\n\nThis is a breaking change though, note that the TestDownloadActionOutputs test has been updated to avoid break.\n\nBug: b/460031498\nTest: Unit test updated."
    },
    {
      "commit": "4cdfee7bdc2dc17a9e99a0c9b4afd22ac4f7e25d",
      "tree": "4b9216ded23a220a8cf68a77765425091ef97c56",
      "parents": [
        "212b8b21391888be7937f3f1df70a14c88ee21de"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Tue Oct 07 17:20:43 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 07 17:20:43 2025"
      },
      "message": "Support multiple instance name for fake cas (#632)\n\n"
    },
    {
      "commit": "212b8b21391888be7937f3f1df70a14c88ee21de",
      "tree": "b9d1c3f44c42b788d75a070410d0d7296cade06e",
      "parents": [
        "5c719541ba4ab90fc317c244feb37ef4802694cb"
      ],
      "author": {
        "name": "Fumitoshi Ukai",
        "email": "fumitoshi.ukai@gmail.com",
        "time": "Wed Sep 24 14:49:31 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 24 14:49:31 2025"
      },
      "message": "credshelper accepts bazel credhelper compat GetCredentialsResponse json. (#630)\n\n"
    },
    {
      "commit": "5c719541ba4ab90fc317c244feb37ef4802694cb",
      "tree": "bf63b569b85b2b9551ccc781cab8a1b794a49a74",
      "parents": [
        "85b23cd1265652078d50e950b95b3d65251bc469"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Mon Aug 18 21:47:45 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 18 21:47:45 2025"
      },
      "message": "Update bazel version and fix race condition in test (#629)\n\nTo open this project with GoLand + bazel plugin, the min version of bazel we need is 6.0.0.\n\nThere is a race condition in the test that `batch_retries_test.go` cannot run together with the rest of the test files.\n\nThis CL fix add a lock to fix the race condition. add \"exclusive\" bazel tag to not run client_test with other bazel test targets, and\nadd an arg `-test.parallel\u003d1` to make go run all the test case under client_test one by one.\n\nTest: run bazelisk test //... --test_output\u003dstreamed --flaky_test_attempts\u003d1 on my cloudtop\nBug: NA"
    },
    {
      "commit": "85b23cd1265652078d50e950b95b3d65251bc469",
      "tree": "8a9cfe3a4faf5566af288780d19575e769badefe",
      "parents": [
        "ed2a130ee6b77bcfcfceedbe7b1653b77ff05f6e"
      ],
      "author": {
        "name": "Benjamin Segall",
        "email": "bentekkie@google.com",
        "time": "Tue Jul 08 20:48:55 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 08 20:48:55 2025"
      },
      "message": "Set ec.Result if GetFlattenedOutputs fails (#623)\n\n"
    },
    {
      "commit": "ed2a130ee6b77bcfcfceedbe7b1653b77ff05f6e",
      "tree": "ba762c169c040b98f589189a6c7172089bda4728",
      "parents": [
        "94c824e34d88236d38412f23c942318f265a63f6"
      ],
      "author": {
        "name": "Benjamin Segall",
        "email": "bentekkie@google.com",
        "time": "Tue May 20 21:48:35 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 20 21:48:35 2025"
      },
      "message": "Ensure concurrent calls to GetRequestMetadata dont cause concurrent credshelper calls (#622)\n\n"
    },
    {
      "commit": "94c824e34d88236d38412f23c942318f265a63f6",
      "tree": "01c890101c13b6d212ccc1242602a74d8ed649d1",
      "parents": [
        "0d3927ae85f0962a396c5cbafa9fa880bac08d72"
      ],
      "author": {
        "name": "ramymedhat",
        "email": "abdelaal@google.com",
        "time": "Wed May 14 12:12:42 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 14 12:12:42 2025"
      },
      "message": "Fix bug in handling of expiry buffer. (#620)\n\n"
    },
    {
      "commit": "0d3927ae85f0962a396c5cbafa9fa880bac08d72",
      "tree": "1a7966d068bc39879e72246a4e52d7ce6b350aac",
      "parents": [
        "376fed71e12893d4f660e0ce2669424c42d08c68"
      ],
      "author": {
        "name": "Uillian Ludwig",
        "email": "uillianludwig@gmail.com",
        "time": "Wed May 07 13:39:24 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 07 13:39:24 2025"
      },
      "message": "Fix readStreamedRetried retry in bytestream (#619)\n\nFix readStreamedRetried in rbe bytestream\r\n\r\nTransient errors are retried by `readStreamedRetried` and it continues reading from how many bytes were already read. When an error happens in the stream call (for example, `DeadlineExceeded`), we were returning that 0 bytes were read.\r\n\r\nSince `DeadlineExceeded` is transient, the retry happens and we start from byte 0 again, leading to a lot of duplication.\r\n\r\nNote that the other errors return a `fmt.Errorf`, which is not a transient error and won\u0027t be retried.\r\n\r\nThe current behavior seems to be only working to retry at the start of the stream, when no bytes were there yet."
    },
    {
      "commit": "376fed71e12893d4f660e0ce2669424c42d08c68",
      "tree": "a90486718d44f567701685028a8515480a408029",
      "parents": [
        "fce873df5799d620a4aa553b2e6f2c361f62e1f6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Apr 08 03:03:20 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 08 03:03:20 2025"
      },
      "message": "Bump golang.org/x/net from 0.33.0 to 0.36.0 (#616)\n\nBumps [golang.org/x/net](https://github.com/golang/net) from 0.33.0 to 0.36.0.\n- [Commits](https://github.com/golang/net/compare/v0.33.0...v0.36.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/net\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fce873df5799d620a4aa553b2e6f2c361f62e1f6",
      "tree": "2a2425052c2aa26bfcf99e22633523c8b1e3a1a7",
      "parents": [
        "4efbcf8eb02094c2a9f7d3cb0abc6665b9f15baf"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Mon Apr 07 22:05:43 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 07 22:05:43 2025"
      },
      "message": "Enclose Go Version in Workflow File (#617)\n\nThere is a bug that github workflow will parse go version 1.20 as\ngo version 1.2 unless we enclose the version num as string.\nSee details here:\nhttps://github.com/onsi/ginkgo/issues/1169#issuecomment-1483839892\n\nThis issue is blocking our presubmit and we cannot merge the dep\nupdate CLs anymore. This patch fix the issue."
    },
    {
      "commit": "4efbcf8eb02094c2a9f7d3cb0abc6665b9f15baf",
      "tree": "3a83c14e01a8d55a4605680521a4ed8891067e65",
      "parents": [
        "7830993815d1e61303ce0f76a30b4048e6d1c3d7"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Feb 07 19:58:39 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 07 19:58:39 2025"
      },
      "message": "Bump github.com/golang/glog from 1.1.0 to 1.2.4 (#614)\n\nBumps [github.com/golang/glog](https://github.com/golang/glog) from 1.1.0 to 1.2.4.\r\n- [Release notes](https://github.com/golang/glog/releases)\r\n- [Commits](https://github.com/golang/glog/compare/v1.1.0...v1.2.4)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/golang/glog\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7830993815d1e61303ce0f76a30b4048e6d1c3d7",
      "tree": "247681158fdaa9000900ed94148198f2b0286e81",
      "parents": [
        "8bf84d3488e528837ea62916fea7fe43917c4a8b"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Tue Jan 14 20:50:54 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 14 20:50:54 2025"
      },
      "message": "Fix underquoted issues for run_command.sh (#613)\n\nThe --cfg argument can accept these format:\r\n1) \u0027--cfg\u003dkey\u003d\"value\"\u0027,\r\n2) --cfg\u003d\u0027key\u003d\"value\"\u0027\r\n3) --cfg\u003dkey\u003d\\\"value\\\"\r\n\r\nbut --cfg\u003dkey\u003d\"value\" is invalid (no single quote, and also not escaping the double quote).\r\n\r\nThis CL fix this issue by put the entire --cfg\u003d... string inside of a single quote."
    },
    {
      "commit": "8bf84d3488e528837ea62916fea7fe43917c4a8b",
      "tree": "8d2bc99ea5b60ccb742df5abeb121b393ff2df2b",
      "parents": [
        "0716be2767a53b11f2ce1dbbf183c24eb92c7bb5"
      ],
      "author": {
        "name": "Benjamin Segall",
        "email": "bentekkie@google.com",
        "time": "Fri Jan 10 17:05:50 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 10 17:05:50 2025"
      },
      "message": "Add option to replace ExecutionMedatadata.AuxiliaryMetadata for tests (#612)\n\n"
    },
    {
      "commit": "0716be2767a53b11f2ce1dbbf183c24eb92c7bb5",
      "tree": "2e73c91573bf90cd12dc277e32dad3e5e10c19ff",
      "parents": [
        "0a7e5999aeba3dd1a1e62cd802139a422b0b6d80"
      ],
      "author": {
        "name": "Jaehoon Kim",
        "email": "107386296+alsu4r@users.noreply.github.com",
        "time": "Thu Jan 09 04:59:12 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 09 04:59:12 2025"
      },
      "message": "Fix unexpected OutputFiles changes in Command.ToReProto due to shallow copy in Go. (#611)\n\n"
    },
    {
      "commit": "0a7e5999aeba3dd1a1e62cd802139a422b0b6d80",
      "tree": "a69c06818d965f90e5ae35b38ff288a00676f975",
      "parents": [
        "063ce6485ae80e8161027ff5b6cc640de39918f1"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Thu Dec 19 16:23:47 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 19 16:23:47 2024"
      },
      "message": "security patch for golang.org/x/net (#609)\n\n"
    },
    {
      "commit": "063ce6485ae80e8161027ff5b6cc640de39918f1",
      "tree": "e9f9492d8a3c5733418bc43199a1cd786baed5fb",
      "parents": [
        "befae13866debf6f6f78c2460e3e2fcf773a5386"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Wed Dec 18 15:02:51 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 18 15:02:51 2024"
      },
      "message": "minor fixes for google3 import (#608)\n\n"
    },
    {
      "commit": "befae13866debf6f6f78c2460e3e2fcf773a5386",
      "tree": "033f51a932f95266758490a9e35ab671326183b7",
      "parents": [
        "cf5251b89e3dbe1092f90986ad68390daacf3312"
      ],
      "author": {
        "name": "Mei",
        "email": "rneithon@gmail.com",
        "time": "Tue Dec 17 15:12:45 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 17 15:12:45 2024"
      },
      "message": "fix(metadata): make MergeMetadata return new instance (#607)\n\n"
    },
    {
      "commit": "cf5251b89e3dbe1092f90986ad68390daacf3312",
      "tree": "2c17c7e5d9660a1b5574f54fd9121ade4e4c2f9d",
      "parents": [
        "8ff3cc74b7fd8909bde314dfdd772a7a318bd5c6"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Fri Dec 06 18:53:27 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 06 18:53:27 2024"
      },
      "message": "Add wrapper that can be used to plug bazel style credshelper into remote-apis-sdks (#604)\n\nAdd binary to convert bazel style credshelper output to the output sdks\r\naccepts"
    },
    {
      "commit": "8ff3cc74b7fd8909bde314dfdd772a7a318bd5c6",
      "tree": "11c100d9730b1ccba0bff32184d13815df3a0965",
      "parents": [
        "3d9543eccbb336326dd4f7d7959ea122c30be916"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Wed Nov 20 15:08:05 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 20 15:08:05 2024"
      },
      "message": "Separate PerRPCCreds from Oauth creds to eliminate undefined behavior (#603)\n\n"
    },
    {
      "commit": "3d9543eccbb336326dd4f7d7959ea122c30be916",
      "tree": "373633e56c5bf33fcd0d242348f67b61a1c2066a",
      "parents": [
        "f4821a2a072c44f9af83002cf7a272fff8223fa3"
      ],
      "author": {
        "name": "Jay Conrod",
        "email": "jayconrod@gmail.com",
        "time": "Tue Nov 12 18:02:17 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 12 18:02:17 2024"
      },
      "message": "Support adding gRPC metadata to outgoing RPCs (#601)\n\nAdded the RemoteHeaders field to DialParams, allowing the client to provide\r\na map[string][]string of headers. These get attached to outgoing RPCs with\r\nclient interceptors.\r\n"
    },
    {
      "commit": "f4821a2a072c44f9af83002cf7a272fff8223fa3",
      "tree": "68b3928ff4bc75b251e48e1c04a622bd5066e961",
      "parents": [
        "1a35ebbee3bc5febe50fb51ffd91bb8089a49c19"
      ],
      "author": {
        "name": "Andrew Monshizadeh",
        "email": "1282845+amonshiz@users.noreply.github.com",
        "time": "Tue Sep 10 21:34:05 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 10 21:34:05 2024"
      },
      "message": "Add flag to set symlink following behavior for uploading directory (#591)\n\nWe would like to be able to use upload_dir in a situation that makes heavy use of symlinks. However, the previous implementation did not respect symlinks and instead resulted in resolving the symlink to the actual path. This is problematic because it means that duplicated data was going to be recreated on a download.\r\n\r\nThis is solved by introducing a symlink_behavior argument that accepts unspecified (default), preserve, and resolve which map to the SymlinkBehaviorType enum. This allows the caller to specify how to handle symlinks and ensure that later downloads match exactly what the upload was. This also appears to reduce the data uploaded."
    },
    {
      "commit": "1a35ebbee3bc5febe50fb51ffd91bb8089a49c19",
      "tree": "999d2b518a176fee982cb3767e9d026f2f80c077",
      "parents": [
        "13abc9047f5ff1bbf0c3768d0cc74f7506f20e4e"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Tue Sep 10 01:45:08 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 10 01:45:08 2024"
      },
      "message": "Delete credentials refresh status check (#596)\n\nThis is not required for every credentials helper, thus doesn\u0027t make\r\nsense to check for. Each external credshelper can have their own manual\r\nauthentication checks."
    },
    {
      "commit": "13abc9047f5ff1bbf0c3768d0cc74f7506f20e4e",
      "tree": "adc452681b706b0e5a576c0b2cacb2e20b8ea670",
      "parents": [
        "7a76f178e91cd0ecd1d8cd7eeda098a5be5045d8"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Thu Aug 15 15:51:35 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 15 15:51:35 2024"
      },
      "message": "Remove unused experimental cache file flag (#595)\n\n"
    },
    {
      "commit": "7a76f178e91cd0ecd1d8cd7eeda098a5be5045d8",
      "tree": "c3f38cd82eaf835629bbd6f1578829fe631f83ca",
      "parents": [
        "c08ea7c49ca490067f47bfa8d699178ae37d7b12"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Thu Aug 15 14:17:37 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 15 14:17:37 2024"
      },
      "message": "Remove caching from credshelper interface (#592)\n\nAll credentials helper may not want caching, and it makes more sense to\r\nfor any external credshelper to do its own caching for correctness\u0027\r\nsake."
    },
    {
      "commit": "c08ea7c49ca490067f47bfa8d699178ae37d7b12",
      "tree": "faaf082e10a94e09b27d82976dd4d4342f6bcbc4",
      "parents": [
        "e9017eaf5982ad70ac48712b57b0c2a04f0bbf10"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Wed Aug 14 19:58:17 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 14 19:58:17 2024"
      },
      "message": "fix google3 imports (#594)\n\n"
    },
    {
      "commit": "e9017eaf5982ad70ac48712b57b0c2a04f0bbf10",
      "tree": "9f4bbbd8c52136d9398cda84407c89376beab17f",
      "parents": [
        "86c6b06755573847cbc930eb1bd1ec5f3fd20dd2"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Tue Aug 06 19:56:20 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 06 19:56:20 2024"
      },
      "message": "Update doc for how to re-run an action with another RBE instance. (#590)\n\n* Update doc for how to re-run an action with another RBE instance.\r\n\r\nThis CL update the readme file to show how to re-run an action on another RBE instance.\r\n\r\nThis CL also fix the flag conflict issue, for execute_action, one and only one of these two flags should be set: [--action_root\u003dPATH|--digest\u003dDIGEST].\r\n"
    },
    {
      "commit": "86c6b06755573847cbc930eb1bd1ec5f3fd20dd2",
      "tree": "2628e7f4e2c4eb5e7f2a54ea56504914234cfd38",
      "parents": [
        "719a5dd43ab6b3f125211b216c48c1e8ec1b4354"
      ],
      "author": {
        "name": "ppluciennik",
        "email": "ppluciennik@o2.pl",
        "time": "Tue Aug 06 15:44:55 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 06 15:44:55 2024"
      },
      "message": "Report an error on unsupported codec or invalid zstd blob (#586)\n\nMethod BatchDownloadBlobsWithStats silently ignores decoding error or unsupported codec due to lack of incrementing numErrs."
    },
    {
      "commit": "719a5dd43ab6b3f125211b216c48c1e8ec1b4354",
      "tree": "cdd0dbdb7dff72461afc6c8bc2682b431a0c2ab8",
      "parents": [
        "a86029c1a692fc0da9fe6b822b4bcc577ec32099"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Thu Jul 25 18:56:42 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 25 18:56:42 2024"
      },
      "message": "Fix typo for CorrelatedInvocationsID (#588)\n\n* Fix typo for CorrelatedInvocationsID\r\n\r\nThis cl make correction to the identifier\u0027s CorrelatedInvocationsID field name to make it match the proto. It was CorrelatedInvocationID before.\r\n\r\nWe need to have CorrelatedInvocationsID in the ToProto method to deduplicate builds that have the same invocation id."
    },
    {
      "commit": "a86029c1a692fc0da9fe6b822b4bcc577ec32099",
      "tree": "06506359da0d501ecb6f884561c5dd715c7b2b38",
      "parents": [
        "8dbe2712b145a0d98461d9e83a3278af7e87936b"
      ],
      "author": {
        "name": "Igor Foox",
        "email": "foox@google.com",
        "time": "Thu Jul 25 17:48:21 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 25 17:48:21 2024"
      },
      "message": "Fix incorrect usage of `binary.Write()` in `TestUpload()`. (#587)\n\nThe call to `binary.Write()` was previously failing because it was being passed a variable length encoded type (int) rather than a fixed length encoding type. This caused the 2000 blobs tests to actually have 0 blobs.\r\nAlso fix concurrency expectation for the 2000 blobs test.\r\n\r\nTested:\r\n  Ran unit tests."
    },
    {
      "commit": "8dbe2712b145a0d98461d9e83a3278af7e87936b",
      "tree": "f2f2c1fb057ea22f823c34244625c1e98988c6e4",
      "parents": [
        "108231926e9cfc51732b364b5e93f3253d2f8191"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Tue Jul 16 15:53:24 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 16 15:53:24 2024"
      },
      "message": "Do not enforce headers (#585)\n\n"
    },
    {
      "commit": "108231926e9cfc51732b364b5e93f3253d2f8191",
      "tree": "a5f744a410c4b20e020d5284d4416a9b1f09eabc",
      "parents": [
        "4706165dcb54cae6fb9fcc52b388ba2a3b7d6223"
      ],
      "author": {
        "name": "Benjamin Segall",
        "email": "bentekkie@google.com",
        "time": "Thu Jun 20 14:10:56 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 20 14:10:56 2024"
      },
      "message": "Fix subtle bug in reusing errgroup context after Wait() (#583)\n\n"
    },
    {
      "commit": "4706165dcb54cae6fb9fcc52b388ba2a3b7d6223",
      "tree": "c1c386319b6545184442b496a73ac296f201caaa",
      "parents": [
        "2c59cebeda91083bdd2997bf3bcb01c0fbb5e857"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Tue Jun 11 20:04:27 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 11 20:04:27 2024"
      },
      "message": "Add credshelper flags (#579)\n\nAdding the credentials helper flags and using them in NewClientFromFlags\r\nto get tokensource"
    },
    {
      "commit": "2c59cebeda91083bdd2997bf3bcb01c0fbb5e857",
      "tree": "3a0856b8fdd9b124bae869c09ea736a899b2c736",
      "parents": [
        "f9558a721826483075348126a6617d226de86ee5"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Wed Jun 05 14:48:13 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 05 14:48:13 2024"
      },
      "message": "Add 5 minute buffer for expiry refresh (#578)\n\n"
    },
    {
      "commit": "f9558a721826483075348126a6617d226de86ee5",
      "tree": "11014667b02c5c33ab094cf469b98446bbec75fb",
      "parents": [
        "1716b7d0a075e0befc27d1143bfbeafb2e31a3ef"
      ],
      "author": {
        "name": "ramymedhat",
        "email": "abdelaal@google.com",
        "time": "Tue Jun 04 18:13:34 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 04 18:13:34 2024"
      },
      "message": "Expose Output File Executable Bit (#581)\n\n* Expose output file executable bit in ExecutionMetadata\r\n\r\n* Remove unwanted changes"
    },
    {
      "commit": "1716b7d0a075e0befc27d1143bfbeafb2e31a3ef",
      "tree": "ec7dbe96c4d353ab4306a96a2775986b84033ab7",
      "parents": [
        "574c71c40d33c8bbbed19b22821b57b3e084b887"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon Jun 03 20:32:32 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 03 20:32:32 2024"
      },
      "message": "remove dependency on experimental gRPC API (#580)\n\nThe custom balancer depends on experimental APIs from grpc-go.\r\nIt has since been replaced with a simple round robin balancer\r\nthat has been working well in production.\r\n\r\nFixes #499"
    },
    {
      "commit": "574c71c40d33c8bbbed19b22821b57b3e084b887",
      "tree": "2d5a47d2d914da05b8674fb617bb566a8fd837b1",
      "parents": [
        "47bbbf3d7b96b31678bffde23d6c85892e7fedcb"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Mon Jun 03 13:58:42 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 03 13:58:42 2024"
      },
      "message": "Fix refresh expiry code and add tests (#577)\n\n"
    },
    {
      "commit": "47bbbf3d7b96b31678bffde23d6c85892e7fedcb",
      "tree": "69722ab0e6fdff16d0e2db900dbcf9ddc4c0c038",
      "parents": [
        "89b6d6b399adb199ab7f5f94cebb991b00aff251"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Thu May 30 15:39:06 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 30 15:39:06 2024"
      },
      "message": "Update credshelper package (#572)\n\n- Made externalTokenSource implement PerRPC creds interface as well\r\n- Added headers and tests related to this"
    },
    {
      "commit": "89b6d6b399adb199ab7f5f94cebb991b00aff251",
      "tree": "4e85527bce3dfe238df75da1ae541227235f9846",
      "parents": [
        "a5e60eb5cc470d0c404396e72f71208ef040d7b8"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Wed May 22 14:57:20 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 22 14:57:20 2024"
      },
      "message": "Fix style mistake with variable name (#575)\n\n"
    },
    {
      "commit": "a5e60eb5cc470d0c404396e72f71208ef040d7b8",
      "tree": "106e29017e7262435e99930ad648c9805cccd9cf",
      "parents": [
        "50b93e0db85542aaf531189ed2577ee348541b5a"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Tue May 21 19:26:00 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 21 19:26:00 2024"
      },
      "message": "make round robin balancer the default for a global rollout (#574)\n\n"
    },
    {
      "commit": "50b93e0db85542aaf531189ed2577ee348541b5a",
      "tree": "e0f08241123bea099544cada4912c19b1bb2f44b",
      "parents": [
        "e74bc3da2efc333cae5d79e88cfb0e0baeeaf4f1"
      ],
      "author": {
        "name": "Avi Drissman",
        "email": "avi@drissman.com",
        "time": "Tue May 21 13:45:11 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 21 13:45:11 2024"
      },
      "message": "Ignore unexpected file modes (#573)\n\nCorrect #549.\r\n\r\nThe intention was to skip the file with an unexpected mode, but the “nil, nil” return was actually done in a nested function.\r\n\r\nReturn ErrSkip to escape the nested function, and correctly return “nil, nil” from visitPath, as was intended."
    },
    {
      "commit": "e74bc3da2efc333cae5d79e88cfb0e0baeeaf4f1",
      "tree": "5e3e00953b7dd2288c5d3a15cae02bb23661caa8",
      "parents": [
        "e71ca79b5b61e78fb42d8afff608266dbb9c3e6c"
      ],
      "author": {
        "name": "Bani Singh",
        "email": "47721811+banikharbanda@users.noreply.github.com",
        "time": "Thu May 16 14:49:43 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 16 14:49:43 2024"
      },
      "message": "Add credshelper package to support the credentials helper interface (#562)\n\nThis adds all the credentials helper relevant code from\r\nbazelbuild/reclient/internal/pkg/auth to the new credshelper package in\r\nremote-apis-sdks with some changes:\r\n- CredentialsHelper isn\u0027t an auth \"Mechanism\" (since we\u0027re only\r\n  supporting one mechanism, we don\u0027t need to define a type for that)\r\n- If no cache file is provided then it is assumed that no caching is\r\n  required. If a valid cache file path is provided then it always caches\r\ncredentials.\r\n- Updated oauth2 package version to support ReuseTokenWithExpiry - this\r\n  had to be moved earlier in the Workspace file to override older\r\nversions imported from elsewhere."
    },
    {
      "commit": "e71ca79b5b61e78fb42d8afff608266dbb9c3e6c",
      "tree": "85c9bc5a0f3e4618a1432c988314fe5ac48cce0a",
      "parents": [
        "b9da191730332cd1ee2f131585436c94853370eb"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Wed May 15 18:43:43 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 15 18:43:43 2024"
      },
      "message": "WIP: fix timeout in stream calls (#569)\n\nThe chunked streaming calls from gRPC do not take a context. The timeout implementation doesn\u0027t really timeout because the context is not used. This PR makes it so that the entire gRPC streaming call times out if any individual chunk times out."
    },
    {
      "commit": "b9da191730332cd1ee2f131585436c94853370eb",
      "tree": "772b30e6ff188f6ca04b073728e50a3932f00863",
      "parents": [
        "a7403b5126b69e7511e76250f333ee8f719f6d52"
      ],
      "author": {
        "name": "ramymedhat",
        "email": "abdelaal@google.com",
        "time": "Wed May 15 17:18:45 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 15 17:18:45 2024"
      },
      "message": "Revert \"Change DoNotCache behavior to not imply SkipCache. (#565)\" (#570)\n\nThis reverts commit 369e1caf95ac48b9b25f4b1374adce01b0f9c088."
    },
    {
      "commit": "a7403b5126b69e7511e76250f333ee8f719f6d52",
      "tree": "dccaa12e78d099d4a8637ac169944f90f7085ce5",
      "parents": [
        "1e107b34cf135330d36002cd2241fc2adc760299"
      ],
      "author": {
        "name": "Kousik Kumar",
        "email": "48490842+gkousik@users.noreply.github.com",
        "time": "Mon May 13 21:05:35 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 13 21:05:35 2024"
      },
      "message": "Split the remotetool into a separate library (#568)\n\nIn this CL, I\u0027m creating an embeddedtool binary so that I can\r\nsubsequently use it in reproxytool binary in re-client to implement the\r\nlog file filtering functionalities. There\u0027s no behavior change\r\nassociated with this CL.\r\n\r\nTested: Ran show_action and show_action_2 (error\u0027ed out) on the new\r\nremotetool."
    },
    {
      "commit": "1e107b34cf135330d36002cd2241fc2adc760299",
      "tree": "cb298cb9427bbdaed671451b5972fb403f7a2f25",
      "parents": [
        "369e1caf95ac48b9b25f4b1374adce01b0f9c088"
      ],
      "author": {
        "name": "Benjamin Segall",
        "email": "bentekkie@google.com",
        "time": "Mon May 13 19:21:04 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 13 19:21:04 2024"
      },
      "message": "Run //:gazelle to fix dependency names (#567)\n\n* Run //:gazelle to fix dependency names\r\n\r\n* fix bad remote-apis target names"
    },
    {
      "commit": "369e1caf95ac48b9b25f4b1374adce01b0f9c088",
      "tree": "af429226813120c586b1f126a15daa3f3d2001a5",
      "parents": [
        "f5d8d17dbdf94c363636c9c00c410fe6bac55d5e"
      ],
      "author": {
        "name": "ramymedhat",
        "email": "abdelaal@google.com",
        "time": "Mon May 13 13:37:18 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 13 13:37:18 2024"
      },
      "message": "Change DoNotCache behavior to not imply SkipCache. (#565)\n\n"
    },
    {
      "commit": "f5d8d17dbdf94c363636c9c00c410fe6bac55d5e",
      "tree": "e81498f2e3fd442fbd5c9fd09e0ec279582c887f",
      "parents": [
        "20c1af50b823b99a93f5ca6e756e187c4114a1be"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Thu May 09 15:49:53 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 09 15:49:53 2024"
      },
      "message": "fix regression from removing pkg/errors (#564)\n\nerrors.Wrapf used to return nil if the wrapped error is nil.\r\nAll the modified sites in the previous PR\r\nhttps://github.com/bazelbuild/remote-apis-sdks/pull/552/files\r\nwere for non-nil errors except for one, which caused a regression."
    },
    {
      "commit": "20c1af50b823b99a93f5ca6e756e187c4114a1be",
      "tree": "f85c5b38b920cc5deb9f3039dc1f215d1c26f320",
      "parents": [
        "ccc3b21e912ba0dfe9743b57ea445ad0d393ae6a"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Wed May 08 16:04:43 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 08 16:04:43 2024"
      },
      "message": "Add auxiliary metadata for cache hit actions (#563)\n\nAdd auxiliary metadata for cache hit actions as well. Previously we only have this for remote execution actions.\r\n\r\nTest: run 2 actions with cmake, check the log to see the auxiliary metadata is avaliable for cache hit actions. https://paste.googleplex.com/5312315578908672"
    },
    {
      "commit": "ccc3b21e912ba0dfe9743b57ea445ad0d393ae6a",
      "tree": "0e6b23c2dd0db33246586622f49ddcf38c4e82c3",
      "parents": [
        "b95d27956eeb6a5a395ecae85312baca048a7bce"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Tue May 07 15:56:13 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 07 15:56:13 2024"
      },
      "message": "Add tool version to rpl log (#559)\n\nAdd tool version to ToProto() method, so that this information is captured in the rpl log."
    },
    {
      "commit": "b95d27956eeb6a5a395ecae85312baca048a7bce",
      "tree": "2b477cd9055067076cfe5d96ca2b8e8854c39f7b",
      "parents": [
        "e64dd90d34ce8101e3a92b7db9315d74002fd6f3"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon May 06 16:43:01 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 06 16:43:01 2024"
      },
      "message": "remove unmaintained errors pkg (#552)\n\nThe errors package was deprecated in 2021 https://github.com/pkg/errors\r\n\r\nI converted wrapped errors to the standard method assuming the stack trace was not intended to be included in these calls.\r\n\r\nI opted to removing the stack trace from the calls that explicitly included it in favour of proper error wrapping and propagation. I haven\u0027t needed to look at stack traces so far, but I\u0027m not sure if others rely on it. This can be re-added later if needed."
    },
    {
      "commit": "e64dd90d34ce8101e3a92b7db9315d74002fd6f3",
      "tree": "9ce70a1a72de007a3ca7eea96d6d5f91052b65ec",
      "parents": [
        "aaaa08f032cecc8fdd65357c59795bff91239623"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon May 06 15:05:01 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 06 15:05:01 2024"
      },
      "message": "write command to file without formatting (#560)\n\n"
    },
    {
      "commit": "aaaa08f032cecc8fdd65357c59795bff91239623",
      "tree": "ecf91a1114c7805a064c8b11786fe72286471b9e",
      "parents": [
        "faba519ae71448545bf119afba47c2d0b6eae701"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Fri May 03 15:17:42 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 03 15:17:42 2024"
      },
      "message": "restore NewClientFromConnection (#558)\n\nThe function is useful for creating other gRPC clients that share the same\r\nunderlying connection. Exporting an interface allows users to reuse the connection\r\npool as well as provide their own pre-dialed connection."
    },
    {
      "commit": "faba519ae71448545bf119afba47c2d0b6eae701",
      "tree": "f681e65a6b1b80d1ed6137ec448a261cda36a31e",
      "parents": [
        "367d357853d3d7c24936e2845c5eb5cfe865be8f"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Wed May 01 15:33:36 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 01 15:33:36 2024"
      },
      "message": "add a round robin grpc balancer (#554)\n\nThis replaces the current load balancer which was copied over from the\r\ngcp repo which uses experimental APIs from grpc-go.\r\n\r\nDepending on experimental APIs marks the SDK as experimental as well.\r\nIt also complicates importing the SDK to google3 where everything must\r\nbe compatbile at head.\r\n\r\nThis major difference between this simple implementation and the\r\nexisting one is the maximum number of streams allowed on a single\r\nconnection.\r\nThe existing balancer limits streams to 3 by default and allows\r\nconfiguring that limit.\r\nThe new simpler implementation does not enforce any limit.\r\n\r\nI have tested the simple balancer by building chromium and android with\r\nand without it enabled. I observed no difference in build latency."
    },
    {
      "commit": "367d357853d3d7c24936e2845c5eb5cfe865be8f",
      "tree": "6d99a3e34e29c3009a0b7cc3fd541f0040cf7579",
      "parents": [
        "8a36686a6350d32b9f40c213290b107a59e2ab00"
      ],
      "author": {
        "name": "ramymedhat",
        "email": "abdelaal@google.com",
        "time": "Tue Apr 30 17:20:46 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 30 17:20:46 2024"
      },
      "message": "Preserve symlinks when using remotetool (#557)\n\nThis preserves the input tree as is, to make reproducing actions correct."
    },
    {
      "commit": "8a36686a6350d32b9f40c213290b107a59e2ab00",
      "tree": "b330ee12e144f6e88a344c0fef28693567d46e43",
      "parents": [
        "88db5fa9e4aecb5d4afabf2964d9e19c2b7b22d2"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Apr 25 17:00:53 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 25 17:00:53 2024"
      },
      "message": "Replace pborman/uuid with google/uuid (#550)\n\n* Replace pborman/uuid with google/uuid\r\n\r\nThe two functions we were using were just thin wrappers around\r\ngoogle/uuid anyways:\r\n\r\n* `New()` -\u003e `New().String()`\r\n* `Parse(...)` returns an `error` instead of a `nil` result\r\n\r\n* Add error handling for UUID functions\r\n\r\nWhen we need a UUID to upload, return an error. Otherwise, log the error\r\nand continue with an empty string."
    },
    {
      "commit": "88db5fa9e4aecb5d4afabf2964d9e19c2b7b22d2",
      "tree": "60c9f49568940f0cb327775731b6672044d48e2b",
      "parents": [
        "c2fef0a45f33f020730fa0da7192740a7c25e68a"
      ],
      "author": {
        "name": "Andus Yu",
        "email": "andusyu@google.com",
        "time": "Thu Apr 25 16:41:34 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 25 16:41:34 2024"
      },
      "message": "Ignore directories without read permissions (#555)\n\nCurrently we check if we can read the metadata from the file/directory. Even if we can stat the file, it does not necessarily mean we have permissions to open the file/directory. This becomes a problem when we try to open the directory when computing the merkle tree and we don\u0027t have read permissions."
    },
    {
      "commit": "c2fef0a45f33f020730fa0da7192740a7c25e68a",
      "tree": "44a045e13d88f05f27b201e26b1efdda71b582e0",
      "parents": [
        "c09a88c55603a3be3aa50af9cf83cab6edf4dc14"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Apr 25 16:17:13 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 25 16:17:13 2024"
      },
      "message": "Remove zstdpool-syncpool (#551)\n\nIt was initially created due to goroutine leakage as described in\r\nhttps://github.com/klauspost/compress/issues/264, but that has now been\r\nfixed in the zstd package. So it\u0027s safe to use zstd Encoders/Decoders in\r\nsync.Pool directly, as long as concurrency is disabled."
    },
    {
      "commit": "c09a88c55603a3be3aa50af9cf83cab6edf4dc14",
      "tree": "60188e5a525ff9a79e55a78e443973a43f5639d4",
      "parents": [
        "c1bc825facd8cb404ef6c42017973c5dbe00630e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 19 20:40:22 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 19 20:40:22 2024"
      },
      "message": "Bump golang.org/x/net from 0.21.0 to 0.23.0 (#553)\n\nBumps [golang.org/x/net](https://github.com/golang/net) from 0.21.0 to 0.23.0.\r\n- [Commits](https://github.com/golang/net/compare/v0.21.0...v0.23.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: golang.org/x/net\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c1bc825facd8cb404ef6c42017973c5dbe00630e",
      "tree": "78245e3453609d8661c8a3c582f7fb4fbf4893c5",
      "parents": [
        "d797fb10ada2f42ec383bb245c3c588fadf0780f"
      ],
      "author": {
        "name": "Avi Drissman",
        "email": "avi@drissman.com",
        "time": "Tue Apr 09 23:03:25 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 09 23:03:25 2024"
      },
      "message": "Ignore unexpected file modes (#549)\n\nIgnore unexpected file modes\r\n\r\nOn the Mac, git fsmonitor uses a domain socket in the .git/ folder to keep track of the fsmonitor process. cas chokes on that (see https://crbug.com/40270112).\r\n\r\nTherefore, ignore domain sockets."
    },
    {
      "commit": "d797fb10ada2f42ec383bb245c3c588fadf0780f",
      "tree": "eb45979f2c4620ccd433dc0a4714e3e7bad4fb03",
      "parents": [
        "bcf0dde3c3841278c1fdbc470036f25a39873b54"
      ],
      "author": {
        "name": "rjobredeaux3",
        "email": "jobredeaux@google.com",
        "time": "Tue Apr 09 18:15:23 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 09 18:15:23 2024"
      },
      "message": "Document some typical usecases for remotetool. (#546)\n\nDocument some typical usecases for remotetool.\r\n\r\nCo-authored-by: Anas H. Sulaiman \u003canas@sulaiman.pro\u003e"
    },
    {
      "commit": "bcf0dde3c3841278c1fdbc470036f25a39873b54",
      "tree": "42b755051e5a06ef79039f44f51533cca24f2be1",
      "parents": [
        "11a993290604e29b16bf02f795d41b04ef4f3c5d"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Tue Apr 09 18:08:36 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 09 18:08:36 2024"
      },
      "message": "tool: quote args and handle docker args (#548)\n\nThis is a best effort fix to quote arguments that contains spaces\r\nand handle dockerPrivileged platform property which bazel supports."
    },
    {
      "commit": "11a993290604e29b16bf02f795d41b04ef4f3c5d",
      "tree": "d803e345d6a1a882a9eaed59ec96731076c91621",
      "parents": [
        "c45980392f96d2dded697aee577fea4b516ec428"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon Apr 08 19:49:49 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 08 19:49:49 2024"
      },
      "message": "fix imports for google3 (#547)\n\nMoved auxpb under fakes where it felt like a more natural home for it.\r\nThe real fix is aliasing the import to facilitate rewriting it."
    },
    {
      "commit": "c45980392f96d2dded697aee577fea4b516ec428",
      "tree": "ce372ce50c627c4d4340694d6950f24e54cec561",
      "parents": [
        "bcc51f0003b6989bf970cd769b0b2e3fb17f271f"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon Apr 08 14:06:30 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 08 14:06:30 2024"
      },
      "message": "remove casng for now (#545)\n\nThe package is not yet complete and I don\u0027t have time to work on it for\r\nthe time being.\r\n\r\nRemoving it for now to avoid having a stale package that might confuse\r\nSDK users.\r\n\r\nFor the most up-to-date version, see\r\nhttps://github.com/mrahs/remote-apis-sdks/tree/casng"
    },
    {
      "commit": "bcc51f0003b6989bf970cd769b0b2e3fb17f271f",
      "tree": "7b7d5c5afe5620dc3720a9ec31ae94aada2cd3fa",
      "parents": [
        "7cc54f45bdce59847f640bab9be8f3e0ce56d322"
      ],
      "author": {
        "name": "Andus Yu",
        "email": "andusyu@google.com",
        "time": "Wed Mar 27 19:38:37 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 27 19:38:37 2024"
      },
      "message": "Update VirtualInputs proto with file properties (#543)\n\n* Update VirtualInputs proto with file properties\r\n\r\n- Add digest, mtime, and filemode to virtualinputs proto.\r\n- Add mtime and filemode to virtualinputs struct."
    },
    {
      "commit": "7cc54f45bdce59847f640bab9be8f3e0ce56d322",
      "tree": "9c5b65ceb883609fb7cc08db137521acb7ca9321",
      "parents": [
        "3066058f06446e654032bd54be10a98765742a8d"
      ],
      "author": {
        "name": "Andus Yu",
        "email": "andusyu@google.com",
        "time": "Wed Mar 20 18:46:38 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 20 18:46:38 2024"
      },
      "message": "Extend Virtual Inputs to allow digests (#542)\n\nExtend Virtual Inputs to allow digests\r\n\r\nAllows virtual inputs to be used with digests. If Content is provided\r\nwith InputDigest or the digest does not exist in the CAS, return an error."
    },
    {
      "commit": "3066058f06446e654032bd54be10a98765742a8d",
      "tree": "017ae1c08e6f34b6e2b0c797b8db078a2ccb130e",
      "parents": [
        "ae0c0768e6a67db381220032ac8a0a5cd8b3c3d3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 19 17:29:05 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 19 17:29:05 2024"
      },
      "message": "Bump google.golang.org/protobuf from 1.31.0 to 1.33.0 (#541)\n\nBumps google.golang.org/protobuf from 1.31.0 to 1.33.0.\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: google.golang.org/protobuf\r\n  dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ae0c0768e6a67db381220032ac8a0a5cd8b3c3d3",
      "tree": "870dd95887dcdf9db7091af4a4b9aa79072b44d7",
      "parents": [
        "0019a74882b64479c114a7297ed6ac27ebfd6c0e"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Wed Mar 13 17:48:54 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 13 17:48:54 2024"
      },
      "message": "Avoid racing in fake package (#540)\n\nAvoid racing in fake\r\n\r\nre-client reproxy_test unit test has been suffering racing issues for long time,\r\n\r\nThis change will fix the data racing issue, and make most of the unit test there can run with t.parallel()\r\n\r\nTest: import to re-client and run //internal/pkg/reproxy:reproxy_test with race detection."
    },
    {
      "commit": "0019a74882b64479c114a7297ed6ac27ebfd6c0e",
      "tree": "a32f117638d8b97f6723b45c35f04f29d63367ac",
      "parents": [
        "a108ad8bbbf4c0a2f140fd0ae8274a0406ccf0bb"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dan@danw.org",
        "time": "Thu Mar 07 23:27:32 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 07 23:27:32 2024"
      },
      "message": "Fix GetTree fakes (#539)\n\n`GetTree` was iterating over the `FileNode`s and trying to parse the blob as a `Directory`, it should only need to iterate over the `DirectoryNode`s. It was also adding the `Directory` to the `res`ult list when adding and removing the `Directory` from the queue, doubling the output.\r\n\r\nThe output now matches the RBE server, at least for a simple example."
    },
    {
      "commit": "a108ad8bbbf4c0a2f140fd0ae8274a0406ccf0bb",
      "tree": "aef094ed428dd8cb2d3528288ab787235e9b4f13",
      "parents": [
        "fe2abae45cc64fd9bf5d64ecbcc35ed1e40da2ae"
      ],
      "author": {
        "name": "Kousik Kumar",
        "email": "48490842+gkousik@users.noreply.github.com",
        "time": "Mon Mar 04 15:58:56 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 04 15:58:56 2024"
      },
      "message": "Pass back auxiliary_metadata as part of Command (#536)\n\nThis is supported by the API spec, however the API spec suggests an\r\nanyproto for the actual metadata. So we cannot use a specific message\r\nfor the proto. For now, I\u0027ve defined a fake proto for the purpose of\r\ntesting.\r\n\r\nTested: Unit tests"
    },
    {
      "commit": "fe2abae45cc64fd9bf5d64ecbcc35ed1e40da2ae",
      "tree": "c549471d47e4fc808b15659b421c68121ce2ca3e",
      "parents": [
        "d134526aa8874807df0891a7d1eb1e6aa92661ba"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Tue Feb 20 19:43:29 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 20 19:43:29 2024"
      },
      "message": "minor: remove unnecessary format (#535)\n\nThe command is already templated. Formatting again would complicate sanitization."
    },
    {
      "commit": "d134526aa8874807df0891a7d1eb1e6aa92661ba",
      "tree": "4465310ece8ddf7b1876dbb73cae7a7a8687ded4",
      "parents": [
        "8756fbc08206311588dc9118652931dc4ee83b2c"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Sat Feb 17 16:45:25 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 17 16:45:25 2024"
      },
      "message": "add a placeholder function for templating shell scripts (#534)\n\n"
    },
    {
      "commit": "8756fbc08206311588dc9118652931dc4ee83b2c",
      "tree": "bdc2d9ec6e723d8489c2d3739579b64900e9adb1",
      "parents": [
        "46b7334fa1151e051515d606ad849e2856ea7210"
      ],
      "author": {
        "name": "Ola Rozenfeld",
        "email": "ola@engflow.com",
        "time": "Fri Feb 16 15:50:54 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 16 15:50:54 2024"
      },
      "message": "remotetool: add --json output (#533)\n\nremotetool: add --json output"
    },
    {
      "commit": "46b7334fa1151e051515d606ad849e2856ea7210",
      "tree": "7846446708da82bfadbe729985b2edd11b7e8d7e",
      "parents": [
        "6dd3970069e253ebf1a6c57194624b44065bdcc3"
      ],
      "author": {
        "name": "Ola Rozenfeld",
        "email": "ola@engflow.com",
        "time": "Mon Feb 12 20:32:38 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 12 20:32:38 2024"
      },
      "message": "remotetool: adding option to upload directory (#532)\n\nremotetool: adding option to upload directory"
    },
    {
      "commit": "6dd3970069e253ebf1a6c57194624b44065bdcc3",
      "tree": "6f33c7354be3cdbae93e7fbfbcc5bd67f5f6bc53",
      "parents": [
        "042d9851eb2847d088094bba28b4ea065be83c27"
      ],
      "author": {
        "name": "Kousik Kumar",
        "email": "48490842+gkousik@users.noreply.github.com",
        "time": "Fri Jan 05 20:52:38 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 05 20:52:38 2024"
      },
      "message": "Ignore setting PerRPCCreds as clientopts (#527)\n\nWhen PerRPCCreds is used, we are already setting it as part of\r\nDialParams, so we don\u0027t have to once again include it as part of\r\nclientopts when creating the connection.\r\nWhen included again as part of clientopts, it results in gRPC adding\r\nduplicate Authorization header to the requests.\r\n\r\nIssue: https://github.com/bazelbuild/reclient/issues/27 (thanks to\r\n@MarshallOfSound for debugging this)\r\n\r\nTested: I build with this, ran a sample command and confirmed with\r\nmitmproxy that authorization header wasn\u0027t repeated."
    },
    {
      "commit": "042d9851eb2847d088094bba28b4ea065be83c27",
      "tree": "173136929ab3371d35550237bc25f671c8f0202b",
      "parents": [
        "67d0b1858999b5ca013caa62922d5a08e44feb77"
      ],
      "author": {
        "name": "Kousik Kumar",
        "email": "48490842+gkousik@users.noreply.github.com",
        "time": "Tue Nov 14 22:00:34 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 14 22:00:34 2023"
      },
      "message": "Make download_action command write a script to execute the action locally (#515)\n\nThis will be useful if the developer just wants to run the action within the docker container on their machine after downloading the action inputs"
    },
    {
      "commit": "67d0b1858999b5ca013caa62922d5a08e44feb77",
      "tree": "4a71e60d26b10399d861006212ac8f03b64963d1",
      "parents": [
        "8f75d2d7b1fd1b35c5a25fc64dceff94d04f22b0"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon Nov 13 20:21:18 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 13 20:21:18 2023"
      },
      "message": "fix preserving intermediate symlinks (#524)\n\nThis patch handles virtual inputs. The code that handles virtual inputs\r\nskips loadFiles entirely which effectively skips the previous patches.\r\n\r\nThis patch removes the redundant map by leveraging the existing one, fs.\r\nThe tradeoff is less allocation from the removed map, but more calls to\r\nfilepath.Rel and filepath.Join to get the key for the existing map.\r\n\r\nTested on a relevant action locally and confirmed it succeeds.\r\nAlso ran a full build with no issues."
    },
    {
      "commit": "8f75d2d7b1fd1b35c5a25fc64dceff94d04f22b0",
      "tree": "eebee2d188c838fc827f7f74005bd3f5d754a979",
      "parents": [
        "8e484d70211ca96c3b641a33957656d4ba78902a"
      ],
      "author": {
        "name": "Andus Yu",
        "email": "andusyu@google.com",
        "time": "Mon Nov 13 19:24:44 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 13 19:24:44 2023"
      },
      "message": "Ignore files without read permissions (#526)\n\n* Ignore files without read permissions\r\n\r\nWe want to ignore files that don\u0027t have read permissions rather than\r\nreturning an error, as it is likely that the file is not needed if it\r\ncan\u0027t be read.\r\n\r\nBug: b/308481142"
    },
    {
      "commit": "8e484d70211ca96c3b641a33957656d4ba78902a",
      "tree": "dc11fbe55898803ea72513fa9190d4eb02f82d6c",
      "parents": [
        "e00bd323ce426cd1c55dec2f152ffcc20eb4f503"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Thu Nov 09 18:34:48 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 09 18:34:48 2023"
      },
      "message": "Save show_action result while download action (#523)\n\n* Save show_action result while download action\r\n* Test:Manual Test"
    },
    {
      "commit": "e00bd323ce426cd1c55dec2f152ffcc20eb4f503",
      "tree": "fa3dbeab573d50b9b111ebaa958fb2a965411b0a",
      "parents": [
        "931aae9ef2617d09c656d10e1cc95d53a7709d2d"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Mon Oct 30 15:01:54 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 30 15:01:54 2023"
      },
      "message": "fix preserving intermediate symlinks (#514)\n\nThis patch fixes an oversight in the previous PR #511 where an\r\nintermediate symlink is processed just like an input which means all of\r\nits tree is also included even though it is not part of the specified\r\ninput.\r\n\r\nThat not only inflated the Merkle tree, but also included symlinks to\r\ntargets outside the execution root which caused failures in builds that\r\ndo not specify the materialization option."
    },
    {
      "commit": "931aae9ef2617d09c656d10e1cc95d53a7709d2d",
      "tree": "3b39dc1e1669bc26ff175f00a7ff0421b92c23e3",
      "parents": [
        "3eaa1e8a3db88c98e61b9e59ba56533f03d80b87"
      ],
      "author": {
        "name": "Yannic",
        "email": "yannic@engflow.com",
        "time": "Fri Oct 27 13:57:23 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 27 13:57:23 2023"
      },
      "message": "Add missing formatting directives (#521)\n\nAdd missing formatting directives"
    },
    {
      "commit": "3eaa1e8a3db88c98e61b9e59ba56533f03d80b87",
      "tree": "dcabd8f4767855213d573545b65cf9a2d3181f7d",
      "parents": [
        "213ba122e741f72deef6645c5d2d91de9f604e1f"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Thu Oct 26 20:23:16 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 26 20:23:16 2023"
      },
      "message": "fix google3 imports (#520)\n\n"
    },
    {
      "commit": "213ba122e741f72deef6645c5d2d91de9f604e1f",
      "tree": "0e4129aea553703db048ea5b3a21c948b7556d3f",
      "parents": [
        "cb8ec5483af6dd43989d3ba5cb471a44b8ef1920"
      ],
      "author": {
        "name": "Yaowen Mei",
        "email": "ywmei@google.com",
        "time": "Thu Oct 26 20:04:17 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 26 20:04:17 2023"
      },
      "message": "Update tool.go to create output path if not exist (#516)\n\n* Update tool.go to create output path if not exist\r\n\r\nCurrently, if output path not exist, download action just fail.\r\nThis CL auto create the missing output path, and if it is already exist, it will ask user to type yes or y to overwrite it."
    },
    {
      "commit": "cb8ec5483af6dd43989d3ba5cb471a44b8ef1920",
      "tree": "58c8a386ec3d48cec497d5961363b939a52e434c",
      "parents": [
        "93095a42050ea20d7f39ddff8ec3337717c9a2b4"
      ],
      "author": {
        "name": "danny-kuminov",
        "email": "39532793+danny-kuminov@users.noreply.github.com",
        "time": "Thu Oct 26 15:04:10 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 26 15:04:10 2023"
      },
      "message": "Implement WaitExecution in the RE API fake (#517)\n\n"
    },
    {
      "commit": "93095a42050ea20d7f39ddff8ec3337717c9a2b4",
      "tree": "de2ceb8112dfeb98ce84610930b9e1fd28b91a3e",
      "parents": [
        "8e8b43c05b970e1b640322415ca8d37ed673ad73"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Wed Oct 18 16:01:32 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 18 16:01:32 2023"
      },
      "message": "fix preserving intermediate symlinks (#511)\n\nIf a filepath includes a symlink to a directory, that symlink is\r\nconverted to a directory in the computed Merkle tree. This is fine\r\nunless symlink preservation is turned on, in which case any process that\r\nexpects a symlink might fail.\r\n\r\nFor example, if /a/b/c.go is loaded and b-\u003ebb, the Merkle tree will\r\nonly have b as a directory node and it will not include bb.\r\nIf /a/b and /a/b/c.go are loaded, the server will fail to write\r\nboth a directory and a symlink to the same path /a/b.\r\nThe symlink comes from loading /a/b and the directory comes from\r\nloading /a/b/c.go.\r\n\r\nThe correct Merkle tree in this case should look like:\r\n\r\na\r\n|_b-\u003ebb\r\n|_bb\r\n|_|_c.go\r\n\r\nThat is, any intermediate symlink to a directory appears in the tree\r\nexactly once as a symlink. I.e. it never appears as a directory.\r\n\r\nThis change introduces additional IO overhead for each loaded file. The\r\noverhead is proportional to the number of files, the depth of each\r\nfilepath, and the number of symlinks in each filepath.\r\nAdditionally, a map is introduced to deduplicate loaded files, which will\r\nadd memory and GC overhead proportional to the number of loaded files.\r\nBoth overheads are limited to requests with symlink preservation turned on."
    },
    {
      "commit": "8e8b43c05b970e1b640322415ca8d37ed673ad73",
      "tree": "c0dc4ac0c91f80aa0bbd28d04894eb5645e10027",
      "parents": [
        "2ab761126c7ac5a597f5a93acd53acd2c028e97d"
      ],
      "author": {
        "name": "Kousik Kumar",
        "email": "48490842+gkousik@users.noreply.github.com",
        "time": "Fri Oct 13 18:37:27 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 13 18:37:27 2023"
      },
      "message": "Fix stats in BatchDownloadBlobs call (#509)\n\nPreviously, BatchDownloadBlobs() wasn\u0027t properly recording the\r\ncompressed download size. To fix it, I\u0027ve introduced a new public\r\ninterface called BatchDowloadBlobsWithStats(), which will return\r\nstatistics on the downloaded blob size in addition to the actual\r\ncontent.\r\n\r\nAs part of this, I also realized that tests are non-existent for\r\ncompressed BatchDownloadBlobs() and added them.\r\n\r\nIn a subsequent change, I\u0027ll fix BatchUploadBlobs() as well.\r\n\r\nTESTED: Unit test"
    },
    {
      "commit": "2ab761126c7ac5a597f5a93acd53acd2c028e97d",
      "tree": "0d61e56ecd314b786264d2cc1652c60a114b0240",
      "parents": [
        "e660a37dce96a35a9c378425994eb292ef44a03a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 12 16:03:42 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 12 16:03:42 2023"
      },
      "message": "Bump golang.org/x/net from 0.12.0 to 0.17.0 (#512)\n\nBumps [golang.org/x/net](https://github.com/golang/net) from 0.12.0 to 0.17.0.\r\n- [Commits](https://github.com/golang/net/compare/v0.12.0...v0.17.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: golang.org/x/net\r\n  dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e660a37dce96a35a9c378425994eb292ef44a03a",
      "tree": "f1c3783bf72d7e5e354eb280d0b45e56ad7f95b4",
      "parents": [
        "aa1c266ae34200f25dc8a4530f41c46cdab8cbe0"
      ],
      "author": {
        "name": "Ola Rozenfeld",
        "email": "ola@engflow.com",
        "time": "Fri Sep 29 17:05:56 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 29 17:05:56 2023"
      },
      "message": "Tiny logging bug-fix (#508)\n\nWe\u0027re connecting to CASService in this case, which is explicitly different from Service. The logic is correct, but the logging isn\u0027t."
    },
    {
      "commit": "aa1c266ae34200f25dc8a4530f41c46cdab8cbe0",
      "tree": "c6ab2b71c97ec935706f35ad37cb4d4f186248f9",
      "parents": [
        "cd916d432ba30e87c1d6a400f3eabf890df4f364"
      ],
      "author": {
        "name": "Brad Kimmel",
        "email": "intrepidca@gmail.com",
        "time": "Tue Sep 19 14:22:02 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 19 14:22:02 2023"
      },
      "message": "Fix typos in StreamOutErr error messages. (#506)\n\n"
    },
    {
      "commit": "cd916d432ba30e87c1d6a400f3eabf890df4f364",
      "tree": "8b24f92d5ff4a8c650cd47d6a053102dc015d1ba",
      "parents": [
        "bb66956b41e004bf7e1b09c0c868f06e81291d7c"
      ],
      "author": {
        "name": "Anas H. Sulaiman",
        "email": "anas@sulaiman.pro",
        "time": "Wed Sep 13 20:24:40 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 13 20:24:40 2023"
      },
      "message": "casng, fix resolving remote paths (#505)\n\nA few corner cases were not handeled properly.\r\nThe original one was not removing the leading slash after stripping\r\nworkingDir.\r\nHowever, a more interesting one was that paths being outside workingDir,\r\nbut still under root, which could translate to partial replacements of\r\nthe workingDir path, which is a valid case, contrary to what I thought.\r\nReverted to using proper filepath APIs."
    },
    {
      "commit": "bb66956b41e004bf7e1b09c0c868f06e81291d7c",
      "tree": "2cdc472cc56326ff2163b2012effa48e52570522",
      "parents": [
        "2caea49156cca19da560a0324c2981f114b207fe"
      ],
      "author": {
        "name": "Benjamin Segall",
        "email": "bentekkie@google.com",
        "time": "Tue Sep 05 15:46:38 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 05 15:46:38 2023"
      },
      "message": "Copy NodeProperties instead of importing into command.proto (#503)\n\n* Copy definition of NodeProperties instead of importing into command.proto\n\n* Fix linter issues\n\n* Update command.proto to add reasoning for avoiding import\n\n* Update command.proto\n\n* Fix typos"
    },
    {
      "commit": "2caea49156cca19da560a0324c2981f114b207fe",
      "tree": "d40c1ce47b4c2c97c27cca83d9cf10dd700d49ee",
      "parents": [
        "2e5f31dc09de5465dc9b6da19867bbdc6859f450"
      ],
      "author": {
        "name": "Kousik Kumar",
        "email": "48490842+gkousik@users.noreply.github.com",
        "time": "Fri Sep 01 15:22:07 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 01 15:22:07 2023"
      },
      "message": "Add a bazelversion file (#504)\n\nThis is so that the SDK can be built with bazelisk instead of relying on preinstalled Bazel"
    }
  ],
  "next": "2e5f31dc09de5465dc9b6da19867bbdc6859f450"
}
