Troubleshooting · workflows
Use when
“
penumbra workflows check prints unhandled_outcome, or a publish is refused with workflow_invalid and that problem in its list.”Looking for something else?
A step that names an operation the catalog does not list (problem A step names an operation this project cannot use). A value of the wrong type or a reference to a later step (card rule workflow.3).
Signs
penumbra workflows check --file <workflow.json>exits with code 3. It prints a line that startsextract.on: unhandled_outcome, with the step and theonmap, and ends(expected a route for partial, received none).- A publish is refused with
workflow_invalid, and the same line is in the list under it. - A draft saved with
createorupdateshows the problem underproblems:.
Why it happens
Every operation declares the ways a call can end:succeeded, partial,
no_effect, refused and failed. A workflow routes each one. Four have a
default. A success continues, and a step with no effect skips what depends on
it. A refusal stops the workflow, and a failure stops it with no retry. A
partial result has none. Only the person knows whether what landed is enough, for
example a run that read some of the Files.
What Penumbra does
By itself:- Lists each unrouted outcome as
unhandled_outcomewith the step and the path to itsonmap. - Refuses to publish a draft that has the problem.
- Lets you save the draft with the problem so you can keep editing it.
- Ask the person what should happen when only part of the work landed.
- Write that answer as a route in the step’s
onmap.
- Penumbra does not choose a route for you, and it does not warn when a route you chose hides a failure.
Do
- Run
penumbra workflows catalog --step <operation>and read the outcomes of the step. It describes each one. - Ask the person what should happen after each outcome you must route. Say what landed in that case, for example “some of the Files were read”.
- Add the route to the step’s
onmap. A route is one ofcontinue,end,stoporskip_dependents, or{ "retry": 1, "then": "continue" }with a retry count of at most 3. - Run
penumbra workflows update <workflow> --file <workflow.json>, then check again.
Don’t
- Don’t route
partialtocontinueto make the problem go away. Ask first. - Don’t remove the step to avoid the question.
- Don’t publish a draft that still has problems and expect the publish to warn. It is refused.
Check
penumbra workflows check --file <workflow.json>printsNo problems.and exits with code 0.penumbra workflows publish <workflow>makes a version.