)]}'
{"id":"depot~11220","triplet_id":"depot~canon~Ie88c832924c170a24626e9e3e91d868497b5d7a4","project":"depot","branch":"canon","attention_set":{},"removed_from_attention_set":{"1000001":{"account":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"last_update":"2024-03-24 17:39:49.000000000","reason":"Change was submitted"},"1000096":{"account":{"_account_id":1000096,"name":"picnoir picnoir","display_name":"picnoir","email":"picnoir@alternativebit.fr","username":"picnoir"},"last_update":"2024-03-24 17:39:49.000000000","reason":"Change was submitted"},"1000085":{"account":{"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},"last_update":"2024-03-24 17:39:49.000000000","reason":"Change was submitted"},"1000036":{"account":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"last_update":"2024-03-24 17:39:49.000000000","reason":"Change was submitted"},"1000073":{"account":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"last_update":"2024-03-24 17:39:20.000000000","reason":"\u003cGERRIT_ACCOUNT_1000073\u003e replied on the change","reason_account":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"}}},"hashtags":[],"change_id":"Ie88c832924c170a24626e9e3e91d868497b5d7a4","subject":"feat(tvix/castore/directory): add ClosureValidator","status":"MERGED","created":"2024-03-20 20:03:22.000000000","updated":"2024-03-24 17:39:49.000000000","submitted":"2024-03-24 17:39:49.000000000","submitter":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"total_comment_count":35,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"11220","meta_rev_id":"10bfe4c0f4214586d4471cbbb17ce761627e5a3f","_number":11220,"virtual_id_number":11220,"owner":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"actions":{},"labels":{"Code-Review":{"approved":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"all":[{"value":0,"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2024-03-24 17:39:49.000000000","_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}],"values":{"-2":"This shall not be merged","-1":"I would prefer this is not merged as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"Verified":{"approved":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2024-03-24 17:39:49.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Autosubmit":{"approved":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"all":[{"value":0,"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2024-03-24 17:39:49.000000000","_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}],"values":{" 0":"Submit manually","+1":"Submit automatically"},"description":"","default_value":0,"optional":true},"All-Comments-Resolved":{"approved":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"all":[{"value":0,"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}]},"Conformant-Commit-Message":{"approved":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"all":[{"value":0,"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}]}},"removable_reviewers":[{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"_account_id":1000096,"name":"picnoir picnoir","display_name":"picnoir","email":"picnoir@alternativebit.fr","username":"picnoir"}],"reviewers":{"REVIEWER":[{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},{"_account_id":1000096,"name":"picnoir picnoir","display_name":"picnoir","email":"picnoir@alternativebit.fr","username":"picnoir"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2024-03-20 20:03:22.000000000","updated_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"reviewer":{"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},"state":"REVIEWER"},{"updated":"2024-03-20 20:03:22.000000000","updated_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"reviewer":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"state":"REVIEWER"},{"updated":"2024-03-20 20:03:34.000000000","updated_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2024-03-20 20:14:51.000000000","updated_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2024-03-20 20:57:53.000000000","updated_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"reviewer":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"state":"REVIEWER"},{"updated":"2024-03-23 07:31:42.000000000","updated_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"reviewer":{"_account_id":1000096,"name":"picnoir picnoir","display_name":"picnoir","email":"picnoir@alternativebit.fr","username":"picnoir"},"state":"REVIEWER"},{"updated":"2024-03-24 17:39:49.000000000","updated_by":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"ee9f71733e96ad07f03192bbda3e8a68885f9fbf","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 20:03:22.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"a2a1835aa9660bdcb397ff2f95a4a724e98b9bca","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-20 20:03:34.000000000","message":"Patch Set 1:\n\nStarted build for patchset #1 on: https://buildkite.com/tvl/depot/builds/32407","accounts_in_message":[],"_revision_number":1},{"id":"7b27ef59871f7b68c25aafb0703912d184750834","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-20 20:14:51.000000000","message":"Patch Set 1: Verified-1\n\nBuild of patchset 1 failed: https://buildkite.com/tvl/depot/builds/32407","accounts_in_message":[],"_revision_number":1},{"id":"5eb5bce5086417198024c579d86e26d4a762fd18","author":{"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},"date":"2024-03-20 20:27:08.000000000","message":"Patch Set 1: Code-Review+2\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"f769d3597d719d658b835c68d500605947b93f6b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 20:57:53.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Code-Review+2 (copy condition: \"((**is:ANY** AND has:unchanged-files) OR is:MIN) OR changekind:NO_CHANGE\")\n* Verified-1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":2},{"id":"cd013fc372e5e82cdfe71fa6e4efb01710477eaf","tag":"autogenerated:gerrit:code-owners:addReviewer","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 20:57:53.000000000","message":"\u003cGERRIT_ACCOUNT_1000001\u003e, who was added as reviewer owns the following files:\n* `tvix/castore/src/directoryservice/mod.rs`\n* `tvix/castore/src/directoryservice/validate_closure.rs`\n","accounts_in_message":[{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"}],"_revision_number":2},{"id":"87c18b33225ae2136e1f46f0c7ab0e66a298584f","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-20 20:57:57.000000000","message":"Patch Set 2:\n\nStarted build for patchset #2 on: https://buildkite.com/tvl/depot/builds/32410","accounts_in_message":[],"_revision_number":2},{"id":"4b05845662fdd297cfc391d68bf3db0cf6cd1212","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-20 21:03:58.000000000","message":"Patch Set 2: Verified-1\n\nBuild of patchset 2 failed: https://buildkite.com/tvl/depot/builds/32410","accounts_in_message":[],"_revision_number":2},{"id":"ef2e25dccd1d316b07c45d1a9f74b676da1e2005","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 21:10:15.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":3},{"id":"e4e2aeecf7c3eb9043ec787fffe6a7e4042504cd","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-20 21:10:23.000000000","message":"Patch Set 3:\n\nStarted build for patchset #3 on: https://buildkite.com/tvl/depot/builds/32417","accounts_in_message":[],"_revision_number":3},{"id":"132d2d9796d4bf9e5cbeae63bcf1708a197badb7","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 21:12:39.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"4a1d313c5dbadf92eabccb06d4011fd3dfbf0133","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 21:13:40.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"74a2e73fb7d0bb21eace7af697e61b0cd16661ac","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-20 21:17:40.000000000","message":"Patch Set 3: Verified+1\n\nBuild of patchset 3 passed: https://buildkite.com/tvl/depot/builds/32417","accounts_in_message":[],"_revision_number":3},{"id":"6349d2fb22df43e84706a0d08669a3298105d5cc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-20 21:45:55.000000000","message":"Uploaded patch set 4: New patch set was added with same tree, parent tree, and commit message as Patch Set 3.\n\nCopied Votes:\n* Verified+1 (copy condition: \"(**is:ANY** AND **changekind:NO_CODE_CHANGE**) OR **changekind:NO_CHANGE**\")\n","accounts_in_message":[],"_revision_number":4},{"id":"e217fccfa93c5141c0b7ca7cb95735c0cb3dec90","author":{"_account_id":1000085,"name":"Connor Brewster","display_name":"cbrewster","email":"cbrewster@hey.com","username":"cbrewster"},"date":"2024-03-20 22:28:19.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"80acfd46f33ffb9aec52cfb8989269033a656570","author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"date":"2024-03-22 03:35:25.000000000","message":"Patch Set 4: Code-Review+2\n\n(8 comments)","accounts_in_message":[],"_revision_number":4},{"id":"522eb29772f87b818c589f79d0f3a10d7aafe795","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-22 13:11:31.000000000","message":"Patch Set 4:\n\n(7 comments)","accounts_in_message":[],"_revision_number":4},{"id":"1ad56f5989a7d16b69017efd29274c6ce048bb11","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-23 07:31:42.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.\n\nCopied Votes:\n* Code-Review+2 (copy condition: \"((**is:ANY** AND **has:unchanged-files**) OR is:MIN) OR changekind:NO_CHANGE\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":5},{"id":"8ddeb56ad9351a1db571f2395d255d184455e11d","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-23 07:31:52.000000000","message":"Patch Set 5:\n\nStarted build for patchset #5 on: https://buildkite.com/tvl/depot/builds/32506","accounts_in_message":[],"_revision_number":5},{"id":"649d150925ab478992b343799871027bb311e150","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-23 07:37:13.000000000","message":"Patch Set 5: Verified+1\n\nBuild of patchset 5 passed: https://buildkite.com/tvl/depot/builds/32506","accounts_in_message":[],"_revision_number":5},{"id":"0b02e5cd7d42f7252e6d443da38cbe9a7c99e5a4","author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"date":"2024-03-23 14:36:35.000000000","message":"Patch Set 5: Code-Review+2\n\n(5 comments)","accounts_in_message":[],"_revision_number":5},{"id":"a3fb95ee392decb466e65af7efbcac99309a7a87","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-23 21:51:40.000000000","message":"Uploaded patch set 6: Autosubmit+1.\n\nOutdated Votes:\n* Code-Review+2 (copy condition: \"((**is:ANY** AND has:unchanged-files) OR is:MIN) OR changekind:NO_CHANGE\")\n* Verified+1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":6},{"id":"aa25d0d262a0ecdd751e18ac8033a8bf8f61d7b8","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-23 21:51:48.000000000","message":"Patch Set 6:\n\nStarted build for patchset #6 on: https://buildkite.com/tvl/depot/builds/32518","accounts_in_message":[],"_revision_number":6},{"id":"d33c33bc31f30034a59d5e5859f092573f6451ea","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-23 21:52:31.000000000","message":"Patch Set 6:\n\n(8 comments)","accounts_in_message":[],"_revision_number":6},{"id":"0e6f7969c37bf4f7ad1db619d9e6730bfee9a896","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-03-23 21:58:45.000000000","message":"Patch Set 6: Verified+1\n\nBuild of patchset 6 passed: https://buildkite.com/tvl/depot/builds/32518","accounts_in_message":[],"_revision_number":6},{"id":"38f69af7570ddc3d91714776237f29ff878a4547","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-03-23 22:07:15.000000000","message":"Uploaded patch set 7: New patch set was added with same tree, parent tree, and commit message as Patch Set 6.\n\nCopied Votes:\n* Autosubmit+1 (copy condition: \"**changekind:NO_CHANGE** OR **is:ANY**\")\n* Verified+1 (copy condition: \"(**is:ANY** AND **changekind:NO_CODE_CHANGE**) OR **changekind:NO_CHANGE**\")\n","accounts_in_message":[],"_revision_number":7},{"id":"44319c5ba54b326db69603169de9a1bf15a13aa4","author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"date":"2024-03-24 17:39:20.000000000","message":"Patch Set 7: Code-Review+2\n\n(3 comments)","accounts_in_message":[],"_revision_number":7},{"id":"10bfe4c0f4214586d4471cbbb17ce761627e5a3f","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"date":"2024-03-24 17:39:49.000000000","message":"Change has been successfully rebased and submitted as c92ef2df64f4013e72037cefb548f68d158488cc","accounts_in_message":[],"_revision_number":8}],"current_revision_number":8,"current_revision":"c92ef2df64f4013e72037cefb548f68d158488cc","revisions":{"426c6e5eeb381abad2e577681bb8ef94e9a27b42":{"kind":"REWORK","_number":1,"created":"2024-03-20 20:03:22.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/1","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/1","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/1"}}},"commit":{"parents":[{"commit":"e26340dc943722dcaafa90da75e32a8fb64c7cc3","subject":"feat(tvix/castore): derive Eq and Hash automatically","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de26340dc943722dcaafa90da75e32a8fb64c7cc3"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 20:02:02.000000000","tz":120},"subject":"feat(tvix/castore/directory): add DirectoryClosureValidator","message":"feat(tvix/castore/directory): add DirectoryClosureValidator\n\nThis can be used to validate a Directory closure (graph of connected\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, We validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no disconnected graphs, and only one root.\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d426c6e5eeb381abad2e577681bb8ef94e9a27b42"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d426c6e5eeb381abad2e577681bb8ef94e9a27b42"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"e26340dc943722dcaafa90da75e32a8fb64c7cc3","is_merged_in_target_branch":false,"change_id":"Ia58094cafe53eb624578821d3d8d969c5d21a1d7","change_number":11219,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"77ff4859a36c80e149d8efa6685f3ded1c50ca6b":{"kind":"REWORK","_number":2,"created":"2024-03-20 20:57:53.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/2","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/2","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/2"}}},"commit":{"parents":[{"commit":"e26340dc943722dcaafa90da75e32a8fb64c7cc3","subject":"feat(tvix/castore): derive Eq and Hash automatically","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de26340dc943722dcaafa90da75e32a8fb64c7cc3"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 20:48:35.000000000","tz":120},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (graph of connected\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, We validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no disconnected graphs, and only one root.\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d77ff4859a36c80e149d8efa6685f3ded1c50ca6b"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d77ff4859a36c80e149d8efa6685f3ded1c50ca6b"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"e26340dc943722dcaafa90da75e32a8fb64c7cc3","is_merged_in_target_branch":false,"change_id":"Ia58094cafe53eb624578821d3d8d969c5d21a1d7","change_number":11219,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"8942bfedc2999a4eb5b13015a002e205ff649f20":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2024-03-20 21:10:15.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/3","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/3","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/3"}}},"commit":{"parents":[{"commit":"7ba8979595b4c47c3d412b39448c606c5a3daf96","subject":"feat(tvix/castore): derive Eq and Hash automatically","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d7ba8979595b4c47c3d412b39448c606c5a3daf96"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 21:09:55.000000000","tz":120},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (graph of connected\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, We validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no disconnected graphs, and only one root.\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d8942bfedc2999a4eb5b13015a002e205ff649f20"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d8942bfedc2999a4eb5b13015a002e205ff649f20"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"7ba8979595b4c47c3d412b39448c606c5a3daf96","is_merged_in_target_branch":false,"change_id":"Ia58094cafe53eb624578821d3d8d969c5d21a1d7","change_number":11219,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"32e1f732476325fd6e65ad25e6caeb522ce197a9":{"kind":"NO_CHANGE","_number":4,"created":"2024-03-20 21:45:55.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/4","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/4","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/4"}}},"commit":{"parents":[{"commit":"9793745459fb5a8d2d66c4e8832b9ca79fdd9a1a","subject":"feat(tvix/castore): derive Eq and Hash automatically","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9793745459fb5a8d2d66c4e8832b9ca79fdd9a1a"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 21:45:37.000000000","tz":120},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (graph of connected\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, We validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no disconnected graphs, and only one root.\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d32e1f732476325fd6e65ad25e6caeb522ce197a9"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d32e1f732476325fd6e65ad25e6caeb522ce197a9"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"9793745459fb5a8d2d66c4e8832b9ca79fdd9a1a","is_merged_in_target_branch":true,"change_id":"Ia58094cafe53eb624578821d3d8d969c5d21a1d7","change_number":11219,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"f749089d5bd663676b053697e42269ebb398e287":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2024-03-23 07:31:42.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/5","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/5","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/5"}}},"commit":{"parents":[{"commit":"e7dddff094ee982f5e31dfb744a9dcb6eaad5d00","subject":"feat(tvix): add mdbook to shell","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de7dddff094ee982f5e31dfb744a9dcb6eaad5d00"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-23 05:04:14.000000000","tz":120},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (graph of connected\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, We validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no disconnected graphs, and only one root.\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003df749089d5bd663676b053697e42269ebb398e287"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003df749089d5bd663676b053697e42269ebb398e287"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"e7dddff094ee982f5e31dfb744a9dcb6eaad5d00","is_merged_in_target_branch":false,"change_id":"I97df12ed839e3c7a8065563c039436e1a830281e","change_number":11243,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"31e1a2827e7763f483d9e938c9c9b45732b52746":{"kind":"REWORK","_number":6,"created":"2024-03-23 21:51:40.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/6","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/6","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/6"}}},"commit":{"parents":[{"commit":"e8dfd3df1d67208873aaa6e15b4fefd4f14eea2d","subject":"docs(tvix/castore): fix missing slash in docstring","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de8dfd3df1d67208873aaa6e15b4fefd4f14eea2d"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-23 21:41:24.000000000","tz":60},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (connected DAG of\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, we validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no separate components being sent (and only one\nroot).\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d31e1a2827e7763f483d9e938c9c9b45732b52746"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d31e1a2827e7763f483d9e938c9c9b45732b52746"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"e8dfd3df1d67208873aaa6e15b4fefd4f14eea2d","is_merged_in_target_branch":false,"change_id":"I5f39d0e613b651458b168cfd9df0693d7f01d704","change_number":11246,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"ec02e30dc407bbc11447a707cc2f46c8ddcc1110":{"kind":"NO_CHANGE","_number":7,"created":"2024-03-23 22:07:15.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/20/11220/7","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/7","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/7"}}},"commit":{"parents":[{"commit":"110734dfed63551ac4de3f7fcc054b3287a85296","subject":"docs(tvix/castore): fix missing slash in docstring","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d110734dfed63551ac4de3f7fcc054b3287a85296"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-23 22:07:00.000000000","tz":60},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (connected DAG of\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, we validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no separate components being sent (and only one\nroot).\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dec02e30dc407bbc11447a707cc2f46c8ddcc1110"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dec02e30dc407bbc11447a707cc2f46c8ddcc1110"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"110734dfed63551ac4de3f7fcc054b3287a85296","is_merged_in_target_branch":true,"change_id":"I5f39d0e613b651458b168cfd9df0693d7f01d704","change_number":11246,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"c92ef2df64f4013e72037cefb548f68d158488cc":{"kind":"REWORK","_number":8,"created":"2024-03-24 17:39:49.000000000","uploader":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"ref":"refs/changes/20/11220/8","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/20/11220/8","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/20/11220/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/20/11220/8"}}},"commit":{"parents":[{"commit":"bd953d0703e072246fa7d7a79f9a46a8d2006a26","subject":"fix(aspen/system): Fix whitby ssh username","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dbd953d0703e072246fa7d7a79f9a46a8d2006a26"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-03-20 18:21:51.000000000","tz":120},"committer":{"name":"clbot","email":"clbot@tvl.fyi","date":"2024-03-24 17:39:49.000000000","tz":0},"subject":"feat(tvix/castore/directory): add ClosureValidator","message":"feat(tvix/castore/directory): add ClosureValidator\n\nThis can be used to validate a Directory closure (connected DAG of\nDirectories), and their insertion order.\n\nDirectories need to be inserted (via `add`), in an order from the leaves\nto the root. During insertion, we validate as much as we can at that\ntime:\n\n - individual validation of Directory messages\n - validation of insertion order (no upload of not-yet-known Directories)\n - validation of size fields of referred Directories\n\nInternally it keeps all received Directories (and their sizes) in a HashMap,\nkeyed by digest.\n\nOnce all Directories have been inserted, a drain() function can be\ncalled to get a (deduplicated and) validated list of directories, in\nfrom-leaves-to-root order (to be stored somewhere).\n\nWhile assembling that list, a check for graph connectivity is performed\ntoo, to ensure there\u0027s no separate components being sent (and only one\nroot).\n\nIt adds a test suite for these cases, which is much nicer to test than\nwhere we previously had these checks (only in the gRPC server wrapper).\n\nFollowup CLs will move the existing putters to use this.\n\nChange-Id: Ie88c832924c170a24626e9e3e91d868497b5d7a4\nReviewed-on: https://cl.tvl.fyi/c/depot/+/11220\nTested-by: BuildkiteCI\nReviewed-by: raitobezarius \u003ctvl@lahfa.xyz\u003e\nAutosubmit: flokli \u003cflokli@flokli.de\u003e\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc92ef2df64f4013e72037cefb548f68d158488cc"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc92ef2df64f4013e72037cefb548f68d158488cc"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"bd953d0703e072246fa7d7a79f9a46a8d2006a26","is_merged_in_target_branch":true,"change_id":"I0686c802b902ed69334221367a2f00be758daec1","change_number":11256,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon","description":"Rebase"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~PrologRule","status":"CLOSED","labels":[{"label":"Autosubmit","status":"MAY"},{"label":"Conformant-Commit-Message","status":"OK","applied_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"}},{"label":"All-Comments-Resolved","status":"OK","applied_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"}},{"label":"Verified","status":"OK","applied_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"}}]},{"rule_name":"Code-Owners","status":"CLOSED"}],"submit_requirements":[{"name":"All-Comments-Resolved","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:All-Comments-Resolved\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:All-Comments-Resolved\u003dgerrit~PrologRule"],"failing_atoms":[]}},{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dgerrit~PrologRule"],"failing_atoms":[]}},{"name":"Code-Owners","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"rule:Code-Owners","fulfilled":true,"status":"PASS","passing_atoms":["Code-Owners"],"failing_atoms":[]}},{"name":"Conformant-Commit-Message","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Conformant-Commit-Message\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:Conformant-Commit-Message\u003dgerrit~PrologRule"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dgerrit~PrologRule"],"failing_atoms":[]}}]}
