Run workflow template again from later cycle_point

Question: How to run same template workflow at a later cycle point via cylc play ...

We have a template Cylc workflow that is (initially) run at an initial point using:

cylc play \
  -s BOB="bob" \
  -s ALICE="alice" \
  -s CYCLE_POINT=\"20250731T2315Z\" \
  WORKFLOW

Some time later, we come back and try to run the same template again at a new cycle point.

The scheduler/NN-restart-NN.log (shows the following:

2025-08-01T11:25:36Z INFO - Cylc version: 8.4.1
2025-08-01T11:25:36Z INFO - Run mode: live
2025-08-01T11:25:36Z INFO - Initial point: 20250731T2315Z
2025-08-01T11:25:36Z INFO - Final point: 20250801T0515Z
2025-08-01T11:25:36Z INFO - LOADING task run times
2025-08-01T11:25:36Z INFO - + cylc_ssi_run: 9
2025-08-01T11:25:36Z INFO - Flows: (none)
2025-08-01T11:25:36Z WARNING - PT2M restart timer starts NOW
2025-08-01T11:25:36Z WARNING - This workflow already ran to completion.
To make it continue, trigger new tasks before the restart timeout.
2025-08-01T11:27:36Z WARNING - restart timer timed out after PT2M
2025-08-01T11:27:36Z INFO - Workflow shutting down - AUTOMATIC

I/m thinking that I/m misinterpreting the help message:

cylc play --start-cycle-point=20250801T0000Z WORKFLOW

and get multiple ‘already ran to completion’ warnings.

QUESTION:

How can we re-run the same template workflow at a later cycle point using cylc play?

fwiw here is a snippet from the template:

#!jinja2
[meta]
    title = {{BOB}}

[scheduler]
    UTC mode = True
    allow implicit tasks = True

[scheduling]
    initial cycle point = {{CYCLE_POINT}}
    final cycle point   = {{CYCLE_POINT}}

    [[graph]]
        R1 = "my_task"

Inital and final cycle mark the start and end of the universe for this workflow. It’s not totally straightforward to fix. Your options are

Running a totally new copy of the workflow with cylc vip

This will install a new copy of the workflow.

It’s very simple, but if you have expensive setup/install_cold/compile tasks might not be what you want to do.

Other solutions

If you don’t want a re-installation then things may become tricky - depending on the complexity of your workflow and whether you’ve got access to Cylc 8.5.0 yet.

I think I’d like to understand your use case before I comment further. Is the choice of the date being today’s significant? Are you trying to run this command each day?

run frequency is hourly.

i had thought of ‘cylc vip’ for a new run, but after some time i have to scrub. if i scrub the first k, then does ‘cylc vip’ create run_1 again or create run_NN+1?

we just migrated from cylc7 with a working cylc suite for this (analogous) process and have not gotten it worked out for 8.4.1

<depending on the complexity of your workflow and whether you’ve got access to Cylc 8.5.0 yet.

the workflow has a single task that runs a Perl script.

I assume git pull of the Cylc-flow git repo provides access.

if simple work flow and access to cylc-8.5.0 reduces ‘tricky’ uncertainty, would you describe what is alluded to?

To add a bit to Tim’s response -

The final cycle point defines the end of the graph. There can be special behaviour defined relative to the final cycle point, which means that changing it mid-run is potentially dangerous. Maybe Cylc could work out what do to automatically in some simple cases, but in general it’s difficult and we haven’t gone there.

Similarly, if you change the graph structure and restart a workflow that already ran to completion, it’s difficult to know what you want, in general, so it’s up to you to manually trigger tasks to get the flow going again. That’s exactly what this warning says:

2025-08-01T11:25:36Z WARNING - PT2M restart timer starts NOW
2025-08-01T11:25:36Z WARNING - This workflow already ran to completion.
  To make it continue, trigger new tasks before the restart timeout.

Your graph seems particularly simple - is it just a single task that repeats on an hourly cycle?? If so, you probably just need to trigger the first new instance of the task that you want to run, and it will continue automatically from there.

That said, is there some reason why you don’t want to simply install a new run for the new graph? Or use cylc clean first to delete the old run, and then the new install will also be /run1 .

“Run frequency” is not relevant here at all.

I’m not sure what you mean by “scrub” or “scrub the first k” … but yes cylc vip (the install part of it) installs a new run, which by default increments the run number. (But you can use cylc clean to clean up old runs and therefore reuse run numbers … it depends on what you want).

I assume git pull of the Cylc-flow git repo provides access.

We don’t recommend that unless you are a Cylc developer. Just install Cylc 8.5 with conda (or with pip, if you don’t need the GUI).

‘scrub’ as in scrubber in case the directory was filling up…

turns out, there won/t be that many runs that get played. the ‘cylc vip’ will work for now.

I did see the warning, but have not dabbled with triggers.

That just means the cylc trigger command (or equivalent via the GUI) - force a particular task to run now, instead of waiting for it to run automatically.