@devinlange said:

At the very least if the user modifies the faces I don't want anything to fail.

This will be difficult. As faces get modified, or new edges intersect with them, they get split up into multiple faces, and sometimes get new object ids.

Myself, I'd never rely on "setting" a path of primitives, and expecting the path of them to survive.

Instead I'd create a virtual path. Could be a series of Guidelines (Construction lines) in a special group. Or actually maybe a Curve (which is SketchUp's name for a series of edges connected end to end,) within a group context, and on a "path" layer that can be turned off. The path and it's group can also be locked.

You could associate the vertices of the path with one of the vertices of a face.

Later on when you need to "follow the path" you iterate the Curve's collection of vertices, and use a PickHelper object to find the face under the current vertex. Push the face reference into an array, and repeat.

Just thinking out loud.