{"number":314,"title":"A draft proposal can be made ready from oh and the API","body":"Fixes #313, from an agent's feedback: its finished proposal could not leave draft.\n\n- `PATCH …/proposals/{n}` takes the page's transitions: `state: \"open\"` makes a draft ready, `state: \"draft\"` turns an open one back, and `draft: false|true` says the same in the words of creation (it used to be ignored with a 200). Both given and disagreeing: 400.\n- `oh proposal ready N`, and `--undo` to make it a draft again.\n- Tested in `a_proposal_is_closed_and_reopened_through_the_api`; fmt and clippy clean.","author":"andymccall","state":"landed","target":"main","source":{"kind":"bookmark","bookmark":"draft-ready"},"changes":[{"hash":"09ffa7b600a913f425e49a1c43cc9ca255b7cbf28d256bd91c16d1aa76392a14","message":"A draft proposal can be made ready from oh and the API (refs #313)\n\nThe API's edit took only close and reopen, so a draft could leave draft\nonly on the page; draft: false was not a field and was ignored with a\n200. It now takes the page's transitions, by state or by draft, and oh\nproposal ready N (--undo) uses them.","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"4cd9916c150f426895a390868c6999314e0ef4955d657f30d2805647c747fc65","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1792949108981,"deps":["2291f8cc9c9678aa1529be16a0e644cf466f14fb3602765d902993fcff467014","5c6e92fd8d71f940f4769a1bc71d9461eb4f7f3b3cf118374a62f3b53eab4d09","62ceb2eec18c7f2e8a3742def34765ce1c158d57ad3284f508a47ac34f2220d7","71e65fcf95ab37246392ea0013ba4b53be8a9b804b5887bd555b5cecb10a41fa","739a763a558c04cb6e59e66ed47efa071fa5e97b75c38648dfd040da6c249098","73c01b3448ee739021595599fee16f03f873a1ba6a415681d042b7b237569810","a7e6e8e6094c0a836ddde37499e7b44d64db9db4a3404d871eaa92682aea12c6","b5668108487f12dd7f03ba9c52f7b95f82e8aab92c8c14f75cb949e7398a68c2","d23464c0ac60f60775ae362f92fa08a4b1413e8b1d89e146c1699944bc109c19","de505df5cf8d527f25f81c64938d8e4ec9a6a631b9eefdf2c335abf7204f8046"],"head":false,"signature":{"status":"valid","key":"73fbcb9910d8366cdf66e86e4da7f724fc7ef06ac5dc99075514b7d4454de380","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"73fbcb9910d8366cdf66e86e4da7f724fc7ef06ac5dc99075514b7d4454de380","scope":"changes,refs,seal","expires_ms":1792949709843,"revoked":false}},{"hash":"a36c79fd9493ea9a185c484b434b00cfdd7cc2c4d45b9b5b9f0c9f172233791f","message":"Merge main (0.9.3) into draft-ready: the changelog line stays under Unreleased (refs #313)","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"4cd9916c150f426895a390868c6999314e0ef4955d657f30d2805647c747fc65","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1792952252935,"deps":["09ffa7b600a913f425e49a1c43cc9ca255b7cbf28d256bd91c16d1aa76392a14","234921ea0834d3a9a813a644f8bcbb6327eb110431606dd668bee168b3b5d3d4","73c01b3448ee739021595599fee16f03f873a1ba6a415681d042b7b237569810","a7e6e8e6094c0a836ddde37499e7b44d64db9db4a3404d871eaa92682aea12c6","ab4df6aae179d6956437423a453c9b4f0fecab758c186b841557059162d58cb5","b5668108487f12dd7f03ba9c52f7b95f82e8aab92c8c14f75cb949e7398a68c2"],"head":false,"signature":{"status":"valid","key":"e8ad53b0a3af35985eed0a72f2d5a9e1b275cf960a2f04c75aee76007382f247","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"e8ad53b0a3af35985eed0a72f2d5a9e1b275cf960a2f04c75aee76007382f247","scope":"changes,refs,seal","expires_ms":1792952853342,"revoked":false}}],"projected_heads":["021f36a627f32602d06536c414c44f9c7448e2424a05286b46da4804baa53591","0cd118748131b9e7e98a2c9b7b50df8ebcbda337097e6b2d61110408cc4d9b33","1966661b1880eb65b7662730b9e609f06d0cbe16dddba1e9a8be8599f5296079","19c71c828f86cc7dbcdd8d0c8d34d9f470b90a45d4bc384686498305b0f6b33e","1b770a1fecf00ba25f4dec05fffd399e8805234618e48ded335d64c955bb5374","1d9702887eee79babadd1a7aa8314ef4500def25217c5137a4ee5587f8be3db0","1e23d0105921f536b1cf0483972849e0255efeb89b7f53656e36d2a8839ca14d","20c36ed92b6b052a02ef585998dc7e42b857a014d92920c913f3507ba345a620","260c33b4b6c4d8d23000b3d146fed71ec748a95dc6fc058119ed2a7c1627d31f","2bbdc0268c23bb07c0fd0ea8922eb70e8bfa18da6bb303ec4a59e7ab5dae7fe2","2d58f17e728b4125bbd7b5d2be9c692536e336f53bd3b34dc56f0361b38b50df","317d776c725b16fe9ed5fd849f2fcb21afdd53bdce4d1c1eca038fc90f44e426","32cfb089f5e6a8eede757776fa39cf1fe98594bda3c89cfc867f07d768d7b510","3a01077da29aabb3ce6154e495f4d2064756cdef5094f011eb0da88e1fe60687","3e5cd2eba62654482a1214b1c387ffce03fa802047622660d17878689e42007f","4745b9844987f696f39f21d7036d00f92adec2b9a507e740fdb7bd28f5fd1d72","5436f0dd942938b88d95fa7451994bfec9477a11cea9c9d15df6854bd9f5a828","56a786aa42f1e2a8c6da70e1acbc76edc81a8c746294d06d9c1be6fa6725e2bf","6978fd76a0666e56bc28171db3f8add9e346ebe90497646c92b8ab10c99a28dc","6ff755541a622b944b170f3a83dfb95ecf972a4387dd77ff481a34df28e05e82","72cde3da4176aff69eecc9cc4a625aa277dc22cd4cd5728ab1e18d0646135100","73beb84b202a8785d9caf0bb65e04c2feb6ae60cea0d5779133cba332a033cb8","76f93eaefe451cb3fe2daefccf8fd5b8c3bbb071a030a6876459bcde7ac54664","80642fde09cc3932f252db2388d4e84b5ea6e36f59f345ce13117e8db11e036b","92cea629fdf6614fe819c850b117a530402d079bc5dfc690ddacb0fe044fd336","967ef74f6fd9847b2d48a7a20b27bade903fe122f34d4eab7e48efb5242a0020","9991530b4beee381b95233964971965ad66ac833968f4c8f1fdbf4f1c2fb1713","9aee52d392a67323824e269c3f0ffdf4c0e066e2bba44bd4d9204368f3a034a1","9bc6b4720fc12185874a9710b310ddb36d2625cd86d653d23783b960915ef19d","a0dd06b0094eb52d4347f6bde0572de667a0d2cbac5878d9e6928ec3bba09947","a2b29af1ce88b4649df2c55022862b05a3c1079a0a325a5bd4ab6764b473cbd5","a2ef53c5db269fa8bc86bb8abb13bb10ccba916129a301ca8738cb4829ff6680","a36c79fd9493ea9a185c484b434b00cfdd7cc2c4d45b9b5b9f0c9f172233791f","a7c05940ebc4ba5c73eb14afcc7579680e1cdb53995e464db10d617e055c5d57","ad01845c4bf86859c3072a48277436580de78bbfe6ea6bc85de9b350522bf92b","ae138eea7a71055eed1bdb63b016828e6bbe2de7ff2b8b06a741ebeaa759e950","bd630386001ed3d0fc0d03c01548c193a2297f90b6fedb00b5883259f9ca1ad0","bd91edeb44f8f318af68521ca74c35ee48f09e1002ce0c5972bc8ac10cea6862","c21ef37dd4a0641cafb7fe4cf430093934e416d10b582d4183d9c30f722f42e5","c2732e07323b52f2491200ad8989352bc6fc6834c4d97a21e550b3abbe0acafb","c33dbd9a0d38f03313995c1259c16adbd34571f06efe1a71438b51783f1d7b36","cefb0ea24511445166d0db129929255276092d452c7832e877235b49fcdc5881","d2077a57b1f9a114ebdee7cf9e95e81f8932ebc82b59b4b126664a6b1941260b","d2c1d6a7d12edeaca968546dc2fde25068f3de0afaee844ff11d5afd514e43eb","d336629ffa906b6783adf44337015e3c3d9d4437a6a4f97734367f903674db51","d4a0043fded4b0533c2f0377373bce57e38279a2b3935cdc62be08123505630b","d94449e42718409b41ab98335c6641b2b4429332e8a1cab535e76467509986b4","d9b3b84605a4f30f778d73011e379e8178f33d8d2c6d3d6704c7f5f7e108d5f7","db72849cd22e82e6160e21528548f9766cf4b10867415ce1b2fe177bfa05e71f","dc71378db1dc95169f80a85c58c80bc86dbd44546a90607b3a49297ec2e1843e","df68c58de9471dd2f1eada82669cb2adee804c70fd2507876790c00f10edf73f","e1078e99c5604bb12c431c02dacb6fba8ea2a0515abe39b3accedd23c78af9ac","e15409084ed6de68f460f830d74c15458dcee9ab20a6c8dd39145d04a895d54e","edcef27575a73e6acece529d1c0d3bb9f3509123de1a2c049ef4c0dd28b38bba","efb51b39db1c38e7b881f05a1ce1c46d09dc3317349df6ebfd24a2c6d12279db","f0f6c2d96b1cbdde9c994fe79244bfc4237f3392fc53c71abc5537085c745353","f157bcea0e329a44ac78d59b88fb11028b05d17aa820106d94ba128d777df124","f59e9680d880b1abc8c0b3ac7efb316c71d0001936e45fae4decc1f4a9829f47"],"projected_state":"255c32bab5bc24e8ecdf241a55c2cbd509b82d84f487c91a95a15cee1e387393","conflicted":false,"approvals":[],"landable":false,"blockers":[],"created_ms":1792949843265,"updated_ms":1792957758393,"url":"https://oxygenhub.io/andymccall/oxygenhub/proposal/314","repository_url":"https://oxygenhub.io/andymccall/oxygenhub","source_url":null,"landed":{"by":"andymccall","via":"when its checks passed (set by andymccall)","when_ms":1792957758393},"auto_land":null,"requested_reviewers":[],"labels":[{"name":"bug","colour":"#c62d47","description":"Something does not work"},{"name":"gap","colour":"#8592ad","description":"Found by using the platform for real"}]}