Page MenuHomePhabricator

Support Evaluator-Orchestrator callbacks
Open, MediumPublic

Description

Evaluator-Orchestrator callbacks is the ability for code implementations, which are executed by the Evaluator, to make function calls back to the Orchestrator as part of their execution. Previously, we've use the words "reentrant" and "reentrancy" to describe this ability (and they still may appear in some places), but we've decided not to use those words anymore.

This is an umbrella ticket to collect all tasks related to this capability.

Related Objects

StatusSubtypeAssignedTask
OpenNone
OpenNone
ResolvedDMartin-WMF
ResolvedDMartin-WMF
DeclinedNone
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
Resolvedcmassaro
Resolvedcmassaro
InvalidNone
ResolvedDMartin-WMF
ResolvedJdforrester-WMF
DeclinedNone
DuplicateNone
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedDMartin-WMF
ResolvedSecurityRLazarus
Duplicatecmassaro
ResolvedDMartin-WMF
ResolvedDMartin-WMF

Event Timeline

I don't think this should be marked as a duplicate of T412952, which is a time-bound piece of work that might or might not accomplish all of this Epic?

DMartin-WMF changed the task status from Duplicate to Declined.EditedJan 11 2026, 9:02 PM
DMartin-WMF subscribed.

Good point, @Jdforrester-WMF ; thanks. I interpreted this ticket according to its brief list of subtasks, which were either done or may be done as part of T412952. In other words, I didn't interpret this ticket to be all-encompassing with respect to supporting reentrancy. Either way, you are right it's not accurate to call these 2 tickets duplicates. I will re-open to remove the duplicate connection and also because there is still an open subtask.

Regarding the remaining subtask T334485, we are considering whether to include that under T412952, but it seems unlikely at this point.

Per team discussion, we want to assess later what remaining work is left here.

Leaving to @DMartin-WMF to consider what parts of this we still want to do.

Leaving to @DMartin-WMF to consider what parts of this we still want to do.

Thanks, @Jdforrester-WMF . Message received.

Shouldn't the task mention what re-entrancy is?

Shouldn't the task mention what re-entrancy is?

Indeed it should. Thanks for calling this out. It refers to Evaluator-Orchestrator callbacks; that is, the ability for code implementations, which are executed by the Evaluator, to make function calls back to the Orchestrator as part of their execution. In fact, we've decided not to use "reentrant" and "reentrancy" anymore, so I'm changing the title of this ticket.

This is an umbrella ticket to collect all tasks related to this capability. Most of this work under here has been completed, but not yet deployed, primarily because we are awaiting completion of a Security review.

DMartin-WMF renamed this task from Support re-entrancy to Support Evaluator-Orchestrator callbacks.Jul 16 2026, 1:05 AM

Perhaps deployment should be deferred if it has any chance of interacting with everything else? When the caching problems are fixed, we really need a few weeks of everything working.

Perhaps deployment should be deferred if it has any chance of interacting with everything else? When the caching problems are fixed, we really need a few weeks of everything working.

As you might recall, we've been working on this for over a year precisely because folks keep writing ever-more-complex Functions that time out. The caching problems to which I think you're referring are mostly due to this (but not entirely). The key design of this feature is that the Wikifunctions community can choose to use it or not on a per-Function basis, so if it's unused it will have no effect on anything.

Shouldn't the task mention what re-entrancy is?

No, not really; Phabricator isn't externally-facing documentation, but a working venue. Instead, we should do a better job of highlighting the regular community updates of what's being worked on, which links to tasks like this with some context.

As you might recall, we've been working on this for over a year precisely because folks keep writing ever-more-complex Functions that time out.

Yes, this is an important piece of work. I absolutely want it.

The caching problems to which I think you're referring are mostly due to this (but not entirely).

I don't think this is true. (I'm referring to rendering articles, as tracked in T430898.) Can you explain why you think so? I believe over 95% of failed responses on AW are not caused by long-running functions. The reason I can tell this is when we construct the article in the first place, each function call is added separately, and runs fine, returning a result. So, for example, the other day, we made this, with every single fragment working as expected:

image.png (428×442 px, 161 KB)

But today, it looks like this:
image.png (603×886 px, 250 KB)

So IMO all the errors are the result of problematic execution sequencing and caching bugs.

The key design of this feature is that the Wikifunctions community can choose to use it or not on a per-Function basis, so if it's unused it will have no effect on anything.

Okay. If it cannot degrade anything existing, go for it. You're the ones giving the talk at WIkimania!

I do not think this is resolved since what I want is allow callback to run any function, not just some pre-defined one. (This also include running on-the-fly anonymous functions provided by function inputs.)

Anonymous function means https://www.wikifunctions.org/view/en/Z38546

I do not think this is resolved since what I want is allow callback to run any function, not just some pre-defined one. (This also include running on-the-fly anonymous functions provided by function inputs.)

Right. Only an initial phase of this work has been completed; This ticket will be kept open for possible further developments.

… but to be clear, we are extremely unlikely to work on this any time soon, given Security's concerns.

More info please. Does "this" mean anonymous functions, or does it mean any extension beyond the inital test set that is now available?