)]}'
{"id":"openstack%2Fswift~983926","triplet_id":"openstack%2Fswift~stable%2F2026.1~I4898c8250fe85dbbf66d0ab3d24b0ae9802820f5","project":"openstack/swift","branch":"stable/2026.1","topic":"offset-inversion","attention_set":{},"removed_from_attention_set":{"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2026-05-27 20:41:12.000000000","reason":"Change was submitted"},"15343":{"account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"last_update":"2026-05-27 19:00:56.000000000","reason":"\u003cGERRIT_ACCOUNT_15343\u003e replied on the change","reason_account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}},"hashtags":[],"change_id":"I4898c8250fe85dbbf66d0ab3d24b0ae9802820f5","subject":"timestamps: support offsets with Timestamp.__invert__","status":"MERGED","created":"2026-04-09 19:15:57.000000000","updated":"2026-05-27 20:42:39.000000000","submitted":"2026-05-27 20:41:12.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"983926-offset-inversion","meta_rev_id":"9e5710d7f4c93da8fbcdf2ffe6f31ba518758fd2","_number":983926,"virtual_id_number":983926,"owner":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-05-27 20:41:12.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"recommended":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":1,"date":"2026-04-13 10:04:05.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-05-27 19:00:56.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"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":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"all":[{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-05-27 19:00:56.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-04-09 19:15:57.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"state":"REVIEWER"},{"updated":"2026-04-09 19:56:21.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":"CC"},{"updated":"2026-04-09 20:31:30.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":"6747ab0799e8ec1c5dca5bd10babd082abd63883","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-04-09 19:15:57.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"3ad95a57f2e20fd93e6658932b4a824ce3422153","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 19:56:21.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/12879bb98ace475f8c2070a3387d7a90\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/f35c78ef25884c70b6e51ce6e2cd05ae : SUCCESS in 33m 44s","accounts_in_message":[],"_revision_number":1},{"id":"ad861818e9ae9a2dff6f193e30915d00f1170ad1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 20:31:30.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/84fd14f78b0a4430a2134d1e11b0787d\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/36e942b0c1bb4f4f98aae7478dce95ab : SUCCESS in 10m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/dfb009201f2e4a8e9953aa247eb3a1d9 : SUCCESS in 38m 38s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f075fcf052974c4f94de944be2d1256f : SUCCESS in 1h 13m 34s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/afe79a953fbf4767b7593d6fc4eb1834 : SUCCESS in 39m 55s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/cb504c7c26c54f8283f9744f7f1d2cc7 : SUCCESS in 1h 03m 30s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/da573c0b79894705921621cbb83d00cb : SUCCESS in 17m 44s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/01cde9ca0b574b7180dc60de17b1f073 : SUCCESS in 19m 20s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f82935478c6a44d9ab32577d7acb02b7 : SUCCESS in 23m 14s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/d84403121cbb4e34bf5b85db14d51902 : SUCCESS in 5m 25s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/43f2ccf8cfea449e85eea5bf9f8529ba : SUCCESS in 10m 49s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/a071d132fd7b45cb9cf0cd3443725d1f : SUCCESS in 21m 15s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/810a085a27684300af288e148b06237c : SUCCESS in 23m 21s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/d9e20399516d4104946c3c56fdcb31be : SUCCESS in 9m 12s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/6c5ca23035ac498dbc2c8e59ad304622 : SUCCESS in 10m 04s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/0325d664266c46d69ed1d89980976e2a : SUCCESS in 14m 04s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/331adbf3de2248ddbde42f6ae74ebe6a : SUCCESS in 19m 59s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/508a0f38ef634f7f851caedb7f782691 : SUCCESS in 8m 53s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/c4a6d428a69343658f34c8835e5b87fc : SUCCESS in 22m 21s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/b9f8a2b289704669acefe81f5abdc3d0 : SUCCESS in 8m 55s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/26ad9154950d42c0a5cec3a290173991 : SUCCESS in 1h 00m 10s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/723c021516834a3f9b136773058f2798 : SUCCESS in 1h 01m 55s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/4415f204d45146c69413bf30d439ffdd : SUCCESS in 56m 42s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/200e6d9f73d14a4d8f3254feebb81458 : SUCCESS in 28m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f3a088bfcd794b60830842700431f4b8 : SUCCESS in 4m 26s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/7b930a24790e42da905af46ec88d407c : SUCCESS in 20m 04s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d9a90c257e0b4298a959258e54758b2d : SUCCESS in 1h 09m 22s","accounts_in_message":[],"_revision_number":1},{"id":"a60db11483413573874b5171f6505a8b54095eb2","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-04-13 10:04:05.000000000","message":"Patch Set 1: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"bce6ee7dd8c41f023799c74e5207307938161737","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-05-27 19:00:56.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1\n\n(2 comments)","accounts_in_message":[],"_revision_number":1},{"id":"8023b3cb7106a90af11a7d4ff8f8799ea9788e14","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 19:01:28.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"1a17250cc27820a808c81efeb5903633282461fc","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 20:41:12.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/cab08012c0c94586bf24f71e685441bf\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/51b8a449cede41d4bf382bf611f46945 : SUCCESS in 11m 40s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5bdf027be5a04a389d9a2a208d717fe8 : SUCCESS in 9m 02s\n- grenade https://zuul.opendev.org/t/openstack/build/7d1ed942bc464ff093de2e85e818099f : SUCCESS in 1h 02m 21s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/1898a3658d9b445da3bde0ff92f8ff8e : SUCCESS in 31m 02s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/048eedf5abff45e1a8af47f0ae8d11a2 : SUCCESS in 56m 03s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/8888eec683bd4e5da33f1217fbb41547 : SUCCESS in 1h 08m 46s\n- swift-upload-image https://zuul.opendev.org/t/openstack/build/425d2b92cda74c05ae09483a6efd0050 : SUCCESS in 7m 12s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/2c36621d0ace4362aed9e3e7c91dd613 : SUCCESS in 25m 06s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/8dd811d51c0b4f7f928ab5a0c4f1c33a : SUCCESS in 13m 53s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/f0ecf1fe157b4729bccfcd75c49857d2 : SUCCESS in 28m 56s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/a42c490ef2fc48e4b582ddcdae444484 : SUCCESS in 19m 13s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/61606b48972e451c8e57615001a70a17 : SUCCESS in 15m 20s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/e6056dbe2ec945c5afc013f82f3a44ae : SUCCESS in 15m 19s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/a5c048ac89694e9682cc693fa3f7f35e : SUCCESS in 15m 52s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/bb76d5921a69459ba262ba050daa9df3 : SUCCESS in 3m 35s\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/b6853171c44b4341b17feb773aa9f5e6 : SUCCESS in 8m 45s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/fc96cd5ab1c744df98e5fa9524bab4af : SUCCESS in 1h 01m 41s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/2567079444f54a439f8c1674f28d440e : SUCCESS in 47m 14s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/7e9aa51f6f3843518cb2e71e7572568d : SUCCESS in 50m 48s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/09e0786db08147f5adeaa1499498f37b : SUCCESS in 28m 48s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c31bed84d6034857abddfe707c2c404b : SUCCESS in 4m 10s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/d8f6cae7cf84477aafc6644e82fc8741 : SUCCESS in 11m 17s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/347608975ad24062b554aa2709c7284b : SUCCESS in 57m 01s","accounts_in_message":[],"_revision_number":1},{"id":"265d66b4fd15568e0c63e1e4fdaa8845eb0028a6","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 20:41:12.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"9e5710d7f4c93da8fbcdf2ffe6f31ba518758fd2","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 20:42:39.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/a5d2fd4e437244c78583425d6ae7710f\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bd9ca8cb698143e69f260b47a0c53320 : SUCCESS in 57s\n- swift-promote-image https://zuul.opendev.org/t/openstack/build/c878518768004e59a60ea2bc142dd4d2 : SUCCESS in 46s (non-voting)","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"ac7a0abceafe9668ed796ee47c5cda022046cc7c","revisions":{"ac7a0abceafe9668ed796ee47c5cda022046cc7c":{"kind":"REWORK","_number":1,"created":"2026-04-09 19:15:57.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/26/983926/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/26/983926/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/26/983926/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/26/983926/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/26/983926/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/26/983926/1"}}},"commit":{"parents":[{"commit":"78b20c6f29802a35cd559d8c63ec3ab48b75bf81","subject":"Update TOX_CONSTRAINTS_FILE for stable/2026.1","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/78b20c6f29802a35cd559d8c63ec3ab48b75bf81"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-03-24 14:28:16.000000000","tz":0},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2026-04-09 19:15:19.000000000","tz":-420},"subject":"timestamps: support offsets with Timestamp.__invert__","message":"timestamps: support offsets with Timestamp.__invert__\n\nPreviously the Timestamp class inversion method did not allow a hex\noffset part in the Timestamp being inverted. The sole use case for\nTimestamp inversion is object_versioning where PUT request x-timestamp\nheaders (and therefore version-id\u0027s) are not expected to have offsets.\n\nHowever, in the future, x-timestamp headers may be extended to have\nhex parts and it will be useful during upgrades for legacy object\nversioning middleware to at least allow version_id\u0027s that have a hex\npart. This patch therefore pre-emptively adds support for inverting\nTimestamps with a hex offset part.\n\nRelated-Change: Ic7d39ba425ca324eeb4543a2ce8d03428e2225a\nChange-Id: I4898c8250fe85dbbf66d0ab3d24b0ae9802820f5\nSigned-off-by: Alistair Coles \u003calistairncoles@gmail.com\u003e\n(cherry picked from commit 92ca1b8df7cc6521206a72b73d457254d9517725)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ac7a0abceafe9668ed796ee47c5cda022046cc7c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ac7a0abceafe9668ed796ee47c5cda022046cc7c"}]},"branch":"refs/heads/stable/2026.1"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
