Okay so not real documentation but a gathering of thoughts. 

1. General reminder that "TK" will be used in comments that are notes to the programmers rather than typical comments that explain code. Ctrl + F to TK at the start of new sessions to see what notes a file has. 

2. Here is what I am thinking for participant variables that are for "Experimental Navigation" i.e. for when we should be showing what pages to the participants. They are all binary for convienient TRUE FALSE logic
In an order that attempts chronology: 

consented:
    initial: None 
    True: Participant should proceed with the Training App
    False: Kick participant to the NoPay app

trained:
    initial: False
    True: They have passed training and should proceed to the committment page 
    False: They have failed training and should proceed to the attention check page, or they have not done it yet
    # TK: I am repeating a Lasmi experiment procedure Here

attended: 
    initial: None
    True: They passed the attention check and can have another try at training page
    False: They have failed attention check and should be kicked to the NoPay app 

committed:
    initial: None
    True: They should proceed to the Voting app (strictly the GroupingWaitPage)
    False: They should proceed to the Pay app, but with just the 'initial' payment 

grouped:
    initial: None
    True: They have found a group of 10 and should proceed with that group to the LeaderWaitPage in the Voting app 
    False: This individual committed but no group was found for them. They should proceed to the Pay app, but with just the initial payment and potentially a "waiting bonus"(?)

active:
    initial: True
    True: This is an active participant and should be shown the relevant pages
    False: We have deemed this participant inactive and then should be kicked to... TK: inactive people kicked to Pay, depending on how much they completed?

orphaned:
    initial: False
    True: This participant was taking part in the Voting app, but so many of their group have been deemed inactive that we want to end the experiment prematurely as the data they contribute cannot be used in analysis
    False: This person has not been in a group that has had too many people leave such that we should stop that group prematurely
    too many people become inactive, maybe I should kill the session early

screened:
    initial: False
    True: This participant has been deemed inactive (in the Voting app) so their Pages have been covered with the pantalla de inactividad. A screened participant should have their decision immediately self-submitted to keep that 'player' in the group without slowing down the rounds. 

// I thought it might be a good idea to additionallly have the variables "skip_to_pay" and "skip_to_no_pay" so that we can check these for the display logic rather than all the other variables. And then we can use the variables and write lines like (psuedo-code below)

if attended == False:
    skip_to_no_pay = True

And then for all after pages we can have a check of 

def is_displayed():
    if player.participant.skip_to_no_pay == False:
        return False

And so on

