Syntagmata* and Markov* (and common-impl) require access to the running system state right now; unfortunately, when they are created, only a partial system state is known. A new abstraction is needed such that with every function call, the latest running system is passed.
This may mean reverting the current API to its pre-component form, and then creating a component-aware, wrapper API for it.