diff --git a/doc/src/release-notes.md b/doc/src/release-notes.md index 3eff639..20d418e 100644 --- a/doc/src/release-notes.md +++ b/doc/src/release-notes.md @@ -19,6 +19,7 @@ * `clean` now cleans all caches by default. * Submit jobs with `--constraint="scratch"` by default on Delta. * Submit jobs with `--constraint="nvme"` by default on Frontier. +* `group.include.all` now employs short circuit evaluation. * Change `--name` option of `show cluster` to `--short`. * `show directories` now accepts an optional `--action` argument. diff --git a/doc/src/workflow/action/group.md b/doc/src/workflow/action/group.md index 6b85c0e..85d9930 100644 --- a/doc/src/workflow/action/group.md +++ b/doc/src/workflow/action/group.md @@ -23,15 +23,18 @@ groups of directories included in a given action. ## include `action.group.include`: **array** of **tables** - Define a set of selectors, *any* of -which may be true for a directory to be included in this group. +which may be `true` for a directory to be included in this group. Each selector is a **table** with only one of the following keys: * `condition`: An array of three elements: The *JSON pointer*, *the operator*, and the *operand*. The [JSON pointer](../../guide/concepts/json-pointers.md) references a specific portion of the directory's value. The operator may be `"<"`, `"<="`, - `"=="`, `">="`, or `">"`. -* `all`: Array of conditions (see above). All conditions must be true for this selector - to be true. + `"=="`, `">="`, or `">"`. Both operands **must** have the same data type. The element + referenced by each JSON pointer must be present in the value of **every** directory. +* `all`: Array of conditions (see above). All conditions must be `true` for this selector + to be `true`. `all` is evaluated with short-circuit logic. When an element in `all` + evaluates to `false`, the JSON pointers in the remaining elements are not evaluated + and are not required to be present. For example, select all directories where a value is in the given range: ```toml @@ -54,11 +57,6 @@ Compare by array: condition = ["/array", "==", [1, "string", 14.0] ``` -Both operands **must** have the same data type. The element referenced by JSON pointer -must be present in the value of **every** directory. - -When you omit `include`, **row** includes **all** directories in the workspace. - > Note: **Row** compares arrays *lexicographically*.