[scheduler]
    allow implicit tasks = True
    [[events]]
        expected task failures = 1/a, 1/b
        stall timeout = PT0S
        abort on stall timeout = True
[scheduling]
    [[graph]]
        R1 = """
            a:started => remover
            a:failed => u

            b:submitted? => remover
            b:submit-failed? => v
        """

[runtime]
    [[a, b]]
        script = sleep 40
        [[[events]]]
            submitted handlers = echo %(event)s
            failed handlers = echo %(event)s
            submission failed handlers = echo %(event)s
    [[b]]
        platform = old_street
    [[remover]]
        script = """
            cylc remove "$CYLC_WORKFLOW_ID//1/a" "$CYLC_WORKFLOW_ID//1/b"

            # Task proxies become "transient" on removal (it means, not in the
            # task pool), after which the job kill will be logged but the
            # state change to "failed" or "sumbit-failed" will not (we don't
            # care about the state of removed tasks).
            cylc__job__poll_grep_workflow_log -E '1\/a.* job killed'
            cylc__job__poll_grep_workflow_log -E '1\/b.* job killed'
        """
