Understanding date cycling

Fair enough, I have to look up the documentation plenty myself. But on the upside it can generate almost any conceivable regular date-time sequence, and is also “standards based” (ISO 8601 recurrences). In my opinion, it is harder to make mistakes if you stick to the non-abbreviated recurrence forms (in case that helps).

That’s an interesting one. Cylc’s graph recurrence notation can define any regular sequence, with optional exclusions that can also be regular sequences, but I can’t see how to express a multi-year weekly cycle that excludes all months but August. (Maybe someone else can).

If you have to, you could resort to a simple weekly Monday cycle R/W-1/P1W and tasks that share a few lines of scripting to simply succeed without doing anything if the cycle point month is not August.

A more elegant but more involved way is a yearly-cycling suite that runs a Mondays-in-August sub-suite for each year:

[cylc]
   cycle point format = %Y
[scheduling]
   initial cycle point = 1999
   final cycle point = 2019
   [[dependencies]]
       [[[R1]]]
           graph = prep => august
       [[[P1Y]]]
           graph = august[-P1Y] => august
[runtime]
   [[prep]]
      script = """rm -r $HOME/cylc-run/august
cylc register august $HOME/suites/august"""
   [[august]]
      script = cylc run --no-detach --set=YEAR=$CYLC_TASK_CYCLE_POINT august

And the sub-suite, in $HOME/suites/august/suite.rc:

#!Jinja2
[cylc]
   cycle point format = %Y-%m-%d
[scheduling]
   initial cycle point = {{YEAR}}-08-01
   final cycle point = {{YEAR}}-08-31
   [[dependencies]]
      [[[R/W-1/P1W]]]
          graph = foo

Note there is no overlap between successive runs of the sub-suite, so I just re-used the same sub-suite run directory for each year. Result, in the sub-suite run directory, on running the main suite:

[drugs-and-money]$ find august -name 'job.out' | sort
august/log/job/1999-08-02/foo/01/job.out
august/log/job/1999-08-09/foo/01/job.out
august/log/job/1999-08-16/foo/01/job.out
august/log/job/1999-08-23/foo/01/job.out
august/log/job/1999-08-30/foo/01/job.out
august/log/job/2000-08-07/foo/01/job.out
august/log/job/2000-08-14/foo/01/job.out
august/log/job/2000-08-21/foo/01/job.out
august/log/job/2000-08-28/foo/01/job.out
...
august/log/job/2018-08-06/foo/01/job.out
august/log/job/2018-08-13/foo/01/job.out
august/log/job/2018-08-20/foo/01/job.out
august/log/job/2018-08-27/foo/01/job.out
august/log/job/2019-08-05/foo/01/job.out
august/log/job/2019-08-12/foo/01/job.out
august/log/job/2019-08-19/foo/01/job.out
august/log/job/2019-08-26/foo/01/job.out