)]}'
{"metropolis/node/core/mgmt/update.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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":16,"context_line":"\t\treturn nil, status.Errorf(codes.Unavailable, \"error installing update: %v\", err)"},{"line_number":17,"context_line":"\t}"},{"line_number":18,"context_line":"\tif !req.NoReboot {"},{"line_number":19,"context_line":"\t\t// TODO: Tell Supervisor to shut down gracefully and reboot"},{"line_number":20,"context_line":"\t\t// TODO: Kexec? At least in lower-integrity modes"},{"line_number":21,"context_line":"\t\tgo func() {"},{"line_number":22,"context_line":"\t\t\ttime.Sleep(10 * time.Second)"}],"source_content_type":"text/x-go","patch_set":19,"id":"4d4369ed_3055b6b1","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":61},"updated":"2023-07-24 13:21:52.000000000","message":"Please file an issue (eg. “Gracefully shutdown/restart Metropolis”) for this and refer to it here.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\t\treturn nil, status.Errorf(codes.Unavailable, \"error installing update: %v\", err)"},{"line_number":17,"context_line":"\t}"},{"line_number":18,"context_line":"\tif !req.NoReboot {"},{"line_number":19,"context_line":"\t\t// TODO: Tell Supervisor to shut down gracefully and reboot"},{"line_number":20,"context_line":"\t\t// TODO: Kexec? At least in lower-integrity modes"},{"line_number":21,"context_line":"\t\tgo func() {"},{"line_number":22,"context_line":"\t\t\ttime.Sleep(10 * time.Second)"}],"source_content_type":"text/x-go","patch_set":19,"id":"893c6174_052423cd","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":61},"in_reply_to":"4d4369ed_3055b6b1","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"}],"metropolis/node/core/update/e2e/e2e_test.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":"3afb8bcb4a5ac9ecf11cbc58565852f902f4b685","unresolved":true,"context_lines":[{"line_number":140,"context_line":"\t\tt.Fatal(err)"},{"line_number":141,"context_line":"\t}"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"\trootDevPath :\u003d filepath.Join(os.TempDir(), \"rootdisk\"+base64.RawURLEncoding.EncodeToString(randSuffix)+\".img\")"},{"line_number":144,"context_line":"\t// Make a 512 bytes * 2Mi \u003d 1Gi file-backed block device"},{"line_number":145,"context_line":"\trootDisk, err :\u003d blockdev.CreateFile(rootDevPath, 512, 2097152)"},{"line_number":146,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":21,"id":"7597d96e_7f6d4c45","line":143,"range":{"start_line":143,"start_character":16,"end_line":143,"end_character":42},"updated":"2023-07-25 14:40:17.000000000","message":"Use os.MkdirTemp.","commit_id":"041a75ced593666ee4ec26e53f09d363e03070eb"},{"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":"77adbcd0e750a22726719b2a9efd24d0a3525d80","unresolved":false,"context_lines":[{"line_number":140,"context_line":"\t\tt.Fatal(err)"},{"line_number":141,"context_line":"\t}"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"\trootDevPath :\u003d filepath.Join(os.TempDir(), \"rootdisk\"+base64.RawURLEncoding.EncodeToString(randSuffix)+\".img\")"},{"line_number":144,"context_line":"\t// Make a 512 bytes * 2Mi \u003d 1Gi file-backed block device"},{"line_number":145,"context_line":"\trootDisk, err :\u003d blockdev.CreateFile(rootDevPath, 512, 2097152)"},{"line_number":146,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":21,"id":"d589a0fd_3e601b03","line":143,"range":{"start_line":143,"start_character":16,"end_line":143,"end_character":42},"in_reply_to":"7597d96e_7f6d4c45","updated":"2023-07-25 19:17:43.000000000","message":"Done","commit_id":"041a75ced593666ee4ec26e53f09d363e03070eb"}],"metropolis/node/core/update/update.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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":23,"context_line":"\t\"source.monogon.dev/metropolis/pkg/logtree\""},{"line_number":24,"context_line":")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"type Service struct {"},{"line_number":27,"context_line":"\tESPPath       string"},{"line_number":28,"context_line":"\tESPUUID       uuid.UUID"},{"line_number":29,"context_line":"\tESPPartNumber uint32"},{"line_number":30,"context_line":"\tLogger        logtree.LeveledLogger"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"type Slot int"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-go","patch_set":19,"id":"5671ff56_74bbfd66","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":1},"updated":"2023-07-24 13:21:52.000000000","message":"Add godocs for the type and all its exported fields.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":23,"context_line":"\t\"source.monogon.dev/metropolis/pkg/logtree\""},{"line_number":24,"context_line":")"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"type Service struct {"},{"line_number":27,"context_line":"\tESPPath       string"},{"line_number":28,"context_line":"\tESPUUID       uuid.UUID"},{"line_number":29,"context_line":"\tESPPartNumber uint32"},{"line_number":30,"context_line":"\tLogger        logtree.LeveledLogger"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"type Slot int"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-go","patch_set":19,"id":"983b80a2_92fc5e77","line":31,"range":{"start_line":26,"start_character":0,"end_line":31,"end_character":1},"in_reply_to":"5671ff56_74bbfd66","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"var slotRegexp \u003d regexp.MustCompile(`PARTLABEL\u003dMETROPOLIS-SYSTEM-([AB])`)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"func (s *Service) ProvideESP(path string, partUUID uuid.UUID, partNum uint32) {"},{"line_number":68,"context_line":"\ts.ESPPath \u003d path"},{"line_number":69,"context_line":"\ts.ESPPartNumber \u003d partNum"},{"line_number":70,"context_line":"\ts.ESPUUID \u003d partUUID"}],"source_content_type":"text/x-go","patch_set":19,"id":"61888969_67ddc114","line":67,"range":{"start_line":67,"start_character":18,"end_line":67,"end_character":28},"updated":"2023-07-24 13:21:52.000000000","message":"Godoc.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"var slotRegexp \u003d regexp.MustCompile(`PARTLABEL\u003dMETROPOLIS-SYSTEM-([AB])`)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"func (s *Service) ProvideESP(path string, partUUID uuid.UUID, partNum uint32) {"},{"line_number":68,"context_line":"\ts.ESPPath \u003d path"},{"line_number":69,"context_line":"\ts.ESPPartNumber \u003d partNum"},{"line_number":70,"context_line":"\ts.ESPUUID \u003d partUUID"}],"source_content_type":"text/x-go","patch_set":19,"id":"ed4d96a8_d9d2465d","line":67,"range":{"start_line":67,"start_character":18,"end_line":67,"end_character":28},"in_reply_to":"61888969_67ddc114","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":70,"context_line":"\ts.ESPUUID \u003d partUUID"},{"line_number":71,"context_line":"}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"func (s *Service) CurrentActiveSlot() Slot {"},{"line_number":74,"context_line":"\tcmdline, err :\u003d os.ReadFile(\"/proc/cmdline\")"},{"line_number":75,"context_line":"\tif err !\u003d nil {"},{"line_number":76,"context_line":"\t\treturn SlotInvalid"}],"source_content_type":"text/x-go","patch_set":19,"id":"b1125691_5841c8db","line":73,"range":{"start_line":73,"start_character":18,"end_line":73,"end_character":35},"updated":"2023-07-24 13:21:52.000000000","message":"Godoc. Also maybe call this CurrentlyRunningSlot to distinguish it further from the slot that might be active according to EFI?","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":70,"context_line":"\ts.ESPUUID \u003d partUUID"},{"line_number":71,"context_line":"}"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"func (s *Service) CurrentActiveSlot() Slot {"},{"line_number":74,"context_line":"\tcmdline, err :\u003d os.ReadFile(\"/proc/cmdline\")"},{"line_number":75,"context_line":"\tif err !\u003d nil {"},{"line_number":76,"context_line":"\t\treturn SlotInvalid"}],"source_content_type":"text/x-go","patch_set":19,"id":"eacebee5_595274b1","line":73,"range":{"start_line":73,"start_character":18,"end_line":73,"end_character":35},"in_reply_to":"b1125691_5841c8db","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":84,"context_line":"\t\treturn SlotA"},{"line_number":85,"context_line":"\tcase \"B\":"},{"line_number":86,"context_line":"\t\treturn SlotB"},{"line_number":87,"context_line":"\tdefault:"},{"line_number":88,"context_line":"\t\tpanic(\"unreachable\")"},{"line_number":89,"context_line":"\t}"},{"line_number":90,"context_line":"}"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-go","patch_set":19,"id":"a53ba04d_143bacbb","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":22},"updated":"2023-07-24 13:21:52.000000000","message":"Hmmm this isn\u0027t really unreachable. How about we return SlotInvalid here, or an error?","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"3afb8bcb4a5ac9ecf11cbc58565852f902f4b685","unresolved":false,"context_lines":[{"line_number":84,"context_line":"\t\treturn SlotA"},{"line_number":85,"context_line":"\tcase \"B\":"},{"line_number":86,"context_line":"\t\treturn SlotB"},{"line_number":87,"context_line":"\tdefault:"},{"line_number":88,"context_line":"\t\tpanic(\"unreachable\")"},{"line_number":89,"context_line":"\t}"},{"line_number":90,"context_line":"}"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-go","patch_set":19,"id":"d1e6a096_d6f85cef","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":22},"in_reply_to":"4110140c_a815c3fd","updated":"2023-07-25 14:40:17.000000000","message":"Ack","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":true,"context_lines":[{"line_number":84,"context_line":"\t\treturn SlotA"},{"line_number":85,"context_line":"\tcase \"B\":"},{"line_number":86,"context_line":"\t\treturn SlotB"},{"line_number":87,"context_line":"\tdefault:"},{"line_number":88,"context_line":"\t\tpanic(\"unreachable\")"},{"line_number":89,"context_line":"\t}"},{"line_number":90,"context_line":"}"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-go","patch_set":19,"id":"4110140c_a815c3fd","line":88,"range":{"start_line":87,"start_character":0,"end_line":88,"end_character":22},"in_reply_to":"a53ba04d_143bacbb","updated":"2023-07-25 11:46:13.000000000","message":"It is unreachable due to the regexp restricting valid values to [AB].","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"var bootVarRegexp \u003d regexp.MustCompile(`^Boot([0-9A-Fa-f]{4})$`)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"func (s *Service) getBootEntryIndices() (int, int, error) {"},{"line_number":95,"context_line":"\ta :\u003d -1"},{"line_number":96,"context_line":"\tb :\u003d -1"},{"line_number":97,"context_line":"\tvarNames, err :\u003d efivarfs.List(efivarfs.ScopeGlobal)"}],"source_content_type":"text/x-go","patch_set":19,"id":"246d81d9_6a4a8448","line":94,"range":{"start_line":94,"start_character":18,"end_line":94,"end_character":37},"updated":"2023-07-24 13:21:52.000000000","message":"It might be cleaner to refactor this into:\n\n```\nfunc (s *Service) getBootEntryIndices() (int, int, error) {\n    a, err :\u003d getOrMakeBootEntry(\"Metropolis Slot A\", osimage.EFIBootAPath)\n    // ...\n    b, err :\u003d getOrMakeBootEntry(\"Metropolis Slot B\", osimage.EFIBootBPath)\n    // ...\n    return a, b, err\n}\n```","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":true,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"var bootVarRegexp \u003d regexp.MustCompile(`^Boot([0-9A-Fa-f]{4})$`)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"func (s *Service) getBootEntryIndices() (int, int, error) {"},{"line_number":95,"context_line":"\ta :\u003d -1"},{"line_number":96,"context_line":"\tb :\u003d -1"},{"line_number":97,"context_line":"\tvarNames, err :\u003d efivarfs.List(efivarfs.ScopeGlobal)"}],"source_content_type":"text/x-go","patch_set":19,"id":"facd45ab_198fca3c","line":94,"range":{"start_line":94,"start_character":18,"end_line":94,"end_character":37},"in_reply_to":"246d81d9_6a4a8448","updated":"2023-07-25 11:46:13.000000000","message":"Didn\u0027t end up doing this exact thing due to not wanting to read too many EFI variables (which can slow down the system due to SMI interrupts), but refactored using the idea.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"3afb8bcb4a5ac9ecf11cbc58565852f902f4b685","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"var bootVarRegexp \u003d regexp.MustCompile(`^Boot([0-9A-Fa-f]{4})$`)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"func (s *Service) getBootEntryIndices() (int, int, error) {"},{"line_number":95,"context_line":"\ta :\u003d -1"},{"line_number":96,"context_line":"\tb :\u003d -1"},{"line_number":97,"context_line":"\tvarNames, err :\u003d efivarfs.List(efivarfs.ScopeGlobal)"}],"source_content_type":"text/x-go","patch_set":19,"id":"58d51294_d52fd731","line":94,"range":{"start_line":94,"start_character":18,"end_line":94,"end_character":37},"in_reply_to":"facd45ab_198fca3c","updated":"2023-07-25 14:40:17.000000000","message":"Ack","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"func openSystemSlot(slot Slot) (*blockdev.Device, error) {"},{"line_number":270,"context_line":"\tswitch slot {"},{"line_number":271,"context_line":"\tcase SlotInvalid:"},{"line_number":272,"context_line":"\t\treturn nil, errors.New(\"invalid slot identifier given\")"},{"line_number":273,"context_line":"\tcase SlotA:"},{"line_number":274,"context_line":"\t\treturn blockdev.Open(\"/dev/system-a\")"},{"line_number":275,"context_line":"\tcase SlotB:"}],"source_content_type":"text/x-go","patch_set":19,"id":"e99d143e_60a4d38d","line":272,"range":{"start_line":271,"start_character":0,"end_line":272,"end_character":57},"updated":"2023-07-24 13:21:52.000000000","message":"This is already handled by the default case.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"func openSystemSlot(slot Slot) (*blockdev.Device, error) {"},{"line_number":270,"context_line":"\tswitch slot {"},{"line_number":271,"context_line":"\tcase SlotInvalid:"},{"line_number":272,"context_line":"\t\treturn nil, errors.New(\"invalid slot identifier given\")"},{"line_number":273,"context_line":"\tcase SlotA:"},{"line_number":274,"context_line":"\t\treturn blockdev.Open(\"/dev/system-a\")"},{"line_number":275,"context_line":"\tcase SlotB:"}],"source_content_type":"text/x-go","patch_set":19,"id":"8ad60167_8a897982","line":272,"range":{"start_line":271,"start_character":0,"end_line":272,"end_character":57},"in_reply_to":"e99d143e_60a4d38d","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":291,"context_line":"\t// format which can be streamed."},{"line_number":292,"context_line":"\tvar bundleRaw bytes.Buffer"},{"line_number":293,"context_line":"\tb :\u003d backoff.NewExponentialBackOff()"},{"line_number":294,"context_line":"\terr :\u003d backoff.Retry(func() error {"},{"line_number":295,"context_line":"\t\tbundleRes, err :\u003d http.Get(bundleURL)"},{"line_number":296,"context_line":"\t\tif err !\u003d nil {"},{"line_number":297,"context_line":"\t\t\treturn fmt.Errorf(\"HTTP request failed: %v\", err)"}],"source_content_type":"text/x-go","patch_set":19,"id":"e1b23a05_d0db6709","line":294,"updated":"2023-07-24 13:21:52.000000000","message":"Factor this out into a separate function.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":291,"context_line":"\t// format which can be streamed."},{"line_number":292,"context_line":"\tvar bundleRaw bytes.Buffer"},{"line_number":293,"context_line":"\tb :\u003d backoff.NewExponentialBackOff()"},{"line_number":294,"context_line":"\terr :\u003d backoff.Retry(func() error {"},{"line_number":295,"context_line":"\t\tbundleRes, err :\u003d http.Get(bundleURL)"},{"line_number":296,"context_line":"\t\tif err !\u003d nil {"},{"line_number":297,"context_line":"\t\t\treturn fmt.Errorf(\"HTTP request failed: %v\", err)"}],"source_content_type":"text/x-go","patch_set":19,"id":"98a9d69a_56bbb73a","line":294,"in_reply_to":"e1b23a05_d0db6709","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\tvar bundleRaw bytes.Buffer"},{"line_number":293,"context_line":"\tb :\u003d backoff.NewExponentialBackOff()"},{"line_number":294,"context_line":"\terr :\u003d backoff.Retry(func() error {"},{"line_number":295,"context_line":"\t\tbundleRes, err :\u003d http.Get(bundleURL)"},{"line_number":296,"context_line":"\t\tif err !\u003d nil {"},{"line_number":297,"context_line":"\t\t\treturn fmt.Errorf(\"HTTP request failed: %v\", err)"},{"line_number":298,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":19,"id":"36a503c0_eea5e8a8","line":295,"range":{"start_line":295,"start_character":25,"end_line":295,"end_character":28},"updated":"2023-07-24 13:21:52.000000000","message":"Make this context aware, and make InstallBundle context aware.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":292,"context_line":"\tvar bundleRaw bytes.Buffer"},{"line_number":293,"context_line":"\tb :\u003d backoff.NewExponentialBackOff()"},{"line_number":294,"context_line":"\terr :\u003d backoff.Retry(func() error {"},{"line_number":295,"context_line":"\t\tbundleRes, err :\u003d http.Get(bundleURL)"},{"line_number":296,"context_line":"\t\tif err !\u003d nil {"},{"line_number":297,"context_line":"\t\t\treturn fmt.Errorf(\"HTTP request failed: %v\", err)"},{"line_number":298,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":19,"id":"367f0dfe_44f0307d","line":295,"range":{"start_line":295,"start_character":25,"end_line":295,"end_character":28},"in_reply_to":"36a503c0_eea5e8a8","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":341,"context_line":"\t}"},{"line_number":342,"context_line":"\ttargetSlot :\u003d activeSlot.Other()"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"\t// TODO: Disable slot boot entry (clear LOAD_OPTION_ACTIVE)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"\tsystemPart, err :\u003d openSystemSlot(targetSlot)"},{"line_number":347,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":19,"id":"54c2e01a_5447588a","line":344,"range":{"start_line":344,"start_character":4,"end_line":344,"end_character":8},"updated":"2023-07-24 13:21:52.000000000","message":"TODO(lorenz) or TODO(issue/xxxx)","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":true,"context_lines":[{"line_number":341,"context_line":"\t}"},{"line_number":342,"context_line":"\ttargetSlot :\u003d activeSlot.Other()"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"\t// TODO: Disable slot boot entry (clear LOAD_OPTION_ACTIVE)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"\tsystemPart, err :\u003d openSystemSlot(targetSlot)"},{"line_number":347,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":19,"id":"d48fb827_b17a3c98","line":344,"range":{"start_line":344,"start_character":4,"end_line":344,"end_character":8},"in_reply_to":"54c2e01a_5447588a","updated":"2023-07-25 11:46:13.000000000","message":"This is now implemented.","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"3afb8bcb4a5ac9ecf11cbc58565852f902f4b685","unresolved":false,"context_lines":[{"line_number":341,"context_line":"\t}"},{"line_number":342,"context_line":"\ttargetSlot :\u003d activeSlot.Other()"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"\t// TODO: Disable slot boot entry (clear LOAD_OPTION_ACTIVE)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"\tsystemPart, err :\u003d openSystemSlot(targetSlot)"},{"line_number":347,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":19,"id":"7a5af1a4_4a73c15f","line":344,"range":{"start_line":344,"start_character":4,"end_line":344,"end_character":8},"in_reply_to":"d48fb827_b17a3c98","updated":"2023-07-25 14:40:17.000000000","message":"Ack","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":371,"context_line":"\t\treturn fmt.Errorf(\"failed to write boot file: %w\", err)"},{"line_number":372,"context_line":"\t}"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"\t// TODO: Enable slot boot entry (set LOAD_OPTION_ACTIVE)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"\tif err :\u003d s.setNextBootSlot(targetSlot); err !\u003d nil {"},{"line_number":377,"context_line":"\t\treturn fmt.Errorf(\"failed to set NextBoot variable: %w\", err)"}],"source_content_type":"text/x-go","patch_set":19,"id":"78b29f94_55b56719","line":374,"range":{"start_line":374,"start_character":4,"end_line":374,"end_character":8},"updated":"2023-07-24 13:21:52.000000000","message":"TODO(lorenz) or TODO(issue/xxxx)","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":371,"context_line":"\t\treturn fmt.Errorf(\"failed to write boot file: %w\", err)"},{"line_number":372,"context_line":"\t}"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"\t// TODO: Enable slot boot entry (set LOAD_OPTION_ACTIVE)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"\tif err :\u003d s.setNextBootSlot(targetSlot); err !\u003d nil {"},{"line_number":377,"context_line":"\t\treturn fmt.Errorf(\"failed to set NextBoot variable: %w\", err)"}],"source_content_type":"text/x-go","patch_set":19,"id":"24769d41_a2dea546","line":374,"range":{"start_line":374,"start_character":4,"end_line":374,"end_character":8},"in_reply_to":"78b29f94_55b56719","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"3afb8bcb4a5ac9ecf11cbc58565852f902f4b685","unresolved":true,"context_lines":[{"line_number":361,"context_line":"\tbundleReq, err :\u003d http.NewRequestWithContext(ctx, \"GET\", bundleURL, nil)"},{"line_number":362,"context_line":"\tbundleRes, err :\u003d http.DefaultClient.Do(bundleReq)"},{"line_number":363,"context_line":"\tif err !\u003d nil {"},{"line_number":364,"context_line":"\t\treturn fmt.Errorf(\"HTTP request failed: %v\", err)"},{"line_number":365,"context_line":"\t}"},{"line_number":366,"context_line":"\tdefer bundleRes.Body.Close()"},{"line_number":367,"context_line":"\tswitch bundleRes.StatusCode {"}],"source_content_type":"text/x-go","patch_set":21,"id":"237bc1eb_3dea1ded","line":364,"range":{"start_line":364,"start_character":43,"end_line":364,"end_character":44},"updated":"2023-07-25 14:40:17.000000000","message":"```suggestion\n\t\treturn fmt.Errorf(\"HTTP request failed: %w\", err)\n```","commit_id":"041a75ced593666ee4ec26e53f09d363e03070eb"},{"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":"77adbcd0e750a22726719b2a9efd24d0a3525d80","unresolved":false,"context_lines":[{"line_number":361,"context_line":"\tbundleReq, err :\u003d http.NewRequestWithContext(ctx, \"GET\", bundleURL, nil)"},{"line_number":362,"context_line":"\tbundleRes, err :\u003d http.DefaultClient.Do(bundleReq)"},{"line_number":363,"context_line":"\tif err !\u003d nil {"},{"line_number":364,"context_line":"\t\treturn fmt.Errorf(\"HTTP request failed: %v\", err)"},{"line_number":365,"context_line":"\t}"},{"line_number":366,"context_line":"\tdefer bundleRes.Body.Close()"},{"line_number":367,"context_line":"\tswitch bundleRes.StatusCode {"}],"source_content_type":"text/x-go","patch_set":21,"id":"37df87fd_f7c05c86","line":364,"range":{"start_line":364,"start_character":43,"end_line":364,"end_character":44},"in_reply_to":"237bc1eb_3dea1ded","updated":"2023-07-25 19:17:43.000000000","message":"Done","commit_id":"041a75ced593666ee4ec26e53f09d363e03070eb"}],"metropolis/proto/api/management.proto":[{"author":{"_account_id":1000000,"name":"Leopold Schabel","display_name":"Leo","email":"leo@monogon.tech","username":"leo","avatars":[{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/98f8f79a6bb45adef37defa7ead8f3d2.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"36142929a330c6b7a2074dc0ccd658ed43cc1c3a","unresolved":true,"context_lines":[{"line_number":220,"context_line":"  }"},{"line_number":221,"context_line":"  // UpdateNode updates the node operating system to a new version."},{"line_number":222,"context_line":"  //"},{"line_number":223,"context_line":"  // Metropolis uses a side-by-side (A/B) update process. THis method installs"},{"line_number":224,"context_line":"  // the OS from the given bundle into the inactive slot, activates that slot"},{"line_number":225,"context_line":"  // and then (optionally) reboots to activate it."},{"line_number":226,"context_line":"  rpc UpdateNode(UpdateNodeRequest) returns (UpdateNodeResponse) {"}],"source_content_type":"text/x-protobuf","patch_set":13,"id":"8a91c408_a3c08267","line":223,"range":{"start_line":223,"start_character":58,"end_line":223,"end_character":62},"updated":"2023-07-19 12:16:29.000000000","message":"*This","commit_id":"de934a461be4ee8ad3b5f2ca9403e79927ccd9e4"},{"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":"ec0da18e5bf6f6b6bf80eda4b5c7ba7b00b5f1e4","unresolved":false,"context_lines":[{"line_number":220,"context_line":"  }"},{"line_number":221,"context_line":"  // UpdateNode updates the node operating system to a new version."},{"line_number":222,"context_line":"  //"},{"line_number":223,"context_line":"  // Metropolis uses a side-by-side (A/B) update process. THis method installs"},{"line_number":224,"context_line":"  // the OS from the given bundle into the inactive slot, activates that slot"},{"line_number":225,"context_line":"  // and then (optionally) reboots to activate it."},{"line_number":226,"context_line":"  rpc UpdateNode(UpdateNodeRequest) returns (UpdateNodeResponse) {"}],"source_content_type":"text/x-protobuf","patch_set":13,"id":"fb446f05_2f5d66c7","line":223,"range":{"start_line":223,"start_character":58,"end_line":223,"end_character":62},"in_reply_to":"8a91c408_a3c08267","updated":"2023-07-19 15:13:04.000000000","message":"Done","commit_id":"de934a461be4ee8ad3b5f2ca9403e79927ccd9e4"}],"third_party/efistub/patches/ab-slot-handling.patch":[{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":85,"context_line":"+        }"},{"line_number":86,"context_line":"+        Print(L\"Booting into Slot %c\\n\", slot);"},{"line_number":87,"context_line":"+        /* Replace METROPOLIS-SYSTEM-X with the correct slot */"},{"line_number":88,"context_line":"+        const char slot_identifier[] \u003d \"METROPOLIS-SYSTEM-X\\0\";"},{"line_number":89,"context_line":"+        const UINTN slot_id_len \u003d (sizeof(slot_identifier)/sizeof(char))-1;"},{"line_number":90,"context_line":"+        if (cmdline !\u003d NULL) {"},{"line_number":91,"context_line":"+                CHAR8 *rest_ptr \u003d cmdline;"}],"source_content_type":"text/x-diff","patch_set":19,"id":"e70c5911_fc214074","line":88,"range":{"start_line":88,"start_character":60,"end_line":88,"end_character":62},"updated":"2023-07-24 13:21:52.000000000","message":"C string literals contain null termination, no need to add it here.\n\nThat might also be the case for CHAR16 L\"\" literals above?","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":85,"context_line":"+        }"},{"line_number":86,"context_line":"+        Print(L\"Booting into Slot %c\\n\", slot);"},{"line_number":87,"context_line":"+        /* Replace METROPOLIS-SYSTEM-X with the correct slot */"},{"line_number":88,"context_line":"+        const char slot_identifier[] \u003d \"METROPOLIS-SYSTEM-X\\0\";"},{"line_number":89,"context_line":"+        const UINTN slot_id_len \u003d (sizeof(slot_identifier)/sizeof(char))-1;"},{"line_number":90,"context_line":"+        if (cmdline !\u003d NULL) {"},{"line_number":91,"context_line":"+                CHAR8 *rest_ptr \u003d cmdline;"}],"source_content_type":"text/x-diff","patch_set":19,"id":"58e409cb_a7d976f8","line":88,"range":{"start_line":88,"start_character":60,"end_line":88,"end_character":62},"in_reply_to":"e70c5911_fc214074","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2c8514ed2db323eecc17d3a8ff93e99a4355f19f","unresolved":true,"context_lines":[{"line_number":92,"context_line":"+                while((rest_ptr \u003d strstr(rest_ptr, slot_identifier))) {"},{"line_number":93,"context_line":"+                        rest_ptr[slot_id_len-2] \u003d slot;"},{"line_number":94,"context_line":"+                        rest_ptr +\u003d slot_id_len;"},{"line_number":95,"context_line":"+                }                "},{"line_number":96,"context_line":"+        }"},{"line_number":97,"context_line":"+"},{"line_number":98,"context_line":"         /* if we are not in secure boot mode, or none was provided, accept a custom command line and replace the built-in one */"}],"source_content_type":"text/x-diff","patch_set":19,"id":"32df870d_b7b781fd","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":34},"updated":"2023-07-24 13:21:52.000000000","message":"nit: whitespace","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"2fffdd0bc173226ba45e1a89489ee5e51d705e13","unresolved":false,"context_lines":[{"line_number":92,"context_line":"+                while((rest_ptr \u003d strstr(rest_ptr, slot_identifier))) {"},{"line_number":93,"context_line":"+                        rest_ptr[slot_id_len-2] \u003d slot;"},{"line_number":94,"context_line":"+                        rest_ptr +\u003d slot_id_len;"},{"line_number":95,"context_line":"+                }                "},{"line_number":96,"context_line":"+        }"},{"line_number":97,"context_line":"+"},{"line_number":98,"context_line":"         /* if we are not in secure boot mode, or none was provided, accept a custom command line and replace the built-in one */"}],"source_content_type":"text/x-diff","patch_set":19,"id":"d794fb58_efbb2be1","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":34},"in_reply_to":"32df870d_b7b781fd","updated":"2023-07-25 11:46:13.000000000","message":"Done","commit_id":"68c23b0a9758c34abd96c80094aa2a76c28153c0"},{"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":"3afb8bcb4a5ac9ecf11cbc58565852f902f4b685","unresolved":true,"context_lines":[{"line_number":86,"context_line":"+        Print(L\"Booting into Slot %c\\n\", slot);"},{"line_number":87,"context_line":"+        /* Replace METROPOLIS-SYSTEM-X with the correct slot */"},{"line_number":88,"context_line":"+        const char slot_identifier[] \u003d \"METROPOLIS-SYSTEM-X\";"},{"line_number":89,"context_line":"+        const UINTN slot_id_len \u003d (sizeof(slot_identifier)/sizeof(char));"},{"line_number":90,"context_line":"+        if (cmdline !\u003d NULL) {"},{"line_number":91,"context_line":"+                CHAR8 *rest_ptr \u003d cmdline;"},{"line_number":92,"context_line":"+                while((rest_ptr \u003d strstr(rest_ptr, slot_identifier))) {"}],"source_content_type":"text/x-diff","patch_set":21,"id":"93ce69f3_e051b8fa","line":89,"range":{"start_line":89,"start_character":21,"end_line":89,"end_character":32},"updated":"2023-07-25 14:40:17.000000000","message":"This is the length of slot_identifier including the null terminating byte - is that expected?","commit_id":"041a75ced593666ee4ec26e53f09d363e03070eb"},{"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":"77adbcd0e750a22726719b2a9efd24d0a3525d80","unresolved":false,"context_lines":[{"line_number":86,"context_line":"+        Print(L\"Booting into Slot %c\\n\", slot);"},{"line_number":87,"context_line":"+        /* Replace METROPOLIS-SYSTEM-X with the correct slot */"},{"line_number":88,"context_line":"+        const char slot_identifier[] \u003d \"METROPOLIS-SYSTEM-X\";"},{"line_number":89,"context_line":"+        const UINTN slot_id_len \u003d (sizeof(slot_identifier)/sizeof(char));"},{"line_number":90,"context_line":"+        if (cmdline !\u003d NULL) {"},{"line_number":91,"context_line":"+                CHAR8 *rest_ptr \u003d cmdline;"},{"line_number":92,"context_line":"+                while((rest_ptr \u003d strstr(rest_ptr, slot_identifier))) {"}],"source_content_type":"text/x-diff","patch_set":21,"id":"8e2e0b79_3196d755","line":89,"range":{"start_line":89,"start_character":21,"end_line":89,"end_character":32},"in_reply_to":"93ce69f3_e051b8fa","updated":"2023-07-25 19:17:43.000000000","message":"Done","commit_id":"041a75ced593666ee4ec26e53f09d363e03070eb"}]}
