cylc-admin

Intervention Feature Gaps

At present a few Cylc 7 use cases are not currently possible at Cylc 8 or are technically possible, but difficult to action, or have little to no feedback via the user interfaces when actioned.

We have been addressing these limitations one at a time so far. However, since the remaining use cases/interventions overlap quite a bit it makes more sense to consider them in one go to ensure we have all bases covered, as changes to one proposal may mandate changes to another.

Most of the functionality issues which remain are around the cylc reset command which provided a powerful and surprisingly intuitive interface for performing a much broader range of interventions than it was initially designed for including:

Proposals

Here are the new proposals which will be referenced in the use-cases below.

Use Cases Considered

Here follows a list of use cases which are either not currently possible, or awkward to action in Cylc 8.

If approved, this list of interventions should padded out with the more straight-forward cases and turned into a new section of the documentation. The proposals also open up new use cases which are not covered here but should also be documented.

1. I triggered tasks I didn’t mean to, they may have run on. I want to undo this.

Description:

Cylc 7 Intervention:

Proposed Intervention:

This will kill any active tasks, remove any waiting tasks from the pool and strip the specified flow numbers from any tasks, outputs and corresponding prerequisites of the selected tasks.

As the new intervention only requires one action it is not necessary to pause/resume the workflow although that may still be desired.

2. I want to Skip a task and allow the workflow to continue.

Description:

Cylc 7 Intervention:

Proposed Intervention:

3. I want to Skip a cycle of tasks and allow the workflow to continue.

Description:

Cylc 7 Intervention:

Proposed Intervention:

4. I need to orphan a “stuck” job submission

Description:

Cylc 7 Intervention:

Proposed Intervention:

5. I need to terminate a chain of automatic retries.

Description:

Cylc 7 Intervention:

Proposed Intervention:

6. Set outputs on switch tasks ahead of the flow.

Description:

Cylc 7 Intervention:

This use case was not especially prevalent at Cylc 7 due to the limitations of suicide triggers but will likely become more common at Cylc 8 as switches currently embedded in task logic are elevated to the workflow level for better visibility/control/provenance/graph-interaction.

Proposed intervention:

7. Spawn a parentless task.

Description:

@clock => a => b

Cylc 7 Intervention:

Proposed Intervention:

The cylc set command sets prereqs/outputs and implicitly spawns tasks when they are not yet present. In this case we want the task to spawn but have no prerequisites to set.

8. I need my graph to branch on an expiry event.

Description:

Cylc 7 Intervention:

Proposed Intervention:

This would need to come with the documented advice to use a single head-of-cycle task to detect expiry, then use graph branching to determine which tasks are run. This is a change for several Cylc 7 workflows which configure families or entire cycles of tasks to expire, as this approach will no longer work at Cylc 8, under this, or the previous proposal. However, having gone through the use cases, it would appear these cases could all be converted to use the new approach.

9. I want to run a cycle of tasks ahead or behind of the flow.

Description:

Cylc 7 Intervention:

Proposed Intervention:

In situations where users can easily list the start tasks of a cycle, I can trigger a new flow starting from these tasks. However, this is error prone and many users do not understand the graph structure of the workflow they are working on well enough. The list of start tasks may differ depending on the cycle and could be too long to type out.

This functionality is discussed/tracked in cylc-flow#5416, however, is sufficiently orthogonal to be omitted from this proposal pending future discussion :)

Open questions (to be resolved on #5416):