We propose reconciliation of facts as a general mechanism for coordinating behavior between similarly configured items forked between cooperating sites.
Our test case is the SODOTO "pay it forward" obligation for distributing skills. We anticipate three distinct levels of automation: "self", "supervised", and "validated" assessment. In each case the student and in some cases the student and teacher advance through these three steps as approprate.
We can imagine a straight forward state machine that could describe this as transitions in response to various inputs but our challenge in federated wiki is to capture equivalent behavior when all participants have at best partial information.
Recall that the owner of a site can record changes to a page as Actions updating items on that page. The Markdown plugin offers checkbox lists where individual clicks invoke server turn-arounds to record these changes.
We imagine a similar dynamics for these checkboxes except that remote sites can respond to these changes.
strict digraph { node [style=filled fillcolor=bisque] teacher -> click [label=satisfied] student -> click [dir=back] student -> clicked [label=recorded] }
The same mechanism applies in reverse where the teacher becomes aware of the student's independent progress.
strict digraph { node [style=filled fillcolor=bisque] teacher -> clicked [label=recorded] teacher -> click [dir=back] student -> click [label=progress] }
The unlabeled arrow in both cases represents a page fetch and interpretation by the plugin that is already aware of its role in the progression.
See rules expressed as arrow functions. medium
# Example
Let us consider now how this teacher-student relationship would form in the first place.
1. I develop a lesson plan for teaching a skill and offer to teach this to others by including a SODOTO plugin on my page. 2. You express an interest in being my student by forking that page into your own site. Our pages aren't yet connected other than by the fork. 3. We meet by some means, I show you the skill, you show me your site which enters my "neighborhood" a which point we are about to become connected. 4. I see your presence in my SODOTO. I click ▢ seen for your site and the connection is forged. 5. You refresh your page and see that my action has been noticed and recorded on your site.
In this scenario there will become a point that you are ready to take on students of your own. Imagine we are on a community call and there is some confusion as to who is the teacher of the new student. It could be either of us as we are both now qualified and maybe shared some showing responsibility.
What is to prevent us both clicking ▢ seen for this new student? Can the student have two teachers? How can we be sure that you get the ▢ taught credit as this student progresses?
# Implementation
We imagine implementing state storage as a collection of "facts" that capture the state of a students progress as seen independently by both the student and the teacher. Changes in this state would be recorded in Actions with old state easily recovered.
We further imagine that emit and clicks will consult one of several collections of if-then rules in a forward-chaining process that seeks updates and enables new interactions. Separate collections will address self, supervised, and validated assessments.
See SODOTO Simulation for testing rule engine.
See forward chaining as data-driven reasoning. wikipedia
See Confirmed and Acknowledged as a simpler protocol.