)]}'
{"metropolis/node/core/time/time.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":"5dffa681bb0bc123188da39302bb2b596fb12f33","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"func (s *Service) Run(ctx context.Context) error {"},{"line_number":33,"context_line":"\t// TODO(#72): Apply for a NTP pool vendor zone"},{"line_number":34,"context_line":"\tconst config \u003d `"},{"line_number":35,"context_line":"pool pool.ntp.org iburst"},{"line_number":36,"context_line":"bindcmdaddress /"},{"line_number":37,"context_line":"stratumweight 0.01"}],"source_content_type":"text/x-go","patch_set":1,"id":"dceaa6a6_1c87a959","line":34,"range":{"start_line":34,"start_character":7,"end_line":34,"end_character":13},"updated":"2021-09-01 13:09:54.000000000","message":"nit: I\u0027d slightly prefer a\n\n    config :\u003d strings.Join([]string{\n        \"pool pool.ntp.org iburst\",\n        \"bindcmdaddress /\",\n    }, \"\\n\")\n\nbut whatever, this is fine, I just have some pet peeve with that negative indent :).","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"},{"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":"4b8df9ea0cf1c97983b73732d139756e9b9d46ff","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"func (s *Service) Run(ctx context.Context) error {"},{"line_number":33,"context_line":"\t// TODO(#72): Apply for a NTP pool vendor zone"},{"line_number":34,"context_line":"\tconst config \u003d `"},{"line_number":35,"context_line":"pool pool.ntp.org iburst"},{"line_number":36,"context_line":"bindcmdaddress /"},{"line_number":37,"context_line":"stratumweight 0.01"}],"source_content_type":"text/x-go","patch_set":1,"id":"66e4c276_ede6f9c0","line":34,"range":{"start_line":34,"start_character":7,"end_line":34,"end_character":13},"in_reply_to":"dceaa6a6_1c87a959","updated":"2021-09-02 14:15:57.000000000","message":"Done","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"}],"metropolis/node/ids.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":"5dffa681bb0bc123188da39302bb2b596fb12f33","unresolved":true,"context_lines":[{"line_number":1,"context_line":"// Copyright 2020 The Monogon Project Authors."},{"line_number":2,"context_line":"//"},{"line_number":3,"context_line":"// SPDX-License-Identifier: Apache-2.0"},{"line_number":4,"context_line":"//"}],"source_content_type":"text/x-go","patch_set":1,"id":"3b7401a2_c593ea2b","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":17},"updated":"2021-09-01 13:09:54.000000000","message":"If you\u0027re going to add these headers, you should probably bump the year :).","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"},{"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":"4b8df9ea0cf1c97983b73732d139756e9b9d46ff","unresolved":false,"context_lines":[{"line_number":1,"context_line":"// Copyright 2020 The Monogon Project Authors."},{"line_number":2,"context_line":"//"},{"line_number":3,"context_line":"// SPDX-License-Identifier: Apache-2.0"},{"line_number":4,"context_line":"//"}],"source_content_type":"text/x-go","patch_set":1,"id":"a3f71eb5_306b8036","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":17},"in_reply_to":"3b7401a2_c593ea2b","updated":"2021-09-02 14:15:57.000000000","message":"Done","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"}],"third_party/chrony/patches/disable_defaults.patch":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5dffa681bb0bc123188da39302bb2b596fb12f33","unresolved":true,"context_lines":[{"line_number":7,"context_line":"   if (client_only) {"},{"line_number":8,"context_line":"     cmd_port \u003d ntp_port \u003d 0;"},{"line_number":9,"context_line":"-  } else {"},{"line_number":10,"context_line":"+  } /* else {"},{"line_number":11,"context_line":"     bind_cmd_path \u003d Strdup(DEFAULT_COMMAND_SOCKET);"},{"line_number":12,"context_line":"     pidfile \u003d Strdup(DEFAULT_PID_FILE);"},{"line_number":13,"context_line":"-  }"}],"source_content_type":"text/x-diff","patch_set":1,"id":"a2d525f0_3cc6357a","line":10,"updated":"2021-09-01 13:09:54.000000000","message":"Let\u0027s just remove these lines instead of commenting them out - makes for a cleaner diff, IMO (technically longer, but easier to follow).","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"},{"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":"4b8df9ea0cf1c97983b73732d139756e9b9d46ff","unresolved":false,"context_lines":[{"line_number":7,"context_line":"   if (client_only) {"},{"line_number":8,"context_line":"     cmd_port \u003d ntp_port \u003d 0;"},{"line_number":9,"context_line":"-  } else {"},{"line_number":10,"context_line":"+  } /* else {"},{"line_number":11,"context_line":"     bind_cmd_path \u003d Strdup(DEFAULT_COMMAND_SOCKET);"},{"line_number":12,"context_line":"     pidfile \u003d Strdup(DEFAULT_PID_FILE);"},{"line_number":13,"context_line":"-  }"}],"source_content_type":"text/x-diff","patch_set":1,"id":"adc9c043_2d92d15b","line":10,"in_reply_to":"a2d525f0_3cc6357a","updated":"2021-09-02 14:15:57.000000000","message":"Done","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"}],"third_party/chrony/patches/support_fixed_uids.patch":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5dffa681bb0bc123188da39302bb2b596fb12f33","unresolved":true,"context_lines":[{"line_number":34,"context_line":"   if (!user)"},{"line_number":35,"context_line":"     user \u003d CNF_GetUser();"},{"line_number":36,"context_line":" "},{"line_number":37,"context_line":"-  pw \u003d getpwnam(user);"},{"line_number":38,"context_line":"-  if (!pw)"},{"line_number":39,"context_line":"-    LOG_FATAL(\"Could not get user/group ID of %s\", user);"},{"line_number":40,"context_line":"+  if (uid !\u003d -1 \u0026\u0026 gid !\u003d -1) {"}],"source_content_type":"text/x-diff","patch_set":1,"id":"d3406e28_ba8e3ab5","line":37,"updated":"2021-09-01 13:09:54.000000000","message":"Open question: should we start generatig proper user information for the system (GO and C code) to consume? Can musl load this from elsewhere than just reading /etc/{passwd,groups}? Or should we just generate these files and be done with it?","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"},{"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":"9e5d18be9251e2f9cb50e6d60a080f817a2554aa","unresolved":false,"context_lines":[{"line_number":34,"context_line":"   if (!user)"},{"line_number":35,"context_line":"     user \u003d CNF_GetUser();"},{"line_number":36,"context_line":" "},{"line_number":37,"context_line":"-  pw \u003d getpwnam(user);"},{"line_number":38,"context_line":"-  if (!pw)"},{"line_number":39,"context_line":"-    LOG_FATAL(\"Could not get user/group ID of %s\", user);"},{"line_number":40,"context_line":"+  if (uid !\u003d -1 \u0026\u0026 gid !\u003d -1) {"}],"source_content_type":"text/x-diff","patch_set":1,"id":"559b4642_c15674be","line":37,"in_reply_to":"24f37b79_0cf8bc9f","updated":"2021-09-03 10:54:02.000000000","message":"Ack","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"},{"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":"4b8df9ea0cf1c97983b73732d139756e9b9d46ff","unresolved":true,"context_lines":[{"line_number":34,"context_line":"   if (!user)"},{"line_number":35,"context_line":"     user \u003d CNF_GetUser();"},{"line_number":36,"context_line":" "},{"line_number":37,"context_line":"-  pw \u003d getpwnam(user);"},{"line_number":38,"context_line":"-  if (!pw)"},{"line_number":39,"context_line":"-    LOG_FATAL(\"Could not get user/group ID of %s\", user);"},{"line_number":40,"context_line":"+  if (uid !\u003d -1 \u0026\u0026 gid !\u003d -1) {"}],"source_content_type":"text/x-diff","patch_set":1,"id":"24f37b79_0cf8bc9f","line":37,"in_reply_to":"d3406e28_ba8e3ab5","updated":"2021-09-02 14:15:57.000000000","message":"Meh. I initially actually had a passwd file, but the problem with that is that its contents are mostly unused/garbage. Our users do not have homedirs, shells, GECOS data or really anything that is not their UID/name mapping (and even the name is never shown anywhere and only used for resolution). It would then also need to be added to all Landlock policies as soon as we start technically enforcing the localstorage structure. Depending on how it\u0027s generated it is also unreferencable state, i.e. we cannot determine who\u0027s using a given UID (which is possible with them being Go constants).\n\nMusl (and Go) both read it from /etc/{passwd, groups}, see http://git.musl-libc.org/cgit/musl/tree/src/passwd/getpwent.c#n19\n\nSo no, we cannot do an application-specific (or dynamic) passwd file.","commit_id":"33c2b853876ec2a0e24a5418c87fb3d0f524ca73"}]}
