I'm describing my thinking process of understanding this in hopes that it's helpful to others. Or that I'm all wrong and you can correct me. ;)
AIUI you want to still want to use maven and GAVs for actually pulling items from the repo, but the additional stream info allows you to work out how to identify other related items. So I'm a bit unclear on the relationships of this coordinate to a GAV.
I initially thought it's
universe:family:build-id
org.jboss:wildfly:12.0.5.Beta4
That would mean though that BUILD_ID is not just unique for the branch, it is unique for the family. That sounds wrong, as you state it's unique to the branch.
So now I think it's
family:branch:build-id
wildfly:12:12.0.5.Beta4
One concern with that is the 'A' in the GAV is no longer something rarely changing. In the WildFly case it would change every 3 months. This has some implications for the process of producing the feature packs. I'm not saying that's a show-stopper problem; more that it's something that we'll have to be aware of as we think through the process of creating these.
Most readers can safely skip the rest of this as I'm probably getting ahead of myself....
An example of the kind of thing I'm talking about is in the current root pom for WildFly we have:
<project>
....
<dependencyManagement>
<dependencies>
....
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wildfly-feature-pack</artifactId>
<type>pom</type>
<version>${project.version}</version>
</dependency>
Thereafter any other child poms that declare a dependency on that feature pack just have
<project>
....
<dependencies>
....
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>wildfly-feature-pack</artifactId>
<type>pom</type>
</dependency>
There's no need to specify the version all over the place, as the dependencyManagement mechanism takes care of that in a central location. But that kind of approach doesn't work as readily when it comes to artifactId.
One possibility is in the root pom there's
<project>
....
<properties>
<feature.pack.branch>12</feature.pack.branch>
.... <dependencyManagement>
<dependencies>
....
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${feature.pack.branch}</artifactId>
<version>${project.version}</version>
</dependency>
And then in other child poms:
<project>
....
<dependencies>
....
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${feature.pack.branch}</artifactId>
<type>pom</type>
</dependency>