)]}'
{"metropolis/pkg/toposort/toposort.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":"dceebccbe1e2179fee49cc2c41c8015282aeee15","unresolved":true,"context_lines":[{"line_number":1,"context_line":"package toposort"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import \"errors\""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-go","patch_set":2,"id":"d67557fd_3e99d04d","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":16},"updated":"2023-03-16 17:27:29.000000000","message":"Move to //go/algorithm/toposort?","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"72942fe047abc5396029bc8156d168167c831002","unresolved":false,"context_lines":[{"line_number":1,"context_line":"package toposort"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import \"errors\""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-go","patch_set":2,"id":"fb62cc75_26272cb8","line":1,"range":{"start_line":1,"start_character":8,"end_line":1,"end_character":16},"in_reply_to":"d67557fd_3e99d04d","updated":"2023-03-16 18:49:50.000000000","message":"Done","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"dceebccbe1e2179fee49cc2c41c8015282aeee15","unresolved":true,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import \"errors\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"type outEdges[Node comparable] map[Node]bool"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"// Graph is a directed graph represented using an adjacency list."},{"line_number":8,"context_line":"type Graph[Node comparable] struct {"}],"source_content_type":"text/x-go","patch_set":2,"id":"52a47aa6_cdc7ccf4","line":5,"range":{"start_line":5,"start_character":14,"end_line":5,"end_character":18},"updated":"2023-03-16 17:27:29.000000000","message":"Let\u0027s settle on using single-letter type parameter names? So in this case, T or N.","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"72942fe047abc5396029bc8156d168167c831002","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"import \"errors\""},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"type outEdges[Node comparable] map[Node]bool"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"// Graph is a directed graph represented using an adjacency list."},{"line_number":8,"context_line":"type Graph[Node comparable] struct {"}],"source_content_type":"text/x-go","patch_set":2,"id":"a43db604_d9955b19","line":5,"range":{"start_line":5,"start_character":14,"end_line":5,"end_character":18},"in_reply_to":"52a47aa6_cdc7ccf4","updated":"2023-03-16 18:49:50.000000000","message":"Done","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"dceebccbe1e2179fee49cc2c41c8015282aeee15","unresolved":true,"context_lines":[{"line_number":9,"context_line":"\tnodes map[Node]outEdges[Node]"},{"line_number":10,"context_line":"}"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"func NewGraph[Node comparable]() *Graph[Node] {"},{"line_number":13,"context_line":"\treturn \u0026Graph[Node]{"},{"line_number":14,"context_line":"\t\tnodes: make(map[Node]outEdges[Node]),"},{"line_number":15,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"86ec3e59_f1ad5df0","line":12,"range":{"start_line":12,"start_character":5,"end_line":12,"end_character":13},"updated":"2023-03-16 17:27:29.000000000","message":"Can we make a zero/empty Graph just work instead? This would require adding if g.nodes checks in functions, but I think it would be much nicer for the end user.","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"72942fe047abc5396029bc8156d168167c831002","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\tnodes map[Node]outEdges[Node]"},{"line_number":10,"context_line":"}"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"func NewGraph[Node comparable]() *Graph[Node] {"},{"line_number":13,"context_line":"\treturn \u0026Graph[Node]{"},{"line_number":14,"context_line":"\t\tnodes: make(map[Node]outEdges[Node]),"},{"line_number":15,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"b207240c_b88e706e","line":12,"range":{"start_line":12,"start_character":5,"end_line":12,"end_character":13},"in_reply_to":"86ec3e59_f1ad5df0","updated":"2023-03-16 18:49:50.000000000","message":"Done","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"dceebccbe1e2179fee49cc2c41c8015282aeee15","unresolved":true,"context_lines":[{"line_number":59,"context_line":"\t\t\treturn ErrCycle"},{"line_number":60,"context_line":"\t\t}"},{"line_number":61,"context_line":"\t\tnodeVisitStack[n] \u003d true"},{"line_number":62,"context_line":"\t\tfor m :\u003d range g.nodes[n] {"},{"line_number":63,"context_line":"\t\t\tif err :\u003d visit(m); err !\u003d nil {"},{"line_number":64,"context_line":"\t\t\t\treturn err"},{"line_number":65,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"41751dbd_100ff90f","line":62,"range":{"start_line":62,"start_character":2,"end_line":62,"end_character":29},"updated":"2023-03-16 17:27:29.000000000","message":"```suggestion\n\t\t// For every edge going out of this node...\n\t\tfor m :\u003d range g.nodes[n] {\n```","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"72942fe047abc5396029bc8156d168167c831002","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\t\t\treturn ErrCycle"},{"line_number":60,"context_line":"\t\t}"},{"line_number":61,"context_line":"\t\tnodeVisitStack[n] \u003d true"},{"line_number":62,"context_line":"\t\tfor m :\u003d range g.nodes[n] {"},{"line_number":63,"context_line":"\t\t\tif err :\u003d visit(m); err !\u003d nil {"},{"line_number":64,"context_line":"\t\t\t\treturn err"},{"line_number":65,"context_line":"\t\t\t}"}],"source_content_type":"text/x-go","patch_set":2,"id":"1de131f2_a6d0608c","line":62,"range":{"start_line":62,"start_character":2,"end_line":62,"end_character":29},"in_reply_to":"41751dbd_100ff90f","updated":"2023-03-16 18:49:50.000000000","message":"Done","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"}],"metropolis/pkg/toposort/toposort_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":"dceebccbe1e2179fee49cc2c41c8015282aeee15","unresolved":true,"context_lines":[{"line_number":19,"context_line":"\tif err !\u003d nil {"},{"line_number":20,"context_line":"\t\tt.Fatal(err)"},{"line_number":21,"context_line":"\t}"},{"line_number":22,"context_line":"\tvalidateSolution(t, g, solution)"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"// Fuzzer can be run with"}],"source_content_type":"text/x-go","patch_set":2,"id":"393105fd_aba8c288","line":22,"range":{"start_line":22,"start_character":1,"end_line":22,"end_character":17},"updated":"2023-03-16 17:27:29.000000000","message":"The solution here is `[2 9 10 11 8 7 3 5]`. This seems to indicate we are flipping edge directions somewhere in the algorithm.","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"097840e18210ede187f59f854f5c442e68a5b1a0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\tif err !\u003d nil {"},{"line_number":20,"context_line":"\t\tt.Fatal(err)"},{"line_number":21,"context_line":"\t}"},{"line_number":22,"context_line":"\tvalidateSolution(t, g, solution)"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"// Fuzzer can be run with"}],"source_content_type":"text/x-go","patch_set":2,"id":"5e8c6798_3d8df3af","line":22,"range":{"start_line":22,"start_character":1,"end_line":22,"end_character":17},"in_reply_to":"3035bf3e_fa4dde97","updated":"2023-03-16 21:26:51.000000000","message":"Done","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"72942fe047abc5396029bc8156d168167c831002","unresolved":true,"context_lines":[{"line_number":19,"context_line":"\tif err !\u003d nil {"},{"line_number":20,"context_line":"\t\tt.Fatal(err)"},{"line_number":21,"context_line":"\t}"},{"line_number":22,"context_line":"\tvalidateSolution(t, g, solution)"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"// Fuzzer can be run with"}],"source_content_type":"text/x-go","patch_set":2,"id":"e2199e95_5483d9e7","line":22,"range":{"start_line":22,"start_character":1,"end_line":22,"end_character":17},"in_reply_to":"393105fd_aba8c288","updated":"2023-03-16 18:49:50.000000000","message":"I think this is a bit of a definition issue. My solution assumes edges represent dependencies, i.e. A -\u003e B indicates that A has a dependency on B. My code then outputs the valid order B, A. I could reverse the output of the algorithm, but pretty much every consumer will need to reverse it again or feed in reverse edges (i.e. if A depends on B the edge needs to go from B to A). Not sure what to do here.","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"},{"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":"3fd2344ae44e6ad3bf1bc34c506dc53b5b0e3c79","unresolved":true,"context_lines":[{"line_number":19,"context_line":"\tif err !\u003d nil {"},{"line_number":20,"context_line":"\t\tt.Fatal(err)"},{"line_number":21,"context_line":"\t}"},{"line_number":22,"context_line":"\tvalidateSolution(t, g, solution)"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"// Fuzzer can be run with"}],"source_content_type":"text/x-go","patch_set":2,"id":"3035bf3e_fa4dde97","line":22,"range":{"start_line":22,"start_character":1,"end_line":22,"end_character":17},"in_reply_to":"e2199e95_5483d9e7","updated":"2023-03-16 20:58:07.000000000","message":"Then please document it clearly in the godoc strings.","commit_id":"0df81d80b9a35ff5564888d57fc34ee3f5c694fe"}]}
