Attempting to get caught up with the metacurrency project and wanting to crack the project open so the community can have at it, I find myself with some very challenging tasks to get started. My sense of the architecture in general is that it is deep and well thought out. The code however is a different story. So, the aim here is not to document the existing code, but to extract the architecture so that implementation teams might attack the problem from a number of angles at once.
We take it as given that out language shapes our world, and this technology is all about enabling new ways of being related by flows. Flows of what? To say currencies is rather circular since currencies are flows in our language. The reCeptr model is that of automated angents running in a VM environment. The model is of interacting agents, and it is agnostic as to whether it is receiving input (and potentially being controlled by) from a user, or an automated agent. In fact, the ceptr world doesn't know anyway. Ceptr's don't reveal their internal structure wili-nilli, but under controls (membranes), and to be specific, they act by sending messages to other Ceptr, implicitly, whole networks of Ceptr agents, each probrammed with its own DNA and state.
That's where holochains come in. When a ceptr instance acts, it adds one or more entries to a set of holochains that relate to its DNA and state such that anyone following the chains back to their roots will be able to ground mutual transactions on 1) a history of interactions and 2) well known trusted origins. Holochains operate by cryptographic signatures to guarantee properties of all the chains which also make assertions about the actions of every Ceptr instance recorded in the chains. If all of the external imputs accessed by a ceptr are recorded as well (most will appear in the chains by protocol, but this is an area where "code is law").
Ceptr, key concepts, models
Symbols -> internamlized names, really no different that symbols in ruby and other languages.
Semantic Trees: A tree graph (rooted, and divergent branching only) with labelled nodes.
There is a part/whole thing going on at each node references a structure definition that specifies the labels and types of the children. Nodes also have a node type (?) which is a symbol. These trees generally terminate in basic (scalar) data types. I would think these would also include externally defined objects on edge receptors and the like, but this needs to be clarified.
Semantic tables? Is this a map keyed by symbols with values of different types.
Mtrees: These may be factored out as an artifact of the C implementation.
Semantic Regular Expressions, Semtrex. It isn't clear to me yet if these are represented as semtatic trees or maybe with them. Clearly they operate on semantic trees. Processing is described in terms of tree reduction. Need to clarify all of this.