)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5eac76d641d95dc980f38cdd3b5955ae2e54d1c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7480ab9d_e3a85526","updated":"2021-11-03 13:31:31.000000000","message":"Sorry about the typos. I really should make the spellcheck squiggle in my IDE more visible.","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"}],"metropolis/pkg/event/etcd/etcd.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"94059b7c0c4a00205ebce51e4398df58ca06671f","unresolved":true,"context_lines":[{"line_number":39,"context_line":"// \u0027key\u0027 passed to NewValue to \u0027end\u0027 passed to Range."},{"line_number":40,"context_line":"//"},{"line_number":41,"context_line":"// The key range semantics (ie. lexicographic ordering) are the same as in etcd"},{"line_number":42,"context_line":"// ranges, so for example to retrieve all kays prefixed by `foo/` key should be"},{"line_number":43,"context_line":"// `foo/` and end should be `foo0`."},{"line_number":44,"context_line":"//"},{"line_number":45,"context_line":"// For any update in the given range, the decoder will be called and its result"}],"source_content_type":"text/x-go","patch_set":3,"id":"41dad668_8a19be21","line":42,"range":{"start_line":42,"start_character":42,"end_line":42,"end_character":46},"updated":"2021-11-03 12:16:36.000000000","message":"keys","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5eac76d641d95dc980f38cdd3b5955ae2e54d1c8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"// \u0027key\u0027 passed to NewValue to \u0027end\u0027 passed to Range."},{"line_number":40,"context_line":"//"},{"line_number":41,"context_line":"// The key range semantics (ie. lexicographic ordering) are the same as in etcd"},{"line_number":42,"context_line":"// ranges, so for example to retrieve all kays prefixed by `foo/` key should be"},{"line_number":43,"context_line":"// `foo/` and end should be `foo0`."},{"line_number":44,"context_line":"//"},{"line_number":45,"context_line":"// For any update in the given range, the decoder will be called and its result"}],"source_content_type":"text/x-go","patch_set":3,"id":"cbba2f62_51ed7744","line":42,"range":{"start_line":42,"start_character":42,"end_line":42,"end_character":46},"in_reply_to":"41dad668_8a19be21","updated":"2021-11-03 13:31:31.000000000","message":"Done","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"94059b7c0c4a00205ebce51e4398df58ca06671f","unresolved":true,"context_lines":[{"line_number":40,"context_line":"//"},{"line_number":41,"context_line":"// The key range semantics (ie. lexicographic ordering) are the same as in etcd"},{"line_number":42,"context_line":"// ranges, so for example to retrieve all kays prefixed by `foo/` key should be"},{"line_number":43,"context_line":"// `foo/` and end should be `foo0`."},{"line_number":44,"context_line":"//"},{"line_number":45,"context_line":"// For any update in the given range, the decoder will be called and its result"},{"line_number":46,"context_line":"// will trigger the return of a Get() call. The decoder should return a type"}],"source_content_type":"text/x-go","patch_set":3,"id":"3d5f84ae_1e16560e","line":43,"range":{"start_line":43,"start_character":29,"end_line":43,"end_character":33},"updated":"2021-11-03 12:16:36.000000000","message":"Aren\u0027t etcd keys (at lest in the V3 API) binary? Wouldn\u0027t this need to be \u0027foo\\x00\u0027 or similar?","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5eac76d641d95dc980f38cdd3b5955ae2e54d1c8","unresolved":true,"context_lines":[{"line_number":40,"context_line":"//"},{"line_number":41,"context_line":"// The key range semantics (ie. lexicographic ordering) are the same as in etcd"},{"line_number":42,"context_line":"// ranges, so for example to retrieve all kays prefixed by `foo/` key should be"},{"line_number":43,"context_line":"// `foo/` and end should be `foo0`."},{"line_number":44,"context_line":"//"},{"line_number":45,"context_line":"// For any update in the given range, the decoder will be called and its result"},{"line_number":46,"context_line":"// will trigger the return of a Get() call. The decoder should return a type"}],"source_content_type":"text/x-go","patch_set":3,"id":"cec292f7_92887e3d","line":43,"range":{"start_line":43,"start_character":29,"end_line":43,"end_character":33},"in_reply_to":"3d5f84ae_1e16560e","updated":"2021-11-03 13:31:31.000000000","message":"If we\u0027re using / as a delimiter in lexicographic ordering [ranges), then we want the ASCII codepoint after / to end the range, so that a range \u0027under\u0027 foo/ (foo/ -foo0) contains foo/a, foo/b foo/\\x00, but not foo0, fooo or foo\\x00.\n\n(It also contains foo/, which is why the curator etcdRange type prohibits empty identifiers)","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5bf1cf57ec0817ad8db60c63df4bfce481a68c4c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"//"},{"line_number":41,"context_line":"// The key range semantics (ie. lexicographic ordering) are the same as in etcd"},{"line_number":42,"context_line":"// ranges, so for example to retrieve all kays prefixed by `foo/` key should be"},{"line_number":43,"context_line":"// `foo/` and end should be `foo0`."},{"line_number":44,"context_line":"//"},{"line_number":45,"context_line":"// For any update in the given range, the decoder will be called and its result"},{"line_number":46,"context_line":"// will trigger the return of a Get() call. The decoder should return a type"}],"source_content_type":"text/x-go","patch_set":3,"id":"463f3cdd_d501a014","line":43,"range":{"start_line":43,"start_character":29,"end_line":43,"end_character":33},"in_reply_to":"cec292f7_92887e3d","updated":"2021-11-03 14:38:47.000000000","message":"Oh right. All good.","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"94059b7c0c4a00205ebce51e4398df58ca06671f","unresolved":true,"context_lines":[{"line_number":48,"context_line":"// updated, as the Get() call returns no additional information about the"},{"line_number":49,"context_line":"// location of the retrieved object by itself."},{"line_number":50,"context_line":"//"},{"line_number":51,"context_line":"// The order of values retrieved by Get() in currently fully arbitrary and must"},{"line_number":52,"context_line":"// not be relied on. It\u0027s possible that in the future the order of updates and"},{"line_number":53,"context_line":"// the blocking behaviour of Get will be formalized, but this is not yet the"},{"line_number":54,"context_line":"// case. Instead, the data returned should be treated as eventually consistent"}],"source_content_type":"text/x-go","patch_set":3,"id":"de2eed64_3246e630","line":51,"range":{"start_line":51,"start_character":42,"end_line":51,"end_character":44},"updated":"2021-11-03 12:16:36.000000000","message":"is","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5eac76d641d95dc980f38cdd3b5955ae2e54d1c8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"// updated, as the Get() call returns no additional information about the"},{"line_number":49,"context_line":"// location of the retrieved object by itself."},{"line_number":50,"context_line":"//"},{"line_number":51,"context_line":"// The order of values retrieved by Get() in currently fully arbitrary and must"},{"line_number":52,"context_line":"// not be relied on. It\u0027s possible that in the future the order of updates and"},{"line_number":53,"context_line":"// the blocking behaviour of Get will be formalized, but this is not yet the"},{"line_number":54,"context_line":"// case. Instead, the data returned should be treated as eventually consistent"}],"source_content_type":"text/x-go","patch_set":3,"id":"216e414f_bd8cffb1","line":51,"range":{"start_line":51,"start_character":42,"end_line":51,"end_character":44},"in_reply_to":"de2eed64_3246e630","updated":"2021-11-03 13:31:31.000000000","message":"Done","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"94059b7c0c4a00205ebce51e4398df58ca06671f","unresolved":true,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"\tranged :\u003d w.key !\u003d w.keyEnd"},{"line_number":411,"context_line":"\tif !ranged {"},{"line_number":412,"context_line":"\t\t// For non-ranged quesries, drain backlog fully."},{"line_number":413,"context_line":"\t\tif len(w.backlogged) !\u003d 1 {"},{"line_number":414,"context_line":"\t\t\tpanic(\"multiple keys in nonranged value\")"},{"line_number":415,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"bbe6a39b_b627ac7c","line":412,"range":{"start_line":412,"start_character":20,"end_line":412,"end_character":28},"updated":"2021-11-03 12:16:36.000000000","message":"queries","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5eac76d641d95dc980f38cdd3b5955ae2e54d1c8","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"\tranged :\u003d w.key !\u003d w.keyEnd"},{"line_number":411,"context_line":"\tif !ranged {"},{"line_number":412,"context_line":"\t\t// For non-ranged quesries, drain backlog fully."},{"line_number":413,"context_line":"\t\tif len(w.backlogged) !\u003d 1 {"},{"line_number":414,"context_line":"\t\t\tpanic(\"multiple keys in nonranged value\")"},{"line_number":415,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"8ce361d5_9f1fad79","line":412,"range":{"start_line":412,"start_character":20,"end_line":412,"end_character":28},"in_reply_to":"bbe6a39b_b627ac7c","updated":"2021-11-03 13:31:31.000000000","message":"Done","commit_id":"b16d2e6c9b17edd0e4748960d8d2e0ffc3528679"}]}
