)]}'
{"cyborg/context.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"016f7f666e1cac54807d06a6a6f1efb04058b7ef","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    FROM_DICT_EXTRA_KEYS \u003d [\u0027user_id\u0027, \u0027project_id\u0027, \u0027read_deleted\u0027,"},{"line_number":71,"context_line":"                            \u0027timestamp\u0027, \u0027quota_class\u0027, \u0027service_catalog\u0027]]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__("},{"line_number":74,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":1,"id":"a92535f6_90ea2dd0","line":71,"updated":"2026-06-28 14:40:36.000000000","message":"cyborg/context.py does not compile: three SyntaxErrors in the new to_dict/FROM_DICT_EXTRA_KEYS block. `python3 -m py_compile` fails with \"SyntaxError: unmatched \u0027]\u0027\" at line 71.\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: cyborg.context is imported transitively by cyborg.common.rpc and across services; an uncompilable module aborts import and prevents the api, conductor, agent and db-sync services from starting. Release-blocking.\n\n**Priority**: Immediate\n**Why This Matters**: The patch ships non-functional code. Any job that imports the module or runs the unit suite will fail before the refactored logic is ever exercised.\n\n**Recommendation**:\nFix all three defects: (1) line 71 change trailing `]]` to single `]`; (2) line 139 add comma: `\u0027remote_address\u0027: self.remote_address,`; (3) line 143 add comma: `\u0027user_name\u0027: self.user_name,`. Then run `python3 -m py_compile cyborg/context.py` and `tox -e py` before push.","commit_id":"df28671a79a1cf3379257fc7a79007d0da681b50"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9be9bf4490f8b8069d6eb49f5c3d9e226ca2de8e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    FROM_DICT_EXTRA_KEYS \u003d [\u0027user_id\u0027, \u0027project_id\u0027, \u0027read_deleted\u0027,"},{"line_number":71,"context_line":"                            \u0027timestamp\u0027, \u0027quota_class\u0027, \u0027service_catalog\u0027]]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__("},{"line_number":74,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2bf39a83_d31d2dcb","line":71,"updated":"2026-06-28 15:21:17.000000000","message":"pep8: SyntaxError: Expected a statement","commit_id":"df28671a79a1cf3379257fc7a79007d0da681b50"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9be9bf4490f8b8069d6eb49f5c3d9e226ca2de8e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    FROM_DICT_EXTRA_KEYS \u003d [\u0027user_id\u0027, \u0027project_id\u0027, \u0027read_deleted\u0027,"},{"line_number":71,"context_line":"                            \u0027timestamp\u0027, \u0027quota_class\u0027, \u0027service_catalog\u0027]]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__("},{"line_number":74,"context_line":"        self,"}],"source_content_type":"text/x-python","patch_set":1,"id":"907616bb_d1c96822","line":71,"updated":"2026-06-28 15:21:17.000000000","message":"pep8: SyntaxError: Expected a statement","commit_id":"df28671a79a1cf3379257fc7a79007d0da681b50"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9be9bf4490f8b8069d6eb49f5c3d9e226ca2de8e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                \u0027user_id\u0027: self.user_id,"},{"line_number":138,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"},{"line_number":139,"context_line":"                \u0027remote_address\u0027: self.remote_address"},{"line_number":140,"context_line":"                \u0027timestamp\u0027: ("},{"line_number":141,"context_line":"                    utils.strtime(self.timestamp) if self.timestamp else None),"},{"line_number":142,"context_line":"                \u0027quota_class\u0027: self.quota_class,"},{"line_number":143,"context_line":"                \u0027user_name\u0027: self.user_name"}],"source_content_type":"text/x-python","patch_set":1,"id":"a9bc0380_aa2f31b4","line":140,"updated":"2026-06-28 15:21:17.000000000","message":"pep8: SyntaxError: Expected \u0027,\u0027, found string","commit_id":"df28671a79a1cf3379257fc7a79007d0da681b50"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9be9bf4490f8b8069d6eb49f5c3d9e226ca2de8e","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                    utils.strtime(self.timestamp) if self.timestamp else None),"},{"line_number":142,"context_line":"                \u0027quota_class\u0027: self.quota_class,"},{"line_number":143,"context_line":"                \u0027user_name\u0027: self.user_name"},{"line_number":144,"context_line":"                \u0027service_catalog\u0027: self.service_catalog,"},{"line_number":145,"context_line":"                \u0027project_name\u0027: self.project_name,"},{"line_number":146,"context_line":"            }"},{"line_number":147,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"4e3bfb56_3e3f18d9","line":144,"updated":"2026-06-28 15:21:17.000000000","message":"pep8: SyntaxError: Expected \u0027,\u0027, found string","commit_id":"df28671a79a1cf3379257fc7a79007d0da681b50"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0ca2071afbfb3b68880cd165b852e4872f31e9d6","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        \u0027read_deleted\u0027,"},{"line_number":74,"context_line":"        \u0027remote_address\u0027,"},{"line_number":75,"context_line":"        \u0027timestamp\u0027,"},{"line_number":76,"context_line":"        \u0027quota_class\u0027,"},{"line_number":77,"context_line":"        \u0027service_catalog\u0027,"},{"line_number":78,"context_line":"    ]"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"0968953e_ed212018","line":76,"range":{"start_line":76,"start_character":7,"end_line":76,"end_character":22},"updated":"2026-06-30 10:55:39.000000000","message":"i have noted this in the followup patch but a quota_class is a deprecated nova api and this was just copied whwen they created the repo so this has never been used in cybrog but it also has not been initalized.","commit_id":"c2e40a7910b61240506b20d88815e11dc1aa4b46"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"b318c7b221dd4da4a6f290e9aa7fe74b98216eef","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            return _ContextAuthPlugin(self.auth_token, self.service_catalog)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def to_dict(self):"},{"line_number":141,"context_line":"        values \u003d super().to_dict()"},{"line_number":142,"context_line":"        values.update("},{"line_number":143,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":3,"id":"caf5947a_3badcd57","line":140,"updated":"2026-06-28 17:20:59.000000000","message":"No dedicated unit test exercises the to_dict()/from_dict() round-trip after this refactor. The repo has no test_context.py, and the only RequestContext.from_dict call in tests is inside a @unittest.skip test. The refactor changed both serialization paths.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: A test asserting RequestContext.from_dict(ctx.to_dict()) preserves cyborg-specific and oslo-delegated keys would lock in the oslo.context delegation this patch now relies on and catch any future oslo.context change that breaks cyborg\u0027s keys.\n\n**Recommendation**:\nAdd a small cyborg/tests/unit/test_context.py that builds a RequestContext with representative values, calls to_dict(), then from_dict(), and asserts the cyborg-specific fields (read_deleted, remote_address, timestamp, quota_class, service_catalog) and the oslo-delegated fields round-trip. Cover the service_catalog image-type filtering on re-deserialization as an edge case.","commit_id":"c2e40a7910b61240506b20d88815e11dc1aa4b46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"35bb47a7e52fc5fa94c250c9d79da72c00450982","unresolved":true,"context_lines":[{"line_number":145,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"},{"line_number":146,"context_line":"                \u0027remote_address\u0027: self.remote_address,"},{"line_number":147,"context_line":"                \u0027timestamp\u0027: utils.strtime(self.timestamp),"},{"line_number":148,"context_line":"                \u0027quota_class\u0027: self.quota_class,"},{"line_number":149,"context_line":"                \u0027user_name\u0027: self.user_name,"},{"line_number":150,"context_line":"                \u0027service_catalog\u0027: self.service_catalog,"},{"line_number":151,"context_line":"                \u0027project_name\u0027: self.project_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"777d689f_a5a11ab0","line":148,"updated":"2026-06-30 10:54:08.000000000","message":"```\nJun 28 17:12:19.186468 np593c6d2ec38f4 devstack@cyborg-api.service[79536]:                   ~~~~~~~~~~~~^^\nJun 28 17:12:19.186468 np593c6d2ec38f4 devstack@cyborg-api.service[79536]:   File \"/opt/stack/cyborg/cyborg/context.py\", line 148, in to_dict\nJun 28 17:12:19.186468 np593c6d2ec38f4 devstack@cyborg-api.service[79536]:     \u0027quota_class\u0027: self.quota_class,\nJun 28 17:12:19.186468 np593c6d2ec38f4 devstack@cyborg-api.service[79536]:                    ^^^^^^^^^^^^^^^^\nJun 28 17:12:19.186468 np593c6d2ec38f4 devstack@cyborg-api.service[79536]: AttributeError: \u0027RequestContext\u0027 object has no attribute \u0027quota_class\u0027\n```\n\nwhile __init__ a quota_class it never assines to self.quota_class\n\nso you cant do that refactor without removign its usage here.","commit_id":"c2e40a7910b61240506b20d88815e11dc1aa4b46"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2cefb214e10c21b77e490b87426945e9bab6c8b7","unresolved":true,"context_lines":[{"line_number":145,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"},{"line_number":146,"context_line":"                \u0027remote_address\u0027: self.remote_address,"},{"line_number":147,"context_line":"                \u0027timestamp\u0027: utils.strtime(self.timestamp),"},{"line_number":148,"context_line":"                \u0027quota_class\u0027: self.quota_class,"},{"line_number":149,"context_line":"                \u0027user_name\u0027: self.user_name,"},{"line_number":150,"context_line":"                \u0027service_catalog\u0027: self.service_catalog,"},{"line_number":151,"context_line":"                \u0027project_name\u0027: self.project_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"96cf152b_98ae3e41","line":148,"in_reply_to":"777d689f_a5a11ab0","updated":"2026-06-30 13:49:00.000000000","message":"Thanks for pointing this. I\u0027ve updated the change to completely removed this given this has never been used or implemented really.","commit_id":"c2e40a7910b61240506b20d88815e11dc1aa4b46"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d7dba69623316ec43eb4cfeb423454c9cd0ffa91","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                \u0027read_deleted\u0027: self.read_deleted,"},{"line_number":146,"context_line":"                \u0027remote_address\u0027: self.remote_address,"},{"line_number":147,"context_line":"                \u0027timestamp\u0027: utils.strtime(self.timestamp),"},{"line_number":148,"context_line":"                \u0027quota_class\u0027: self.quota_class,"},{"line_number":149,"context_line":"                \u0027user_name\u0027: self.user_name,"},{"line_number":150,"context_line":"                \u0027service_catalog\u0027: self.service_catalog,"},{"line_number":151,"context_line":"                \u0027project_name\u0027: self.project_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ddbe4325_ecbf49ef","line":148,"in_reply_to":"96cf152b_98ae3e41","updated":"2026-06-30 14:58:30.000000000","message":"Done","commit_id":"c2e40a7910b61240506b20d88815e11dc1aa4b46"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"74b0d2fa2451f6e9a480d2268a7c5a053ddec560","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    FROM_DICT_EXTRA_KEYS \u003d ["},{"line_number":71,"context_line":"        \u0027user_id\u0027,"},{"line_number":72,"context_line":"        \u0027project_id\u0027,"},{"line_number":73,"context_line":"        \u0027read_deleted\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"93efd865_c3f4495c","line":70,"updated":"2026-06-30 14:20:13.000000000","message":"FROM_DICT_EXTRA_KEYS and to_dict now both enumerate the cyborg-specific keys, so the two lists must stay in sync manually. If a future attribute is added to __init__ but forgotten in FROM_DICT_EXTRA_KEYS, from_dict will silently drop it over the RPC boundary.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Reduces the chance of a silent round-trip data-loss bug and makes the serialization contract self-documenting for future maintainers.\n\n**Recommendation**:\nAdd a short comment above FROM_DICT_EXTRA_KEYS noting that these keys must round-trip with to_dict output and that any new __init__ parameter carried over RPC must be added here. Consider a unit test that asserts to_dict followed by from_dict preserves all cyborg-specific fields.","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d7dba69623316ec43eb4cfeb423454c9cd0ffa91","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    FROM_DICT_EXTRA_KEYS \u003d ["},{"line_number":71,"context_line":"        \u0027user_id\u0027,"},{"line_number":72,"context_line":"        \u0027project_id\u0027,"},{"line_number":73,"context_line":"        \u0027read_deleted\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5bcf4cae_5dfe14d5","line":70,"in_reply_to":"93efd865_c3f4495c","updated":"2026-06-30 14:58:30.000000000","message":"this is valid but i think thats ok.\n\ni woudl need to see if there si a btter way to do this in oslo so we can enforce this \nim think if we could generate this calss value or have a unit test ectra.\n\nunless you have a better idea i would either leave this unresovle or add a comemnt if you need to respine but i think we can just review for this for now.","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"74b0d2fa2451f6e9a480d2268a7c5a053ddec560","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        else:"},{"line_number":136,"context_line":"            return _ContextAuthPlugin(self.auth_token, self.service_catalog)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def to_dict(self):"},{"line_number":139,"context_line":"        values \u003d super().to_dict()"},{"line_number":140,"context_line":"        values.update("},{"line_number":141,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":4,"id":"223f40d3_37afb1ca","line":138,"updated":"2026-06-30 14:20:13.000000000","message":"to_dict() no longer emits is_admin_project explicitly. The old code injected is_admin_project (defaulting True via getattr) into every serialized context; the new code drops it, relying on the base class which only emits it when set. This is a subtle RPC wire-format change.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: A downstream consumer (RPC server, cross-service propagation, or out-of-tree code) that assumed is_admin_project was always present in the deserialized context will now see it absent or defaulted differently. In cyborg no consumer reads it, so risk is low, but the change is undocumented.\n\n**Suggestion**:\nConfirm whether is_admin_project needs to round-trip over RPC. If it does, set self.is_admin_project in __init__ (or add it to the to_dict update) so it is emitted consistently. If it does not, add a release note documenting the serialized-context change so reviewers and downstream users are aware of the wire-format delta.","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"74b0d2fa2451f6e9a480d2268a7c5a053ddec560","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            }"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        return values"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def get_context():"},{"line_number":155,"context_line":"    \"\"\"A helper method to get a blank context."}],"source_content_type":"text/x-python","patch_set":4,"id":"97b114f7_84f112ec","line":152,"updated":"2026-06-30 14:20:13.000000000","message":"Removing the custom from_dict override leaves a double blank line between the end of to_dict and the get_context function, where the old method used to sit.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Keeps the module tidy and avoids a flake8 or hacking E303 (too many blank lines) risk where the deletion occurred, matching the surrounding two-blank-line convention between top-level definitions.\n\n**Recommendation**:\nCollapse the extra blank line at cyborg/context.py:152-154 so there are exactly two blank lines between the to_dict method block and the get_context function definition.","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d7dba69623316ec43eb4cfeb423454c9cd0ffa91","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            }"},{"line_number":150,"context_line":"        )"},{"line_number":151,"context_line":"        return values"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def get_context():"},{"line_number":155,"context_line":"    \"\"\"A helper method to get a blank context."}],"source_content_type":"text/x-python","patch_set":4,"id":"a532d255_f62b4431","line":152,"in_reply_to":"97b114f7_84f112ec","updated":"2026-06-30 14:58:30.000000000","message":"yes that becasue this is not the end of the class and modleu level symbols have 2 blank lines so this is a false positive","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"}],"requirements.txt":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"74b0d2fa2451f6e9a480d2268a7c5a053ddec560","unresolved":false,"context_lines":[{"line_number":8,"context_line":"oslo.i18n\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":9,"context_line":"oslo.config\u003e\u003d1.1.0,!\u003d4.3.0,!\u003d4.4.0 # Apache-2.0"},{"line_number":10,"context_line":"oslo.log\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":11,"context_line":"oslo.context\u003e\u003d2.19.2 # Apache-2.0"},{"line_number":12,"context_line":"oslo.messaging\u003e\u003d14.1.0 # Apache-2.0"},{"line_number":13,"context_line":"oslo.concurrency\u003e\u003d3.26.0 # Apache-2.0"},{"line_number":14,"context_line":"oslo.service[threading]\u003e\u003d4.4.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"e0bd6a1d_8299cd26","line":11,"updated":"2026-06-30 14:20:13.000000000","message":"The oslo.context lower bound is bumped to 2.19.2 for FROM_DICT_EXTRA_KEYS support, but there is no constraint check confirming that 2.19.2 is available in all supported runtime environments at deploy time.\n\n**Severity**: WARNING | **Confidence**: 0.7\n\n**Impact**: If a supported distribution or constrained deployment pins oslo.context below 2.19.2, from_dict will silently ignore the extra keys (user_id, project_id, read_deleted, remote_address, timestamp, service_catalog). RPC-reconstructed contexts would then lose those fields with no error raised.\n\n**Suggestion**:\nVerify the lower bound against the minimum supported runtime (binary dependency constraints and upper-constraints). If 2.19.2 is not universally available, keep a minimal from_dict override until the floor is guaranteed, so the extra keys cannot be silently dropped on older runtimes.","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d7dba69623316ec43eb4cfeb423454c9cd0ffa91","unresolved":false,"context_lines":[{"line_number":8,"context_line":"oslo.i18n\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":9,"context_line":"oslo.config\u003e\u003d1.1.0,!\u003d4.3.0,!\u003d4.4.0 # Apache-2.0"},{"line_number":10,"context_line":"oslo.log\u003e\u003d5.0.0 # Apache-2.0"},{"line_number":11,"context_line":"oslo.context\u003e\u003d2.19.2 # Apache-2.0"},{"line_number":12,"context_line":"oslo.messaging\u003e\u003d14.1.0 # Apache-2.0"},{"line_number":13,"context_line":"oslo.concurrency\u003e\u003d3.26.0 # Apache-2.0"},{"line_number":14,"context_line":"oslo.service[threading]\u003e\u003d4.4.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"8682d43f_a73007c1","line":11,"in_reply_to":"e0bd6a1d_8299cd26","updated":"2026-06-30 14:58:30.000000000","message":"this is out os scope fo cybrog\n\nthe upper bound on oslo.context is curtely oslo.context\u003d\u003d\u003d6.4.0\n\nhttps://github.com/openstack/requirements/blob/master/upper-constraints.txt#L58C1-L58C21\n\nso we coudl raise this much higher without any concern","commit_id":"9e123a40bcac85c28516dd1243abc1a7234165cf"}]}
