)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8dcec604278baa6421069958c52e81cbe3431037","unresolved":false,"context_lines":[{"line_number":13,"context_line":" - The reference URL is changed from launchpad to storyboard."},{"line_number":14,"context_line":" - The history section is added."},{"line_number":15,"context_line":" - The file is renamed to have the prefix of the story id"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ie56739f8979cb4dd318d2bdb9cb6eb9fa447328d"},{"line_number":18,"context_line":"Story: 2005297"},{"line_number":19,"context_line":"Task: 30183"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_89a1fff9","line":16,"updated":"2019-03-26 14:51:05.000000000","message":"@Chris: we gonna do the\n\n Previously-approved: stein\n\nthing for fast approval here?","commit_id":"7070b42431570305299c08309a18a98c303653b4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"83feaafcb57840f2f56dc933c9c71991e4bcefd0","unresolved":false,"context_lines":[{"line_number":13,"context_line":" - The reference URL is changed from launchpad to storyboard."},{"line_number":14,"context_line":" - The history section is added."},{"line_number":15,"context_line":" - The file is renamed to have the prefix of the story id"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ie56739f8979cb4dd318d2bdb9cb6eb9fa447328d"},{"line_number":18,"context_line":"Story: 2005297"},{"line_number":19,"context_line":"Task: 30183"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_4904774a","line":16,"in_reply_to":"5fc1f717_89a1fff9","updated":"2019-03-26 14:53:15.000000000","message":"...unless we want to do the squash thing as noted above.","commit_id":"7070b42431570305299c08309a18a98c303653b4"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1e99e654415e37fde6cf39ac6d8076e84f3b95eb","unresolved":false,"context_lines":[{"line_number":13,"context_line":" - The reference URL is changed from launchpad to storyboard."},{"line_number":14,"context_line":" - The history section is added."},{"line_number":15,"context_line":" - The file is renamed to have the prefix of the story id"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ie56739f8979cb4dd318d2bdb9cb6eb9fa447328d"},{"line_number":18,"context_line":"Story: 2005297"},{"line_number":19,"context_line":"Task: 30183"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5fc1f717_840b26d3","line":16,"in_reply_to":"5fc1f717_89a1fff9","updated":"2019-03-26 15:09:13.000000000","message":"That\u0027s the plan, yes, I\u0027m just in the process of writing that stuff up.","commit_id":"7070b42431570305299c08309a18a98c303653b4"}],"doc/source/specs/train/approved/2005297-negative-aggregate-membership.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6a14e69203c7fa0a505bf3a2d708290683d5cd0f","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e,!\u003cagg3\u003e"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"would result in HTTP 400 Bad Request error."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Instead, we support ``!in:`` prefix::"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_2c523814","line":87,"updated":"2019-03-27 17:55:11.000000000","message":"That this is a 400 but line 176 is not makes little sense to me.\n\nValid _syntax_ should not be dependent on the values in the query if those values are themselves correct syntax.\n\nSo either we do support ! in \"in\" or we don\u0027t, but not some weird version of both.","commit_id":"d57ca1b7613d2bcb0b1db1059a8b0c5a815874cc"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c775b58f33f5ad3dd299f6ffa068106361fa2865","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e,!\u003cagg3\u003e"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"would result in HTTP 400 Bad Request error."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Instead, we support ``!in:`` prefix::"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_823d35c5","line":87,"in_reply_to":"5fc1f717_2c523814","updated":"2019-03-27 19:46:43.000000000","message":"We support !in:, but not in:!\u003cfoo\u003e. The latter structure makes no sense. \n\nGood catch, Chris!","commit_id":"d57ca1b7613d2bcb0b1db1059a8b0c5a815874cc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d219efda827b0d3780f3ca93c84b2cd8484267ed","unresolved":false,"context_lines":[{"line_number":173,"context_line":"We do not return 400 if an agg UUID is found on both the positive and negative"},{"line_number":174,"context_line":"sides of the request. For example::"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e,!\u003cagg2\u003e"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"returns resource providers in \"agg1 or agg2\" and \"not in agg2\", which is"},{"line_number":179,"context_line":"resource providers in \"agg1\"."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_628a8964","line":176,"range":{"start_line":176,"start_character":4,"end_line":176,"end_character":39},"updated":"2019-03-27 19:57:15.000000000","message":"Oh, yeah, this should have been\n\n \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e\u0026member_of\u003d!in:\u003cagg2\u003e","commit_id":"d57ca1b7613d2bcb0b1db1059a8b0c5a815874cc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d219efda827b0d3780f3ca93c84b2cd8484267ed","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"According to this policy, we do not return 400 for cases like::"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    \u0026member_of\u003d\u003cagg1\u003e,!\u003cagg1\u003e"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Instead we return 200 with empty results since a resource provider cannot be"},{"line_number":186,"context_line":"both inside and outside of agg1 at the same time."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_22eec121","line":183,"range":{"start_line":183,"start_character":4,"end_line":183,"end_character":29},"updated":"2019-03-27 19:57:15.000000000","message":"likewise","commit_id":"d57ca1b7613d2bcb0b1db1059a8b0c5a815874cc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"03c2830f3d38f2211d23f00a20e4a00c0d4b221f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"\"Candidate resource providers must be at least one of agg1 or agg2,"},{"line_number":81,"context_line":"definitely in agg3 and definitely *not* in agg4.\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Note that we don\u0027t support ``!`` for argumentes to the ``in:`` prefix::"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e,!\u003cagg3\u003e"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_65d37302","line":83,"range":{"start_line":83,"start_character":37,"end_line":83,"end_character":47},"updated":"2019-03-27 21:01:14.000000000","message":"arguments","commit_id":"16412750721dcc06193e4a6d113dff7381212301"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"03c2830f3d38f2211d23f00a20e4a00c0d4b221f","unresolved":false,"context_lines":[{"line_number":174,"context_line":"sides of the request. For example::"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    \u0026member_of\u003d\u003cagg1\u003e,\u003cagg2\u003e,!\u003cagg2\u003e"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"returns resource providers that satisfy all three cases: in agg1, in agg2, and"},{"line_number":179,"context_line":"not in agg2. Logically, nothing can satisfy those three conditions, but it is a"},{"line_number":180,"context_line":"syntactically valid request, so the response would be a 200 with empty results."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_c50b477a","line":177,"updated":"2019-03-27 21:01:14.000000000","message":"what this misses, which I think should be included, is the case I originally thought was being described here (when I wasn\u0027t paying close attention to the syntax):\n\n \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e\u0026member_of\u003d!in:\u003cagg2\u003e\n\n...which *would* return providers in agg1, by the logic described in PS3.","commit_id":"16412750721dcc06193e4a6d113dff7381212301"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"388ce13fd9c53d361460443f33393beeb058f15c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"\"Candidate resource providers must be at least one of agg1 or agg2,"},{"line_number":81,"context_line":"definitely in agg3 and definitely *not* in agg4.\""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Note that we don\u0027t support ``!`` for argumentes to the ``in:`` prefix::"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  \u0026member_of\u003din:\u003cagg1\u003e,\u003cagg2\u003e,!\u003cagg3\u003e"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5fc1f717_601a81c6","line":83,"range":{"start_line":83,"start_character":37,"end_line":83,"end_character":47},"updated":"2019-03-27 21:48:48.000000000","message":"arguments","commit_id":"20aaf70d3c31367bd133c778a4ea3ceb119f47aa"}]}
