)]}'
{"id":"depot~12949","triplet_id":"depot~canon~If970d2393e43ba032b5b7d653f2b92f6ac0eab63","project":"depot","branch":"canon","attention_set":{},"removed_from_attention_set":{"1000034":{"account":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"last_update":"2025-01-08 20:51:39.000000000","reason":"Change was submitted"},"1000001":{"account":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"last_update":"2025-01-08 20:44:52.000000000","reason":"removed on reply"},"1000038":{"account":{"_account_id":1000038,"name":"ezemtsov","email":"eugene.zemtsov@gmail.com","username":"ezemtsov"},"last_update":"2025-01-08 20:51:39.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"If970d2393e43ba032b5b7d653f2b92f6ac0eab63","subject":"feat(ops/builderball): introduce bouncing Nix cache proxy","status":"MERGED","created":"2025-01-04 00:39:10.000000000","updated":"2025-01-08 20:51:39.000000000","submitted":"2025-01-08 20:51:39.000000000","submitter":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"total_comment_count":8,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"12949","meta_rev_id":"854142cddcb2bea79cba380c895dab22cf06ead1","_number":12949,"virtual_id_number":12949,"owner":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"actions":{},"labels":{"Code-Review":{"approved":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"all":[{"tag":"autogenerated:gerrit:merged","value":2,"date":"2025-01-08 20:51:39.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"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":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"value":0,"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2025-01-08 20:51:39.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":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2025-01-08 20:51:39.000000000","_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"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":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"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":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},{"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":1000038,"name":"ezemtsov","email":"eugene.zemtsov@gmail.com","username":"ezemtsov"}],"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":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"_account_id":1000038,"name":"ezemtsov","email":"eugene.zemtsov@gmail.com","username":"ezemtsov"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-01-04 00:39:11.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":"2025-01-04 00:40:21.000000000","updated_by":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"reviewer":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"state":"REVIEWER"},{"updated":"2025-01-04 00:40:21.000000000","updated_by":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"reviewer":{"_account_id":1000038,"name":"ezemtsov","email":"eugene.zemtsov@gmail.com","username":"ezemtsov"},"state":"REVIEWER"},{"updated":"2025-01-04 00:46:03.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":"2025-01-08 20:51:39.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":"43ce0bbfe5818871f420ad5f7e42e09987eb3603","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"date":"2025-01-04 00:39:10.000000000","message":"Uploaded patch set 1: Autosubmit+1.","accounts_in_message":[],"_revision_number":1},{"id":"ceaf2f8a322138efd4d5e827e8c45f0727c7a666","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2025-01-04 00:39:11.000000000","message":"Patch Set 1:\n\nStarted build for patchset #1 on: https://buildkite.com/tvl/depot/builds/38132","accounts_in_message":[],"_revision_number":1},{"id":"e057a89b975d40772ac2792e488c045d51547880","tag":"autogenerated:gerrit:code-owners:addReviewer","author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"date":"2025-01-04 00:40:21.000000000","message":"\u003cGERRIT_ACCOUNT_1000034\u003e, who was added as reviewer owns the following files:\n* `ops/builderball/README.md`\n* `ops/builderball/config/config.go`\n* `ops/builderball/default.nix`\n* `ops/builderball/discovery/caches.go`\n* `ops/builderball/go.mod`\n* `ops/builderball/go.sum`\n* `ops/builderball/main.go`\n* `ops/builderball/proxy/proxy.go`\n","accounts_in_message":[{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}],"_revision_number":1},{"id":"505fb396d618bc37567267a9d6fe4cf851688679","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2025-01-04 00:46:03.000000000","message":"Patch Set 1: Verified+1\n\nBuild of patchset 1 passed: https://buildkite.com/tvl/depot/builds/38132","accounts_in_message":[],"_revision_number":1},{"id":"853b0aa4580afb19fbd5e2b5f90903eaf51040ec","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"date":"2025-01-04 11:19:39.000000000","message":"Uploaded patch set 2.\n\nCopied Votes:\n* Autosubmit+1 (copy condition: \"changekind:NO_CHANGE OR **is:ANY**\")\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":2},{"id":"e041dc297c8425e2c937328dd15432366efbe5dc","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2025-01-04 11:19:40.000000000","message":"Patch Set 2:\n\nStarted build for patchset #2 on: https://buildkite.com/tvl/depot/builds/38134","accounts_in_message":[],"_revision_number":2},{"id":"5aab397ce91e04072cbc90760e6be30008631c65","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2025-01-04 11:26:23.000000000","message":"Patch Set 2: Verified+1\n\nBuild of patchset 2 passed: https://buildkite.com/tvl/depot/builds/38134","accounts_in_message":[],"_revision_number":2},{"id":"59b22df817508ced541dc4ff4a3c4f474de611e1","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2025-01-07 19:59:39.000000000","message":"Patch Set 2: Code-Review+2\n\n(4 comments)","accounts_in_message":[],"_revision_number":2},{"id":"fe9fa06bec9d36c8103d436e134caced5d592d5c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"date":"2025-01-08 20:44:52.000000000","message":"Uploaded patch set 3.\n\nCopied Votes:\n* Autosubmit+1 (copy condition: \"changekind:NO_CHANGE OR **is:ANY**\")\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":3},{"id":"2b2676907c119970b1a88d001ce19d2d6d26e1dc","author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"date":"2025-01-08 20:44:52.000000000","message":"Patch Set 3:\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"935d09fb29c17f5ec126c45bf6f808f1c84e915b","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2025-01-08 20:44:53.000000000","message":"Patch Set 3:\n\nStarted build for patchset #3 on: https://buildkite.com/tvl/depot/builds/38168","accounts_in_message":[],"_revision_number":3},{"id":"6bb95f2adf98ed4153ac5fe6e2d8ff37228ade9b","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2025-01-08 20:51:23.000000000","message":"Patch Set 3: Verified+1\n\nBuild of patchset 3 passed: https://buildkite.com/tvl/depot/builds/38168","accounts_in_message":[],"_revision_number":3},{"id":"854142cddcb2bea79cba380c895dab22cf06ead1","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"date":"2025-01-08 20:51:39.000000000","message":"Change has been successfully rebased and submitted as 3e802d3bdf3feadc810cedcf377867fb8aab48f4\n\n2 is the latest approved patch-set.\nThe change was submitted with unreviewed changes in the following files:\n\n```\nThe name of the file: ops/builderball/discovery/caches.go\nInsertions: 28, Deletions: 32.\n\n@@ -32,7 +32,34 @@\n \n var caches *cache \u003d new(cache)\n \n-func (c *cache) setWhileHoldingLock(found []string) {\n+func (c *cache) update() ([]string, error) {\n+\tc.lock.Lock()\n+\tdefer c.lock.Unlock()\n+\n+\tfound :\u003d make([]string, len(config.Caches))\n+\tcopy(found, config.Caches)\n+\n+\tif *config.Tailscale {\n+\t\tclient :\u003d tailscale.LocalClient{}\n+\t\tstatus, err :\u003d client.Status(context.Background())\n+\t\tif err !\u003d nil {\n+\t\t\tslog.Error(\"failed to get tailscale status\", \"error\", err.Error())\n+\t\t\treturn nil, err\n+\t\t}\n+\n+\t\tfor _, peer :\u003d range status.Peer {\n+\t\t\tif peer.Online \u0026\u0026 peer.Tags !\u003d nil \u0026\u0026 status.Self !\u003d peer \u0026\u0026 len(peer.TailscaleIPs) \u003e 0 {\n+\t\t\t\tfor _, tag :\u003d range peer.Tags.All() {\n+\t\t\t\t\tif tag \u003d\u003d *config.TSTag {\n+\t\t\t\t\t\tip :\u003d peer.TailscaleIPs[0].String()\n+\t\t\t\t\t\tslog.Debug(\"discovered cache on tailscale\", \"host\", peer.HostName, \"ip\", ip)\n+\t\t\t\t\t\tfound \u003d append(found, fmt.Sprintf(\"http://%s:%d\", ip, *config.CachePort))\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t}\n+\n \t// shuffle order of elements to avoid sending everything to the first\n \t// configured one for popular packages\n \trand.Shuffle(len(found), func(i, j int) {\n@@ -43,38 +70,7 @@\n \tc.caches \u003d make([]string, len(found))\n \tcopy(c.caches, found)\n \tslog.Debug(\"updated discovered caches\", \"caches\", found)\n-}\n \n-func (c *cache) update() ([]string, error) {\n-\tc.lock.Lock()\n-\tdefer c.lock.Unlock()\n-\n-\tfound :\u003d make([]string, len(config.Caches))\n-\tcopy(found, config.Caches)\n-\n-\tif !*config.Tailscale {\n-\t\tc.setWhileHoldingLock(found)\n-\t\treturn found, nil\n-\t}\n-\n-\tclient :\u003d tailscale.LocalClient{}\n-\tstatus, err :\u003d client.Status(context.Background())\n-\tif err !\u003d nil {\n-\t\tslog.Error(\"failed to get tailscale status\", \"error\", err.Error())\n-\t\treturn nil, err\n-\t}\n-\n-\tfor _, peer :\u003d range status.Peer {\n-\t\tif peer.Online \u0026\u0026 peer.Tags !\u003d nil \u0026\u0026 status.Self !\u003d peer \u0026\u0026 len(peer.TailscaleIPs) \u003e 0 {\n-\t\t\tfor _, tag :\u003d range peer.Tags.All() {\n-\t\t\t\tif tag \u003d\u003d *config.TSTag {\n-\t\t\t\t\tfound \u003d append(found, fmt.Sprintf(\"http://%s:%d\", peer.TailscaleIPs[0].String(), *config.CachePort))\n-\t\t\t\t}\n-\t\t\t}\n-\t\t}\n-\t}\n-\n-\tc.setWhileHoldingLock(found)\n \treturn found, nil\n }\n \n```\n```\nThe name of the file: ops/builderball/main.go\nInsertions: 0, Deletions: 5.\n\n@@ -40,11 +40,6 @@\n \n \tslog.Debug(\"debug logging enabled\") // prints only then, of course.\n \n-\tif *config.Debug {\n-\t\tslog.SetLogLoggerLevel(slog.LevelDebug)\n-\t\tslog.Debug(\"enabled debug logging\")\n-\t}\n-\n \tif len(config.Caches) \u003e 0 {\n \t\tslog.Info(\"static binary caches configured\", \"caches\", config.Caches)\n \t}\n```\n","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"3e802d3bdf3feadc810cedcf377867fb8aab48f4","revisions":{"09d44dd71769b007c1bbd85798c3c6c7a702b033":{"kind":"REWORK","_number":1,"created":"2025-01-04 00:39:10.000000000","uploader":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"ref":"refs/changes/49/12949/1","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/49/12949/1","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/49/12949/1"}}},"commit":{"parents":[{"commit":"b961301f6c92bf94a89ef100206934523d1c0758","subject":"feat(tvl-headscale): configure tag for TVL builders","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003db961301f6c92bf94a89ef100206934523d1c0758"}]}],"author":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-04 00:37:26.000000000","tz":180},"committer":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-04 00:37:26.000000000","tz":180},"subject":"feat(ops/builderball): introduce bouncing Nix cache proxy","message":"feat(ops/builderball): introduce bouncing Nix cache proxy\n\nAdds a Nix cache proxy which can be used to send a Nix cache lookup to the first\navailable cache that has the given NAR. We will use this for dynamically created\nbuilders.\n\nRelates to b/432.\n\nChange-Id: If970d2393e43ba032b5b7d653f2b92f6ac0eab63\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d09d44dd71769b007c1bbd85798c3c6c7a702b033"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d09d44dd71769b007c1bbd85798c3c6c7a702b033"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"b961301f6c92bf94a89ef100206934523d1c0758","is_merged_in_target_branch":false,"change_id":"I561a5b4bfeb7e7b306edfaf18b42404d33d84519","change_number":12948,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"7a103aec67cd8a38139ee8cb706488c3375185d2":{"kind":"REWORK","_number":2,"created":"2025-01-04 11:19:39.000000000","uploader":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"ref":"refs/changes/49/12949/2","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/49/12949/2","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/49/12949/2"}}},"commit":{"parents":[{"commit":"b961301f6c92bf94a89ef100206934523d1c0758","subject":"feat(tvl-headscale): configure tag for TVL builders","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003db961301f6c92bf94a89ef100206934523d1c0758"}]}],"author":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-04 00:37:26.000000000","tz":180},"committer":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-04 11:19:34.000000000","tz":180},"subject":"feat(ops/builderball): introduce bouncing Nix cache proxy","message":"feat(ops/builderball): introduce bouncing Nix cache proxy\n\nAdds a Nix cache proxy which can be used to send a Nix cache lookup to the first\navailable cache that has the given NAR. We will use this for dynamically created\nbuilders.\n\nRelates to b/432.\n\nChange-Id: If970d2393e43ba032b5b7d653f2b92f6ac0eab63\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d7a103aec67cd8a38139ee8cb706488c3375185d2"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d7a103aec67cd8a38139ee8cb706488c3375185d2"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"b961301f6c92bf94a89ef100206934523d1c0758","is_merged_in_target_branch":false,"change_id":"I561a5b4bfeb7e7b306edfaf18b42404d33d84519","change_number":12948,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"e006cf775d996181014c517d58ffb7f8d486d468":{"kind":"REWORK","_number":3,"created":"2025-01-08 20:44:52.000000000","uploader":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"ref":"refs/changes/49/12949/3","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/49/12949/3","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/49/12949/3"}}},"commit":{"parents":[{"commit":"45f8f7d39f06fa6acc03f219d6d90cbf161d8a5d","subject":"feat(tvl-headscale): configure tag for TVL builders","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d45f8f7d39f06fa6acc03f219d6d90cbf161d8a5d"}]}],"author":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-04 00:37:26.000000000","tz":180},"committer":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-08 20:44:49.000000000","tz":180},"subject":"feat(ops/builderball): introduce bouncing Nix cache proxy","message":"feat(ops/builderball): introduce bouncing Nix cache proxy\n\nAdds a Nix cache proxy which can be used to send a Nix cache lookup to the first\navailable cache that has the given NAR. We will use this for dynamically created\nbuilders.\n\nRelates to b/432.\n\nChange-Id: If970d2393e43ba032b5b7d653f2b92f6ac0eab63\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de006cf775d996181014c517d58ffb7f8d486d468"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003de006cf775d996181014c517d58ffb7f8d486d468"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"45f8f7d39f06fa6acc03f219d6d90cbf161d8a5d","is_merged_in_target_branch":true,"change_id":"I561a5b4bfeb7e7b306edfaf18b42404d33d84519","change_number":12948,"patch_set_number":3,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"3e802d3bdf3feadc810cedcf377867fb8aab48f4":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2025-01-08 20:51:39.000000000","uploader":{"_account_id":1000015,"name":"clbot","email":"clbot@tvl.fyi","username":"clbot","tags":["SERVICE_USER"]},"ref":"refs/changes/49/12949/4","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/49/12949/4","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/49/12949/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/49/12949/4"}}},"commit":{"parents":[{"commit":"45f8f7d39f06fa6acc03f219d6d90cbf161d8a5d","subject":"feat(tvl-headscale): configure tag for TVL builders","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d45f8f7d39f06fa6acc03f219d6d90cbf161d8a5d"}]}],"author":{"name":"Vincent Ambo","email":"mail@tazj.in","date":"2025-01-04 00:37:26.000000000","tz":180},"committer":{"name":"clbot","email":"clbot@tvl.fyi","date":"2025-01-08 20:51:39.000000000","tz":0},"subject":"feat(ops/builderball): introduce bouncing Nix cache proxy","message":"feat(ops/builderball): introduce bouncing Nix cache proxy\n\nAdds a Nix cache proxy which can be used to send a Nix cache lookup to the first\navailable cache that has the given NAR. We will use this for dynamically created\nbuilders.\n\nRelates to b/432.\n\nChange-Id: If970d2393e43ba032b5b7d653f2b92f6ac0eab63\nReviewed-on: https://cl.tvl.fyi/c/depot/+/12949\nTested-by: BuildkiteCI\nAutosubmit: tazjin \u003ctazjin@tvl.su\u003e\nReviewed-by: sterni \u003csternenseemann@systemli.org\u003e\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3e802d3bdf3feadc810cedcf377867fb8aab48f4"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3e802d3bdf3feadc810cedcf377867fb8aab48f4"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"45f8f7d39f06fa6acc03f219d6d90cbf161d8a5d","is_merged_in_target_branch":true,"change_id":"I561a5b4bfeb7e7b306edfaf18b42404d33d84519","change_number":12948,"patch_set_number":3,"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":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"}},{"label":"All-Comments-Resolved","status":"OK","applied_by":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"}},{"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":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}}]},{"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":[]}}]}
