)]}'
{"id":"openstack%2Fkeystone~995251","triplet_id":"openstack%2Fkeystone~master~I212bc76fea2f2ec179b0e57a62522dbd29e68bab","project":"openstack/keystone","branch":"master","hashtags":["asgi","asgi-phase-2"],"change_id":"I212bc76fea2f2ec179b0e57a62522dbd29e68bab","subject":"Convert Keystone to native async ASGI with Quart","status":"ABANDONED","created":"2026-06-29 07:33:52.000000000","updated":"2026-06-30 05:12:20.000000000","total_comment_count":0,"unresolved_comment_count":0,"work_in_progress":true,"has_review_started":true,"meta_rev_id":"2ca1e421f8a65cbf8f6ed25663bd5da0e0191299","_number":995251,"virtual_id_number":995251,"owner":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-06-29 22:46:09.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"reviewer_updates":[{"updated":"2026-06-29 07:36:35.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"0fb954c3e60bf70e5de1a438c0a7cf8de414d8e0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:33:52.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"326333cb9b3cb737b16047a3f5cc0a75718eff03","tag":"autogenerated:gerrit:setWorkInProgress","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:34:01.000000000","message":"Set Work In Progress","accounts_in_message":[],"_revision_number":1},{"id":"387e29d441561d5aca43205686b9dcb0a1dc44a7","tag":"autogenerated:gerrit:setHashtag","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:34:01.000000000","message":"Hashtags added: asgi, asgi-phase-2","accounts_in_message":[],"_revision_number":1},{"id":"a5014efdabbcc7e64808d23bb247bf3b39e7bd2e","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:35:49.000000000","message":"Patch Set 1:\n\nrecheck","accounts_in_message":[],"_revision_number":1},{"id":"044359bd54315de6aff6db36dc6ee3a81df552a2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 07:36:35.000000000","message":"Patch Set 1: Verified-1\n\nMerge Failed.\n\nThis change or one of its cross-repo dependencies was unable to be automatically merged with the current state of its repository. Please rebase the change and upload a new patchset.\nWarning:\n  Error merging gerrit/openstack/requirements for 995247,1","accounts_in_message":[],"_revision_number":1},{"id":"17a6513ababae1780ed26fb98a7ced576fbd67a5","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:46:56.000000000","message":"Patch Set 1:\n\nrecheck","accounts_in_message":[],"_revision_number":1},{"id":"dd776a34c328e34361e6ec7e43313c5e746f6e91","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:48:13.000000000","message":"Uploaded patch set 2: Commit message was updated.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"3aef4f81dd8b055e348cd009826cedaaeb2ab24c","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 07:52:31.000000000","message":"Patch Set 2:\n\nrecheck","accounts_in_message":[],"_revision_number":2},{"id":"85074a75506d6103e5581fa3ea76a888be63f6de","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 08:16:28.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/13a83a55a02b4c4996775e0ac6288c78\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/761d21321fb7451084609d4f0aee6767 : FAILURE in 4m 24s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/d33dcdca392645849b96a59fb044d41b : FAILURE in 19m 00s","accounts_in_message":[],"_revision_number":2},{"id":"cd4bcf592eb6935894bc69a5edfd120ea6cce0e8","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 08:35:25.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"32209257a0182cefbe083fc83aecde45c8fc841b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 09:03:36.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/cb60b51bb0b340658b435b209851e800\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/63aee133f770454e836184959a472e0d : FAILURE in 3m 53s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/d3d1ad5e4fa743289bcc43ca0798108e : FAILURE in 21m 47s","accounts_in_message":[],"_revision_number":3},{"id":"aa0a380f7f1a54a3e14eb24bc65f726217d50167","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 09:48:51.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"6a6b3153684149d634d120d889ef3b7e77abc27f","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 09:51:28.000000000","message":"Patch Set 4:\n\nrecheck","accounts_in_message":[],"_revision_number":4},{"id":"719722b68e8fb053cf16dbdb62b8b7de127dda6a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 10:03:32.000000000","message":"Patch Set 4: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/74b71d8b49964d17baf81c34304bc886\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/2d000cdb13f74907aa06bd12b6fc2abc : FAILURE in 2m 05s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/41574c1054554e659a9f8565716a3dba : FAILURE in 10m 11s","accounts_in_message":[],"_revision_number":4},{"id":"1c3afbae1206b2b6c4a23d4fb8b266e71ff2b967","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 10:58:16.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"2be1493f7fb391441eceeb586a4242efad7d5a82","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 11:30:44.000000000","message":"Patch Set 5: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/2d6ea17cad224a1b9f51565588d18630\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/765722bc19ea4658ad6cc6c0f53a3f3b : FAILURE in 3m 14s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/401c92a0621c4a848bf42a019f424c8d : FAILURE in 21m 45s","accounts_in_message":[],"_revision_number":5},{"id":"42b744c3905222281bb26f97e5f568a58afb1481","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 11:51:00.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"bdccf0ec4a93a11c4faa300bdba44ab29c74148f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 12:06:07.000000000","message":"Patch Set 6: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/7a2fcd660dfa41599efa93928a3c8b5f\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/74bff9177e7046aaaa08994f3906d9f5 : FAILURE in 3m 23s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/2948db41a2d2487c9f9eb86de291c6f9 : FAILURE in 12m 14s","accounts_in_message":[],"_revision_number":6},{"id":"df18a0e85a16603b147f950c060558d24297c522","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 12:55:20.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":7},{"id":"40ca9e62013ebe675c0470b55edf0b1c0a7f6249","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 13:27:34.000000000","message":"Patch Set 7: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/075c47bf50304da9a90dc2681760169c\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/423a02f1383e4410985a21c359b2d4ff : FAILURE in 3m 26s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/8fccd0d9d62048179c5dda1ad7e1a30a : FAILURE in 24m 57s","accounts_in_message":[],"_revision_number":7},{"id":"85683e7cccdf23b821b8b307bc94c7a5d3353de1","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 16:17:32.000000000","message":"Uploaded patch set 8.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":8},{"id":"f389cd132e9c3e8943de6035a353d6751063c6a7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 16:34:16.000000000","message":"Patch Set 8: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/699744462a6d4ebba3278272b01006fd\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/84f83716ee47489f90f79fce85aafcb8 : FAILURE in 3m 19s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/0b7a8cb0ebc94625957130ea729438e0 : FAILURE in 12m 36s","accounts_in_message":[],"_revision_number":8},{"id":"2377c22af5ee06126aac59cc519a9e7e1c952755","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 17:20:23.000000000","message":"Uploaded patch set 9.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":9},{"id":"321a580fabcccea2b7b79947c1b183a37f03562a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 17:36:14.000000000","message":"Patch Set 9: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/c005d579b1dd45858063ccfbd66540df\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/202bb50d877749f396ea26e24ae048a0 : FAILURE in 2m 37s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/9d1600bae74a43e280beaa9176f4c1ab : FAILURE in 11m 44s","accounts_in_message":[],"_revision_number":9},{"id":"5e2ef10fa82473be91b024cf798d26c4a8a5c64f","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 18:21:06.000000000","message":"Uploaded patch set 10.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":10},{"id":"a10513c74571cadac5316c5d81db1a499211c59f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 18:48:07.000000000","message":"Patch Set 10: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/289ba2a7fcdb4dcc8c9d79801bc20c70\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/d86b7f564b594ac6b2497790a2eccc38 : FAILURE in 2m 15s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/79dae00012c24321bf59361bd30506e8 : FAILURE in 19m 41s","accounts_in_message":[],"_revision_number":10},{"id":"7e1b281544fa4fcdf4c363fcd775cc5473c60a6e","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 19:07:38.000000000","message":"Uploaded patch set 11.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":11},{"id":"57920b28531f4ff3e21910422aa39deb16fb3a9d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 19:19:37.000000000","message":"Patch Set 11: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/2d6fed91fd764e7bb3efda2695bbedc0\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/31ac5e47bb9c4bbdae17442eeddb4df8 : FAILURE in 2m 04s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/d25194ee4ab54c4c9ac8464fb3d65401 : FAILURE in 8m 38s","accounts_in_message":[],"_revision_number":11},{"id":"601f955961dbff60f7e08b6aa3d020614a97a7f3","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 19:45:12.000000000","message":"Uploaded patch set 12.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":12},{"id":"03b8371c6b260a7013fd2056afa0f37a0e8234e0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 20:16:03.000000000","message":"Patch Set 12: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/aabe0fd4aaa747f397003b127ce48a39\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/bcef31de6ab1421b92b0c150b609dd3c : FAILURE in 3m 16s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/0e221202d8fc4218998dcdfa5bc48170 : FAILURE in 20m 33s","accounts_in_message":[],"_revision_number":12},{"id":"6baebcd0ef906d3d25a00131d22ea5adebdf756c","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 21:38:12.000000000","message":"Uploaded patch set 13.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":13},{"id":"8db1202afdacd258fbcae8cb6a239f6d4d595abd","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 21:54:30.000000000","message":"Patch Set 13: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/ce06303dc7e14169b93b4bb7382e4c41\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/8f1091600f834aca8dc5cfe71bee0cd7 : FAILURE in 2m 24s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/b1e8b5d1db3b4392ac0d8220ba57d2e7 : FAILURE in 11m 54s","accounts_in_message":[],"_revision_number":13},{"id":"3ad9759c8dc6d06440bd017e63c6274a18c4ad4c","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 22:23:00.000000000","message":"Uploaded patch set 14.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":14},{"id":"5c5d3be83a806ed2972c8f496663198b58527b66","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 22:46:09.000000000","message":"Patch Set 14: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/ae8547d0604246619c4882672b3e146d\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/921284ae6a984d3c8035f3418beaa80f : FAILURE in 3m 26s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/86a735b8c382465cb051d5616d82641a : FAILURE in 12m 16s","accounts_in_message":[],"_revision_number":14},{"id":"30eedafdb6ad68ac874ececa0974801781784f34","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-29 23:57:44.000000000","message":"Patch Set 14:\n\nrecheck\n\ndevstack 995132 now has lib/keystone root_path fix","accounts_in_message":[],"_revision_number":14},{"id":"e89b8e44a13859b20964312a126db3e79e213b6b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 00:06:35.000000000","message":"Patch Set 14:\n\nThis change depends on a change that failed to merge.\n\nChange https://review.opendev.org/c/openstack/keystone/+/995161 is needed.","accounts_in_message":[],"_revision_number":14},{"id":"3e02e253993857bb96573587d99b01055b81ea77","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 00:20:16.000000000","message":"Patch Set 14:\n\nrecheck","accounts_in_message":[],"_revision_number":14},{"id":"e94bd1ee2458502bd19faf163d99c4374ce29a44","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 00:29:09.000000000","message":"Patch Set 14:\n\nrecheck","accounts_in_message":[],"_revision_number":14},{"id":"1554fb5a0f5a48d9c8ae3958a6c6549b4a10cbfe","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 00:29:22.000000000","message":"Patch Set 14:\n\nThis change depends on a change that failed to merge.\n\nChanges https://review.opendev.org/c/openstack/keystone/+/995161, https://review.opendev.org/c/openstack/devstack/+/995132 are needed.","accounts_in_message":[],"_revision_number":14},{"id":"b2aac7821971608f6b0d9acbfd733acb33d1477e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 00:57:08.000000000","message":"Patch Set 14:\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/2f2a59dc30a34390991d4d441d3b5b07\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/dc754cfbfe704fbe86c7da6672d8ac69 : FAILURE in 3m 16s\n- tempest-integrated-identity-asgi https://zuul.opendev.org/t/openstack/build/bc648007708443999cf243335058f783 : FAILURE in 19m 17s","accounts_in_message":[],"_revision_number":14},{"id":"2ca1e421f8a65cbf8f6ed25663bd5da0e0191299","tag":"autogenerated:gerrit:abandon","author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"date":"2026-06-30 05:12:20.000000000","message":"Abandoned\n\nAbandoning full-async Quart conversion. Keystone stays at Phase-0 (ASGI-served via a2wsgi wrapper). The sync RBAC enforce_call chain + model @property accessors make native async impractical without massive architectural refactoring for ~zero runtime gain over Phase-0 thread-pool serving.","accounts_in_message":[],"_revision_number":14}],"current_revision_number":14,"current_revision":"e71c6720e56531702000442d4886974a9817ea14","revisions":{"0bc3acfb09cfac982214818d57fe49a944fe7116":{"kind":"REWORK","_number":1,"created":"2026-06-29 07:33:52.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/1"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nDepends-On: https://review.opendev.org/c/openstack/oslo.middleware/+/995232\nDepends-On: https://review.opendev.org/c/openstack/requirements/+/995247\n\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0bc3acfb09cfac982214818d57fe49a944fe7116"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0bc3acfb09cfac982214818d57fe49a944fe7116"}]},"branch":"refs/heads/master"},"692b2c8fccfa2b4e1bd6c73b5665e120450feea2":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-06-29 07:48:13.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/2"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:48:02.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/692b2c8fccfa2b4e1bd6c73b5665e120450feea2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/692b2c8fccfa2b4e1bd6c73b5665e120450feea2"}]},"branch":"refs/heads/master"},"e42f90bfc69e44c9d9286219a2bf82dcab717444":{"kind":"REWORK","_number":3,"created":"2026-06-29 08:35:25.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/3"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 08:35:17.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/e42f90bfc69e44c9d9286219a2bf82dcab717444"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/e42f90bfc69e44c9d9286219a2bf82dcab717444"}]},"branch":"refs/heads/master"},"fe88f1744aa29d2c278ed601c9196c198ca993e6":{"kind":"REWORK","_number":4,"created":"2026-06-29 09:48:51.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/4"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 09:48:41.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/fe88f1744aa29d2c278ed601c9196c198ca993e6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/fe88f1744aa29d2c278ed601c9196c198ca993e6"}]},"branch":"refs/heads/master"},"8dc7793dc671dc3b2c2e86c848dca1e600ad8115":{"kind":"REWORK","_number":5,"created":"2026-06-29 10:58:16.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/5"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 10:58:05.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/8dc7793dc671dc3b2c2e86c848dca1e600ad8115"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/8dc7793dc671dc3b2c2e86c848dca1e600ad8115"}]},"branch":"refs/heads/master"},"96acb0daa74464a147ee2f989d0cdc3d6984305f":{"kind":"REWORK","_number":6,"created":"2026-06-29 11:51:00.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/6"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 11:50:57.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/96acb0daa74464a147ee2f989d0cdc3d6984305f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/96acb0daa74464a147ee2f989d0cdc3d6984305f"}]},"branch":"refs/heads/master"},"1a070ceb34d89df60d24ebc21e66e146b4954b03":{"kind":"REWORK","_number":7,"created":"2026-06-29 12:55:20.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/7"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 12:55:16.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/1a070ceb34d89df60d24ebc21e66e146b4954b03"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/1a070ceb34d89df60d24ebc21e66e146b4954b03"}]},"branch":"refs/heads/master"},"0f0852ad9440d50231accf6b662e401004476592":{"kind":"REWORK","_number":8,"created":"2026-06-29 16:17:32.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/8"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 16:17:29.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0f0852ad9440d50231accf6b662e401004476592"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0f0852ad9440d50231accf6b662e401004476592"}]},"branch":"refs/heads/master"},"302eaeddd312195d47c051b0d2d47cae39f47312":{"kind":"REWORK","_number":9,"created":"2026-06-29 17:20:23.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/9"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 17:20:20.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/302eaeddd312195d47c051b0d2d47cae39f47312"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/302eaeddd312195d47c051b0d2d47cae39f47312"}]},"branch":"refs/heads/master"},"e6b65e4fb92ec7245ba1b2a9aefcedc50ee41b4e":{"kind":"REWORK","_number":10,"created":"2026-06-29 18:21:06.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/10"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 18:21:02.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/e6b65e4fb92ec7245ba1b2a9aefcedc50ee41b4e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/e6b65e4fb92ec7245ba1b2a9aefcedc50ee41b4e"}]},"branch":"refs/heads/master"},"fc2a75c55d39001d4c8e7226b5ab98d161770252":{"kind":"REWORK","_number":11,"created":"2026-06-29 19:07:38.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/11"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 19:07:26.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/fc2a75c55d39001d4c8e7226b5ab98d161770252"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/fc2a75c55d39001d4c8e7226b5ab98d161770252"}]},"branch":"refs/heads/master"},"52e411be532bdc3651a574ecedee5fc09488ac02":{"kind":"REWORK","_number":12,"created":"2026-06-29 19:45:12.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/12"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 19:45:00.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/52e411be532bdc3651a574ecedee5fc09488ac02"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/52e411be532bdc3651a574ecedee5fc09488ac02"}]},"branch":"refs/heads/master"},"1b0f862d4e69c8955e9975bd7cb55403e176f8c6":{"kind":"REWORK","_number":13,"created":"2026-06-29 21:38:12.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/13"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 21:37:57.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nDepends-On: https://review.opendev.org/c/openstack/oslo.middleware/+/995232\nDepends-On: https://review.opendev.org/c/openstack/keystonemiddleware/+/995234\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/1b0f862d4e69c8955e9975bd7cb55403e176f8c6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/1b0f862d4e69c8955e9975bd7cb55403e176f8c6"}]},"branch":"refs/heads/master"},"e71c6720e56531702000442d4886974a9817ea14":{"kind":"REWORK","_number":14,"created":"2026-06-29 22:23:00.000000000","uploader":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"ref":"refs/changes/51/995251/14","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/51/995251/14","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/51/995251/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/51/995251/14"}}},"commit":{"parents":[{"commit":"b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e","subject":"Add ASGI application entry point for Keystone API","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/b0cb86b39e74f19ed6f19a7f5dedb53e9374d12e"}]}],"author":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 07:33:28.000000000","tz":-240},"committer":{"name":"Adam Harwell","email":"flux.adam@gmail.com","date":"2026-06-29 22:22:56.000000000","tz":-240},"subject":"Convert Keystone to native async ASGI with Quart","message":"Convert Keystone to native async ASGI with Quart\n\nFull async conversion of Keystone API:\n\n- Flask replaced by Quart (async-native, API-compatible)\n- flask_restful replaced by custom quart_restful shim (268 lines)\n- All 27 API modules: handlers are async def (199 methods)\n- All 17 SQL backends: native async sessions via oslo.db asyncio_facade\n- All 14 Manager classes: async methods (228 total)\n- All tests converted: 1692 async test methods across 99 files\n- Native ASGI middleware stack (oslo_middleware.asgi + ASGIAuthContextMiddleware)\n- WSGI entry: Quart\u0027s built-in wsgi_app attribute (zero adapter code)\n\nArchitecture:\n  Quart IS Flask with async. Same blueprints, same request object,\n  same config API. Handlers that were sync stay functionally identical\n  but now run in the event loop. DB uses oslo.db asyncio_facade\n  (asyncpg/aiosqlite). Managers call async drivers directly.\n\n  Only remaining asyncio.to_thread: oslo.messaging notifications\n  (sync C library boundary, fire-and-forget) and LDAP backend\n  (python-ldap is C/FFI, permanently needs threadpool).\n\nNew dependencies: quart\u003e\u003d0.19.0, asgiref\u003e\u003d3.7.0, asyncpg\u003e\u003d0.29.0,\n                  aiosqlite\u003e\u003d0.20.0\nRemoved dependencies: Flask, Flask-RESTful\n\nDepends-On: https://review.opendev.org/c/openstack/oslo.service/+/995128\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/995132\nDepends-On: https://review.opendev.org/c/openstack/oslo.middleware/+/995232\nDepends-On: https://review.opendev.org/c/openstack/keystonemiddleware/+/995234\n\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\nGenerated-By: claude-opus-4-6 (OpenCode)\nChange-Id: I212bc76fea2f2ec179b0e57a62522dbd29e68bab\nSigned-off-by: Adam Harwell \u003cflux.adam@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/e71c6720e56531702000442d4886974a9817ea14"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/e71c6720e56531702000442d4886974a9817ea14"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
