Symbols resolve in today's order: bookmark names, then tag names, then
47
change prefixes.
48
49
| Symbol | Means |
50
|---|---|
51
|`main`, `v0.3.1`| the heads of that bookmark or tag |
52
|`origin/main`| the heads of a remote-tracking bookmark |
53
|`8c5ea12a`| the change with that ChangeId prefix |
54
|`#fc68459c`| the change with that hash prefix |
55
|`@`| the working copy's base heads |
56
|`all()`, `none()`| every stored change, no change |
57
58
###2.2 Relations
59
60
Each function takes a set and returns a set.
61
62
| Expression | Returns |
63
|---|---|
64
|`deps(X)`| the immediate dependencies of X |
65
|`dependents(X)`| changes that immediately depend on X |
66
|`::X`| X and its whole dependency closure, which is the *state* X names |
67
|`X::`| X and everything that transitively depends on it |
68
|`X::Y`| changes that are both in `X::` and in `::Y`|
69
|`X..Y`|`::Y ~ ::X`: what state Y has that state X lacks. This is what a proposal from X to Y adds. |
70
|`heads(X)`, `roots(X)`| members of X that no other member depends on, and members that depend on no other member |
71
|`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. |
72
|`latest(X, n)`| the n most recent members of X, by hybrid logical clock |
73
74
###2.3 Content and metadata
75
76
| Expression | Selects |
77
|---|---|
78
|`author(P)`| changes whose `author` identity matches name, email or KeyId P |
79
|`description(T)`| changes whose message contains T (`re:` for a regular expression) |
80
|`date(RANGE)`| changes by HLC wall time: `2026-10-01..`, `-7d..`, `..2026-09-30`|
81
|`kind(K)`|`normal`, `resolution` or `working-copy`|
82
|`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. |
|`conflicts(S)`| changes that contributed atoms to a conflict in state S (default: the working copy's base). 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) |