)]}'
{"/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":"a0477a30faf6c9c331faea37cb5903d6d3f5c94e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c4d6c30a_fdb69128","updated":"2021-12-17 11:15:39.000000000","message":"Sorry, rebase was non-trivial enough to the point of needing another CR+1.","commit_id":"4fd41e079981180fa61d548dfae07bc3d48b9ac8"}],"metropolis/cli/metroctl/install.go":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"18d24abcdd2841eb8dc53b4a209d912b970a97b5","unresolved":true,"context_lines":[{"line_number":90,"context_line":"\t\tBundleSize:    uint64(len(bundle)),"},{"line_number":91,"context_line":"\t}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"\tlog.Printf(\"Generating installer image (this can take a while, see issues/92).\")"},{"line_number":94,"context_line":"\tif err :\u003d core.MakeInstallerImage(installerImageArgs); err !\u003d nil {"},{"line_number":95,"context_line":"\t\tlog.Fatalf(\"Failed to create installer: %v\", err)"},{"line_number":96,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"5b20fc1a_6bc58c06","line":93,"updated":"2021-12-15 16:40:42.000000000","message":"IMO this should be accompanied by a searchable TODO. Referring to an issue might not be enough.","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"36a32361e5ca19d2ce5abf6d508fca1a68397584","unresolved":false,"context_lines":[{"line_number":90,"context_line":"\t\tBundleSize:    uint64(len(bundle)),"},{"line_number":91,"context_line":"\t}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"\tlog.Printf(\"Generating installer image (this can take a while, see issues/92).\")"},{"line_number":94,"context_line":"\tif err :\u003d core.MakeInstallerImage(installerImageArgs); err !\u003d nil {"},{"line_number":95,"context_line":"\t\tlog.Fatalf(\"Failed to create installer: %v\", err)"},{"line_number":96,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"d247727c_9fca576e","line":93,"in_reply_to":"5b20fc1a_6bc58c06","updated":"2021-12-16 11:39:30.000000000","message":"Done","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"}],"metropolis/cli/pkg/datafile/datafile.go":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"18d24abcdd2841eb8dc53b4a209d912b970a97b5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"// datafile provides an abstraction for accessing files passed through the data"},{"line_number":2,"context_line":"// attribute in a Bazel build rule."},{"line_number":3,"context_line":"//"},{"line_number":4,"context_line":"// Currently this only thinly wraps around the Bazel/Go runfile library (to"},{"line_number":5,"context_line":"// allow running from outside `bazel run`), but in the future might be extended"},{"line_number":6,"context_line":"// to also allow some files to be embedded into a fat binary (eg. for"},{"line_number":7,"context_line":"// redistributing a self-standing metroctl)."}],"source_content_type":"text/x-go","patch_set":1,"id":"17cba850_af0ad0af","line":4,"updated":"2021-12-15 16:40:42.000000000","message":"IMO every such promise could use a tracking issue.","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"36a32361e5ca19d2ce5abf6d508fca1a68397584","unresolved":true,"context_lines":[{"line_number":1,"context_line":"// datafile provides an abstraction for accessing files passed through the data"},{"line_number":2,"context_line":"// attribute in a Bazel build rule."},{"line_number":3,"context_line":"//"},{"line_number":4,"context_line":"// Currently this only thinly wraps around the Bazel/Go runfile library (to"},{"line_number":5,"context_line":"// allow running from outside `bazel run`), but in the future might be extended"},{"line_number":6,"context_line":"// to also allow some files to be embedded into a fat binary (eg. for"},{"line_number":7,"context_line":"// redistributing a self-standing metroctl)."}],"source_content_type":"text/x-go","patch_set":1,"id":"345fce1b_1407b080","line":4,"in_reply_to":"17cba850_af0ad0af","updated":"2021-12-16 11:39:30.000000000","message":"It\u0027s not really a promise, as we\u0027ll implement it whenever we actually truly need it (which might not happen at all, it depends on some other factors around how metroctl ends up bundling, if at all, binary data).\n\nAnyway, adjusted the comment to not mention possible future extensions, it should document the present.","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"85ed292923af9321642756c9743be78da273e3c9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"// datafile provides an abstraction for accessing files passed through the data"},{"line_number":2,"context_line":"// attribute in a Bazel build rule."},{"line_number":3,"context_line":"//"},{"line_number":4,"context_line":"// Currently this only thinly wraps around the Bazel/Go runfile library (to"},{"line_number":5,"context_line":"// allow running from outside `bazel run`), but in the future might be extended"},{"line_number":6,"context_line":"// to also allow some files to be embedded into a fat binary (eg. for"},{"line_number":7,"context_line":"// redistributing a self-standing metroctl)."}],"source_content_type":"text/x-go","patch_set":1,"id":"fade2db9_3af20a46","line":4,"in_reply_to":"345fce1b_1407b080","updated":"2021-12-16 17:02:15.000000000","message":"Done","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"18d24abcdd2841eb8dc53b4a209d912b970a97b5","unresolved":true,"context_lines":[{"line_number":19,"context_line":")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"// parseManifest takes a bazel runfile MANIFEST and parses it into a map from"},{"line_number":22,"context_line":"// workspace-relative file path to absolute file, flattening all workspaces into"},{"line_number":23,"context_line":"// a single tree."},{"line_number":24,"context_line":"func parseManifest(path string) (map[string]string, error) {"},{"line_number":25,"context_line":"\tf, err :\u003d os.Open(path)"}],"source_content_type":"text/x-go","patch_set":1,"id":"c27c5b1a_2780061b","line":22,"updated":"2021-12-15 16:40:42.000000000","message":"\"from a workspace-relative path to an absolute path\"?","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"36a32361e5ca19d2ce5abf6d508fca1a68397584","unresolved":false,"context_lines":[{"line_number":19,"context_line":")"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"// parseManifest takes a bazel runfile MANIFEST and parses it into a map from"},{"line_number":22,"context_line":"// workspace-relative file path to absolute file, flattening all workspaces into"},{"line_number":23,"context_line":"// a single tree."},{"line_number":24,"context_line":"func parseManifest(path string) (map[string]string, error) {"},{"line_number":25,"context_line":"\tf, err :\u003d os.Open(path)"}],"source_content_type":"text/x-go","patch_set":1,"id":"7e80ad09_b1831202","line":22,"in_reply_to":"c27c5b1a_2780061b","updated":"2021-12-16 11:39:30.000000000","message":"Done","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"18d24abcdd2841eb8dc53b4a209d912b970a97b5","unresolved":true,"context_lines":[{"line_number":75,"context_line":"\tif errRF \u003d\u003d nil {"},{"line_number":76,"context_line":"\t\treturn rf, nil"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\treturn \"\", fmt.Errorf(\"could not resolve via executable location (%v) and runfile resolution failed: %v\", errEx, errRF)"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"// Get tries to read a workspace-relative file path through the use of Bazel"}],"source_content_type":"text/x-go","patch_set":1,"id":"31a56fc3_005f0a44","line":78,"updated":"2021-12-15 16:40:42.000000000","message":"There should be a comma before the and, if you care enough","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"36a32361e5ca19d2ce5abf6d508fca1a68397584","unresolved":true,"context_lines":[{"line_number":75,"context_line":"\tif errRF \u003d\u003d nil {"},{"line_number":76,"context_line":"\t\treturn rf, nil"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\treturn \"\", fmt.Errorf(\"could not resolve via executable location (%v) and runfile resolution failed: %v\", errEx, errRF)"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"// Get tries to read a workspace-relative file path through the use of Bazel"}],"source_content_type":"text/x-go","patch_set":1,"id":"345eb801_f5e0f647","line":78,"in_reply_to":"31a56fc3_005f0a44","updated":"2021-12-16 11:39:30.000000000","message":"Only if you subscribe to the Oxford Comma cult^Wpreference, no?","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"63041d5cb78f696d66b3e4d961cd1b7ebae7d32a","unresolved":true,"context_lines":[{"line_number":75,"context_line":"\tif errRF \u003d\u003d nil {"},{"line_number":76,"context_line":"\t\treturn rf, nil"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\treturn \"\", fmt.Errorf(\"could not resolve via executable location (%v) and runfile resolution failed: %v\", errEx, errRF)"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"// Get tries to read a workspace-relative file path through the use of Bazel"}],"source_content_type":"text/x-go","patch_set":1,"id":"8a9f1319_e76c48db","line":78,"in_reply_to":"345eb801_f5e0f647","updated":"2021-12-16 11:43:49.000000000","message":"Ah no, that\u0027s only for three terms and more.","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"a76af190411d010b1b69c9c9ee183bbf47e78d09","unresolved":true,"context_lines":[{"line_number":75,"context_line":"\tif errRF \u003d\u003d nil {"},{"line_number":76,"context_line":"\t\treturn rf, nil"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\treturn \"\", fmt.Errorf(\"could not resolve via executable location (%v) and runfile resolution failed: %v\", errEx, errRF)"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"// Get tries to read a workspace-relative file path through the use of Bazel"}],"source_content_type":"text/x-go","patch_set":1,"id":"b9c71fbd_82c9bb4f","line":78,"in_reply_to":"8a9f1319_e76c48db","updated":"2021-12-16 11:45:31.000000000","message":"(I\u0027m fine with adding the comma, I\u0027m just trying to find out what the rule is.)","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"85ed292923af9321642756c9743be78da273e3c9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"\tif errRF \u003d\u003d nil {"},{"line_number":76,"context_line":"\t\treturn rf, nil"},{"line_number":77,"context_line":"\t}"},{"line_number":78,"context_line":"\treturn \"\", fmt.Errorf(\"could not resolve via executable location (%v) and runfile resolution failed: %v\", errEx, errRF)"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"// Get tries to read a workspace-relative file path through the use of Bazel"}],"source_content_type":"text/x-go","patch_set":1,"id":"0954eb72_d1d23c01","line":78,"in_reply_to":"b9c71fbd_82c9bb4f","updated":"2021-12-16 17:02:15.000000000","message":"I think it\u0027s proper in the case when the and separates what could be independent sentences.","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"18d24abcdd2841eb8dc53b4a209d912b970a97b5","unresolved":true,"context_lines":[{"line_number":94,"context_line":"func MustGet(path string) []byte {"},{"line_number":95,"context_line":"\tres, err :\u003d Get(path)"},{"line_number":96,"context_line":"\tif err !\u003d nil {"},{"line_number":97,"context_line":"\t\tlog.Fatalf(\"Could not get datafile %s: %v\", path, err)"},{"line_number":98,"context_line":"\t}"},{"line_number":99,"context_line":"\treturn res"},{"line_number":100,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":1,"id":"86dfb67d_336ec0b4","line":97,"updated":"2021-12-15 16:40:42.000000000","message":"Was there a precedent for using \"log\" in every Metropolis binary? Are we making one now?","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"},{"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":"36a32361e5ca19d2ce5abf6d508fca1a68397584","unresolved":false,"context_lines":[{"line_number":94,"context_line":"func MustGet(path string) []byte {"},{"line_number":95,"context_line":"\tres, err :\u003d Get(path)"},{"line_number":96,"context_line":"\tif err !\u003d nil {"},{"line_number":97,"context_line":"\t\tlog.Fatalf(\"Could not get datafile %s: %v\", path, err)"},{"line_number":98,"context_line":"\t}"},{"line_number":99,"context_line":"\treturn res"},{"line_number":100,"context_line":"}"}],"source_content_type":"text/x-go","patch_set":1,"id":"5cb85666_a9652f35","line":97,"in_reply_to":"86dfb67d_336ec0b4","updated":"2021-12-16 11:39:30.000000000","message":"Oh yeah, I meant to include information about this in the godoc.\n\nThe stdlib has similar functions (eg. text/template.MustParse), and these panic instead of using log.Fatal. However, for the intended use of this, I think logging gracefully leads to a much better experience.","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"}],"metropolis/node/installer/main.go":[{"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":"aa58e05a4e787a0c8fea8778e4c5d0a45ae40e02","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\t\"syscall\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"\t\"golang.org/x/sys/unix\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"\t\"source.monogon.dev/metropolis/node/build/mkimage/osimage\""},{"line_number":35,"context_line":"\t\"source.monogon.dev/metropolis/pkg/efivarfs\""},{"line_number":36,"context_line":"\t\"source.monogon.dev/metropolis/pkg/sysfs\""}],"source_content_type":"text/x-go","patch_set":1,"id":"59fab2f9_96dd481e","line":33,"updated":"2021-12-14 15:11:40.000000000","message":"Drive-by reformat as my IDE complained about this. :)","commit_id":"b164541fefcfcbb005d529f84f402c74709a1f74"}]}
