Operator manifest
This is the audited YAML-oriented surface for v1.15. “Supported” means the listed forms are expected to agree with yq for documented inputs. “Focused” names a smaller portable contract. “Excluded” is a tested boundary—not a guess.
The evidence column names the focused test or release gate that owns each claim. The differential gate compares supported programs with mikefarah/yq v4.53.3; the parser-boundary gate makes exclusions fail closed.
| yq area | Status | YAML.sh forms or boundary | Evidence |
|---|---|---|---|
| Add | Supported | numbers, strings, arrays, maps, null; += |
testExpressionArithmetic |
| Alternative | Supported | // with lazy right-hand evaluation |
testExpressionAlternativeDefaults |
| Anchor and alias | Focused | inspect, rename, assign, explode; graph identity retained |
testExpressionWritableYamlGraphMetadata |
| Array to map | Supported | array_to_map with zero-based string keys |
testExpressionCapabilityClosure |
| Assign and update | Supported | absolute, relative, and compound assignment across multiple paths | testExpressionRelativeAndCompoundUpdates |
| Boolean | Supported | and, or, not, any, all, any_c, all_c |
testExpressionBooleanFilters |
| Collect into array | Supported | [], [expr], stream collection |
testExpressionArrayAndObjectConstruction |
| Column | Supported | exact value and key columns in block and multiline flow YAML; generated nodes return 0 | testExpressionNodeMetadata |
| Comments | Supported | read/write head, line, and foot comments on values and keys; strict block-source edits | testInplaceEditsPresentationMetadata |
| Compare | Supported | >, >=, <, <= across scalar values |
testExpressionSelectAndComparisons |
| Contains | Supported | portable string containment | testExpressionSequenceAndStringHelpers |
| Create object | Supported | literal and computed keys; stream values | testExpressionArrayAndObjectConstruction |
| Date and time | Excluded | no portable cross-platform date runtime | testExpressionErrors |
| Delete | Supported | del, delpaths, mapping and sequence targets |
testExpressionPathBasedUpdates |
| Divide | Supported | numeric / and /=; zero is rejected |
testExpressionArithmetic |
| Document index | Supported | documentIndex across streams and files |
testEvalAllAcrossFiles |
| Encode and decode | Focused | from_json/from_yaml/from_props/from_csv/from_tsv, matching to_* and @codec forms; Base64, URI, shell; XML excluded |
testExpressionPortableUtilities |
| Entries | Supported | to_entries, from_entries, with_entries |
testExpressionEntries |
| Environment | Supported | env, strenv, envsubst options; disable switch |
testExpressionEnvironmentComposition |
| Equals | Supported | structural == and != |
testExpressionSelectAndComparisons |
| Error | Supported | error(message) with short-circuiting guards |
testExpressionErrorGuards |
| Eval | Focused | eval(EXPR) compiles YAML.sh expressions dynamically with node and depth ceilings |
testExpressionPortableUtilities |
| File context | Supported | filename, fileIndex, multi-file and writable eval-all context |
testMultipleInputEvaluationAndMetadata |
| Filter | Supported | arrays and mapping values | testExpressionFocusedCollectionOperators |
| First | Supported | first value and first(condition) |
testExpressionFocusedCollectionOperators |
| Flatten | Focused | complete recursive flatten | testExpressionProjectedCollectionsAndQuantifiers |
| Group by | Supported | scalar grouping keys | testExpressionProjectedCollectionsAndQuantifiers |
| Has | Supported | mapping keys and positive/negative sequence indexes | testExpressionCollectionHelpers |
| Keys | Supported | mapping keys and sequence indexes | testExpressionCollectionHelpers |
| Kind | Supported | scalar, map, seq |
testExpressionKindAndType |
| Length | Supported | strings, collections, null | testExpressionCollectionHelpers |
| Line | Supported | one-based source line, 0 for generated nodes | testSourceLines |
| Load | Focused | load, load_str, load_base64, load_props; byte ceiling and disable switch |
testExpressionPortableUtilities |
| Min | Supported | min, min_by |
testExpressionProjectedCollectionsAndQuantifiers |
| Map | Supported | map, map_values, mapping and sequence inputs |
testExpressionMapAndCommaStreams |
| Max | Supported | max, max_by |
testExpressionProjectedCollectionsAndQuantifiers |
| Modulo | Supported | numeric % and %= |
testExpressionArithmetic |
| Multiply and merge | Supported | arithmetic, deep merge, *+, *d, *?, *n policies |
testExpressionMergeModifiers |
| Omit | Supported | selected mapping keys or sequence indexes | testExpressionFocusedCollectionOperators |
| Parent | Supported | structural parent lookup | testExpressionStructuralContextAndScopedUpdates |
| Path | Supported | path lookup plus setpath and delpaths |
testExpressionPathBasedUpdates |
| Pick | Supported | selected mapping keys or sequence indexes | testExpressionFocusedCollectionOperators |
| Pipe | Supported | streams, empty streams, precedence | testExpressionIterationAndPipes |
| Pivot | Focused | rectangular and ragged sequences; map rows | testExpressionFocusedCollectionOperators |
| Recursive descent | Supported | .., optional traversal, recursive selection and updates |
testExpressionRecursiveAndOptionalTraversal |
| Reduce | Supported | reduce, ireduce, whole-stream eval-all folding |
testExpressionReduceAndDeepMerge |
| Reverse | Supported | sequences | testExpressionSequenceAndStringHelpers |
| Select | Supported | scalar and structural predicates | testExpressionSelectAndComparisons |
| Shuffle | Focused | portable Fisher–Yates shuffle; --shuffle-seed supplies reproducible runs |
testExpressionPortableUtilities |
| Slice array | Supported | positive, negative, and open sequence slices | testExpressionSlicesInterpolationAndRegex |
| Sort | Supported | sort, sort_by, scalar ordering |
testExpressionProjectedCollectionsAndQuantifiers |
| Sort keys | Supported | targeted and recursive sort_keys(..) |
testExpressionCapabilityClosure |
| Split into documents | Focused | split_doc is explicit and idempotent; YAML streams are always document-separated |
testExpressionCapabilityClosure |
| Strings | Focused | interpolation, case, trim, to_string, split/join, contains/prefix/suffix, POSIX test/sub |
testExpressionCapabilityClosure |
| Style | Focused | scalar and collection style read/write; source compiler decides preservation | testExpressionBlockStylesAndOutputControls |
| Subtract | Supported | numeric - and -= |
testExpressionArithmetic |
| Tag | Supported | read/write core and custom tags | testExpressionWritableYamlGraphMetadata |
| To number | Supported | decimal integer and float strings | testExpressionConversionAndKeyOrdering |
| Traverse | Supported | keys, dynamic keys, indexes, splats, optional traversal | testExpressionIterationAndPipes |
| Union | Supported | comma streams | testExpressionMapAndCommaStreams |
| Unique | Supported | unique, unique_by |
testExpressionProjectedCollectionsAndQuantifiers |
| Variables | Supported | value bindings, ref, dynamic lookup, reducer bindings |
testExpressionVariablesAndDynamicIndexes |
| With | Supported | scoped updates over one or many matches | testExpressionStructuralContextAndScopedUpdates |
CLI boundaries
YAML.sh accepts YAML input and emits values, JSON, or YAML. Its expression codecs cover JSON, YAML, properties, CSV, TSV, Base64, URI, and shell text. XML, date arithmetic, system execution, regex capture objects, and yq’s format-specific CLI remain outside the contract.
For parser syntax rather than query operators, see YAML support. For the practical comparison, see yq compatibility.