M8F-285: Fix missing process data in certain process instance stages#84
Merged
auslin-aot merged 1 commit intoMay 21, 2026
Conversation
PR Agent ReviewBlocking issues
Non-blocking suggestions
Recommended tests
Generated by model |
…able validation, and add workflow exception notes support
7114a66 to
38b2c28
Compare
auslin-aot
approved these changes
May 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
JIRA Ticket
M8F-285
Description
Fixes intermittent issues where workflow task pages displayed errors or empty
values even though the underlying task data was present. Adds m8flow-backend
patches around four upstream code paths that surfaced confusing 500s / blocked
the flow:
workflow.data(data objects) plus data from all completed tasks in theprocess instance, not just the current task's local data. Variables computed
in a prior ServiceTask's postScript (e.g.
prs_count,prs_status,prs_table_rowsin the GitHub connector demo) now render correctly in thenext ManualTask. Any failure during rendering is swallowed and logged so the
form still loads.
options_from_task_data_var:variable that is missing or an empty list,upstream raised a 500 ApiError. We now log a warning and render the field
with empty options instead of breaking the page.
spiff_task_to_api_task— None email crash — upstream did",".join([u.email for u in human_task.potential_owners]), butUserModel.emailis nullable. A potential owner without an email producedTypeError: sequence item 0: expected str instance, NoneType foundinsidethe interstitial stream, which put the process instance into ERROR status
and blocked task submission. The patch falls back to
username(non-nullable) for any owner whose email is None.
WorkflowException.add_note(None)poisoning —WorkflowException.__init__and
TaskModelError.__init__calladd_note(did_you_mean_from_name_error(...)), which returnsNoneforNameErrors with no close match. The None ends up in
self.notes, then anylater
str(exception)triggers". ".join(self.notes)and raises amisleading TypeError instead of surfacing the real error. The patch
overrides
add_noteon both classes to silently skip None values.All fixes are isolated to
m8flow-backendpatch modules (no edits to upstreamspiffworkflow-backend). New patches registered in
patch_registry.py.Type
Changes
Testing
render with the postScript-computed values; previously all values were blank.
iterations (Submit Content → Review Content → Changes Requested → Submit
Content again). Confirmed:
banner on the task page.
user_input_required(no longer flips toerror) so Submit / Save and close remain enabled.options_from_task_data_var:variables renderwith empty options instead of returning a 500.
Related Issues
Closes #