{
  "spec_version": "0.3",
  "status": "implemented_psychopy_prototype",
  "program_version": "1.0.0",
  "task_id": "soccer_plan_update",
  "preferred_runtime": "Python with PsychoPy",
  "stimulus_set_id": "soccer_generated_v04",
  "units": {
    "duration": "ms",
    "reaction_time": "ms",
    "session_timestamps": "s"
  },
  "images_relative_to_project_root": {
    "opponent_left": "assets/opponent_left.png",
    "opponent_right": "assets/opponent_right.png",
    "receive_pass": "assets/receive_pass_v04.png"
  },
  "display": {
    "fullscreen": true,
    "background": "black",
    "fit": "contain",
    "preserve_aspect_ratio": true,
    "crop": false,
    "overlay_on_soccer_images": false,
    "preload_all_images": true
  },
  "team_colors": {
    "participant_and_teammates": "red",
    "opponents": "blue"
  },
  "keys": {
    "left_button": "f",
    "right_button": "k",
    "start": "space",
    "quit": "escape"
  },
  "final_opponent_side_to_correct_key": {
    "left": "k",
    "right": "f"
  },
  "trial_conditions": [
    "stay",
    "switch"
  ],
  "timing": {
    "iti_uniform_range_ms": [
      500,
      800
    ],
    "initial_image_ms": 500,
    "intermediate_duration_bins_ms": [
      [
        500,
        750
      ],
      [
        750,
        1000
      ],
      [
        1000,
        1250
      ],
      [
        1250,
        1500
      ]
    ],
    "intermediate_sampling": "uniform_within_bin_with_balanced_bin_counts",
    "duration_rounding": "nearest_frame_at_measured_refresh_rate",
    "final_image_max_ms": 1500,
    "final_image_end": "first_response_or_timeout",
    "rt_origin": "first_final_image_flip",
    "accept_response_on_blank_after_final": false,
    "practice_feedback_ms": 700
  },
  "modes": {
    "practice": {
      "blocks": 1,
      "trials_per_block": 16,
      "stay_per_block": 8,
      "switch_per_block": 8,
      "stay_repetitions_per_initial_side_and_duration_bin": 1,
      "switch_repetitions_per_initial_side_and_duration_bin": 1,
      "feedback": true
    },
    "demo": {
      "blocks": 1,
      "trials_per_block": 32,
      "stay_per_block": 24,
      "switch_per_block": 8,
      "stay_repetitions_per_initial_side_and_duration_bin": 3,
      "switch_repetitions_per_initial_side_and_duration_bin": 1,
      "feedback": false
    },
    "pilot": {
      "blocks": 4,
      "trials_per_block": 32,
      "stay_per_block": 24,
      "switch_per_block": 8,
      "stay_repetitions_per_initial_side_and_duration_bin": 3,
      "switch_repetitions_per_initial_side_and_duration_bin": 1,
      "feedback": false,
      "self_paced_break_between_blocks": true
    }
  },
  "randomization": {
    "shuffle_each_block": true,
    "record_seed": true,
    "persist_trial_schedule_before_start": true,
    "repeat_invalid_trials": false,
    "limit_condition_runs": false
  },
  "response_rules": {
    "first_new_keydown_wins": true,
    "record_pretarget_events": true,
    "invalidate_on_early_keydown": true,
    "invalidate_on_key_held_at_target": true,
    "ignore_key_repeat": true,
    "two_key_ambiguity_tolerance_ms": 1,
    "fast_response_threshold_ms": 150,
    "accepted_rt_interval_ms": {
      "minimum_inclusive": 0,
      "maximum_exclusive": 1500
    },
    "primary_rt_analysis_interval_ms": {
      "minimum_inclusive": 150,
      "maximum_exclusive": 1500
    },
    "rt_for_omission": null,
    "separate_response_correct_and_trial_valid": true
  },
  "timing_quality": {
    "dropped_frame_threshold_multiple_of_measured_frame_interval": 1.5,
    "minimum_frame_interval_multiple": 0.5,
    "tracked_phases": [
      "initial",
      "intermediate",
      "final"
    ],
    "invalidate_trial_on_dropped_frame": true,
    "invalidate_trial_on_missing_timestamps_or_unsynchronized_clocks": true,
    "require_stable_refresh_rate_for_research_recording": true,
    "windowed_preview_excluded_from_primary_analysis": true,
    "synthetic_smoke_test_excluded_from_primary_analysis": true
  },
  "logging": {
    "trial_results": "UTF-8 CSV",
    "key_events": "JSONL",
    "config_and_schedule": "JSON",
    "flush_each_completed_trial": true,
    "retain_partial_data_on_quit": true,
    "record_actual_flip_times": true,
    "record_actual_durations": true,
    "record_keyboard_backend": true,
    "record_dropped_frames": true
  },
  "primary_descriptive_measure": "median_valid_correct_switch_rt_ms_minus_median_valid_correct_stay_rt_ms",
  "scientific_status": "prototype_with_image_repetition_and_cue_frequency_confound",
  "intermediate_scene": {
    "phase": "pre_reception",
    "viewpoint": "standing_eye_level_toward_passer",
    "participant_body_visible": false,
    "teammate_visible": true,
    "ball_visible": true,
    "role": "common_interruption_of_upfield_information_before_final_reassessment",
    "display_duration_is_not_a_claim_about_natural_fixation_duration": true
  }
}
