IRollupDependencyGraph
Namespace: Meshmakers.Octo.Runtime.Contracts.StreamData
Resolves the rollup dependency graph for the recompute model (AB#4184): which rollup archives transitively depend on a given source archive. A raw / time-range archive may have N rollups hanging off it, and each rollup may itself be the source of further rollups (rollup-of-rollup), so a retroactive change on a base archive must propagate down a multi-level chain.
public interface IRollupDependencyGraph
Remarks:
Since AB#5157 the graph is a multi-parent DAG, not a tree: a rollup declares a list of sources (RollupArchiveSnapshot.Sources) and is a direct dependent of each of them, so the same rollup is reachable from several base archives and, in a diamond, along several paths from one base. Traversal therefore dedups by rollup rtId — every dependent is returned exactly once per query no matter how many edges lead to it.
Methods
GetTransitiveDependentsAsync(OctoObjectId)
Returns every rollup that transitively depends on sourceArchiveRtId —
direct dependents and their chained descendants — in top-down order (a parent always appears
before its children) so callers can propagate a recompute downstream without re-sorting.
The source archive itself is not included. Cycles (which the model forbids via
RollupCycleException) are tolerated defensively: each rollup is visited at most once.
Task<IReadOnlyList<RollupArchiveSnapshot>> GetTransitiveDependentsAsync(OctoObjectId sourceArchiveRtId)
Parameters
sourceArchiveRtId OctoObjectId