Suite that validates and runs under 7.8.4-10-gde7d but not 8.01a

here is a simple suite that registers, validates, and runs under 7.8.4-10gde7d, but does not validate under
8.01a

title       = "A/B suite"
description = "A/B suite"

[cylc]
    UTC mode = True

[scheduling]

    initial cycle point = 20191007T1200
    final cycle point   = 20191008T0300

    [[special tasks]]
        clock-trigger  = A(PT0M)
    [[dependencies]]
        [[[PT30M]]]                  
            graph = A[-PT30M] => A => B

[runtime]
    [[root]]

        env-script = """
            export JOB_DIR=$HOME
            """

    [[A]]
        title       = "A"
        description = "A"
        script = """
            $JOB_DIR/A.pl
            """

    [[B]]
        title       = "B"
        description = "B"
        script = """
            $JOB_DIR/B.s
            """

the tasks A and B are simply programs to print the date, pause a while, then print the date.

here is the failed 8.01a validation attempt

$ cylc --version; cylc register btest btest; cylc validate btest

8.0a1
REGISTERED btest -> $HOME/cylc-suite/btest
WARNING - deprecated graph items were automatically upgraded in 'suite definition':
WARNING - * (8.0.0) [scheduling][dependencies][X][graph] -> [scheduling][graph][X] - for X in:
   PT30M
**IllegalItemError:** title

Hello,

In Cylc7 the title configuration was moved into a [meta] section. When we move a configuration we deprecate the old one, when you validate a suite using Cylc7 you should see a message like this:

WARNING -  * (7.5.0) [runtime][A][title] -> [runtime][A][meta][title] - value unchanged

Deprecated settings will continue to be supported for the life of the major release (so Cylc7 in this case) after which they will be dropped.

The fixed suite should look something like this:

[meta]
    title = “A/B suite”
    description = “A/B suite”

[cylc]
    UTC mode = True

[scheduling]
    initial cycle point = 20191007T1200
    final cycle point   = 20191008T0300
    [[special tasks]]
        clock-trigger  = A(PT0M)
    [[dependencies]]
        [[[PT30M]]]                  
            graph = A[-PT30M] => A => B

[runtime]
    [[root]]
        env-script = """
            export JOB_DIR=$HOME
        """

[[A]]
    script = """
        $JOB_DIR/A.pl
    """
    [[[meta]]]
        title = "A"
        description = "A"

[[B]]
    script = """
        $JOB_DIR/B.s
     """
    [[[meta]]]
        title = "B"
        description = "B"

the amended script does validate in both 7.8.4.10-gde7d and 8.01a.

the validation returns the same warning as returned originally:

$ cylc validate btest

WARNING - deprecated graph items were automatically upgraded in 'suite definition':
WARNING - * (8.0.0) [scheduling][dependencies][X][graph] -> [scheduling][graph][X] - for X in:
   PT30M
Valid for cylc-8.0a1

my (many) attempts at correcting the suite such that there were no warnings failed.

Hi @schaferk,

Sorry for your trouble! As you might infer from what @oliver.sanders wrote, we sometimes need to deprecate aspects of the workflow configuration as we continually improve the system (in this case title and description were originally the only metadata items allowed; now you can have arbitrary metadata under the [meta] section).

To deal with this, I suggest in future you:

  • take notice of deprecation warnings and upgrade your configurations before the items become obsolete

    • at cylc-7, validation tells you that title title is deprecated and should be [meta]title
  • if you do hit an obsolete item - which is essentially just an error/illegal-item - the error message should tell you exactly what is wrong:

(then, search for title in the user guide and you’ll find that it should be under [meta]).

A complication, perhaps, is that we aren’t publishing the cylc-8 user guide yet (probably should do that…) although the source is available here: https://github.com/cylc/cylc-doc

Hilary

@oliver.sanders forgot to upgrade some syntax deprecated (but not obsoleted) at cylc-8. As the validation warning says, the workflow graph should now be written more simply like this:

[scheduling]
 ...
    [[graph]]
        PT30M = "A[-PT30M] => A => B"

Then you should get no warnings at all :grin:

no warnings.
my difficulty lay in application of the transformation rule provided by the WARNING.
i now see how the rule is applied.

fwiw
more more simply
<PT30M = “A[-PT30M] => A => B”

PT30M = A[-PT30M] => A => B

Yes, I’m sure the Cylc 8 User Guide would have helped you there (coming soon…)

Note sure what you mean here? The quotes around graph strings - as for any single line config item values - are optional, but I like to use them as it helps to make clear that the entire thing is a single string value (whose meaning is determined internally by Cylc, not by the basic config file parser).