)]}'
{"id":"depot~2704","triplet_id":"depot~canon~Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246","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":"2021-03-30 12:30:14.000000000","reason":"sterni replied on the change"},"1000013":{"account":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"last_update":"2021-04-01 07:24:25.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246","subject":"feat(users/Profpatsch/netencode): fully streaming parser","status":"MERGED","created":"2021-03-30 02:55:21.000000000","updated":"2021-04-01 07:30:34.000000000","submitted":"2021-04-01 07:28:07.000000000","submitter":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"2704","meta_rev_id":"c9766471568355464122cf4c2595a245c57ff612","_number":2704,"virtual_id_number":2704,"owner":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"actions":{},"labels":{"Code-Review":{"approved":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"all":[{"tag":"autogenerated:gerrit:merged","value":1,"date":"2021-04-01 07:28:07.000000000","permitted_voting_range":{"min":1,"max":2},"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2021-04-01 07:28:07.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}],"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"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2021-04-01 07:28:07.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Autosubmit":{"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}],"values":{" 0":"Submit manually","+1":"Submit automatically"},"description":"","default_value":0,"optional":true},"All-Comments-Resolved":{"approved":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}]},"Conformant-Commit-Message":{"approved":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"all":[{"value":0,"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"value":0,"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}]}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-03-30 02:58:15.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":"2021-03-30 10:59:15.000000000","updated_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"reviewer":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"state":"CC"},{"updated":"2021-03-30 12:30:14.000000000","updated_by":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"reviewer":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"state":"REVIEWER"}],"messages":[{"id":"d625d1e7b7fe9bf7ac3acd64961c05e5f1aa49b6","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 02:55:21.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"b07b9bfb776b3636d32e1c5fe8f607ec2024dbba","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 02:56:16.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"180a2a8238432e6354073647d342fd734e834260","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 02:57:24.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"2481247edf7b384c55fc90db0ba6ab205d515b82","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-03-30 02:58:15.000000000","message":"Patch Set 1: Verified+1\n\nBuild of patchset 1 passed: https://buildkite.com/tvl/depot/builds/5742","accounts_in_message":[],"_revision_number":1},{"id":"7f04f4d50bbaebb2d97f953fd848d75bde6fbfe8","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 02:59:00.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"d343eec7ba7b419b791d6ec6785eb94ce9dfc2e1","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-03-30 02:59:12.000000000","message":"Patch Set 2: Verified+1\n\nBuild of patchset 2 passed: https://buildkite.com/tvl/depot/builds/5743","accounts_in_message":[],"_revision_number":2},{"id":"392ed8a6e468965e74e7b6edca8d4ce831fbae4d","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-03-30 02:59:30.000000000","message":"Patch Set 3: Verified+1\n\nBuild of patchset 3 passed: https://buildkite.com/tvl/depot/builds/5744","accounts_in_message":[],"_revision_number":3},{"id":"0803a8efd9fe25b942b0c56b34c2eb934568d117","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-03-30 03:00:24.000000000","message":"Patch Set 4: Verified+1\n\nBuild of patchset 4 passed: https://buildkite.com/tvl/depot/builds/5745","accounts_in_message":[],"_revision_number":4},{"id":"78341eec09a0a736f0e532401dc184ea3927e522","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 03:04:52.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"86893415a43a70a792e60a527e6202a66eea7c6e","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-03-30 03:06:06.000000000","message":"Patch Set 5: Verified+1\n\nBuild of patchset 5 passed: https://buildkite.com/tvl/depot/builds/5746","accounts_in_message":[],"_revision_number":5},{"id":"94f89810b10e41c5ae7ed3f3ded80d524a6e515b","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-03-30 10:59:15.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"537a9a418dd914c4f30256e031f0bb28ceb2ab9c","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 11:30:43.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"c610f01b0f348e3481d83f3c2b5c8b0320be7ba9","author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"date":"2021-03-30 12:30:14.000000000","message":"Patch Set 5: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"7b7423e63d90062334886e23e59ea282a1aed55e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-03-30 18:47:41.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"64949d3aeed1e6f6840bccf9c083758489a23ef8","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-03-30 18:50:50.000000000","message":"Patch Set 6: Verified+1\n\nBuild of patchset 6 passed: https://buildkite.com/tvl/depot/builds/5760","accounts_in_message":[],"_revision_number":6},{"id":"efbd7df79f84fe4870673a2c1f104f946e0846f5","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-04-01 07:24:25.000000000","message":"Patch Set 6: Code-Review+2","accounts_in_message":[],"_revision_number":6},{"id":"8a75894bdaa420d862cdbbfaa00567690c6480b4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-04-01 07:26:21.000000000","message":"Uploaded patch set 7: Patch Set 6 was rebased.","accounts_in_message":[],"_revision_number":7},{"id":"26c73a1f5294821529849f0a7ea9f7c72932f742","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-04-01 07:27:31.000000000","message":"Patch Set 7: Verified+1\n\nBuild of patchset 7 passed: https://buildkite.com/tvl/depot/builds/5844","accounts_in_message":[],"_revision_number":7},{"id":"04871f68bb70862d96d0d5163607d32e1ad6d4e9","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"date":"2021-04-01 07:28:07.000000000","message":"Change has been successfully rebased and submitted as 59a9955d753d8f9deb705d36922f6e8d77307f1d","accounts_in_message":[],"_revision_number":8},{"id":"c9766471568355464122cf4c2595a245c57ff612","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2021-04-01 07:30:34.000000000","message":"Patch Set 8:\n\nBuild of patchset 8 passed: https://buildkite.com/tvl/depot/builds/5850","accounts_in_message":[],"_revision_number":8}],"current_revision_number":8,"current_revision":"59a9955d753d8f9deb705d36922f6e8d77307f1d","revisions":{"d88d0d16aa4602ed295a7b7a643afec719893510":{"kind":"REWORK","_number":1,"created":"2021-03-30 02:55:21.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/1","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/1","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/1"}}},"commit":{"parents":[{"commit":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","subject":"feat(users/Profpatsch/netencode): use streaming parser everywhere","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd0cdc5f97d28593d80398e3e623e8b766c3faac1"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:55:20.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd88d0d16aa4602ed295a7b7a643afec719893510"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd88d0d16aa4602ed295a7b7a643afec719893510"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","is_merged_in_target_branch":false,"change_id":"I473cd245791cd37f0c94670091060d9a827a73c9","change_number":2656,"patch_set_number":3,"change_status":"ABANDONED"}],"branch":"refs/heads/canon"},"10a8c6e33aff389d64c11240b052cabdc0329487":{"kind":"REWORK","_number":2,"created":"2021-03-30 02:56:16.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/2","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/2","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/2"}}},"commit":{"parents":[{"commit":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","subject":"feat(users/Profpatsch/netencode): use streaming parser everywhere","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd0cdc5f97d28593d80398e3e623e8b766c3faac1"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:56:13.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d10a8c6e33aff389d64c11240b052cabdc0329487"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d10a8c6e33aff389d64c11240b052cabdc0329487"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","is_merged_in_target_branch":false,"change_id":"I473cd245791cd37f0c94670091060d9a827a73c9","change_number":2656,"patch_set_number":3,"change_status":"ABANDONED"}],"branch":"refs/heads/canon"},"a9a948a8ac94673d399bfd6216f25c989ea93806":{"kind":"REWORK","_number":3,"created":"2021-03-30 02:57:24.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/3","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/3","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/3"}}},"commit":{"parents":[{"commit":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","subject":"feat(users/Profpatsch/netencode): use streaming parser everywhere","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd0cdc5f97d28593d80398e3e623e8b766c3faac1"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:57:20.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003da9a948a8ac94673d399bfd6216f25c989ea93806"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003da9a948a8ac94673d399bfd6216f25c989ea93806"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","is_merged_in_target_branch":false,"change_id":"I473cd245791cd37f0c94670091060d9a827a73c9","change_number":2656,"patch_set_number":3,"change_status":"ABANDONED"}],"branch":"refs/heads/canon"},"060a01e9b3f43d4af179d7064f77f53b04a0e08f":{"kind":"REWORK","_number":4,"created":"2021-03-30 02:59:00.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/4","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/4","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/4"}}},"commit":{"parents":[{"commit":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","subject":"feat(users/Profpatsch/netencode): use streaming parser everywhere","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dd0cdc5f97d28593d80398e3e623e8b766c3faac1"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:58:57.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d060a01e9b3f43d4af179d7064f77f53b04a0e08f"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d060a01e9b3f43d4af179d7064f77f53b04a0e08f"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"d0cdc5f97d28593d80398e3e623e8b766c3faac1","is_merged_in_target_branch":false,"change_id":"I473cd245791cd37f0c94670091060d9a827a73c9","change_number":2656,"patch_set_number":3,"change_status":"ABANDONED"}],"branch":"refs/heads/canon"},"ce5c5f5f721f265a88308c7bbfe6a72a1544d37d":{"kind":"REWORK","_number":5,"created":"2021-03-30 03:04:52.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/5","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/5","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/5"}}},"commit":{"parents":[{"commit":"fb590ed2968ee1be48590210d8b1bb7fabce657d","subject":"feat(third_party): add dhall packages from easy-dhall-nix","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dfb590ed2968ee1be48590210d8b1bb7fabce657d"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 03:04:19.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dce5c5f5f721f265a88308c7bbfe6a72a1544d37d"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dce5c5f5f721f265a88308c7bbfe6a72a1544d37d"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"fb590ed2968ee1be48590210d8b1bb7fabce657d","is_merged_in_target_branch":false,"change_id":"Ie58c335d80f4a5abeb8296ece5a24377f07e6369","change_number":2585,"patch_set_number":5,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"c999d73edc1176f1e6e531ddddb73cd374f7d694":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2021-03-30 18:47:41.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/6","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/6","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/6"}}},"commit":{"parents":[{"commit":"ee4902e5d5e6a113fc51a934c73044faa71370c4","subject":"feat(third_party): add dhall packages from easy-dhall-nix","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dee4902e5d5e6a113fc51a934c73044faa71370c4"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 18:47:39.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc999d73edc1176f1e6e531ddddb73cd374f7d694"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc999d73edc1176f1e6e531ddddb73cd374f7d694"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"ee4902e5d5e6a113fc51a934c73044faa71370c4","is_merged_in_target_branch":false,"change_id":"Ie58c335d80f4a5abeb8296ece5a24377f07e6369","change_number":2585,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"9f949883d18963a980df6dbb2195af17a8158bb6":{"kind":"TRIVIAL_REBASE","_number":7,"created":"2021-04-01 07:26:21.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/7","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/7","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/7"}}},"commit":{"parents":[{"commit":"6749267805fd824bcfafc0b81e1dd9c2b6180f09","subject":"chore(tverskoy): Disable networking.firewall","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d6749267805fd824bcfafc0b81e1dd9c2b6180f09"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-04-01 07:26:17.000000000","tz":120},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9f949883d18963a980df6dbb2195af17a8158bb6"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d9f949883d18963a980df6dbb2195af17a8158bb6"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"6749267805fd824bcfafc0b81e1dd9c2b6180f09","is_merged_in_target_branch":true,"change_id":"Id1715b205191d4494a5a7001e1fb0f41a89d3de6","change_number":2705,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"59a9955d753d8f9deb705d36922f6e8d77307f1d":{"kind":"REWORK","_number":8,"created":"2021-04-01 07:28:07.000000000","uploader":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"},"ref":"refs/changes/04/2704/8","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/04/2704/8","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/04/2704/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/04/2704/8"}}},"commit":{"parents":[{"commit":"53d8dd6a1e56533dbe33a711bdec792cd477f0c7","subject":"feat(ops/nixos/www): Serve rendered Tvix component SVG (hack!)","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d53d8dd6a1e56533dbe33a711bdec792cd477f0c7"}]}],"author":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-03-30 02:49:43.000000000","tz":120},"committer":{"name":"Profpatsch","email":"mail@profpatsch.de","date":"2021-04-01 07:28:07.000000000","tz":0},"subject":"feat(users/Profpatsch/netencode): fully streaming parser","message":"feat(users/Profpatsch/netencode): fully streaming parser\n\nIn order to arbitrarily split netencode over multiple reads, we need\nto make the parser completely streaming, so that it recognizes all\ncases where it needs more input.\n\nLuckily, this is fairly trivial, after working around a bunch of\novereager parsing.\n\nThe tricky part was the giant `alt`, where inner parsers would start\nconsuming input and thus become incomplete when they fail afterwards.\nSinc the format *always* starts the different types with one\ndiscriminator char, we can use that to instantly return the parser and\ntry the next one instead.\n\nThe other tricky part was that lists and records would parse all inner\nelements and then choke on the empty string after the last element,\nbecause the inner parser would consume at least the descriminator, and\nan empty string is always `Incomplete`. We wrap these into a small\ncombinator which plays nice with `many0` in that regard.\n\nChange-Id: Ib8d15d9a7cab19d432c6b24a35fcad6a5a72b246\nReviewed-on: https://cl.tvl.fyi/c/depot/+/2704\nTested-by: BuildkiteCI\nReviewed-by: Profpatsch \u003cmail@profpatsch.de\u003e\nReviewed-by: sterni \u003csternenseemann@systemli.org\u003e\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d59a9955d753d8f9deb705d36922f6e8d77307f1d"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d59a9955d753d8f9deb705d36922f6e8d77307f1d"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"53d8dd6a1e56533dbe33a711bdec792cd477f0c7","is_merged_in_target_branch":true,"change_id":"Id2b819679d748b6f517018a9c6e72d5c1d806c4c","change_number":2743,"patch_set_number":8,"change_status":"MERGED"}],"branch":"refs/heads/canon","description":"Rebase"}},"requirements":[],"submit_records":[{"status":"CLOSED","labels":[{"label":"Conformant-Commit-Message","status":"OK","applied_by":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}},{"label":"All-Comments-Resolved","status":"OK","applied_by":{"_account_id":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}},{"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":1000013,"name":"Profpatsch","email":"mail@profpatsch.de","username":"Profpatsch"}}]},{"status":"CLOSED"}],"submit_requirements":[{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"All-Comments-Resolved","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:All-Comments-Resolved\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:All-Comments-Resolved\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dCustom-Rule"],"failing_atoms":[]}},{"name":"Custom-Rule","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"rule:Custom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["Custom-Rule"],"failing_atoms":[]}},{"name":"Conformant-Commit-Message","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Conformant-Commit-Message\u003dCustom-Rule","fulfilled":true,"status":"PASS","passing_atoms":["label:Conformant-Commit-Message\u003dCustom-Rule"],"failing_atoms":[]}}]}
