Description
The result of realize() or fullyRealize() is not always guaranteed to be a WFBase instance. This has ramifications for further applications of these operations, including idempotence. We also have to implement point-solutions to address downstream code that expects a WFBase but instead receives bare JSON. T426336 is probably a manifestation of this; also see TODOs tagged against this here task in function-orchestrator.
Desired behavior/Acceptance criteria (returned value, expected error, performance expectations, etc.)
- consider enforcing the post-condition that realize() and fullyRealize() must always return a WFBase instance
- no more broken
- make WFReference.fullyRealize call fullyRealize on its result
- audit other WFBase types in like fashion
- setRealized() should enforce the same guarantees as resolve(), especially on sub-elements of complex types (WFObject, WFList)
- setRealized should then be re-enabled for WFLists
Completion checklist
- Before closing this task, review one by one the checklist available here: https://www.mediawiki.org/wiki/Abstract_Wikipedia_team/Definition_of_Done#Back-end_Task/Bug_completion_checklist