v1.6.0: Materialised dependency graph

Dependency resolution moves from runtime recursive CTEs to three trigger-maintained tables: DependencyEdges, RecursiveDependencyEdges, ModuleState.

Full notes: 1.6.0 on GitHub.

Performance

Query Before After Speedup
recursive-apply-for-namespace 5,617ms 20ms 281×
recursive-destroy-for-namespace 5,664ms 12ms 472×

Logical reads on ModuleJobs drop from 558,000 to zero.

Maintenance

Updates are incremental — sp_UpdateDependencyEdgesForModules scopes work to affected module IDs. Non-dependency inputs (literals) short-circuit before doing any work. The recursive closure rebuilds per affected stack. Initial population is conditional, so it runs on first deploy and is a no-op afterwards.

Standalone modules

Modules with no dependency edges now appear in graph views, where a query built on edges previously could not see them.

Dependency graph UI

More compact: expansion panels on module names, links rather than chips, shorter display names, and scroll containers.

Snap CD

Intelligent GitOps for Infrastructure as Code. Automate, orchestrate, and scale your infrastructure deployments with confidence.


© 2026 Snap CD. All rights reserved.

An unhandled error has occurred. Reload 🗙