)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34637,"name":"Milana Levy","email":"millevy@redhat.com","username":"millevy"},"change_message_id":"35f34a147972e9ed48ae236be3a084cededcfa3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"12b12800_ebf25545","updated":"2026-11-11 11:22:17.000000000","message":"This approach is acceptable for this stable branch, unlike master. On this\nbranch there is no `ec2credential` in the default `[auth] methods` and no\n`ec2credential` auth plugin, so the method map gets no duplicate bit and the\nround-trip fix works as described.\n\nTwo things before merging.\n\n1. A configured method can be silently shadowed by a reserved bit.\n   `method_map.update(_PSEUDO_METHOD_BITS)` overwrites. With 33 configured\n   methods the 33rd index is `1 \u003c\u003c 32`, the same bit as `ec2credential`. That\n   method disappears from the map, encodes to 0, and its tokens decode back\n   to an empty method list. The new `test_pseudo_method_bits_do_not_collide`\n   uses 3 methods, so it cannot catch this.\n\n   Please make the reserved bits unreachable by the positional scheme\n   (`1 \u003c\u003c 48` and `1 \u003c\u003c 49` are still well below 2**53, where the float\n   division in the decoder stays exact), or detect the overlap explicitly at\n   startup, and add this test:\n\n    def test_configured_method_at_pseudo_bit_is_not_shadowed(self):\n        # The 33rd configured method owns 1 \u003c\u003c 32, the bit reserved for\n        # ec2credential. It must still round-trip.\n        auth_methods \u003d [f\u0027method_{i}\u0027 for i in range(33)]\n        self.config_fixture.config(group\u003d\u0027auth\u0027, methods\u003dauth_methods)\n\n        integer \u003d plugins.convert_method_list_to_integer([\u0027method_32\u0027])\n        self.assertNotEqual(0, integer)\n        self.assertEqual(\n            [\u0027method_32\u0027], plugins.convert_integer_to_method_list(integer)\n        )\n\n2. Keep `construct_method_map_from_config()` config-only.\n   Its name says the map comes from the config, and the three existing tests\n   had to be padded with `expected_method_map.update(_PSEUDO_METHOD_BITS)`,\n   which hides this change. Merge the bits in the converters instead:\n\n    def _method_map():\n        method_map \u003d construct_method_map_from_config()\n        method_map.update(_PSEUDO_METHOD_BITS)\n        return method_map\n\n   Then `convert_method_list_to_integer()` and\n   `convert_integer_to_method_list()` call `_method_map()`, and the existing\n   tests pass unchanged.\n\nPlease also add a round-trip test using this branch\u0027s default `[auth] methods`\n(6 entries).\n\nOtherwise the tests and the release note look good.","commit_id":"df715dd6345c216a902699e4fdb621f4d2d1f0d5"}]}
