)]}'
{"build/print-workspace-status.py":[{"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":"8acbff01c81ec5b34fa206e8e7a337efaf37691d","unresolved":true,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"if kubernetes_version[:1] !\u003d \"v\":"},{"line_number":243,"context_line":"    raise Exception(\"expected v prefix: \" + kubernetes_version)"},{"line_number":244,"context_line":"variables[\"STABLE_MONOGON_componentVersion_kubernetes\"] \u003d kubernetes_version[1:]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# Emit variables to stdout for consumption by Bazel and targets."},{"line_number":247,"context_line":"for key in sorted(variables.keys()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"0b01a503_05e2e5a3","line":244,"range":{"start_line":244,"start_character":11,"end_line":244,"end_character":53},"updated":"2025-05-14 16:49:57.000000000","message":"I would consider putting something like a consensus version here as well if you intend to use this to constrain updates. Other than K8s this is the main update constraint. I would not call it etcd as we might eventually migrate away from it, but something like consensus should do the trick.","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"},{"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":"4eef0973e3cb60de31b47370028be5ba4cbe1d4f","unresolved":true,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"if kubernetes_version[:1] !\u003d \"v\":"},{"line_number":243,"context_line":"    raise Exception(\"expected v prefix: \" + kubernetes_version)"},{"line_number":244,"context_line":"variables[\"STABLE_MONOGON_componentVersion_kubernetes\"] \u003d kubernetes_version[1:]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# Emit variables to stdout for consumption by Bazel and targets."},{"line_number":247,"context_line":"for key in sorted(variables.keys()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"10e2ac70_b52a21e7","line":244,"range":{"start_line":244,"start_character":11,"end_line":244,"end_character":53},"in_reply_to":"0b01a503_05e2e5a3","updated":"2025-05-15 15:00:07.000000000","message":"I would wait with adding such a version for now. We can still add it when we need it, and then we also know how it should look like. The Linux and Kubernetes versions are purely informational for now.","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"},{"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":"a75bbe55911c065061945e77055331af5ae9297a","unresolved":false,"context_lines":[{"line_number":241,"context_line":""},{"line_number":242,"context_line":"if kubernetes_version[:1] !\u003d \"v\":"},{"line_number":243,"context_line":"    raise Exception(\"expected v prefix: \" + kubernetes_version)"},{"line_number":244,"context_line":"variables[\"STABLE_MONOGON_componentVersion_kubernetes\"] \u003d kubernetes_version[1:]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"# Emit variables to stdout for consumption by Bazel and targets."},{"line_number":247,"context_line":"for key in sorted(variables.keys()):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da61135d_5f1338bb","line":244,"range":{"start_line":244,"start_character":11,"end_line":244,"end_character":53},"in_reply_to":"10e2ac70_b52a21e7","updated":"2025-06-03 12:29:06.000000000","message":"Acknowledged","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"}],"osbase/build/genproductinfo/main.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":"8acbff01c81ec5b34fa206e8e7a337efaf37691d","unresolved":true,"context_lines":[{"line_number":137,"context_line":"\t\t\"VERSION_ID\":  version,"},{"line_number":138,"context_line":"\t\t\"PRETTY_NAME\": *flagName + \" \" + version,"},{"line_number":139,"context_line":"\t}"},{"line_number":140,"context_line":"\tosReleaseContent, err :\u003d godotenv.Marshal(osReleaseVars)"},{"line_number":141,"context_line":"\tif err !\u003d nil {"},{"line_number":142,"context_line":"\t\tlog.Fatalf(\"Failed to encode os-release file: %v\", err)"},{"line_number":143,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"fbd7473c_75ceba17","line":140,"range":{"start_line":140,"start_character":26,"end_line":140,"end_character":34},"updated":"2025-05-14 16:49:57.000000000","message":"I assume you\u0027ve checked that that file indeed uses the same serialization rules as dotenv files, right?","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"},{"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":"4eef0973e3cb60de31b47370028be5ba4cbe1d4f","unresolved":false,"context_lines":[{"line_number":137,"context_line":"\t\t\"VERSION_ID\":  version,"},{"line_number":138,"context_line":"\t\t\"PRETTY_NAME\": *flagName + \" \" + version,"},{"line_number":139,"context_line":"\t}"},{"line_number":140,"context_line":"\tosReleaseContent, err :\u003d godotenv.Marshal(osReleaseVars)"},{"line_number":141,"context_line":"\tif err !\u003d nil {"},{"line_number":142,"context_line":"\t\tlog.Fatalf(\"Failed to encode os-release file: %v\", err)"},{"line_number":143,"context_line":"\t}"}],"source_content_type":"text/x-go","patch_set":1,"id":"9f792263_91b73a34","line":140,"range":{"start_line":140,"start_character":26,"end_line":140,"end_character":34},"in_reply_to":"fbd7473c_75ceba17","updated":"2025-05-15 15:00:07.000000000","message":"This is not new code, I moved it from osbase/build/genosrelease/main.go.","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"}],"osbase/oci/osimage/types.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":"8acbff01c81ec5b34fa206e8e7a337efaf37691d","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\tVersion string `json:\"version\"`"},{"line_number":38,"context_line":"\t// Variant of the product build. This contains the values of relevant flags"},{"line_number":39,"context_line":"\t// passed to the build command. Currently, this is the architecture, and the"},{"line_number":40,"context_line":"\t// debug and race flag if set. Example: \"x86_64-debug\""},{"line_number":41,"context_line":"\t//"},{"line_number":42,"context_line":"\t// This is an identifier, and not intended to be parsed. It must contain only"},{"line_number":43,"context_line":"\t// characters in the set [a-zA-Z0-9._-], such that it can be used as part of a"}],"source_content_type":"text/x-go","patch_set":1,"id":"86e2a8c7_cd8306d7","line":40,"range":{"start_line":40,"start_character":42,"end_line":40,"end_character":48},"updated":"2025-05-14 16:49:57.000000000","message":"Does it make sense to repeat the architecture here?","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"},{"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":"4eef0973e3cb60de31b47370028be5ba4cbe1d4f","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\tVersion string `json:\"version\"`"},{"line_number":38,"context_line":"\t// Variant of the product build. This contains the values of relevant flags"},{"line_number":39,"context_line":"\t// passed to the build command. Currently, this is the architecture, and the"},{"line_number":40,"context_line":"\t// debug and race flag if set. Example: \"x86_64-debug\""},{"line_number":41,"context_line":"\t//"},{"line_number":42,"context_line":"\t// This is an identifier, and not intended to be parsed. It must contain only"},{"line_number":43,"context_line":"\t// characters in the set [a-zA-Z0-9._-], such that it can be used as part of a"}],"source_content_type":"text/x-go","patch_set":1,"id":"ff191390_062b5659","line":40,"range":{"start_line":40,"start_character":42,"end_line":40,"end_character":48},"in_reply_to":"86e2a8c7_cd8306d7","updated":"2025-05-15 15:00:07.000000000","message":"The idea is that the variant contains all build flags and serves as an identifier. To avoid the duplication, I would rather remove the architecture field. The architecture can then be obtained by taking the first `-`-separated component of the variant. Is that ok for you?","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"},{"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":"a75bbe55911c065061945e77055331af5ae9297a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"\tVersion string `json:\"version\"`"},{"line_number":38,"context_line":"\t// Variant of the product build. This contains the values of relevant flags"},{"line_number":39,"context_line":"\t// passed to the build command. Currently, this is the architecture, and the"},{"line_number":40,"context_line":"\t// debug and race flag if set. Example: \"x86_64-debug\""},{"line_number":41,"context_line":"\t//"},{"line_number":42,"context_line":"\t// This is an identifier, and not intended to be parsed. It must contain only"},{"line_number":43,"context_line":"\t// characters in the set [a-zA-Z0-9._-], such that it can be used as part of a"}],"source_content_type":"text/x-go","patch_set":1,"id":"7f130429_6a8aa7f9","line":40,"range":{"start_line":40,"start_character":42,"end_line":40,"end_character":48},"in_reply_to":"ff191390_062b5659","updated":"2025-06-03 12:29:06.000000000","message":"Done","commit_id":"acad04b0099580d4235ef2a5d8afd050ff8cd24e"}]}
