{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":288951377,"defaultBranch":"master","name":"bb-remote-asset","ownerLogin":"buildbarn","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-08-20T08:36:10.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/47299502?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726016000.0","currentOid":""},"activityList":{"items":[{"before":"965d95ea36b964f76972a07057e8e1c71254cc92","after":"4d0f0e2e7c2cc0c28d7ba9dc00c701967007ec99","ref":"refs/heads/master","pushedAt":"2024-09-11T15:39:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"Update dependencies\n\n- Use latest bb-storage version, this required switching to using\n remote_apis as a bazel module.\n- Update the upload-artifact actions to v4\n- Use rules_jsonnet bazel module\n- Update rules_go, protobuf and gazelle bazel modules","shortMessageHtmlLink":"Update dependencies"}},{"before":"d041906f76b5d4b10a9cf871fa3f75d88fd2cfa8","after":"b878e16dbbf7193203394efe761c55e53ebe84e5","ref":"refs/heads/jjardon/upload-artifact@v4","pushedAt":"2024-09-11T02:10:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"MODULE.bazel: Use bb-storage a889bc06a4070e34f5b7d85073dabaa37bfc3027\n\nThis is the first version to use actions/upload-artifact@v4","shortMessageHtmlLink":"MODULE.bazel: Use bb-storage a889bc06a4070e34f5b7d85073dabaa37bfc3027"}},{"before":"b878e16dbbf7193203394efe761c55e53ebe84e5","after":"d041906f76b5d4b10a9cf871fa3f75d88fd2cfa8","ref":"refs/heads/jjardon/upload-artifact@v4","pushedAt":"2024-09-11T02:07:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"Depend on remote-apis as a Bazel module\n\nremote-apis just switched to bzlmod. This change patches up bb-storage\nto depend on it as a module, instead of pulling it in via Gazelle. Right\nnow this still requires us to apply a local patch, because the\ngo_proto_library() targets in remote-apis use the old gRPC v1 compiler\nfor generating sources. See this PR for more details:\n\nhttps://github.com/bazelbuild/remote-apis/pull/308","shortMessageHtmlLink":"Depend on remote-apis as a Bazel module"}},{"before":"99f887a8733375460cde10f31c379fae2a355cbf","after":"b878e16dbbf7193203394efe761c55e53ebe84e5","ref":"refs/heads/jjardon/upload-artifact@v4","pushedAt":"2024-09-11T01:56:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"MODULE.bazel: Use bb-storage a889bc06a4070e34f5b7d85073dabaa37bfc3027\n\nThis is the first version to use actions/upload-artifact@v4","shortMessageHtmlLink":"MODULE.bazel: Use bb-storage a889bc06a4070e34f5b7d85073dabaa37bfc3027"}},{"before":null,"after":"99f887a8733375460cde10f31c379fae2a355cbf","ref":"refs/heads/jjardon/upload-artifact@v4","pushedAt":"2024-09-11T00:53:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":".github/workflows/master.yaml: Use actions/upload-artifact@v4","shortMessageHtmlLink":".github/workflows/master.yaml: Use actions/upload-artifact@v4"}},{"before":"2d21927baaafb30bf9c41940cc5e2d56ff8d27d2","after":"965d95ea36b964f76972a07057e8e1c71254cc92","ref":"refs/heads/master","pushedAt":"2024-09-11T00:37:56.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"Update lockfile","shortMessageHtmlLink":"Update lockfile"}},{"before":"df6e1132c8dc1f331a63f3f7e97ca3b3394669c9","after":"2d21927baaafb30bf9c41940cc5e2d56ff8d27d2","ref":"refs/heads/master","pushedAt":"2024-09-11T00:35:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"Remove reference to the project being a prototype\n\nThe project is now stable enough that it should no longer be described\nas a prototype","shortMessageHtmlLink":"Remove reference to the project being a prototype"}},{"before":"d01e42356a4cef035f46ad41a9f15ec79fc92a0c","after":"bfaab3db4c836056eaa2afe45a59d0df6246801e","ref":"refs/heads/mortenmj-patch-1","pushedAt":"2024-09-05T09:50:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mortenmj","name":"Morten Mjelva","path":"/mortenmj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/489061?s=80&v=4"},"commit":{"message":"Update lockfile","shortMessageHtmlLink":"Update lockfile"}},{"before":"f259a1db3d6eb5bd8553b5fa5abf5781950b89b9","after":"d01e42356a4cef035f46ad41a9f15ec79fc92a0c","ref":"refs/heads/mortenmj-patch-1","pushedAt":"2024-09-05T09:45:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mortenmj","name":"Morten Mjelva","path":"/mortenmj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/489061?s=80&v=4"},"commit":{"message":"Add missing rules_proto dependency to MODULE.bazel\n\nWe depend on this, but don't declare it in MODULE.bazel","shortMessageHtmlLink":"Add missing rules_proto dependency to MODULE.bazel"}},{"before":"d01e42356a4cef035f46ad41a9f15ec79fc92a0c","after":"f259a1db3d6eb5bd8553b5fa5abf5781950b89b9","ref":"refs/heads/mortenmj-patch-1","pushedAt":"2024-09-05T09:45:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mortenmj","name":"Morten Mjelva","path":"/mortenmj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/489061?s=80&v=4"},"commit":{"message":"Lockfile","shortMessageHtmlLink":"Lockfile"}},{"before":null,"after":"d01e42356a4cef035f46ad41a9f15ec79fc92a0c","ref":"refs/heads/mortenmj-patch-1","pushedAt":"2024-09-05T09:30:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mortenmj","name":"Morten Mjelva","path":"/mortenmj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/489061?s=80&v=4"},"commit":{"message":"Add missing rules_proto dependency to MODULE.bazel\n\nWe depend on this, but don't declare it in MODULE.bazel","shortMessageHtmlLink":"Add missing rules_proto dependency to MODULE.bazel"}},{"before":null,"after":"4194d32e2c536e1f80ce791eeb5dd0102bf408f6","ref":"refs/heads/jjardon-patch-1","pushedAt":"2024-08-17T17:11:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jjardon","name":"Javier Jardón","path":"/jjardon","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/165288?s=80&v=4"},"commit":{"message":"Create scorecard.yml","shortMessageHtmlLink":"Create scorecard.yml"}},{"before":"d7a9200c71611d5e84218c9fb421ff4722a6dbde","after":"df6e1132c8dc1f331a63f3f7e97ca3b3394669c9","ref":"refs/heads/master","pushedAt":"2024-07-29T13:52:40.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"give more info in caching_fetcher error messages","shortMessageHtmlLink":"give more info in caching_fetcher error messages"}},{"before":"8fb4f078fa919b905789a7fb6b918330e9fafa3d","after":"d7a9200c71611d5e84218c9fb421ff4722a6dbde","ref":"refs/heads/master","pushedAt":"2024-06-04T10:47:58.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Limit redundant work in HTTP fetcher\n\nWhere possible, redundant in-memory buffering and hashing of downloaded\ndata is avoided in the HTTP fetcher\n\nIn order for these things to be avoided two conditions must be met:\n\n1. The REAPI client must provide the expected checksum of the data being\n requested\n2. The HTTP response must include the length of the content being\n downloaded\n\nIf the checksum is missing, the file being downloaded must be fetched\nand buffered in memory so that the checksum can be determined (despite\nthe fact that it will end up being hashed again later).\n\nIf only the length is missing, the file being downloaded will still be\nfetched an buffered in memory in its entirety, but the calculation of\nthe checksum can be skipped.\n\nOtherwise, the body of the HTTP response is used to create an internal\nbuffer directly, leading to it being fetched in a more sensible way\nas it is being written to the underlying storage.","shortMessageHtmlLink":"Limit redundant work in HTTP fetcher"}},{"before":"d3fcdaebc4d6c855a3a51b4f1b79e8f48da27135","after":"8fb4f078fa919b905789a7fb6b918330e9fafa3d","ref":"refs/heads/master","pushedAt":"2024-05-07T20:12:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mortenmj","name":"Morten Mjelva","path":"/mortenmj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/489061?s=80&v=4"},"commit":{"message":"Allow authorisation on Fetch and Push endpoints (#36)\n\nCurrently we support the authentication policies from bb-storage by way of using\r\nthe common gRPC server, but we don't allow for granular authorisation on our\r\nendpoints! This adds the ability to configure authorizers (as in other\r\nBuildbarn components) to the two endpoints we expose.\r\n\r\nThese are added at the top-level of configuration to simplify use, even though\r\none could technically expose this as a configuration option to decorate fetchers\r\nand asset stores. In particular, a single global fetch authorizer is much\r\nsimpler than having to configure a policy for remote fetching and fetching from\r\nassets that were explicitly Push'd.","shortMessageHtmlLink":"Allow authorisation on Fetch and Push endpoints (#36)"}},{"before":"1d2a081a14899f1d5286de503c42e71cfed5b1ce","after":"544ae688208f0e9d2bc63d7d89c8caa20138c24f","ref":"refs/heads/coldtom/authorizer","pushedAt":"2024-04-29T09:48:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Allow authorisation on Fetch and Push endpoints\n\nCurrently we support the authentication policies from bb-storage by way of using\nthe common gRPC server, but we don't allow for granular authorisation on our\nendpoints! This adds the ability to configure authorizers (as in other\nBuildbarn components) to the two endpoints we expose.\n\nThese are added at the top-level of configuration to simplify use, even though\none could technically expose this as a configuration option to decorate fetchers\nand asset stores. In particular, a single global fetch authorizer is much\nsimpler than having to configure a policy for remote fetching and fetching from\nassets that were explicitly Push'd.","shortMessageHtmlLink":"Allow authorisation on Fetch and Push endpoints"}},{"before":"61e697267bbf17a8570e718e3882fcc448c85668","after":"1d2a081a14899f1d5286de503c42e71cfed5b1ce","ref":"refs/heads/coldtom/authorizer","pushedAt":"2024-04-24T07:00:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Allow authorisation on Fetch and Push endpoints\n\nCurrently we support the authentication policies from bb-storage by way of using\nthe common gRPC server, but we don't allow for granular authorisation on our\nendpoints! This adds the ability to configure authorizers (as in other\nBuildbarn components) to the two endpoints we expose.\n\nThese are added at the top-level of configuration to simplify use, even though\none could technically expose this as a configuration option to decorate fetchers\nand asset stores. In particular, a single global fetch authorizer is much\nsimpler than having to configure a policy for remote fetching and fetching from\nassets that were explicitly Push'd.","shortMessageHtmlLink":"Allow authorisation on Fetch and Push endpoints"}},{"before":"44c5406cadd071bb07bb56cb284f5f4ea730a5fa","after":null,"ref":"refs/heads/eschouten/20240331-bzlmod","pushedAt":"2024-03-31T18:40:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"EdSchouten","name":"Ed Schouten","path":"/EdSchouten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/736085?s=80&v=4"}},{"before":"a116befff97adbb36defc1cda6b36094843fc2dc","after":"d3fcdaebc4d6c855a3a51b4f1b79e8f48da27135","ref":"refs/heads/master","pushedAt":"2024-03-31T18:40:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"EdSchouten","name":"Ed Schouten","path":"/EdSchouten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/736085?s=80&v=4"},"commit":{"message":"Migrate bb-remote-asset to bzlmod (#38)\n\nAt the same time, bring the entire build infrastructure for this project\r\nin sync with the other bb-* components. This means that we now also\r\nbuild multi-architecture container images.","shortMessageHtmlLink":"Migrate bb-remote-asset to bzlmod (#38)"}},{"before":"1558eae0bb88577f248c239dab0fdad45c9ac762","after":"44c5406cadd071bb07bb56cb284f5f4ea730a5fa","ref":"refs/heads/eschouten/20240331-bzlmod","pushedAt":"2024-03-31T18:10:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"EdSchouten","name":"Ed Schouten","path":"/EdSchouten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/736085?s=80&v=4"},"commit":{"message":"Migrate bb-remote-asset to bzlmod\n\nAt the same time, bring the entire build infrastructure for this project\nin sync with the other bb-* components. This means that we now also\nbuild multi-architecture container images.","shortMessageHtmlLink":"Migrate bb-remote-asset to bzlmod"}},{"before":null,"after":"1558eae0bb88577f248c239dab0fdad45c9ac762","ref":"refs/heads/eschouten/20240331-bzlmod","pushedAt":"2024-03-31T17:59:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"EdSchouten","name":"Ed Schouten","path":"/EdSchouten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/736085?s=80&v=4"},"commit":{"message":"Migrate bb-remote-asset to bzlmod\n\nAt the same time, bring the entire build infrastructure for this project\nin sync with the other bb-* components. This means that we now also\nbuild multi-architecture container images.","shortMessageHtmlLink":"Migrate bb-remote-asset to bzlmod"}},{"before":"8f3b71d38b50da29e7858d1491804e8d5227fef3","after":"61e697267bbf17a8570e718e3882fcc448c85668","ref":"refs/heads/coldtom/authorizer","pushedAt":"2024-03-20T08:43:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Add generated protobufs\n\nLines up with other Buildbarn components","shortMessageHtmlLink":"Add generated protobufs"}},{"before":"0a32ef8ca758713d9f67d6162cbe2bc16265d760","after":"8f3b71d38b50da29e7858d1491804e8d5227fef3","ref":"refs/heads/coldtom/authorizer","pushedAt":"2024-03-20T08:25:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Add generated protobufs\n\nLines up with other Buildbarn components","shortMessageHtmlLink":"Add generated protobufs"}},{"before":"1c7ab6b0232e042eda039e1bb3faf7e76859599c","after":"0a32ef8ca758713d9f67d6162cbe2bc16265d760","ref":"refs/heads/coldtom/authorizer","pushedAt":"2024-03-12T12:31:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Add generated protobufs\n\nLines up with other Buildbarn components","shortMessageHtmlLink":"Add generated protobufs"}},{"before":null,"after":"1c7ab6b0232e042eda039e1bb3faf7e76859599c","ref":"refs/heads/coldtom/authorizer","pushedAt":"2024-03-12T12:28:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Add generated protobufs\n\nLines up with other Buildbarn components","shortMessageHtmlLink":"Add generated protobufs"}},{"before":"490b9641fb404149ef1f7476eb582b0f118483d9","after":"a116befff97adbb36defc1cda6b36094843fc2dc","ref":"refs/heads/master","pushedAt":"2024-03-11T08:22:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"EdSchouten","name":"Ed Schouten","path":"/EdSchouten","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/736085?s=80&v=4"},"commit":{"message":"Implement NewBlockListGrowthPolicy (#35)\n\nRight now this is unimplemented, which renders LocalBlobAccess unusable in\r\nbb-remote-asset! Worse still, the UX is an error message that reads like the\r\nfault is on the part of the user. Let's implement the same policy as in\r\nProtoBlobAccessCreator (as this stores protos, like the Action Cache).","shortMessageHtmlLink":"Implement NewBlockListGrowthPolicy (#35)"}},{"before":null,"after":"2afbe1ed9f86b83bfc11009d6a80576341fefdf0","ref":"refs/heads/coldtom/blockpolicy","pushedAt":"2024-01-26T17:00:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"Implement NewBlockListGrowthPolicy\n\nRight now this is unimplemented, which renders LocalBlobAccess unusable in\nbb-remote-asset! Worse still, the UX is an error message that reads like the\nfault is on the part of the user. Let's implement the same policy as in\nProtoBlobAccessCreator (as this stores protos, like the Action Cache).","shortMessageHtmlLink":"Implement NewBlockListGrowthPolicy"}},{"before":"2826044eeab8ea070e5d60c71d36460e8663f35d","after":"3e5ace22a51787ed687ceff6d15adffee5a5e117","ref":"refs/heads/coldtom/ac-dir-semantics","pushedAt":"2024-01-26T16:18:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"AC: Treat Directories as blobs\n\nWe currently do some cleverness to pop Directory objects into the\nOutputDirectories field of the ActionResult for semantic purposes.\nUnfortunately doing this requires jumping over many hurdles, partially of our\nown making and partially from REAPI.\n\nTo detect whether the object is a Directory, we fetch it from CAS and attempt to\nunmarshal it into a Directory message. We then must convert it to a Tree to\nstore in the ActionResult, which also requires the raw proto.\n\nThe catch is that things that are not Directory messages may successfully\nunmarshal into one -- as a motivating example, BuildStream's Source proto is\nsuch a message. When this happens, we're very likely to fail the request as we\nattempt to use the corrupted Directory we've created.\n\nTo solve this, we could pass through data on whether the asset is supposed to be\na directory or not, however doing so is inelegant and has another subtle problem\n-- if the client decides to use PushDirectory to push something that isn't a\nDirectory (which isn't explicitly banned by the spec), then we will error.\n\nAs the Action and ActionResults we generate are intended only to be used by us,\nwe can instead break the semantics somewhat and treat the Directory as an opaque\nfile, as we do for Blobs.\n\nNote: this intentionally breaks the sharing of Actions should the\nRemoteExecutionFetcher be used. This feels more correct to me, as we were\noverwriting the one we actually ran anyway. Under this usage we instead get\nmultiple Actions pointing to the same ActionResult -- one for the actually\nexecuted Action, and another for the asset reference.","shortMessageHtmlLink":"AC: Treat Directories as blobs"}},{"before":null,"after":"2826044eeab8ea070e5d60c71d36460e8663f35d","ref":"refs/heads/coldtom/ac-dir-semantics","pushedAt":"2024-01-26T15:46:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomcoldrick-ct","name":"Tom Coldrick","path":"/tomcoldrick-ct","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/59962670?s=80&v=4"},"commit":{"message":"AC: Treat Directories as blobs\n\nWe currently do some cleverness to pop Directory objects into the\nOutputDirectories field of the ActionResult for semantic purposes.\nUnfortunately doing this requires jumping over many hurdles, partially of our\nown making and partially from REAPI.\n\nTo detect whether the object is a Directory, we fetch it from CAS and attempt to\nunmarshal it into a Directory message. We then must convert it to a Tree to\nstore in the ActionResult, which also requires the raw proto.\n\nThe catch is that things that are not Directory messages may successfully\nunmarshal into one -- as a motivating example, BuildStream's Source proto is\nsuch a message. When this happens, we're very likely to fail the request as we\nattempt to use the corrupted Directory we've created.\n\nTo solve this, we could pass through data on whether the asset is supposed to be\na directory or not, however doing so is inelegant and has another subtle problem\n-- if the client decides to use PushDirectory to push something that isn't a\nDirectory (which isn't explicitly banned by the spec), then we will error.\n\nAs the Action and ActionResults we generate are intended only to be used by us,\nwe can instead break the semantics somewhat and treat the Directory as an opaque\nfile, as we do for Blobs.\n\nNote: this intentionally breaks the sharing of Actions should the\nRemoteExecutionFetcher be used. This feels more correct to me, as we were\noverwriting the one we actually ran anyway. Under this usage we instead get\nmultiple Actions pointing to the same ActionResult -- one for the actually\nexecuted Action, and another for the asset reference.","shortMessageHtmlLink":"AC: Treat Directories as blobs"}},{"before":"bed61743269e0da96d9fdbce2086187db3735f50","after":"490b9641fb404149ef1f7476eb582b0f118483d9","ref":"refs/heads/master","pushedAt":"2023-11-28T11:50:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mortenmj","name":"Morten Mjelva","path":"/mortenmj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/489061?s=80&v=4"},"commit":{"message":"Update to latest bb-storage (#31)","shortMessageHtmlLink":"Update to latest bb-storage (#31)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xMVQxNTozOTowNC4wMDAwMDBazwAAAASzY3Es","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMS0yOFQxMTo1MDozMi4wMDAwMDBazwAAAAO5v4ev"}},"title":"Activity · buildbarn/bb-remote-asset"}