)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Stephen Finucane \u003csfinucan@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-09-22 17:08:21 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"privsep: Convert \u0027os_brick.caches.opencas\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I4fec9d99911e47d9c3f225d188407af961acc7d3"},{"line_number":10,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ea6c7665_1fa30031","line":7,"updated":"2026-09-24 13:28:34.000000000","message":"Please add a sentence about the user-visible change: ``CacheManager`` and ``OpenCASEngine`` no longer take ``root_helper`` (deprecated, warns), and ``CacheEngineBase`` no longer stores ``_root_helper``.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Stephen Finucane \u003csfinucan@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-09-22 17:08:21 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"privsep: Convert \u0027os_brick.caches.opencas\u0027"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I4fec9d99911e47d9c3f225d188407af961acc7d3"},{"line_number":10,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"459d66f9_2fbea410","line":7,"in_reply_to":"ea6c7665_1fa30031","updated":"2026-09-24 17:35:19.000000000","message":"Done","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"c055b8621ad778dda63ece8dc5ff59f7f98a7025","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9227e54b_4b623cfe","updated":"2026-02-18 15:05:28.000000000","message":"recheck","commit_id":"d78b2902244dd1d338a5787fa81eac81e01359ea"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5b8c3b6d_f38ddb38","updated":"2026-09-24 13:28:34.000000000","message":"Looks correct: the ``casadm -L`` parsing is a faithful move and the new privileged tests cover Running/Inactive rows and both \"not found\" paths. Two small asks (release note, deprecation test) and a few nits inline. Happy to +1 once the parent is fixed, since this depends on it.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3064292517184dfcfa1948b08152be17c20a62fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"11bcf245_931b42bc","updated":"2026-09-23 14:09:38.000000000","message":"recheck unrelated failure","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"947bba047ddf2c4d2906d1f577817e12c82c1e6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"e1938ea0_3be26233","updated":"2026-09-24 18:14:29.000000000","message":"Looks good. A coupe of leftovers though","commit_id":"e8279339461ed498fb77e523290f0725ad80955b"}],"os_brick/caches/__init__.py":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        **kwargs,"},{"line_number":57,"context_line":"    ):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if root_helper !\u003d _NO_ARG_SENTINEL:"},{"line_number":60,"context_line":"            debtcollector.deprecate("},{"line_number":61,"context_line":"                \"The \u0027root_helper\u0027 argument is no longer used and will be \""},{"line_number":62,"context_line":"                \"removed in a future release: please drop this argument.\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ff568ac3_0505a669","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":43},"updated":"2026-09-24 13:28:34.000000000","message":"This deprecation has no release note. Please add one mirroring the parent\u0027s ``upgrade`` section, including that out-of-tree ``CacheEngineBase`` subclasses lose ``self._root_helper``.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        **kwargs,"},{"line_number":57,"context_line":"    ):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        if root_helper !\u003d _NO_ARG_SENTINEL:"},{"line_number":60,"context_line":"            debtcollector.deprecate("},{"line_number":61,"context_line":"                \"The \u0027root_helper\u0027 argument is no longer used and will be \""},{"line_number":62,"context_line":"                \"removed in a future release: please drop this argument.\""}],"source_content_type":"text/x-python","patch_set":12,"id":"27e46ecd_80dc4fe2","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":43},"in_reply_to":"ff568ac3_0505a669","updated":"2026-09-24 17:35:19.000000000","message":"Done","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"1fd099e6a3ba42a10cf01d1d5910d41e1453fb87","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            # Handle legacy positional callers, e.g.:"},{"line_number":54,"context_line":"            #   CacheManager(\u0027sudo\u0027, connection_info)"},{"line_number":55,"context_line":"            warnings.warn("},{"line_number":56,"context_line":"                \"Passing arguments positionally is deprecated. Use keyword-only \""},{"line_number":57,"context_line":"                \"arguments instead.\","},{"line_number":58,"context_line":"                DeprecationWarning,"},{"line_number":59,"context_line":"                stacklevel\u003d2,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7ea6e166_2c249dd8","line":56,"updated":"2026-09-24 19:48:18.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"e8279339461ed498fb77e523290f0725ad80955b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"947bba047ddf2c4d2906d1f577817e12c82c1e6c","unresolved":true,"context_lines":[{"line_number":65,"context_line":"            # we use pop without a default since we *want* things to explode"},{"line_number":66,"context_line":"            connection_info \u003d kwargs.pop(\u0027connection_info\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        if \u0027root_helper\u0027 in kwargs:"},{"line_number":69,"context_line":"            warnings.warn("},{"line_number":70,"context_line":"                \"The \u0027root_helper\u0027 argument is no longer used and will be \""},{"line_number":71,"context_line":"                \"removed in a future release: remove this argument.\","}],"source_content_type":"text/x-python","patch_set":13,"id":"502e0c81_7f8b5281","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":35},"updated":"2026-09-24 18:14:29.000000000","message":"Nothing asserts that this warning, or the positional-args warning at 52, actually fires. The existing `os_brick/tests/caches/test_init.py`` (not touched by this change) still constructs ``CacheManager(root_helper\u003dNone, ...)`` in seven places, so every test run emits this DeprecationWarning without checking it. Please drop ``root_helper`` from those constructions and add one test here that asserts both warnings with ``assertWarnsRegex``, the way the encryptor tests did in PS12.","commit_id":"e8279339461ed498fb77e523290f0725ad80955b"}],"os_brick/caches/opencas.py":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class OpenCASEngine(caches.CacheEngineBase):"},{"line_number":26,"context_line":"    def __init__(self, **kwargs):"},{"line_number":27,"context_line":"        if \u0027root_helper\u0027 in kwargs:"},{"line_number":28,"context_line":"            debtcollector.deprecate("},{"line_number":29,"context_line":"                \"The \u0027root_helper\u0027 argument is no longer used and will be \""}],"source_content_type":"text/x-python","patch_set":12,"id":"c8cc5dd5_dea2c484","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":33},"updated":"2026-09-24 13:28:34.000000000","message":"Nothing asserts that this warning fires. A ``test_init_deprecated_options`` like the encryptor tests, for both ``CacheManager`` and ``OpenCASEngine``, would be good.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class OpenCASEngine(caches.CacheEngineBase):"},{"line_number":26,"context_line":"    def __init__(self, **kwargs):"},{"line_number":27,"context_line":"        if \u0027root_helper\u0027 in kwargs:"},{"line_number":28,"context_line":"            debtcollector.deprecate("},{"line_number":29,"context_line":"                \"The \u0027root_helper\u0027 argument is no longer used and will be \""}],"source_content_type":"text/x-python","patch_set":12,"id":"53926585_682238d3","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":33},"in_reply_to":"c8cc5dd5_dea2c484","updated":"2026-09-24 17:35:19.000000000","message":"Dropped this. This class in internal and should never be instantiated externally. No one in OpenStack is doing so (per codesearch.o.o).","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"}],"os_brick/privileged/opencas.py":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    for line in out.splitlines():"},{"line_number":50,"context_line":"        fields \u003d line.split()"},{"line_number":51,"context_line":"        if str(cache_id) \u003d\u003d fields[1] and \u0027Running\u0027 \u003d\u003d fields[3]:"},{"line_number":52,"context_line":"            return True"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":12,"id":"25bf62d9_aed281ae","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":65},"updated":"2026-09-24 13:28:34.000000000","message":"Pre-existing, but now that the code has moved: ``fields[1]`` on every line means a blank line in ``casadm -L`` output raises IndexError. A ``if len(fields) \u003c 4: continue`` guard would make this robust.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    for line in out.splitlines():"},{"line_number":50,"context_line":"        fields \u003d line.split()"},{"line_number":51,"context_line":"        if str(cache_id) \u003d\u003d fields[1] and \u0027Running\u0027 \u003d\u003d fields[3]:"},{"line_number":52,"context_line":"            return True"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":12,"id":"e9ae216d_f408073b","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":65},"in_reply_to":"25bf62d9_aed281ae","updated":"2026-09-24 17:35:19.000000000","message":"Done in a follow-up","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":65,"context_line":"    out, err \u003d _list_caches()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    for line in out.splitlines():"},{"line_number":68,"context_line":"        if line.find(dev_path) \u003c 0:"},{"line_number":69,"context_line":"            continue"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        fields \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":12,"id":"0650e2a3_a481b972","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":35},"updated":"2026-09-24 13:28:34.000000000","message":"Also pre-existing: ``line.find(dev_path)`` is a substring match, so ``/dev/cas1-1`` also matches ``/dev/cas1-10``. Comparing ``fields[5] \u003d\u003d dev_path`` here (and ``fields[2] \u003d\u003d core_device`` at line 92) would be exact. Fine as a follow-up if you\u0027d rather keep this a pure move.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    out, err \u003d _list_caches()"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    for line in out.splitlines():"},{"line_number":68,"context_line":"        if line.find(dev_path) \u003c 0:"},{"line_number":69,"context_line":"            continue"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        fields \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":12,"id":"23b7a2e1_dbc18083","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":35},"in_reply_to":"0650e2a3_a481b972","updated":"2026-09-24 17:35:19.000000000","message":"Done in a follow-up","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":103,"context_line":"    \"\"\"Unmap a core device from the framework associated with a given cache."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    :param cache_id: Unique identifier for cache in range 1 to 16384"},{"line_number":106,"context_line":"    :param core_device: Location of the HDD storage/core device. This must"},{"line_number":107,"context_line":"        be a complete device path in the /dev directory, for example /dev/sdb"},{"line_number":108,"context_line":"    :returns: None"},{"line_number":109,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"47781491_6157c400","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":74},"updated":"2026-09-24 13:28:34.000000000","message":"Docstring documents ``core_device`` but the parameter is ``core_id``.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    \"\"\"Unmap a core device from the framework associated with a given cache."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    :param cache_id: Unique identifier for cache in range 1 to 16384"},{"line_number":106,"context_line":"    :param core_device: Location of the HDD storage/core device. This must"},{"line_number":107,"context_line":"        be a complete device path in the /dev directory, for example /dev/sdb"},{"line_number":108,"context_line":"    :returns: None"},{"line_number":109,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"a1551a26_d68bbce0","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":74},"in_reply_to":"47781491_6157c400","updated":"2026-09-24 17:35:19.000000000","message":"Done","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"}],"os_brick/tests/caches/test_opencas.py":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":41,"context_line":"        mock_is_engine_ready.assert_called_once_with(42)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027os_brick.privileged.opencas.map_device\u0027)"},{"line_number":44,"context_line":"    def test_map_casdisk(self, mock_unmap_device):"},{"line_number":45,"context_line":"        engine \u003d opencas.OpenCASEngine(root_helper\u003dNone, opencas_cache_id\u003d1)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        engine._map_casdisk(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"0e12e5ab_6c9114ca","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":50},"updated":"2026-09-24 13:28:34.000000000","message":"The mock is named ``mock_unmap_device`` but patches `map_device``.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        mock_is_engine_ready.assert_called_once_with(42)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027os_brick.privileged.opencas.map_device\u0027)"},{"line_number":44,"context_line":"    def test_map_casdisk(self, mock_unmap_device):"},{"line_number":45,"context_line":"        engine \u003d opencas.OpenCASEngine(root_helper\u003dNone, opencas_cache_id\u003d1)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        engine._map_casdisk(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"b733fc04_9429b31b","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":50},"in_reply_to":"0e12e5ab_6c9114ca","updated":"2026-09-24 17:35:19.000000000","message":"Done","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"c45ab87397aac952607f2947ac6c8e1870063631","unresolved":true,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027os_brick.privileged.opencas.map_device\u0027)"},{"line_number":44,"context_line":"    def test_map_casdisk(self, mock_unmap_device):"},{"line_number":45,"context_line":"        engine \u003d opencas.OpenCASEngine(root_helper\u003dNone, opencas_cache_id\u003d1)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        engine._map_casdisk(\u00271\u0027)"},{"line_number":48,"context_line":"        mock_unmap_device.assert_called_once_with(1, \u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"286ad23a_5e48d295","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":76},"updated":"2026-09-24 13:28:34.000000000","message":"These tests (also 52, 68) still pass ``root_helper\u003dNone``, so they emit the deprecation warning on every run. Drop the argument here and cover the warning in a dedicated test instead.","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ab2f36889b91d19263fcd2c9f5085124579e039c","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @mock.patch(\u0027os_brick.privileged.opencas.map_device\u0027)"},{"line_number":44,"context_line":"    def test_map_casdisk(self, mock_unmap_device):"},{"line_number":45,"context_line":"        engine \u003d opencas.OpenCASEngine(root_helper\u003dNone, opencas_cache_id\u003d1)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        engine._map_casdisk(\u00271\u0027)"},{"line_number":48,"context_line":"        mock_unmap_device.assert_called_once_with(1, \u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"34faf9d9_d87c9a64","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":76},"in_reply_to":"286ad23a_5e48d295","updated":"2026-09-24 17:35:19.000000000","message":"Done","commit_id":"cc50644e328aff9f42ebe25fd84e8187313f3347"}],"releasenotes/notes/privsepify-74949804e4f56877.yaml":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"947bba047ddf2c4d2906d1f577817e12c82c1e6c","unresolved":true,"context_lines":[{"line_number":14,"context_line":"    arguments and pass the remaining arguments via kwargs."},{"line_number":15,"context_line":"  - |"},{"line_number":16,"context_line":"    The ``os_brick.caches.CacheManager`` class no longer requires a"},{"line_number":17,"context_line":"    ``root_helper`` argument. These arguments have been deprecated for removal"},{"line_number":18,"context_line":"    in a future release. Callers can simply drop these arguments and pass the"},{"line_number":19,"context_line":"    remaining arguments via kwargs."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"14f3e504_1f36a326","line":17,"range":{"start_line":17,"start_character":30,"end_line":17,"end_character":45},"updated":"2026-09-24 18:14:29.000000000","message":"\"These arguments\" refers to a single argument (root_helper) in this paragraph.","commit_id":"e8279339461ed498fb77e523290f0725ad80955b"}]}
