A kind of timeline context a renderer's compile hook may read beyond its own clip's content.
This enum is the vocabulary of the compile-context subscription contract. The contract exists because the compiler's dirty set is exact, not diffed: a committed transaction says precisely which items changed, and the compiler recompiles only their owners. A renderer that reads a sequence-owned lane while compiling breaks that reasoning — its clip did not change, so nothing would recompile it, and it would render stale harmony forever.
The contract closes the hole from both ends:
- a renderer declares the context kinds it reads at registration, and the compiler keeps a reverse index from kind to declared readers, so a lane edit dirties exactly them and nothing else;
- the read side is a CompileContextView carrying the same declaration, so an undeclared kind reads as absent. A hook cannot silently depend on context the compiler does not know to invalidate it for.
Adding a kind is a data change here plus a reverse-index case in the compiler; it is never a reason for a consumer to widen an invalidation. The reserved kinds below carry a constraint the first two do not. ChordScale and Groove are read from a sequence the reader already sits under, so the compile order is a tree walk. Dynamics, CrossTrackRhythm, and EnsembleSkeleton are peer-edge kinds: a reader can subscribe to context produced by a sibling track rather than an ancestor. That makes the compile order a DAG, and the DAG must stay acyclic — two tracks that each read the other's context have no valid order and would either deadlock a compile or silently resolve against a stale peer. Whoever gives one of these kinds a producer owns proving the acyclicity, because the bitset here cannot express it: subscription records what a reader reads, never when it may be compiled.
| Enumerator |
|---|
| ChordScale | |
| Groove | |
| Dynamics | Sequence-owned intensity.
Authored through the dynamics-lane command and readable here by a subscriber; no built-in compiler consumes it, so a reader that declares it decides what intensity means for its own output.
|
| CrossTrackRhythm | Reserved, peer-edge. See the acyclicity note above.
|
| EnsembleSkeleton | Reserved, peer-edge. See the acyclicity note above.
|