)]}'
{"metropolis/node/build/mkimage/osimage/osimage.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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":121,"context_line":"\tif err :\u003d rootInode.PlaceFile(strings.TrimPrefix(EFIBootAPath, \"/\"), params.EFIPayload); err !\u003d nil {"},{"line_number":122,"context_line":"\t\treturn nil, err"},{"line_number":123,"context_line":"\t}"},{"line_number":124,"context_line":"\t// Also place a copy of the boot file at the autodiscovery path. This will"},{"line_number":125,"context_line":"\t// always boot slot A."},{"line_number":126,"context_line":"\tif err :\u003d rootInode.PlaceFile(strings.TrimPrefix(EFIPayloadPath, \"/\"), params.ABLoader); err !\u003d nil {"},{"line_number":127,"context_line":"\t\treturn nil, err"},{"line_number":128,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"88c4cb9e_8b861ebb","line":125,"range":{"start_line":124,"start_character":66,"end_line":125,"end_character":23},"updated":"2023-10-05 13:21:28.000000000","message":"Not true anymore, right?","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":false,"context_lines":[{"line_number":121,"context_line":"\tif err :\u003d rootInode.PlaceFile(strings.TrimPrefix(EFIBootAPath, \"/\"), params.EFIPayload); err !\u003d nil {"},{"line_number":122,"context_line":"\t\treturn nil, err"},{"line_number":123,"context_line":"\t}"},{"line_number":124,"context_line":"\t// Also place a copy of the boot file at the autodiscovery path. This will"},{"line_number":125,"context_line":"\t// always boot slot A."},{"line_number":126,"context_line":"\tif err :\u003d rootInode.PlaceFile(strings.TrimPrefix(EFIPayloadPath, \"/\"), params.ABLoader); err !\u003d nil {"},{"line_number":127,"context_line":"\t\treturn nil, err"},{"line_number":128,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":7,"id":"e358f745_9e80f71d","line":125,"range":{"start_line":124,"start_character":66,"end_line":125,"end_character":23},"in_reply_to":"88c4cb9e_8b861ebb","updated":"2023-10-09 22:13:07.000000000","message":"Done","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"}],"metropolis/node/core/abloader/main.rs":[{"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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#![no_main]"},{"line_number":2,"context_line":"#![no_std]"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"extern crate alloc;"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"use alloc::vec::Vec;"},{"line_number":7,"context_line":"use prost::Message;"},{"line_number":8,"context_line":"use uefi::proto::device_path::build::media::FilePath;"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"5d1fb736_a55e556e","line":5,"range":{"start_line":3,"start_character":0,"end_line":5,"end_character":0},"updated":"2023-10-05 13:21:28.000000000","message":"Do we actually need `extern crate` these days?","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"fa64a16c0db81213b95eabfdae106f698b7821de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#![no_main]"},{"line_number":2,"context_line":"#![no_std]"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"extern crate alloc;"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"use alloc::vec::Vec;"},{"line_number":7,"context_line":"use prost::Message;"},{"line_number":8,"context_line":"use uefi::proto::device_path::build::media::FilePath;"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"db1f4395_1d110616","line":5,"range":{"start_line":3,"start_character":0,"end_line":5,"end_character":0},"in_reply_to":"30ab32f8_c4ada185","updated":"2023-10-10 11:21:59.000000000","message":"Ah, I keep messing it up between core and alloc. Alloc indeed still needs to be brought in in this strange way.","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#![no_main]"},{"line_number":2,"context_line":"#![no_std]"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"extern crate alloc;"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"use alloc::vec::Vec;"},{"line_number":7,"context_line":"use prost::Message;"},{"line_number":8,"context_line":"use uefi::proto::device_path::build::media::FilePath;"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"30ab32f8_c4ada185","line":5,"range":{"start_line":3,"start_character":0,"end_line":5,"end_character":0},"in_reply_to":"5d1fb736_a55e556e","updated":"2023-10-09 22:13:07.000000000","message":"This is not really an external crate, this is \"built-in\" magic.\n\n\u003e Note: Additional crates that ship with rustc, such as alloc, and test, are not automatically included with the --extern flag when using Cargo. They must be brought into scope with an extern crate declaration, even in the 2018 edition.","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"use alloc::vec::Vec;"},{"line_number":7,"context_line":"use prost::Message;"},{"line_number":8,"context_line":"use uefi::proto::device_path::build::media::FilePath;"},{"line_number":9,"context_line":"use uefi::proto::device_path::build::DevicePathBuilder;"},{"line_number":10,"context_line":"use uefi::proto::device_path::{DeviceSubType, DeviceType, LoadedImageDevicePath};"},{"line_number":11,"context_line":"use uefi::table::boot;"},{"line_number":12,"context_line":"use uefi::{prelude::*, CStr16};"},{"line_number":13,"context_line":"use uefi_services::println;"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"305f6fcb_c2b68ca7","line":10,"range":{"start_line":8,"start_character":0,"end_line":10,"end_character":81},"updated":"2023-10-05 13:21:28.000000000","message":"nit: turn this into a nice tree like\n\n```\nuse uefi::proto::device_path::{\n    build::{\n        media::FilePath,\n        DevicePathBuilder,\n    },\n    DeviceSubType, DeviceType, LoadedImageDevicePath,\n};\n```","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"use alloc::vec::Vec;"},{"line_number":7,"context_line":"use prost::Message;"},{"line_number":8,"context_line":"use uefi::proto::device_path::build::media::FilePath;"},{"line_number":9,"context_line":"use uefi::proto::device_path::build::DevicePathBuilder;"},{"line_number":10,"context_line":"use uefi::proto::device_path::{DeviceSubType, DeviceType, LoadedImageDevicePath};"},{"line_number":11,"context_line":"use uefi::table::boot;"},{"line_number":12,"context_line":"use uefi::{prelude::*, CStr16};"},{"line_number":13,"context_line":"use uefi_services::println;"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"5d201a94_695c859c","line":10,"range":{"start_line":8,"start_character":0,"end_line":10,"end_character":81},"in_reply_to":"305f6fcb_c2b68ca7","updated":"2023-10-09 22:13:07.000000000","message":"Done","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":13,"context_line":"use uefi_services::println;"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"extern crate abloader_proto;"},{"line_number":16,"context_line":"use abloader_proto::monogon::metropolis::node::core::abloader::{self, Slot};"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"const A_LOADER_PATH: \u0026CStr16 \u003d cstr16!(\"\\\\EFI\\\\metropolis\\\\boot-a.efi\");"},{"line_number":19,"context_line":"const B_LOADER_PATH: \u0026CStr16 \u003d cstr16!(\"\\\\EFI\\\\metropolis\\\\boot-b.efi\");"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"b1ade652_b1eb65dc","line":16,"range":{"start_line":16,"start_character":70,"end_line":16,"end_character":74},"updated":"2023-10-05 13:21:28.000000000","message":"nit: probably just use abloader::Slot everywhere (you\u0027re currently using both Slot and abloader::Slot).","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"use uefi_services::println;"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"extern crate abloader_proto;"},{"line_number":16,"context_line":"use abloader_proto::monogon::metropolis::node::core::abloader::{self, Slot};"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"const A_LOADER_PATH: \u0026CStr16 \u003d cstr16!(\"\\\\EFI\\\\metropolis\\\\boot-a.efi\");"},{"line_number":19,"context_line":"const B_LOADER_PATH: \u0026CStr16 \u003d cstr16!(\"\\\\EFI\\\\metropolis\\\\boot-b.efi\");"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"283ce5d1_e0a7e016","line":16,"range":{"start_line":16,"start_character":70,"end_line":16,"end_character":74},"in_reply_to":"b1ade652_b1eb65dc","updated":"2023-10-09 22:13:07.000000000","message":"Done","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":32,"context_line":"            .expect(\"image filesystem not available\");"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        let mut loader_data \u003d match esp_fs.read(\u0026LOADER_STATE_PATH) {"},{"line_number":35,"context_line":"            Ok(s) \u003d\u003e match abloader::AbLoaderData::decode(\u0026mut s.as_slice()) {"},{"line_number":36,"context_line":"                Ok(s) \u003d\u003e s,"},{"line_number":37,"context_line":"                Err(e) \u003d\u003e {"},{"line_number":38,"context_line":"                    println!("}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"708166c1_168d4fdc","line":35,"range":{"start_line":35,"start_character":21,"end_line":35,"end_character":26},"updated":"2023-10-05 13:21:28.000000000","message":"Embrace the Result monad^Wtype to not repeat yourself:\n\n```\nesp_fs.read(\u0026LOADER_STATE_PATH)\n    .map_err(|e| { format!(\"Unable to load A/B loader state: {}\", e); e })\n    .map(|d| abloader::AbLoaderData::decode(\u0026d.as_slice())\n    .map_err(|e| { format!(\"Unable to parse A/B loader state: {}\", e); e })\n    .unwrap_or_else(|e| { println!(e); AbLoaderData {\n        active_slot: abloader::Slot::A.into(),\n        next_slot: abloader::Slot::None.into(),\n    });\n```\n\n(alternatively, factor this out to a separate function which returns `Result\u003cAbLoaderData, StringOrCustomErrorType\u003e` and use `?`, ie. the Rust equivalent of the `do` notation :) )","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            .expect(\"image filesystem not available\");"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        let mut loader_data \u003d match esp_fs.read(\u0026LOADER_STATE_PATH) {"},{"line_number":35,"context_line":"            Ok(s) \u003d\u003e match abloader::AbLoaderData::decode(\u0026mut s.as_slice()) {"},{"line_number":36,"context_line":"                Ok(s) \u003d\u003e s,"},{"line_number":37,"context_line":"                Err(e) \u003d\u003e {"},{"line_number":38,"context_line":"                    println!("}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"aa757d00_e63994d9","line":35,"range":{"start_line":35,"start_character":21,"end_line":35,"end_character":26},"in_reply_to":"708166c1_168d4fdc","updated":"2023-10-09 22:13:07.000000000","message":"Done","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        let mut builder \u003d DevicePathBuilder::with_vec(\u0026mut storage);"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        for node in loaded_image_device_path.node_iter() {"},{"line_number":92,"context_line":"            if node.full_type() \u003d\u003d (DeviceType::MEDIA, DeviceSubType::MEDIA_FILE_PATH) {"},{"line_number":93,"context_line":"                break;"},{"line_number":94,"context_line":"            }"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            builder \u003d builder.push(\u0026node).unwrap();"},{"line_number":97,"context_line":"        }"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        builder \u003d builder"},{"line_number":100,"context_line":"            .push(\u0026FilePath {"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"4acf9cc1_8c1b2e8c","line":97,"range":{"start_line":91,"start_character":0,"end_line":97,"end_character":9},"updated":"2023-10-05 13:21:28.000000000","message":"This needs a comment explaining what\u0027s going on here.","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        let mut builder \u003d DevicePathBuilder::with_vec(\u0026mut storage);"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        for node in loaded_image_device_path.node_iter() {"},{"line_number":92,"context_line":"            if node.full_type() \u003d\u003d (DeviceType::MEDIA, DeviceSubType::MEDIA_FILE_PATH) {"},{"line_number":93,"context_line":"                break;"},{"line_number":94,"context_line":"            }"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            builder \u003d builder.push(\u0026node).unwrap();"},{"line_number":97,"context_line":"        }"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        builder \u003d builder"},{"line_number":100,"context_line":"            .push(\u0026FilePath {"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"2199d0e3_93b57bd1","line":97,"range":{"start_line":91,"start_character":0,"end_line":97,"end_character":9},"in_reply_to":"4acf9cc1_8c1b2e8c","updated":"2023-10-09 22:13:07.000000000","message":"Done","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"3d3965be974d9aa6f526e8b7aa531c398f195863","unresolved":true,"context_lines":[{"line_number":113,"context_line":"                from_boot_manager: true,"},{"line_number":114,"context_line":"            },"},{"line_number":115,"context_line":"        )"},{"line_number":116,"context_line":"        .expect(\"failed to load payload image\");"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    boot_services"},{"line_number":119,"context_line":"        .start_image(payload_image)"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"011e5a26_58955025","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":48},"updated":"2023-10-05 13:21:28.000000000","message":"We should probably make the presence of particular images part of the A/B slot decision logic above, so that we can fall back to the other slot if one is technically active but broken ie. missing the image.","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"b43c3cda8c00dfef467889ca39837ddfc382f99b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                from_boot_manager: true,"},{"line_number":114,"context_line":"            },"},{"line_number":115,"context_line":"        )"},{"line_number":116,"context_line":"        .expect(\"failed to load payload image\");"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    boot_services"},{"line_number":119,"context_line":"        .start_image(payload_image)"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"dd0b303b_800879f5","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":48},"in_reply_to":"011e5a26_58955025","updated":"2023-10-09 22:13:07.000000000","message":"Done","commit_id":"d2957989383f4ea7875b31fb5f02be2f16450966"},{"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":"fa64a16c0db81213b95eabfdae106f698b7821de","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        builder \u003d builder"},{"line_number":80,"context_line":"            .push(\u0026FilePath {"},{"line_number":81,"context_line":"                path_name: match slot {"},{"line_number":82,"context_line":"                    ValidSlot::A \u003d\u003e A_LOADER_PATH,"},{"line_number":83,"context_line":"                    ValidSlot::B \u003d\u003e B_LOADER_PATH,"},{"line_number":84,"context_line":"                },"},{"line_number":85,"context_line":"            })"}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"aa9207ae_baf37a82","line":82,"range":{"start_line":82,"start_character":20,"end_line":82,"end_character":50},"updated":"2023-10-10 11:21:59.000000000","message":"nit: implement `impl Slot { fn path(\u0026self) -\u003e \u0026\u0027static CStr16 }` to make the slot definition stuff a bit more self-contained.","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"4cf5025c305bf3b5a9030fac25c60b1b5b745fe9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        builder \u003d builder"},{"line_number":80,"context_line":"            .push(\u0026FilePath {"},{"line_number":81,"context_line":"                path_name: match slot {"},{"line_number":82,"context_line":"                    ValidSlot::A \u003d\u003e A_LOADER_PATH,"},{"line_number":83,"context_line":"                    ValidSlot::B \u003d\u003e B_LOADER_PATH,"},{"line_number":84,"context_line":"                },"},{"line_number":85,"context_line":"            })"}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"6412e2ed_1f0b77fe","line":82,"range":{"start_line":82,"start_character":20,"end_line":82,"end_character":50},"in_reply_to":"aa9207ae_baf37a82","updated":"2023-10-10 11:56:22.000000000","message":"Done","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"fa64a16c0db81213b95eabfdae106f698b7821de","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    let boot_slot_raw \u003d {"},{"line_number":108,"context_line":"        let mut esp_fs \u003d boot_services"},{"line_number":109,"context_line":"            .get_image_file_system(boot_services.image_handle())"},{"line_number":110,"context_line":"            .expect(\"image filesystem not available\");"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        let mut loader_data \u003d match read_loader_state(\u0026mut esp_fs) {"},{"line_number":113,"context_line":"            Ok(d) \u003d\u003e d, "}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"70512306_7a5f40f2","line":110,"range":{"start_line":110,"start_character":13,"end_line":110,"end_character":54},"updated":"2023-10-10 11:21:59.000000000","message":"How do the panics behave IRL? Have you tested that they actually work?","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"4cf5025c305bf3b5a9030fac25c60b1b5b745fe9","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    let boot_slot_raw \u003d {"},{"line_number":108,"context_line":"        let mut esp_fs \u003d boot_services"},{"line_number":109,"context_line":"            .get_image_file_system(boot_services.image_handle())"},{"line_number":110,"context_line":"            .expect(\"image filesystem not available\");"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        let mut loader_data \u003d match read_loader_state(\u0026mut esp_fs) {"},{"line_number":113,"context_line":"            Ok(d) \u003d\u003e d, "}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"a01a7b36_ec7ab937","line":110,"range":{"start_line":110,"start_character":13,"end_line":110,"end_character":54},"in_reply_to":"70512306_7a5f40f2","updated":"2023-10-10 11:56:22.000000000","message":"https://github.com/rust-osdev/uefi-rs/blob/main/uefi-services/src/lib.rs#L200\n\nBasically prints the message, waits for 10s and attempts to use EFI to shut down, otherwise it halts the CPU.","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"73c6f5af26fae78ad8ce0a97fda2b6c3d18e0ee8","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    let boot_slot_raw \u003d {"},{"line_number":108,"context_line":"        let mut esp_fs \u003d boot_services"},{"line_number":109,"context_line":"            .get_image_file_system(boot_services.image_handle())"},{"line_number":110,"context_line":"            .expect(\"image filesystem not available\");"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        let mut loader_data \u003d match read_loader_state(\u0026mut esp_fs) {"},{"line_number":113,"context_line":"            Ok(d) \u003d\u003e d, "}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"47cd6f31_d55c368e","line":110,"range":{"start_line":110,"start_character":13,"end_line":110,"end_character":54},"in_reply_to":"a01a7b36_ec7ab937","updated":"2023-10-10 15:14:49.000000000","message":"Acknowledged","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"fa64a16c0db81213b95eabfdae106f698b7821de","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            match load_slot_image(\u0026boot_slot.other(), boot_services) {"},{"line_number":153,"context_line":"                Ok(img) \u003d\u003e img,"},{"line_number":154,"context_line":"                Err(e) \u003d\u003e {"},{"line_number":155,"context_line":"                    panic!(\"Loading from both slots failed, second slot error: {}\", e);"},{"line_number":156,"context_line":"                },"},{"line_number":157,"context_line":"            }"},{"line_number":158,"context_line":"        }"}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"5492fde4_363e682d","line":155,"updated":"2023-10-10 11:21:59.000000000","message":"This if fine if the panic!() and println!() macros behave normally, ie. the previous println!() stays visible alongside the message of the panic!(). But please check if this works, otherwise the initial slot load error might get squashed by scrollback or other weird behaviour.","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"73c6f5af26fae78ad8ce0a97fda2b6c3d18e0ee8","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            match load_slot_image(\u0026boot_slot.other(), boot_services) {"},{"line_number":153,"context_line":"                Ok(img) \u003d\u003e img,"},{"line_number":154,"context_line":"                Err(e) \u003d\u003e {"},{"line_number":155,"context_line":"                    panic!(\"Loading from both slots failed, second slot error: {}\", e);"},{"line_number":156,"context_line":"                },"},{"line_number":157,"context_line":"            }"},{"line_number":158,"context_line":"        }"}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"d367e61c_b00a0fb8","line":155,"in_reply_to":"34560260_e4853541","updated":"2023-10-10 15:14:49.000000000","message":"Acknowledged","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"},{"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":"4cf5025c305bf3b5a9030fac25c60b1b5b745fe9","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            match load_slot_image(\u0026boot_slot.other(), boot_services) {"},{"line_number":153,"context_line":"                Ok(img) \u003d\u003e img,"},{"line_number":154,"context_line":"                Err(e) \u003d\u003e {"},{"line_number":155,"context_line":"                    panic!(\"Loading from both slots failed, second slot error: {}\", e);"},{"line_number":156,"context_line":"                },"},{"line_number":157,"context_line":"            }"},{"line_number":158,"context_line":"        }"}],"source_content_type":"text/x-rustsrc","patch_set":9,"id":"34560260_e4853541","line":155,"in_reply_to":"5492fde4_363e682d","updated":"2023-10-10 11:56:22.000000000","message":"The uefi-services panic handler uses println, so this should be fine.","commit_id":"d03d7b8ae425bbfa00e21fd8507a51a2b7a0d0b2"}]}
