)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f79f7ff125f7fb43c2ea0318495ffe37102f9c5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"950872e3_be96f974","updated":"2026-04-28 07:07:47.000000000","message":"recheck u-c fix merged","commit_id":"4e1121901a5f883f10acb85069e328142540bd9a"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"bcf320e9d31e7879853f440b256fdb06adf382d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c164dd3b_9c29b9b4","updated":"2026-04-29 17:30:37.000000000","message":"minor stuff but LGTM otherwise","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"bd4f9dbab52e8ae75f66724debd3dc1c3ca60274","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"777c4556_b461ee60","updated":"2026-04-29 06:13:13.000000000","message":"recheck more unstable mariadb jobs","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"80426395e638f3698795cfa06d2e37aba29a68ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d7c43881_1fb6ffc8","updated":"2026-04-28 15:32:30.000000000","message":"recheck noble upgrade unrelated issue (toolbox race condition)","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f88519863f078676cc3c4461115262e4885e0245","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4d825d3c_666bda06","updated":"2026-04-28 18:44:54.000000000","message":"recheck unrelated failures","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"d05514bbe32167e7b099f40823a3c4c69c522ea8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b29d4cb1_5e58b9b5","updated":"2026-05-04 09:38:55.000000000","message":"recheck","commit_id":"93e50d69f62c0dbda13f2270d76848351d452805"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"849240ff36e687865a7b7122f547d2cff230dd20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1789b157_b5ae80c7","updated":"2026-05-05 04:06:14.000000000","message":"recheck","commit_id":"a460d9986ae92354d0b2e5049aedbaa5ac4bf1c3"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"b5b61a2e8288d931c62270ecc1bc5e09e57cab8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f953929d_60ba4543","updated":"2026-05-05 07:49:55.000000000","message":"recheck","commit_id":"a460d9986ae92354d0b2e5049aedbaa5ac4bf1c3"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"63f8f51d1e5a0c5f07f5bf292f1076ec37e3da45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9911b63b_fef7b5ab","updated":"2026-05-04 17:26:47.000000000","message":"recheck trixie has a bad day","commit_id":"a460d9986ae92354d0b2e5049aedbaa5ac4bf1c3"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"b36fd0b68c26eb93e4d7793a275f821452f8b9b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"753d50c0_13f68921","updated":"2026-05-05 14:35:47.000000000","message":"recheck","commit_id":"33c0e26e8a0290f0b6d647bb67e18a4f500907fc"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"0c76280c3102f16f25284687e2198a88842593b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b0b7afd1_a52b9b2d","updated":"2026-05-05 17:26:48.000000000","message":"recheck","commit_id":"33c0e26e8a0290f0b6d647bb67e18a4f500907fc"}],"docker/base/set_configs.py":[{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"bcf320e9d31e7879853f440b256fdb06adf382d1","unresolved":true,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    for data in config.get(\u0027directories\u0027, list()):"},{"line_number":277,"context_line":"        if not set(data.keys()) \u003e\u003d required_dir_keys:"},{"line_number":278,"context_line":"            message \u003d (\u0027directories config is missing required keys: %s\u0027"},{"line_number":279,"context_line":"                       % required_dir_keys)"},{"line_number":280,"context_line":"            raise InvalidConfig(message)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"2d47067d_0c0a448e","line":279,"range":{"start_line":278,"start_character":11,"end_line":279,"end_character":43},"updated":"2026-04-29 17:30:37.000000000","message":"```suggestion\n            message \u003d (\u0027directories config is missing required keys: %s\u0027\n                       % (required_dir_keys - set(data.keys())))\n```","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"de30deebe444f0d88ed30ec1e1bf134104817690","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    for data in config.get(\u0027directories\u0027, list()):"},{"line_number":277,"context_line":"        if not set(data.keys()) \u003e\u003d required_dir_keys:"},{"line_number":278,"context_line":"            message \u003d (\u0027directories config is missing required keys: %s\u0027"},{"line_number":279,"context_line":"                       % required_dir_keys)"},{"line_number":280,"context_line":"            raise InvalidConfig(message)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"426c99e4_1cf79ee6","line":279,"range":{"start_line":278,"start_character":11,"end_line":279,"end_character":43},"in_reply_to":"2d47067d_0c0a448e","updated":"2026-04-30 04:52:14.000000000","message":"Fix applied.","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"bcf320e9d31e7879853f440b256fdb06adf382d1","unresolved":true,"context_lines":[{"line_number":347,"context_line":"    LOG.info(\u0027Creating directories\u0027)"},{"line_number":348,"context_line":"    for data in config[\u0027directories\u0027]:"},{"line_number":349,"context_line":"        path \u003d data[\u0027path\u0027]"},{"line_number":350,"context_line":"        if not os.path.exists(path):"},{"line_number":351,"context_line":"            LOG.info(\u0027Creating directory %s\u0027, path)"},{"line_number":352,"context_line":"            os.makedirs(path)"},{"line_number":353,"context_line":"        handle_permissions({\u0027permissions\u0027: [data]})"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"056733a4_280cd191","line":352,"range":{"start_line":350,"start_character":0,"end_line":352,"end_character":29},"updated":"2026-04-29 17:30:37.000000000","message":"toctou race between exists() check and makedirs() call.\n\ncan probbly get away with `os.makedirs(path, exist_ok\u003dTrue)`\n\nalso we don\u0027t check that the path is actually a dir, we should probbly raise if that\u0027s not the case","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f62dd2cb818a6d044c496af9281bf1b2e47e0e52","unresolved":false,"context_lines":[{"line_number":347,"context_line":"    LOG.info(\u0027Creating directories\u0027)"},{"line_number":348,"context_line":"    for data in config[\u0027directories\u0027]:"},{"line_number":349,"context_line":"        path \u003d data[\u0027path\u0027]"},{"line_number":350,"context_line":"        if not os.path.exists(path):"},{"line_number":351,"context_line":"            LOG.info(\u0027Creating directory %s\u0027, path)"},{"line_number":352,"context_line":"            os.makedirs(path)"},{"line_number":353,"context_line":"        handle_permissions({\u0027permissions\u0027: [data]})"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"8b9b3712_15a1b891","line":352,"range":{"start_line":350,"start_character":0,"end_line":352,"end_character":29},"in_reply_to":"056733a4_280cd191","updated":"2026-04-30 04:58:17.000000000","message":"Done","commit_id":"efa2fdfc89490c507dd659ccdace99dd1cdfc742"}]}
