)]}'
{"metropolis/node/core/cluster/cluster_register.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"04b468d30cddd573c3dea473ddce16b15df94960","unresolved":true,"context_lines":[{"line_number":59,"context_line":"\t\t}"},{"line_number":60,"context_line":"\t}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"\t// Validation passed, let\u0027s take the state lock on start working on registering"},{"line_number":63,"context_line":"\t// us into the cluster."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"\tstate, unlock :\u003d m.lock()"}],"source_content_type":"text/x-go","patch_set":1,"id":"a53ada8a_b18c155a","line":62,"range":{"start_line":62,"start_character":49,"end_line":62,"end_character":51},"updated":"2021-12-01 11:51:56.000000000","message":"and","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"},{"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":"106468279faff78d40ceb29ce92ce8bd438e0e5f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\t\t}"},{"line_number":60,"context_line":"\t}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"\t// Validation passed, let\u0027s take the state lock on start working on registering"},{"line_number":63,"context_line":"\t// us into the cluster."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"\tstate, unlock :\u003d m.lock()"}],"source_content_type":"text/x-go","patch_set":1,"id":"0a7edbff_97892f4c","line":62,"range":{"start_line":62,"start_character":49,"end_line":62,"end_character":51},"in_reply_to":"a53ada8a_b18c155a","updated":"2021-12-09 13:38:49.000000000","message":"Done","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"}],"metropolis/node/core/identity/certificates.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"04b468d30cddd573c3dea473ddce16b15df94960","unresolved":true,"context_lines":[{"line_number":73,"context_line":"\t}"},{"line_number":74,"context_line":"\t// Ensure ca certificate can sign certificates. This is lifted from"},{"line_number":75,"context_line":"\t// crypto/x509.Certificate.CheckSignatureFrom."},{"line_number":76,"context_line":"\tif ca.Version \u003d\u003d 3 \u0026\u0026 !ca.BasicConstraintsValid || ca.BasicConstraintsValid \u0026\u0026 !ca.IsCA {"},{"line_number":77,"context_line":"\t\treturn fmt.Errorf(\"not permitted to act as CA\")"},{"line_number":78,"context_line":"\t}"},{"line_number":79,"context_line":"\tif ca.KeyUsage !\u003d 0 \u0026\u0026 ca.KeyUsage\u0026x509.KeyUsageCertSign \u003d\u003d 0 {"}],"source_content_type":"text/x-go","patch_set":1,"id":"43a1b52f_d8b32f20","line":76,"range":{"start_line":76,"start_character":23,"end_line":76,"end_character":48},"updated":"2021-12-01 11:51:56.000000000","message":"I would drop the case where a certificate is considered a CA if it does not have basic constraints. That was introduced for backwards-compatibility 20 years ago when basic constraints were added. Considering this is part of our identity system which does not really interact with outside legacy CA systems I don\u0027t think it makes sense to keep it.","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"},{"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":"106468279faff78d40ceb29ce92ce8bd438e0e5f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"\t}"},{"line_number":74,"context_line":"\t// Ensure ca certificate can sign certificates. This is lifted from"},{"line_number":75,"context_line":"\t// crypto/x509.Certificate.CheckSignatureFrom."},{"line_number":76,"context_line":"\tif ca.Version \u003d\u003d 3 \u0026\u0026 !ca.BasicConstraintsValid || ca.BasicConstraintsValid \u0026\u0026 !ca.IsCA {"},{"line_number":77,"context_line":"\t\treturn fmt.Errorf(\"not permitted to act as CA\")"},{"line_number":78,"context_line":"\t}"},{"line_number":79,"context_line":"\tif ca.KeyUsage !\u003d 0 \u0026\u0026 ca.KeyUsage\u0026x509.KeyUsageCertSign \u003d\u003d 0 {"}],"source_content_type":"text/x-go","patch_set":1,"id":"761d76a9_fba05e64","line":76,"range":{"start_line":76,"start_character":23,"end_line":76,"end_character":48},"in_reply_to":"43a1b52f_d8b32f20","updated":"2021-12-09 13:38:49.000000000","message":"Makes sense, added some more aggressive checks.","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"},{"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":"bd2ef2ed5278fca2c4d0a59cfca991dff7608574","unresolved":true,"context_lines":[{"line_number":72,"context_line":"\t\treturn fmt.Errorf(\"not issued for ed25519 keypair\")"},{"line_number":73,"context_line":"\t}"},{"line_number":74,"context_line":"\t// Ensure CA certificate has the X.509 basic constraints extension. Everything"},{"line_number":75,"context_line":"\t// else is legacy, we might as well weed that out early. Ensure ca certificate"},{"line_number":76,"context_line":"\tif !ca.BasicConstraintsValid {"},{"line_number":77,"context_line":"\t\treturn fmt.Errorf(\"does not have basic constraints\")"},{"line_number":78,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"5b793fd8_a72331ee","line":75,"range":{"start_line":75,"start_character":58,"end_line":75,"end_character":79},"updated":"2021-12-09 14:37:33.000000000","message":"Typo","commit_id":"e884bab2cb430f44af6e711841f4b8c74e151e9d"},{"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":"e488c50c8d1be6b112ba0300e142b53b55e5acab","unresolved":false,"context_lines":[{"line_number":72,"context_line":"\t\treturn fmt.Errorf(\"not issued for ed25519 keypair\")"},{"line_number":73,"context_line":"\t}"},{"line_number":74,"context_line":"\t// Ensure CA certificate has the X.509 basic constraints extension. Everything"},{"line_number":75,"context_line":"\t// else is legacy, we might as well weed that out early. Ensure ca certificate"},{"line_number":76,"context_line":"\tif !ca.BasicConstraintsValid {"},{"line_number":77,"context_line":"\t\treturn fmt.Errorf(\"does not have basic constraints\")"},{"line_number":78,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":3,"id":"eb789266_5e7e731f","line":75,"range":{"start_line":75,"start_character":58,"end_line":75,"end_character":79},"in_reply_to":"5b793fd8_a72331ee","updated":"2021-12-09 16:07:33.000000000","message":"😭 Sorry.","commit_id":"e884bab2cb430f44af6e711841f4b8c74e151e9d"}],"metropolis/test/e2e/main_test.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"04b468d30cddd573c3dea473ddce16b15df94960","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"\t// Launch cluster."},{"line_number":82,"context_line":"\tclusterOptions :\u003d cluster.ClusterOptions{"},{"line_number":83,"context_line":"\t\tNumNodes: 2,"},{"line_number":84,"context_line":"\t}"},{"line_number":85,"context_line":"\tcluster, err :\u003d cluster.LaunchCluster(ctx, clusterOptions)"},{"line_number":86,"context_line":"\tif err !\u003d nil {"}],"source_content_type":"text/x-go","patch_set":1,"id":"5abc5890_e4dbb4d5","line":83,"range":{"start_line":83,"start_character":2,"end_line":83,"end_character":13},"updated":"2021-12-01 11:51:56.000000000","message":"Yay 🎉","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"}],"metropolis/test/launch/cluster/cluster.go":[{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"04b468d30cddd573c3dea473ddce16b15df94960","unresolved":true,"context_lines":[{"line_number":458,"context_line":"\t\t\t\t},"},{"line_number":459,"context_line":"\t\t\t\tSerialPort: os.Stdout,"},{"line_number":460,"context_line":"\t\t\t})"},{"line_number":461,"context_line":"\t\t\tdone[i] \u003c- err"},{"line_number":462,"context_line":"\t\t}(i)"},{"line_number":463,"context_line":"\t\tvar newNode *apb.Node"},{"line_number":464,"context_line":""}],"source_content_type":"text/x-go","patch_set":1,"id":"484ba969_fbfaa1f3","line":461,"range":{"start_line":461,"start_character":3,"end_line":461,"end_character":7},"updated":"2021-12-01 11:51:56.000000000","message":"The comment on line 339 says these should be closed, but here they aren\u0027t.","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"},{"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":"106468279faff78d40ceb29ce92ce8bd438e0e5f","unresolved":false,"context_lines":[{"line_number":458,"context_line":"\t\t\t\t},"},{"line_number":459,"context_line":"\t\t\t\tSerialPort: os.Stdout,"},{"line_number":460,"context_line":"\t\t\t})"},{"line_number":461,"context_line":"\t\t\tdone[i] \u003c- err"},{"line_number":462,"context_line":"\t\t}(i)"},{"line_number":463,"context_line":"\t\tvar newNode *apb.Node"},{"line_number":464,"context_line":""}],"source_content_type":"text/x-go","patch_set":1,"id":"13a81c17_00aecaa1","line":461,"range":{"start_line":461,"start_character":3,"end_line":461,"end_character":7},"in_reply_to":"484ba969_fbfaa1f3","updated":"2021-12-09 13:38:49.000000000","message":"Good catch. I\u0027ve removed the comment that mentions them being closed - after all, they\u0027ll be GCed regardless of state.","commit_id":"ad7a8cef9363d4842603f7e24a3558fa7edd74c6"}]}
