)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38595,"name":"Himawan Winarto","display_name":"Himawan Winarto","email":"himawan.winarto@canonical.com","username":"himax16"},"change_message_id":"6d6c7c578fc0a72f8877d351ef06fe87cf727e51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"91a6068a_37610924","updated":"2026-08-05 01:37:15.000000000","message":"Added more clarifications for the intentions","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"},{"author":{"_account_id":38595,"name":"Himawan Winarto","display_name":"Himawan Winarto","email":"himawan.winarto@canonical.com","username":"himax16"},"change_message_id":"269a1295351825c1f24ce8dcc4ddf5b8c9bcb80a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cf679171_42f1bed8","updated":"2026-10-19 15:17:16.000000000","message":"Bumping up on this review","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"}],"oslo_rootwrap/tests/test_rootwrap.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"15fa285b49c430fc7f90bdae90d7f57b0de966f2","unresolved":true,"context_lines":[{"line_number":232,"context_line":"        # kernel-resolved path."},{"line_number":233,"context_line":"        # This also handles symlinks to multi-call binaries such as in"},{"line_number":234,"context_line":"        # rust-coreutils."},{"line_number":235,"context_line":"        cat_path \u003d os.path.realpath(cat_path)"},{"line_number":236,"context_line":"        cat_cmd \u003d os.path.basename(cat_path)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        p \u003d subprocess.Popen("}],"source_content_type":"text/x-python","patch_set":1,"id":"40037d41_1ffed070","line":235,"range":{"start_line":235,"start_character":19,"end_line":235,"end_character":45},"updated":"2026-07-17 01:12:31.000000000","message":"Why do we need to call realpath if the file is not a link ?","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"},{"author":{"_account_id":38595,"name":"Himawan Winarto","display_name":"Himawan Winarto","email":"himawan.winarto@canonical.com","username":"himax16"},"change_message_id":"6d6c7c578fc0a72f8877d351ef06fe87cf727e51","unresolved":true,"context_lines":[{"line_number":232,"context_line":"        # kernel-resolved path."},{"line_number":233,"context_line":"        # This also handles symlinks to multi-call binaries such as in"},{"line_number":234,"context_line":"        # rust-coreutils."},{"line_number":235,"context_line":"        cat_path \u003d os.path.realpath(cat_path)"},{"line_number":236,"context_line":"        cat_cmd \u003d os.path.basename(cat_path)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        p \u003d subprocess.Popen("}],"source_content_type":"text/x-python","patch_set":1,"id":"5cfeb06e_c0bb00d8","line":235,"range":{"start_line":235,"start_character":19,"end_line":235,"end_character":45},"in_reply_to":"40037d41_1ffed070","updated":"2026-08-05 01:37:15.000000000","message":"It\u0027s not needed but it will be idempotent for non-link. Can revert the change to be conditional if needed.","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8da24e7e919908eda5cb7d838ef3445ae1aaa462","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # kernel-resolved path."},{"line_number":233,"context_line":"        # This also handles symlinks to multi-call binaries such as in"},{"line_number":234,"context_line":"        # rust-coreutils."},{"line_number":235,"context_line":"        cat_path \u003d os.path.realpath(cat_path)"},{"line_number":236,"context_line":"        cat_cmd \u003d os.path.basename(cat_path)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        p \u003d subprocess.Popen("}],"source_content_type":"text/x-python","patch_set":1,"id":"2f5f3739_01dd095e","line":235,"range":{"start_line":235,"start_character":19,"end_line":235,"end_character":45},"in_reply_to":"5cfeb06e_c0bb00d8","updated":"2026-10-19 16:02:54.000000000","message":"I may not make irrelevant changes, but have not strong opinion at the same time.","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"15fa285b49c430fc7f90bdae90d7f57b0de966f2","unresolved":true,"context_lines":[{"line_number":274,"context_line":"            # The command can be a symlink to a multi-call binary outside the"},{"line_number":275,"context_line":"            # directory of the command, so use the resolved executable dir."},{"line_number":276,"context_line":"            usercmd \u003d [\u0027kill\u0027, str(p.pid)]"},{"line_number":277,"context_line":"            with fixtures.EnvironmentVariable("},{"line_number":278,"context_line":"                \"PATH\", os.path.dirname(cat_path)"},{"line_number":279,"context_line":"            ):"},{"line_number":280,"context_line":"                self.assertTrue(f.match(usercmd))"},{"line_number":281,"context_line":"            # Filter shouldn\u0027t be able to find binary in $PATH, so fail"},{"line_number":282,"context_line":"            with fixtures.EnvironmentVariable(\"PATH\", \"/foo:/bar\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"202a5f32_fa74f0f7","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":14},"updated":"2026-07-17 01:12:31.000000000","message":"I\u0027m concerned this doesn\u0027t simulate the real world usage. Do you mind explaining why we need this ?","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"},{"author":{"_account_id":38595,"name":"Himawan Winarto","display_name":"Himawan Winarto","email":"himawan.winarto@canonical.com","username":"himax16"},"change_message_id":"6d6c7c578fc0a72f8877d351ef06fe87cf727e51","unresolved":true,"context_lines":[{"line_number":274,"context_line":"            # The command can be a symlink to a multi-call binary outside the"},{"line_number":275,"context_line":"            # directory of the command, so use the resolved executable dir."},{"line_number":276,"context_line":"            usercmd \u003d [\u0027kill\u0027, str(p.pid)]"},{"line_number":277,"context_line":"            with fixtures.EnvironmentVariable("},{"line_number":278,"context_line":"                \"PATH\", os.path.dirname(cat_path)"},{"line_number":279,"context_line":"            ):"},{"line_number":280,"context_line":"                self.assertTrue(f.match(usercmd))"},{"line_number":281,"context_line":"            # Filter shouldn\u0027t be able to find binary in $PATH, so fail"},{"line_number":282,"context_line":"            with fixtures.EnvironmentVariable(\"PATH\", \"/foo:/bar\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"2a57a44c_ad150a37","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":14},"in_reply_to":"202a5f32_fa74f0f7","updated":"2026-08-05 01:37:15.000000000","message":"With the rust coreutils, the `cat` command is symlink to `/usr/lib/cargo/bin/coreutils/cat` which is not included in `$PATH`. This will ensure that the filter can find the binary in `$PATH`.","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8da24e7e919908eda5cb7d838ef3445ae1aaa462","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            # The command can be a symlink to a multi-call binary outside the"},{"line_number":275,"context_line":"            # directory of the command, so use the resolved executable dir."},{"line_number":276,"context_line":"            usercmd \u003d [\u0027kill\u0027, str(p.pid)]"},{"line_number":277,"context_line":"            with fixtures.EnvironmentVariable("},{"line_number":278,"context_line":"                \"PATH\", os.path.dirname(cat_path)"},{"line_number":279,"context_line":"            ):"},{"line_number":280,"context_line":"                self.assertTrue(f.match(usercmd))"},{"line_number":281,"context_line":"            # Filter shouldn\u0027t be able to find binary in $PATH, so fail"},{"line_number":282,"context_line":"            with fixtures.EnvironmentVariable(\"PATH\", \"/foo:/bar\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b45c80de_14c7487a","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":14},"in_reply_to":"2a57a44c_ad150a37","updated":"2026-10-19 16:02:54.000000000","message":"OK, thanks. I wonder if we want to avoid patching PATH when unnecessary but that may not be quite mandatory here.","commit_id":"03c8f2551c3b20eebf8d3ed467c2f27ad1a0fdac"}]}
