Skip to content

Accuracy-gated progression

Let participants advance to the test block only once their practice accuracy clears a threshold.

Use this when practice exists to prove task understanding, not just to warm participants up, so weak performers should get more practice before their test data counts. Simply running a fixed practice block for everyone either bores participants who understood immediately or lets confused ones straight into the test, where their misunderstanding contaminates the data. Pick a repeating gate instead (see Variations) when a single extra round is not enough and participants must keep practising until they pass, and drop the gate entirely for tasks so simple that written instructions carry the whole load.

typetitlecontentstimFormatstim1keyboardkeylabelifthenbutton1
instructionsAnimal or object?Press A if the word names an animal, and L if it names an object. We start with a short practice round.NEXT
practicewordDOGa la
practicewordCHAIRa ll
practicewordHORSEa la
practicewordSPOONa ll%correct.perc[-3_0]%>=75maintest
instructionsA little more practiceLet's try a few more. Remember, A for animals and L for objects.NEXT
practicewordCATa la
practicewordTABLEa ll
testwordFISHa lamaintest
testwordBRUSHa ll

The four practice rows are scored against key like test trials but write no results rows; their correctness still enters the running history that variables read, which is what makes the gate possible. keyboard restricts responses to the two case-insensitive tokens a l, so every practice trial ends up scored 1 or 0.

The gate lives on the last practice row. Its if condition, %correct.perc[-3_0]%>=75, is evaluated after that trial completes: [0] is this row’s own response and [-3] reaches back three responses, so the range covers exactly the four practice trials, and 75 per cent means three of four correct. The bracket index is not optional. A bare %correct.perc% is never filled in with a value, so the condition would be silently false and everyone would get extra practice.

When the condition is true, then jumps to the row labelled maintest, skipping the remedial block. When it is false, no jump fires and the participant simply falls through to the next row, the extra-practice instructions, and the remedial trials then run on into the test block with no second jump needed. The label value is plain letters on purpose: a misspelled destination in then is indistinguishable from “no jump” and continues silently, and a purely numeric label can never be reached because numbers are read as row targets first.

  • Make the gate repeat until passed by adding a label on the first extra-practice row and, on the last one, an if of %correct.perc[-1_0]%<75 with then pointing back to it; add a second condition sending persistent failers to end so nobody loops forever.
  • Gate on speed as well as accuracy with an AND: if of %correct.perc[-3_0]%>=75 & %rt.mean[-3_0]%<1500.
  • Route failers to a dedicated remedial page instead of falling through: give if two ;-separated conditions and then two matching destinations.
  • Screen out participants who fail the gate by making the second destination in then a screenout (when the project has screenout configured) or end.