{"data":{"id":"magento2-39888","source":"github-pr","sourceRef":"magento/magento2#39888","title":"magento/magento2#39729: Cannot return null for non-nullable field \"SelectedCustomizableOption.label\"","pr":{"number":39888,"url":"https://github.com/magento/magento2/pull/39888","author":"KrasnoshchokBohdan","mergedAt":"2025-08-04T06:11:48Z","mergeCommit":"ae32626ec49111ded0ecac0d4f702e32b7c5bbcd","headCommit":"983f18fa259b6ad964ed3c1a335be9ba2e59643b","baseRef":"2.4-develop","diffSha256":"06348001dc13360a7454aa643d395296472044b7d7e44f674c8e46511b5d9ff3"},"issues":[],"fixedIn":"2.4.9","containingTags":["2.4.9"],"reportedOn":null,"codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"clean","2.4.8-p1":"clean","2.4.8-p2":"clean","2.4.8-p3":"clean","2.4.8-p4":"clean","2.4.8-p5":"clean","2.4.9":"conflict"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10","2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5"],"components":["magento/module-quote-graph-ql"],"files":[{"path":"app/code/Magento/QuoteGraphQl/Model/Resolver/CustomizableOptions.php","change":"modified","package":"magento/module-quote-graph-ql"}],"stripped":{"tests":["app/code/Magento/QuoteGraphQl/Test/Unit/Model/Resolver/CustomizableOptionsTest.php"],"docs":[],"outsideCode":[]},"linesChanged":9,"mergeBatched":false,"excluded":null,"sections":{"description":"Skip any deleted/invalid custom options instead of including them in the result\n\\Magento\\QuoteGraphQl\\Model\\Resolver\\CustomizableOptions::resolve","stepsToReproduce":"1. create custom options in products A and B \n2. add to cart products A and B\n3. remove custom options from product A or B\n4. attempt to get the cart using graphql\n```{\n  cart(cart_id: \"xxxx\") {\n    items {\n      ... on SimpleCartItem {\n        customizable_options {\n          label\n          values {\n            label\n            value\n          }\n        }\n      }\n    }\n  }\n}\n```","expectedResult":null,"actualResult":null,"source":"pr"},"signatures":[],"labels":{"area":[],"component":[],"priority":null,"severity":null,"reportedOn":[]},"categories":[],"triage":{"model":"@cf/cloudflare/clef","requestHash":"6b8f6b62f6d5a0e009e2bfeca4075336f1090fbd8c2a85ba33367cf2b30a00f3","isBugfix":0.9705,"changeKind":{"choice":"bugfix","probabilities":{"bugfix":0.9617,"feature":0.0054,"refactor":0.0093,"tests_only":0.0094,"docs_only":0.0029,"dependency":0.0031,"cleanup":0.0082},"confidence":0.9126},"scope":{"score":0.6612,"probabilities":{"0":0.4569,"1":0.425,"2":0.1181},"confidence":0.105},"risk":{"score":0.3316,"probabilities":{"0":0.7793,"1":0.1098,"2":0.1109},"confidence":0.4475},"area":{"choice":"graphql_api","probabilities":{"catalog":0.0093,"checkout":0.0629,"customer":0.0029,"admin":0.0045,"graphql_api":0.9086,"framework":0.0037,"frontend":0.0039,"other":0.0042},"confidence":0.8054},"securityRelevant":0.0056,"reportedVersion":{"choice":"2.4.6","probabilities":{"2.4.0":0.0019,"2.4.0-p1":0.0022,"2.4.1":0.0034,"2.4.1-p1":0.0035,"2.4.2":0.0062,"2.4.2-p1":0.007,"2.4.2-p2":0.006,"2.4.3":0.0125,"2.4.3-p1":0.0172,"2.4.3-p2":0.0156,"2.4.3-p3":0.0081,"2.4.4":0.018,"2.4.4-p1":0.0194,"2.4.4-p10":0.0079,"2.4.4-p11":0.0109,"2.4.4-p12":0.0084,"2.4.4-p13":0.0081,"2.4.4-p14":0.0086,"2.4.4-p15":0.0067,"2.4.4-p16":0.0083,"2.4.4-p17":0.0068,"2.4.4-p18":0.0056,"2.4.4-p2":0.0025,"2.4.4-p3":0.0032,"2.4.4-p4":0.0034,"2.4.4-p5":0.004,"2.4.4-p6":0.0051,"2.4.4-p7":0.0053,"2.4.4-p8":0.0056,"2.4.4-p9":0.0048,"2.4.5":0.0216,"2.4.5-p1":0.0154,"2.4.5-p10":0.0091,"2.4.5-p11":0.0135,"2.4.5-p12":0.0107,"2.4.5-p13":0.01,"2.4.5-p14":0.0086,"2.4.5-p15":0.008,"2.4.5-p16":0.0091,"2.4.5-p17":0.0083,"2.4.5-p2":0.004,"2.4.5-p3":0.0072,"2.4.5-p4":0.0062,"2.4.5-p5":0.0046,"2.4.5-p6":0.0063,"2.4.5-p7":0.0072,"2.4.5-p8":0.0066,"2.4.5-p9":0.0052,"2.4.6":0.0542,"2.4.6-p1":0.0234,"2.4.6-p10":0.0111,"2.4.6-p11":0.0138,"2.4.6-p12":0.0125,"2.4.6-p13":0.0128,"2.4.6-p14":0.0109,"2.4.6-p15":0.0101,"2.4.6-p2":0.005,"2.4.6-p3":0.0104,"2.4.6-p4":0.01,"2.4.6-p5":0.0114,"2.4.6-p6":0.0104,"2.4.6-p7":0.0085,"2.4.6-p8":0.007,"2.4.6-p9":0.0077,"2.4.7":0.0282,"2.4.7-p1":0.0227,"2.4.7-p10":0.0103,"2.4.7-p2":0.0154,"2.4.7-p3":0.02,"2.4.7-p4":0.022,"2.4.7-p5":0.0168,"2.4.7-p6":0.0244,"2.4.7-p7":0.0162,"2.4.7-p8":0.0144,"2.4.7-p9":0.0085,"2.4.8":0.0293,"2.4.8-p1":0.0224,"2.4.8-p2":0.0213,"2.4.8-p3":0.0195,"2.4.8-p4":0.0155,"2.4.8-p5":0.0142,"2.4.9":0.0204,"unspecified":0.0515},"confidence":0.0068},"backportWorthy":{"score":1.6835,"probabilities":{"0":0.054,"1":0.2085,"2":0.7375},"confidence":0.3855}},"curated":{"title":"Cart GraphQL query fails on a null option label after a custom option is removed","description":"After custom options are deleted from a product in the cart, an attempt to get the cart customizable_options using GraphQL returns Cannot return null for non-nullable field SelectedCustomizableOption.label. The CustomizableOptions resolver in QuoteGraphQl now will skip deleted or invalid custom options instead of including them in the result.","categories":[],"author":"claude-code/opus-5.5","date":"2026-10-07","reviewedBy":null},"tests":{"2.4.8-p5":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-07T15:09:29.185Z","releaseCommit":"870a22c63d9d9b68fa3297962e2d5d5841115814","suites":{"unit":{"before":"fail","after":"pass","runAt":"2026-10-07T15:09:29.185Z"}}},"2.4.7-p10":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-07T15:16:52.306Z","releaseCommit":"72561bf80652f57cc642a03e2c9a51d74a285b14","suites":{"unit":{"before":"fail","after":"pass","runAt":"2026-10-07T15:16:52.306Z"}}}}},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-39888 details"}