Invalid task (or generic family) name strings can be set in a suite.rc runtime section & the corresponding suite will still pass validation, as long as they are not set to run.
As noted upon observation of this (copying in from the comment):
We don't run that task, of course, but shouldn't we still flag the runtime task definition as invalid by validate? Presumably if a user adds some task runtime they eventually intend to add-in that task to the scheduling & this would warn them sooner rather than later.
Classifying as a 'bug?' with a '?' because the tasks don't run, so arguably this isn't an issue. Notably, however, this includes task names breaking the suite.rc nested-INI-like syntax (see the example 'bad' task names in the suite below).
The following suite.rc, whereby the final three tasks listed under runtime are clearly invalid as task names, passes cylc validate, even with the --strict option appended:
[scheduling]
[[dependencies]]
graph = """
nice_task #=> [[runtime [[bad]] ]] => @[scheduling++++++ => _[[
"""
[runtime]
[[ nice_task ]]
# Should be picked as bad by validate:
[[ [[runtime [[bad]] ]] ]]
script = True
[[@[scheduling++++++]]
script = True
[[_[[]]
script = True
[[ nice_task #not nice anymore ]]
script = True
However, by removing the comment # in the graph string line, so that those invalid tasks are scheduled to run, the suite fails validation.
Sounds like a proper bug 馃悰 to me.
Most helpful comment
Sounds like a proper bug 馃悰 to me.