I'm a bit worried about pulling positions up this high in the chain of abstractions. If we were to add another alignment type (say, GAGraphAlignment to the fancy new reference graph types from the RefVar schema), we could just have that optionally replace GALinearAlignment wherever it appears. But as soon as we bring (contig, base, strand) positions up into the actual record objects, it makes graph compatibility more complicated. It would be easier for me if this were an ID reference.

A solution where GAGraphAlignment also came with a GAGraphPosition type (and maybe also had GAMappingPosition renamed to GALinearPosition to match GALinearAlignment?) would be another option, but that seems more complex.