|`bookmark(main)`, `bookmark(origin/main)`| the heads of that bookmark only; an error if there is none (a bare name falls through to tags and change prefixes) |
|`origin/main`| the heads of a remote-tracking bookmark |
54
|`8c5ea12a`| the change with that ChangeId prefix |
55
|`#fc68459c`| the change with that hash prefix |
56
|`@`| the working copy's base heads |
57
|`all()`, `none()`| every stored change, no change |
58
59
###2.2 Relations
60
61
Each function takes a set and returns a set.
62
63
| Expression | Returns |
64
|---|---|
65
|`deps(X)`| the immediate dependencies of X |
66
|`dependents(X)`| changes that immediately depend on X |
67
|`::X`| X and its whole dependency closure, which is the *state* X names |
68
|`X::`| X and everything that transitively depends on it |
69
|`X::Y`| changes that are both in `X::` and in `::Y`|
70
|`X..Y`|`::Y ~ ::X`: what state Y has that state X lacks. This is what a proposal from X to Y adds. |
71
|`heads(X)`, `roots(X)`| members of X that no other member depends on, and members that depend on no other member |
72
|`independent(X, IN)`| changes in IN that neither depend on X nor are depended on by X: what could ship without X. Only Oxygen can answer this, because changes commute. |
73
|`latest(X, n)`| the n most recent members of X, by hybrid logical clock |
74
75
###2.3 Content and metadata
76
77
| Expression | Selects |
78
|---|---|
79
|`author(P)`| changes whose `author` identity matches name, email or KeyId P |
80
|`description(T)`| changes whose message contains T (`re:` for a regular expression) |
81
|`date(RANGE)`| changes by HLC wall time: `2026-10-01..`, `-7d..`, `..2026-09-30`|
82
|`kind(K)`|`normal`, `resolution` or `working-copy`|
83
|`touches(GLOB)`| changes that edit any node whose path matches GLOB in the evaluation state. Nodes keep their identity through renames, so this follows a file's whole history under any name. |
84
|`conflicts(S)`| changes that contributed atoms to a conflict in state S (default `@`). Conflicts belong to states, not changes. |
|`signed_by(K)`| changes whose signature or seal is by key or identity K (a key prefix, a name, an email, or `me`), including a delegate such as an agent key |
|`attested(KIND)`| changes in states carrying an attestation of that kind: `tag`, `receipt`, or `ref` (states a remote attested, as its tracking bookmarks hold them) |