Commit 553f05a
fix(serenity): job-status polling follows the chain to its effective terminal hop (LLMO-7418 external-review Finding 8)
The runner marks the ORIGINAL AsyncJob COMPLETED on any non-throwing handler
return, including a self-requeue ({ requeuedJobId }, workspace not yet
settled) or a chain hand-off ({ provisioningStatus: 'ready', chainedJobId },
the chained market-create/activate work not yet started). getPromptsJobStatus
(the same handler serving the generic /serenity/jobs/:jobId polling alias)
just echoed that first hop's status/result verbatim, so a client polling
during a chain saw a premature "COMPLETED" the moment the FIRST hop merely
handed off, with no market created and no way to tell the difference from a
genuinely finished request. The frontend consumers built against this
contract this session all resolve on the first COMPLETED with no chain
awareness.
Fix is entirely backend-scoped, so no frontend change is needed: when the
polled job is COMPLETED and its result carries chainedJobId or
requeuedJobId, follow that pointer (recursively, capped at 10 hops against a
corrupt/cyclic chain) and report the EFFECTIVE terminal hop's status/result/
error instead. jobId/jobType in the response still reflect the ORIGINALLY-
requested job, so a caller polling a fixed URL never needs to learn
intermediate hop ids. Updated the two OpenAPI descriptions that previously
overclaimed "result is the same body a synchronous 2xx would have
returned" without qualifying that this only became true once the whole
chain, not just the first hop, had run.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>1 parent 59fdcc9 commit 553f05a
3 files changed
Lines changed: 166 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
597 | 597 | | |
598 | 598 | | |
599 | 599 | | |
600 | | - | |
601 | | - | |
602 | | - | |
603 | | - | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
604 | 607 | | |
605 | 608 | | |
606 | 609 | | |
| |||
1228 | 1231 | | |
1229 | 1232 | | |
1230 | 1233 | | |
1231 | | - | |
1232 | | - | |
1233 | | - | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
1234 | 1240 | | |
1235 | 1241 | | |
1236 | 1242 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1978 | 1978 | | |
1979 | 1979 | | |
1980 | 1980 | | |
1981 | | - | |
| 1981 | + | |
1982 | 1982 | | |
1983 | 1983 | | |
1984 | 1984 | | |
| |||
1987 | 1987 | | |
1988 | 1988 | | |
1989 | 1989 | | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
1990 | 2015 | | |
1991 | 2016 | | |
1992 | 2017 | | |
| |||
2010 | 2035 | | |
2011 | 2036 | | |
2012 | 2037 | | |
2013 | | - | |
| 2038 | + | |
| 2039 | + | |
| 2040 | + | |
2014 | 2041 | | |
2015 | 2042 | | |
2016 | 2043 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3034 | 3034 | | |
3035 | 3035 | | |
3036 | 3036 | | |
| 3037 | + | |
| 3038 | + | |
| 3039 | + | |
| 3040 | + | |
| 3041 | + | |
| 3042 | + | |
| 3043 | + | |
| 3044 | + | |
| 3045 | + | |
| 3046 | + | |
| 3047 | + | |
| 3048 | + | |
| 3049 | + | |
| 3050 | + | |
| 3051 | + | |
| 3052 | + | |
| 3053 | + | |
| 3054 | + | |
| 3055 | + | |
| 3056 | + | |
| 3057 | + | |
| 3058 | + | |
| 3059 | + | |
| 3060 | + | |
| 3061 | + | |
| 3062 | + | |
| 3063 | + | |
| 3064 | + | |
| 3065 | + | |
| 3066 | + | |
| 3067 | + | |
| 3068 | + | |
| 3069 | + | |
| 3070 | + | |
| 3071 | + | |
| 3072 | + | |
| 3073 | + | |
| 3074 | + | |
| 3075 | + | |
| 3076 | + | |
| 3077 | + | |
| 3078 | + | |
| 3079 | + | |
| 3080 | + | |
| 3081 | + | |
| 3082 | + | |
| 3083 | + | |
| 3084 | + | |
| 3085 | + | |
| 3086 | + | |
| 3087 | + | |
| 3088 | + | |
| 3089 | + | |
| 3090 | + | |
| 3091 | + | |
| 3092 | + | |
| 3093 | + | |
| 3094 | + | |
| 3095 | + | |
| 3096 | + | |
| 3097 | + | |
| 3098 | + | |
| 3099 | + | |
| 3100 | + | |
| 3101 | + | |
| 3102 | + | |
| 3103 | + | |
| 3104 | + | |
| 3105 | + | |
| 3106 | + | |
| 3107 | + | |
| 3108 | + | |
| 3109 | + | |
| 3110 | + | |
| 3111 | + | |
| 3112 | + | |
| 3113 | + | |
| 3114 | + | |
| 3115 | + | |
| 3116 | + | |
| 3117 | + | |
| 3118 | + | |
| 3119 | + | |
| 3120 | + | |
| 3121 | + | |
| 3122 | + | |
| 3123 | + | |
| 3124 | + | |
| 3125 | + | |
| 3126 | + | |
| 3127 | + | |
| 3128 | + | |
| 3129 | + | |
| 3130 | + | |
| 3131 | + | |
| 3132 | + | |
| 3133 | + | |
| 3134 | + | |
| 3135 | + | |
| 3136 | + | |
| 3137 | + | |
| 3138 | + | |
| 3139 | + | |
| 3140 | + | |
| 3141 | + | |
| 3142 | + | |
| 3143 | + | |
| 3144 | + | |
| 3145 | + | |
| 3146 | + | |
| 3147 | + | |
| 3148 | + | |
| 3149 | + | |
| 3150 | + | |
| 3151 | + | |
| 3152 | + | |
| 3153 | + | |
| 3154 | + | |
| 3155 | + | |
| 3156 | + | |
| 3157 | + | |
| 3158 | + | |
| 3159 | + | |
| 3160 | + | |
3037 | 3161 | | |
3038 | 3162 | | |
3039 | 3163 | | |
| |||
0 commit comments