{"number":333,"title":"The API refuses a field an edit does not take (#330)","body":"Closes #330 (from ~/oxygen_feedback.md, metalgear 2026-10-25). The rest of that report (oh proposal ready, PATCH {\"draft\": false}) was already built in #313 and is live. This adds the last part: PATCH on an issue, proposal, project, milestone, release or drop now answers 422 naming an unknown field instead of 200 with nothing changed. Test in tests/proposals.rs. Gate green (351 tests).","author":"andymccall","state":"landed","target":"main","source":{"kind":"bookmark","bookmark":"api-unknown-fields"},"changes":[{"hash":"5a9a6e9a15bcda9919eae94e7b6a2e5f31530f40ed04688745e3cf21ddc02e94","message":"The API refuses a field an edit does not take (refs #330)\n\nPATCH on an issue, proposal, project, milestone, release or drop answered\n200 to an unknown field and changed nothing ({\"ready\": true} on a draft\nproposal looked like success). The edit types now deny unknown fields:\n422 naming the field and the ones taken. oh proposal ready and PATCH\n{\"draft\": false} already make a draft ready (#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":1793015926395,"deps":["09ffa7b600a913f425e49a1c43cc9ca255b7cbf28d256bd91c16d1aa76392a14","166f6e9bf4f134de4e0de65a2d4453aa82c04cbcff14f3854bb7e8a7ee361182","27babfa165801e966a746a009b6f5cf8d610b3866e1200163b3ae02b9a8eb8d5","5ea4872f23e86a93929d6d7c4ac16216eb188a41f8553dfcc40c0bb6087210a3","739a763a558c04cb6e59e66ed47efa071fa5e97b75c38648dfd040da6c249098","76f262e1a6663e5a3e9f10e04826b7dca067762ff045ce96948162b228a2c4f1","a7e6e8e6094c0a836ddde37499e7b44d64db9db4a3404d871eaa92682aea12c6","b5668108487f12dd7f03ba9c52f7b95f82e8aab92c8c14f75cb949e7398a68c2","ced6d3afc5cf135158603e2acf3c2fa8473f93488c5a9320df2e064d80db00a1","d23464c0ac60f60775ae362f92fa08a4b1413e8b1d89e146c1699944bc109c19","de505df5cf8d527f25f81c64938d8e4ec9a6a631b9eefdf2c335abf7204f8046","ef20fdc14e8b65290f49367c71f7ee730c287e5ae61513eaf82616dd5329b1ed"],"head":false,"signature":{"status":"valid","key":"7ac8a5e1afbe2f343b14af8fec9ab939bfbc9a903ede3a8489666a2ebfe5fdd2","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"7ac8a5e1afbe2f343b14af8fec9ab939bfbc9a903ede3a8489666a2ebfe5fdd2","scope":"changes,refs,seal","expires_ms":1793016529574,"revoked":false}},{"hash":"34388e6129637c460252d3a72a4f6baf82b3e9a3bb312c4aead484e1fa8a5756","message":"Merge main into #330's proposal: both changelog entries kept (refs #330)","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":1793024143630,"deps":["262ec9c51a5c37c68b17e6e78ad6c5583ee8f7a0b8debdc9d81b1454e878358f","27babfa165801e966a746a009b6f5cf8d610b3866e1200163b3ae02b9a8eb8d5","5a9a6e9a15bcda9919eae94e7b6a2e5f31530f40ed04688745e3cf21ddc02e94","a7e6e8e6094c0a836ddde37499e7b44d64db9db4a3404d871eaa92682aea12c6","b5668108487f12dd7f03ba9c52f7b95f82e8aab92c8c14f75cb949e7398a68c2"],"head":false,"signature":{"status":"valid","key":"c7244955b2e6411a7ce4791e76647275dacacd9102325ac76d7e94462041b404","sealed":true,"revoked":false},"via":{"name":"agent:claude@andymccall","key":"c7244955b2e6411a7ce4791e76647275dacacd9102325ac76d7e94462041b404","scope":"changes,refs,seal","expires_ms":1793024744513,"revoked":false}}],"projected_heads":["021f36a627f32602d06536c414c44f9c7448e2424a05286b46da4804baa53591","0cd118748131b9e7e98a2c9b7b50df8ebcbda337097e6b2d61110408cc4d9b33","1966661b1880eb65b7662730b9e609f06d0cbe16dddba1e9a8be8599f5296079","19c71c828f86cc7dbcdd8d0c8d34d9f470b90a45d4bc384686498305b0f6b33e","1b770a1fecf00ba25f4dec05fffd399e8805234618e48ded335d64c955bb5374","1d9702887eee79babadd1a7aa8314ef4500def25217c5137a4ee5587f8be3db0","20c36ed92b6b052a02ef585998dc7e42b857a014d92920c913f3507ba345a620","260c33b4b6c4d8d23000b3d146fed71ec748a95dc6fc058119ed2a7c1627d31f","2bbdc0268c23bb07c0fd0ea8922eb70e8bfa18da6bb303ec4a59e7ab5dae7fe2","2d58f17e728b4125bbd7b5d2be9c692536e336f53bd3b34dc56f0361b38b50df","317d776c725b16fe9ed5fd849f2fcb21afdd53bdce4d1c1eca038fc90f44e426","32cfb089f5e6a8eede757776fa39cf1fe98594bda3c89cfc867f07d768d7b510","34388e6129637c460252d3a72a4f6baf82b3e9a3bb312c4aead484e1fa8a5756","3a01077da29aabb3ce6154e495f4d2064756cdef5094f011eb0da88e1fe60687","3e5cd2eba62654482a1214b1c387ffce03fa802047622660d17878689e42007f","4745b9844987f696f39f21d7036d00f92adec2b9a507e740fdb7bd28f5fd1d72","56a786aa42f1e2a8c6da70e1acbc76edc81a8c746294d06d9c1be6fa6725e2bf","6978fd76a0666e56bc28171db3f8add9e346ebe90497646c92b8ab10c99a28dc","6ff755541a622b944b170f3a83dfb95ecf972a4387dd77ff481a34df28e05e82","72cde3da4176aff69eecc9cc4a625aa277dc22cd4cd5728ab1e18d0646135100","73beb84b202a8785d9caf0bb65e04c2feb6ae60cea0d5779133cba332a033cb8","76f93eaefe451cb3fe2daefccf8fd5b8c3bbb071a030a6876459bcde7ac54664","8f0efa0729b02b703ca4caeb29ee53b6acd7c4e2e403f140617b26430d0e8570","92cea629fdf6614fe819c850b117a530402d079bc5dfc690ddacb0fe044fd336","967ef74f6fd9847b2d48a7a20b27bade903fe122f34d4eab7e48efb5242a0020","9991530b4beee381b95233964971965ad66ac833968f4c8f1fdbf4f1c2fb1713","9aee52d392a67323824e269c3f0ffdf4c0e066e2bba44bd4d9204368f3a034a1","9bc6b4720fc12185874a9710b310ddb36d2625cd86d653d23783b960915ef19d","a0dd06b0094eb52d4347f6bde0572de667a0d2cbac5878d9e6928ec3bba09947","a2b29af1ce88b4649df2c55022862b05a3c1079a0a325a5bd4ab6764b473cbd5","a2ef53c5db269fa8bc86bb8abb13bb10ccba916129a301ca8738cb4829ff6680","a7c05940ebc4ba5c73eb14afcc7579680e1cdb53995e464db10d617e055c5d57","ad01845c4bf86859c3072a48277436580de78bbfe6ea6bc85de9b350522bf92b","ae138eea7a71055eed1bdb63b016828e6bbe2de7ff2b8b06a741ebeaa759e950","b951c58734e86e85465b9f0ecc65ea5642d3dedcf5e3ef481ca32c9790c15dfe","bd630386001ed3d0fc0d03c01548c193a2297f90b6fedb00b5883259f9ca1ad0","bd91edeb44f8f318af68521ca74c35ee48f09e1002ce0c5972bc8ac10cea6862","c21ef37dd4a0641cafb7fe4cf430093934e416d10b582d4183d9c30f722f42e5","c2732e07323b52f2491200ad8989352bc6fc6834c4d97a21e550b3abbe0acafb","c33dbd9a0d38f03313995c1259c16adbd34571f06efe1a71438b51783f1d7b36","cefb0ea24511445166d0db129929255276092d452c7832e877235b49fcdc5881","d2077a57b1f9a114ebdee7cf9e95e81f8932ebc82b59b4b126664a6b1941260b","d2c1d6a7d12edeaca968546dc2fde25068f3de0afaee844ff11d5afd514e43eb","d336629ffa906b6783adf44337015e3c3d9d4437a6a4f97734367f903674db51","d4a0043fded4b0533c2f0377373bce57e38279a2b3935cdc62be08123505630b","d94449e42718409b41ab98335c6641b2b4429332e8a1cab535e76467509986b4","d9b3b84605a4f30f778d73011e379e8178f33d8d2c6d3d6704c7f5f7e108d5f7","db72849cd22e82e6160e21528548f9766cf4b10867415ce1b2fe177bfa05e71f","dc71378db1dc95169f80a85c58c80bc86dbd44546a90607b3a49297ec2e1843e","df68c58de9471dd2f1eada82669cb2adee804c70fd2507876790c00f10edf73f","e1078e99c5604bb12c431c02dacb6fba8ea2a0515abe39b3accedd23c78af9ac","e15409084ed6de68f460f830d74c15458dcee9ab20a6c8dd39145d04a895d54e","e8534c304744c8c7219c25a9b9cd6ff738ec039f09dfd1af2fb1299d7cae12c3","edcef27575a73e6acece529d1c0d3bb9f3509123de1a2c049ef4c0dd28b38bba","efb51b39db1c38e7b881f05a1ce1c46d09dc3317349df6ebfd24a2c6d12279db","f0f6c2d96b1cbdde9c994fe79244bfc4237f3392fc53c71abc5537085c745353","f59e9680d880b1abc8c0b3ac7efb316c71d0001936e45fae4decc1f4a9829f47"],"projected_state":"a31ae005f746c251e754f61dcb41f6b9cb9e5577e3f842adf4359ba47255a18d","conflicted":false,"approvals":[],"landable":false,"blockers":[],"created_ms":1793015940937,"updated_ms":1793025332127,"url":"https://oxygenhub.io/andymccall/oxygenhub/proposal/333","repository_url":"https://oxygenhub.io/andymccall/oxygenhub","source_url":null,"landed":{"by":"andymccall","via":"when its checks passed (set by andymccall)","when_ms":1793025332127},"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"}]}