)]}'
{"metropolis/node/core/network/static.go":[{"author":{"_account_id":1000038,"name":"Jan Schär","display_name":"Jan","email":"jan@monogon.tech","username":"jan","avatars":[{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"28830d73f6cee65a865489eccb77c9781843a246","unresolved":true,"context_lines":[{"line_number":311,"context_line":"\t\tmatchedDevices \u003d append(matchedDevices, d.dev)"},{"line_number":312,"context_line":"\t}"},{"line_number":313,"context_line":"\tif len(matchedDevices) \u003c\u003d int(it.Device.Index) {"},{"line_number":314,"context_line":"\t\tif it.Device.Index \u003d\u003d 0 {"},{"line_number":315,"context_line":"\t\t\tvar available []string"},{"line_number":316,"context_line":"\t\t\tfor _, d :\u003d range hostDevices {"},{"line_number":317,"context_line":"\t\t\t\thwAddr :\u003d d.dev.HardwareAddr"}],"source_content_type":"text/x-go","patch_set":1,"id":"1e72e816_95590226","line":314,"range":{"start_line":314,"start_character":5,"end_line":314,"end_character":25},"updated":"2025-07-07 12:51:43.000000000","message":"Change this to `len(matchedDevices) \u003d\u003d 0`, and move before the existing check instead of nesting it.","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"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":"6963624bbdb7bf6540dc5e42aee429210618a22e","unresolved":false,"context_lines":[{"line_number":311,"context_line":"\t\tmatchedDevices \u003d append(matchedDevices, d.dev)"},{"line_number":312,"context_line":"\t}"},{"line_number":313,"context_line":"\tif len(matchedDevices) \u003c\u003d int(it.Device.Index) {"},{"line_number":314,"context_line":"\t\tif it.Device.Index \u003d\u003d 0 {"},{"line_number":315,"context_line":"\t\t\tvar available []string"},{"line_number":316,"context_line":"\t\t\tfor _, d :\u003d range hostDevices {"},{"line_number":317,"context_line":"\t\t\t\thwAddr :\u003d d.dev.HardwareAddr"}],"source_content_type":"text/x-go","patch_set":1,"id":"29c29e31_1b95ad7b","line":314,"range":{"start_line":314,"start_character":5,"end_line":314,"end_character":25},"in_reply_to":"1e72e816_95590226","updated":"2025-07-08 09:34:10.000000000","message":"Done","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"author":{"_account_id":1000038,"name":"Jan Schär","display_name":"Jan","email":"jan@monogon.tech","username":"jan","avatars":[{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"28830d73f6cee65a865489eccb77c9781843a246","unresolved":true,"context_lines":[{"line_number":318,"context_line":"\t\t\t\tif len(d.dev.PermHWAddr) \u003e 0 {"},{"line_number":319,"context_line":"\t\t\t\t\thwAddr \u003d d.dev.PermHWAddr"},{"line_number":320,"context_line":"\t\t\t\t}"},{"line_number":321,"context_line":"\t\t\t\tavailable \u003d append(available, fmt.Sprintf(\"(%v,%v)\", hwAddr, d.driver))"},{"line_number":322,"context_line":"\t\t\t}"},{"line_number":323,"context_line":"\t\t\treturn nil, fmt.Errorf(\"no interfaces match (driver\u003d%v,hwaddr\u003d%v), have %s\", it.Device.Driver, it.Device.HardwareAddress, strings.Join(available, \", \"))"},{"line_number":324,"context_line":"\t\t} else {"}],"source_content_type":"text/x-go","patch_set":1,"id":"f00cd463_9a2a591a","line":321,"range":{"start_line":321,"start_character":57,"end_line":321,"end_character":73},"updated":"2025-07-07 12:51:43.000000000","message":"The order here should be the same as the `(driver\u003d%v,hwaddr\u003d%v)` below.","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"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":"6963624bbdb7bf6540dc5e42aee429210618a22e","unresolved":false,"context_lines":[{"line_number":318,"context_line":"\t\t\t\tif len(d.dev.PermHWAddr) \u003e 0 {"},{"line_number":319,"context_line":"\t\t\t\t\thwAddr \u003d d.dev.PermHWAddr"},{"line_number":320,"context_line":"\t\t\t\t}"},{"line_number":321,"context_line":"\t\t\t\tavailable \u003d append(available, fmt.Sprintf(\"(%v,%v)\", hwAddr, d.driver))"},{"line_number":322,"context_line":"\t\t\t}"},{"line_number":323,"context_line":"\t\t\treturn nil, fmt.Errorf(\"no interfaces match (driver\u003d%v,hwaddr\u003d%v), have %s\", it.Device.Driver, it.Device.HardwareAddress, strings.Join(available, \", \"))"},{"line_number":324,"context_line":"\t\t} else {"}],"source_content_type":"text/x-go","patch_set":1,"id":"a9edb3ee_b442566e","line":321,"range":{"start_line":321,"start_character":57,"end_line":321,"end_character":73},"in_reply_to":"f00cd463_9a2a591a","updated":"2025-07-08 09:34:10.000000000","message":"Done","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"author":{"_account_id":1000038,"name":"Jan Schär","display_name":"Jan","email":"jan@monogon.tech","username":"jan","avatars":[{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"28830d73f6cee65a865489eccb77c9781843a246","unresolved":true,"context_lines":[{"line_number":320,"context_line":"\t\t\t\t}"},{"line_number":321,"context_line":"\t\t\t\tavailable \u003d append(available, fmt.Sprintf(\"(%v,%v)\", hwAddr, d.driver))"},{"line_number":322,"context_line":"\t\t\t}"},{"line_number":323,"context_line":"\t\t\treturn nil, fmt.Errorf(\"no interfaces match (driver\u003d%v,hwaddr\u003d%v), have %s\", it.Device.Driver, it.Device.HardwareAddress, strings.Join(available, \", \"))"},{"line_number":324,"context_line":"\t\t} else {"},{"line_number":325,"context_line":"\t\t\treturn nil, fmt.Errorf(\"there are %d matching host devices but requested device index is %d\", len(matchedDevices), it.Device.Index)"},{"line_number":326,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"115fc4e6_15e22aee","line":323,"range":{"start_line":323,"start_character":30,"end_line":323,"end_character":40},"updated":"2025-07-07 12:51:43.000000000","message":"Here it\u0027s \"interfaces\", below it\u0027s \"host devices\". Please make the terminology consistent.","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"author":{"_account_id":1000038,"name":"Jan Schär","display_name":"Jan","email":"jan@monogon.tech","username":"jan","avatars":[{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"28830d73f6cee65a865489eccb77c9781843a246","unresolved":true,"context_lines":[{"line_number":320,"context_line":"\t\t\t\t}"},{"line_number":321,"context_line":"\t\t\t\tavailable \u003d append(available, fmt.Sprintf(\"(%v,%v)\", hwAddr, d.driver))"},{"line_number":322,"context_line":"\t\t\t}"},{"line_number":323,"context_line":"\t\t\treturn nil, fmt.Errorf(\"no interfaces match (driver\u003d%v,hwaddr\u003d%v), have %s\", it.Device.Driver, it.Device.HardwareAddress, strings.Join(available, \", \"))"},{"line_number":324,"context_line":"\t\t} else {"},{"line_number":325,"context_line":"\t\t\treturn nil, fmt.Errorf(\"there are %d matching host devices but requested device index is %d\", len(matchedDevices), it.Device.Index)"},{"line_number":326,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"87bdde57_bd652007","line":323,"range":{"start_line":323,"start_character":125,"end_line":323,"end_character":154},"updated":"2025-07-07 12:51:43.000000000","message":"The error message will look incomplete if there are no available devices. I would add another check `len(hostDevices) \u003d\u003d 0` which returns an error that there are no host devices.","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"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":"6963624bbdb7bf6540dc5e42aee429210618a22e","unresolved":false,"context_lines":[{"line_number":320,"context_line":"\t\t\t\t}"},{"line_number":321,"context_line":"\t\t\t\tavailable \u003d append(available, fmt.Sprintf(\"(%v,%v)\", hwAddr, d.driver))"},{"line_number":322,"context_line":"\t\t\t}"},{"line_number":323,"context_line":"\t\t\treturn nil, fmt.Errorf(\"no interfaces match (driver\u003d%v,hwaddr\u003d%v), have %s\", it.Device.Driver, it.Device.HardwareAddress, strings.Join(available, \", \"))"},{"line_number":324,"context_line":"\t\t} else {"},{"line_number":325,"context_line":"\t\t\treturn nil, fmt.Errorf(\"there are %d matching host devices but requested device index is %d\", len(matchedDevices), it.Device.Index)"},{"line_number":326,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"a5c2561a_267e8f72","line":323,"range":{"start_line":323,"start_character":30,"end_line":323,"end_character":40},"in_reply_to":"115fc4e6_15e22aee","updated":"2025-07-08 09:34:10.000000000","message":"Done","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"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":"85ef97c79e6b80b3f97cdd78f02c61804fd15d26","unresolved":false,"context_lines":[{"line_number":320,"context_line":"\t\t\t\t}"},{"line_number":321,"context_line":"\t\t\t\tavailable \u003d append(available, fmt.Sprintf(\"(%v,%v)\", hwAddr, d.driver))"},{"line_number":322,"context_line":"\t\t\t}"},{"line_number":323,"context_line":"\t\t\treturn nil, fmt.Errorf(\"no interfaces match (driver\u003d%v,hwaddr\u003d%v), have %s\", it.Device.Driver, it.Device.HardwareAddress, strings.Join(available, \", \"))"},{"line_number":324,"context_line":"\t\t} else {"},{"line_number":325,"context_line":"\t\t\treturn nil, fmt.Errorf(\"there are %d matching host devices but requested device index is %d\", len(matchedDevices), it.Device.Index)"},{"line_number":326,"context_line":"\t\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"ba0424c5_5c28a5b1","line":323,"range":{"start_line":323,"start_character":125,"end_line":323,"end_character":154},"in_reply_to":"87bdde57_bd652007","updated":"2025-07-08 09:34:31.000000000","message":"Done","commit_id":"cc0ca91a016b5e7d43dfe4aefb58c6516bf403cb"},{"author":{"_account_id":1000038,"name":"Jan Schär","display_name":"Jan","email":"jan@monogon.tech","username":"jan","avatars":[{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd0e7f48847aa0e46c8f361df2d6c26b.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5bf463adfc8b3c656cb8b1a349617d081cdb2861","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t\t}"},{"line_number":311,"context_line":"\t\tmatchedDevices \u003d append(matchedDevices, d.dev)"},{"line_number":312,"context_line":"\t}"},{"line_number":313,"context_line":"\tif len(matchedDevices) \u003c\u003d int(it.Device.Index) || it.Device.Index \u003c 0 {"},{"line_number":314,"context_line":"\t\treturn nil, fmt.Errorf(\"there are %d matching host devices but requested device index is %d\", len(matchedDevices), it.Device.Index)"},{"line_number":315,"context_line":"\t}"},{"line_number":316,"context_line":"\t// Return new Device stuct with empty LinkAttrs other than Index, which is"}],"source_content_type":"text/x-go","patch_set":2,"id":"800e555a_a9ab344e","side":"PARENT","line":313,"range":{"start_line":313,"start_character":51,"end_line":313,"end_character":70},"updated":"2025-07-08 09:41:17.000000000","message":"This check prevents a panic when the index is negative, keep it.","commit_id":"c4c89601ff800c421caea620d7c183c3c616bb46"},{"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":"0669e539a07e00e713764cd6c4a1058f420a73d7","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\t\t}"},{"line_number":311,"context_line":"\t\tmatchedDevices \u003d append(matchedDevices, d.dev)"},{"line_number":312,"context_line":"\t}"},{"line_number":313,"context_line":"\tif len(matchedDevices) \u003c\u003d int(it.Device.Index) || it.Device.Index \u003c 0 {"},{"line_number":314,"context_line":"\t\treturn nil, fmt.Errorf(\"there are %d matching host devices but requested device index is %d\", len(matchedDevices), it.Device.Index)"},{"line_number":315,"context_line":"\t}"},{"line_number":316,"context_line":"\t// Return new Device stuct with empty LinkAttrs other than Index, which is"}],"source_content_type":"text/x-go","patch_set":2,"id":"105afe4b_956aaf93","side":"PARENT","line":313,"range":{"start_line":313,"start_character":51,"end_line":313,"end_character":70},"in_reply_to":"800e555a_a9ab344e","updated":"2025-07-08 09:50:11.000000000","message":"Done","commit_id":"c4c89601ff800c421caea620d7c183c3c616bb46"}]}
