{"number":132,"title":"Flow: say why a queued job waits, in oh and its check (#28)","body":"Closes #28 (Metal Gear's item 3: run #164's `performance` sat queued 30+ minutes with no word why).\n\nThe placement pass already knew: for #164 the API's `waiting` said *no runner can take it: earth-1 does not hold image 0ba25243a7c5; plex-1 does not hold image 0ba25243a7c5*. It just wasn't shown where people look.\n\n- `oh run view` and `oh run watch` print `waiting: …` under a queued job.\n- The run page opens that job's panel, so the reason is visible without a click.\n- The job's check summary carries the reason whenever it changes, so a proposal's checks say why they're stuck instead of \"waiting for a runner\".\n- Test: `a_job_no_runner_can_take_says_why` (API, page, check). Hub gate green (163 tests, clippy, fmt).\n\nIndependent of #131.","author":"andymccall","state":"landed","target":"main","source":{"kind":"bookmark","bookmark":"job-waits"},"changes":[{"hash":"67040b158ae233ccec6fa90ca649cce9ebb3761ee64a23f5a1d9265c54b46bd3","message":"Flow: say why a queued job waits, in oh and its check\n\nThe placement pass already worked out why no runner can take a ready\nqueued job (scope, tier, architecture, image held, labels, capacity, a\nrecent decline) and kept it on the job. oh run view and oh run watch now\nprint it under the job, the run page opens that job's panel to show it,\nand the job's check carries it whenever it changes, so a proposal says\nwhy its check is stuck instead of only 'waiting for a runner'.\n\ncloses #28","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"8bc05e0a32a86508708a7dffa1fdccee1f6601e8c8395275244a6c48a9684c8c","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1791718587517,"deps":["0b203bbf7cc3d20edc8ac79b9f13ded17ca92a9b896924fc982c3ee75442741c","2a83f5303458253ca676b38c479a96a8469bc39723ac7b74e0da95b8fcfcb673","36e5a9c15a841b3c83b70fa1077f2cc00a562d01776f24d6c824a2da019de3ff","42fa95540468b40f1710f40f1a79b1bea010c68de2bf9551876f2134644f8e09","4d2e44d79b03ab939a3b69c02fa7115265089c072018123c18fba764865fe298","5c6e92fd8d71f940f4769a1bc71d9461eb4f7f3b3cf118374a62f3b53eab4d09","93be9ce4653e32704c445475b3b3df34b72e8ca28723cb602770522bb7f71bf6","cc19697f8871064ada7194955455ed9ecd2a053bcc4410f657c9bcecc900e774","efd29a0033e83bc66c1a20de2fe6bb68baf256c4220eb182ff3fd7104f450a70"],"head":false,"signature":{"status":"valid","key":"8bc05e0a32a86508708a7dffa1fdccee1f6601e8c8395275244a6c48a9684c8c","sealed":false,"revoked":false}}],"projected_heads":["045f967db8f21b2aa9376e88e4e66ac266c50aa63685fa1bca479ffbe8cb8bf6","0650d94ede82feeb89b960cb8dcfe5b99d5830ad61369b4ae67f9629144c9779","1b3a00986a5af27d50714ac69a47297eb1eea88fa1017ee53bbc8d963d723859","1b770a1fecf00ba25f4dec05fffd399e8805234618e48ded335d64c955bb5374","1d9702887eee79babadd1a7aa8314ef4500def25217c5137a4ee5587f8be3db0","1e23d0105921f536b1cf0483972849e0255efeb89b7f53656e36d2a8839ca14d","1f8a37d351abb70f0859612ff821a4083a9b45697ff86920af2057c91f668988","20c36ed92b6b052a02ef585998dc7e42b857a014d92920c913f3507ba345a620","260c33b4b6c4d8d23000b3d146fed71ec748a95dc6fc058119ed2a7c1627d31f","2d58f17e728b4125bbd7b5d2be9c692536e336f53bd3b34dc56f0361b38b50df","3d5c825aebbacd0c2f7bcc0712e495f71da664a9d466f74423b4224bab3ab555","3e5cd2eba62654482a1214b1c387ffce03fa802047622660d17878689e42007f","56a786aa42f1e2a8c6da70e1acbc76edc81a8c746294d06d9c1be6fa6725e2bf","67040b158ae233ccec6fa90ca649cce9ebb3761ee64a23f5a1d9265c54b46bd3","67b24adbf35ad837aba115aadba8fac7993f2ccb4e7362d60505d2cc28b7cbee","6978fd76a0666e56bc28171db3f8add9e346ebe90497646c92b8ab10c99a28dc","6ff755541a622b944b170f3a83dfb95ecf972a4387dd77ff481a34df28e05e82","72cde3da4176aff69eecc9cc4a625aa277dc22cd4cd5728ab1e18d0646135100","73beb84b202a8785d9caf0bb65e04c2feb6ae60cea0d5779133cba332a033cb8","7b26e6118bc0aa60ea3f2495fd7cf09f50f30da63472a67db06990408098b2d9","883c77eaf2c9645cf8a634948c37c5b94942a4756d7810494c5d8998ba62eac1","8a2dbcb56246f568de32a5360d2f8be66bb9704909ce1b5cebb1f3051863f33b","8e820b4ae875238097b844db3c5acfc846811299075ccc5dcabceb1096adf5ac","92cea629fdf6614fe819c850b117a530402d079bc5dfc690ddacb0fe044fd336","967ef74f6fd9847b2d48a7a20b27bade903fe122f34d4eab7e48efb5242a0020","9991530b4beee381b95233964971965ad66ac833968f4c8f1fdbf4f1c2fb1713","9bc6b4720fc12185874a9710b310ddb36d2625cd86d653d23783b960915ef19d","a36bab6b9ffcbbac5e9f2500e4938f546d17993ef51f799e351695986871128f","a7c05940ebc4ba5c73eb14afcc7579680e1cdb53995e464db10d617e055c5d57","ad01845c4bf86859c3072a48277436580de78bbfe6ea6bc85de9b350522bf92b","ae138eea7a71055eed1bdb63b016828e6bbe2de7ff2b8b06a741ebeaa759e950","b210727578e88cb6d475b2ade065de6cbba939321382c491ea36e361a305d246","bd630386001ed3d0fc0d03c01548c193a2297f90b6fedb00b5883259f9ca1ad0","c0fac31d36fdfab3f7af0bcfc213767a973f016769e353538c30bfab90edd7fb","c21ef37dd4a0641cafb7fe4cf430093934e416d10b582d4183d9c30f722f42e5","c2732e07323b52f2491200ad8989352bc6fc6834c4d97a21e550b3abbe0acafb","c33dbd9a0d38f03313995c1259c16adbd34571f06efe1a71438b51783f1d7b36","c96b32865000b248ff1a38c6fd459d2f7e2bf4171f29e0e2cb3a9b988f0abbc1","cefb0ea24511445166d0db129929255276092d452c7832e877235b49fcdc5881","d336629ffa906b6783adf44337015e3c3d9d4437a6a4f97734367f903674db51","d94449e42718409b41ab98335c6641b2b4429332e8a1cab535e76467509986b4","db72849cd22e82e6160e21528548f9766cf4b10867415ce1b2fe177bfa05e71f","e1078e99c5604bb12c431c02dacb6fba8ea2a0515abe39b3accedd23c78af9ac","edcef27575a73e6acece529d1c0d3bb9f3509123de1a2c049ef4c0dd28b38bba","efb51b39db1c38e7b881f05a1ce1c46d09dc3317349df6ebfd24a2c6d12279db","f5c4433783335420787bf7c185fdc00ce8b856d2b57945ae841c88e94e8537ec","ff656953017324d89ff345da2edecab2eec2f200d4f87bd01d485294f33b8b36"],"projected_state":"deafabb46912688cf4d3745840b3a7f1ca702638fabed96aa9ef8fbebf5cb25f","conflicted":false,"approvals":[],"landable":false,"blockers":[],"created_ms":1791718622142,"updated_ms":1791723474308,"url":"https://oxygenhub.io/andymccall/oxygenhub/proposal/132","repository_url":"https://oxygenhub.io/andymccall/oxygenhub","source_url":null,"landed":{"by":"andymccall","via":"web","when_ms":1791723474308},"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"}]}