has actions => (is => 'ro', isa => ArrayRef[Action], required => 1);
-has depends_on => (is => 'ro', isa => DependencyGroupList, required => 1);
+#has depends_on => (is => 'ro', isa => DependencyGroupList, required => 1);
+
+has depends_on => (is => 'ro', required => 1, coerce => sub {
+ my ($dep_groups) = @_;
+ my @exp;
+ assert_DependencyGroupList $dep_groups;
+ [ map {
+ my ($on, @deps) = @$_;
+ my @exp;
+ DEP: foreach my $dep (@deps) {
+ my ($type, @path) = @$dep;
+ push @exp, [
+ $type,
+ map { ref() ? @{$_->identity_path or next DEP} : $_ } @path
+ ];
+ }
+ (@exp ? [ $on, @exp ] : ());
+ } @$dep_groups ];
+});
has resolves => (is => 'ro', isa => Proposition);