This is not current.
Vn: Vertex number
A non negative integer, one per vertex, unique in complex.
GZone: (primordial)
an list of Vns
Zone:
an array of facet refs
facet:
two of Zone ref, cot
cot:
n by n Matrix which transforms tensors
TC: Topology of Complex
A list of Zones
ds2: (primordial)
An array of triples (i, k ds2) meaning the ds2 for the edge between vertices i and k is ds2
facet: facet
references to 2 zones, transformation matrix and inverse between bcc’s of the 2 zones. n-permutation of vertices for transferring points in facet.

Plumbing

A general framework for at least the geodesic code is as follows. We have these data set types:
topology
which enumerates zones in terms of their global vertex numbers
S-metric
Simplex metric which provides ds2 for the edges of a topology
C-metric
Continuous metric which provides ds2 for the differential distances.
embedding
which calls out global coordinates of vertices in some prior geometry of known continuous metric properties
vertex_number ::= int
orientation ::= bool
n-simplex ::= (orientation, n-tuple of vertex_number) int list
n-topology ::= set of n-simplex int list list
S-metric ::= 1-simplex → real int -> float
coordinate ::= opaque structure to locate point in some classic metric space. float array
C-metric ::= coordinate * coordinate → float
embedding ::= vertex_number → coordinate float array array
boundary ::= topology → topology
embedding → metric

Imagine a program that reads a topology and an embedding, consults the host geometry of the embedding to compute a metric, and produces a metric n-complex. That should suffice to define a geodesic introduced at the boundary of the complex.