2. File Specification: Config Schema (config.json)

The config.json file provides high-level metadata about the experiment and defines the overall structure (or "flow") of the trials presented to the participant.

2.1. Metadata

These top-level keys describe the study and are used for dataset indexing and citation.

Key Type Description
experimentName String The full title of the experiment or study.
description String A brief paragraph describing the task.
paperDOI String The DOI link to the original publication (e.g., "https://doi.org/...").
taskType Array of Strings Keywords describing the cognitive task (e.g., "Social Cognition", "Decision Making").
responseType Array of Strings All response types used, e.g., ["multi-choice", "slider", "free-text"].
contributors Array of Strings List of researcher names who prepared the data.
stimuli_count Integer Total number of unique stimuli/trials defined for this experiment (i.e., the number of entries in trial.jsonl with id values that are referenced by config.json).

The stimuli_count field provides a quick summary of dataset size. Participant demographics (participants_info) and the total number of ratings (judgment_count) are now specified in the Human Data files; see the Human Data Schema.

2.2. Experiment Flow (experimentFlow)

The experimentFlow array defines the structure and order of the trials presented to the participant. Each entry is one experimental condition, and the interface presents a single condition (chosen uniformly at random) to each participant. The list should enumerate every condition included in the experiment. If conditions differ so substantially that they require separate instructions, assets, or config logic, consider splitting them into separate experiment folders instead. Make this decision on a case-by-case basis.

Each condition holds one or more sequences. A sequence is a fully-specified ordering of the condition's blocks; the interface presents a single sequence (chosen uniformly at random) to each participant. Randomization is expressed by enumerating sequences — rather than flagging a block to be shuffled, you write out each concrete ordering you want as its own sequence. This keeps every ordering shown to participants explicit and reproducible.

Key Type Description
condition String (optional) A label identifying this experimental condition. Omit it if the experiment has only one condition.
sequences Array of Objects One or more sequence objects. The interface presents a single sequence, chosen uniformly at random, to each participant. Provide multiple sequences to randomize the order in which blocks (or the trials within them) are shown — each sequence is one concrete ordering. A condition with a single fixed order simply has one sequence.
sequences[].seq_id String An identifier for this sequence (e.g. "seq_1"), unique within the condition. Recorded with a participant's data so the exact ordering they saw is known.
sequences[].blocks Array of Arrays of Strings A nested array. Each inner array is a "block" of experiment components. Each string is an id that can reference:
  • A trial from trial.jsonl (the id field of a trial object)
  • An instruction module from instruction.jsonl (the id field of an instruction module)
  • A test trial module from instruction.jsonl (the id field of a test_trial module)
  • A comprehension quiz module from instruction.jsonl (the id field of a comprehension_quiz module)
To include instructions, test trials, or quizzes in the experiment, their id values must be specified in a block.

Note: the former randomization flags (block_randomization, stimuli_randomization) have been removed. All order randomization is now expressed directly by listing multiple sequences — each a concrete, explicit ordering.

2.2.1. Example experimentFlow

"experimentFlow": [
  {
    "condition": "condition_1",
    "sequences": [
      {
        "seq_id": "seq_1",
        "blocks": [
          [ "instruction_01", "test_trial_01" ],
          [ "trial_1_1", "trial_1_2", "trial_1_3" ]
        ]
      },
      {
        "seq_id": "seq_2",
        "blocks": [
          [ "instruction_01", "test_trial_01" ],
          [ "trial_1_3", "trial_1_2", "trial_1_1" ]
        ]
      }
    ]
  },
  {
    "condition": "condition_2",
    "sequences": [
      {
        "seq_id": "seq_1",
        "blocks": [
          [ "instruction_02", "test_trial_02" ],
          [ "trial_2_1", "trial_2_2", "trial_2_3" ]
        ]
      }
    ]
  }
]

In this example:

  • There are two experimental conditions. The interface randomly presents one of the two conditions to each participant. You do not need to specify the condition label if there is only one condition.
  • condition_1 has two sequences (seq_1, seq_2). Each participant assigned to this condition sees one of them, chosen uniformly at random, and the seq_id they saw is recorded with their data. Both sequences share the same first block (an instruction module "instruction_01" and a test trial "test_trial_01"); they differ only in the order of the three trials in the second block — [trial_1_1, trial_1_2, trial_1_3] versus [trial_1_3, trial_1_2, trial_1_1]. This is how order randomization is expressed: enumerate the orderings you want.
  • condition_2 has a single sequence (one fixed order).
  • Within a sequence, blocks is a list of blocks; each block is a list of component ids presented in that order.
  • All IDs (for instructions, test trials, quizzes, and regular trials) must match the id fields defined in their respective files (instruction.jsonl or trial.jsonl).

2.3. Trial Layout Configuration (trial_layout_config)

The optional trial_layout_config object controls the visual layout of trial panels (stimuli and queries) rendered during the experiment. By default, the interface uses a two-column layout with the left panel displaying stimuli and the right panel displaying queries. Use this configuration to adjust the column arrangement and the default width of each panel.

Key Type Description
layout String Defines the column arrangement for the trial view. Supported values:
  • "2-columns" — Side-by-side layout with stimuli on the left and queries on the right (default).
  • "1-column" — Single-column layout where stimuli appear above the queries.
default_width Array of Strings Sets the default width of each column as CSS percentage values.
  • For "2-columns" layout: provide two values corresponding to the left (stimuli) and right (queries) panels, e.g. ["40%", "50%"].
  • For "1-column" layout: provide a single value for the overall content width, e.g. ["80%"].
If omitted, the interface uses its built-in default widths.

2.3.1. Example

Two-column layout

"trial_layout_config": {
  "layout": "2-columns",
  "default_width": ["40%", "50%"]
}

The trial interface will render two side-by-side columns where the stimuli panel takes up 40% of the width and the queries panel takes up 50%, leaving a small gap between them.

Single-column layout

"trial_layout_config": {
  "layout": "1-column",
  "default_width": ["80%"]
}

The trial interface will stack stimuli above queries in a single column that occupies 80% of the viewport width, centered on the page.

2.4. Full config.json Example

Here is what a complete config.json file looks like, combining the metadata and the experiment flow. The id strings in the blocks array can refer to:

All IDs must match the id fields defined in their respective source files.

{
  "experimentName": "Epistemic Language Understanding",
  "description": "Participants observe short animations and answer questions about the agent's goals and beliefs.",
  "paperDOI": "https://doi.org/10.1111/example.doi.12345",
  "taskType": [
    "Social Cognition",
    "Theory of Mind"
  ],
  "responseType": [
    "multi-choice",
    "single-slider"
  ],
  "contributors": [
    "Jane Doe",
    "John Smith"
  ],
  "stimuli_count": 48,
  "trial_layout_config": {
    "layout": "2-columns",
    "default_width": ["40%", "50%"]
  },
  "experimentFlow": [
    {
      "sequences": [
        {
          "seq_id": "seq_1",
          "blocks": [
            [ "instruction_01", "test_trial_01", "trial_1_1", "trial_1_2", "trial_1_3" ],
            [ "trial_2_1", "trial_2_2", "trial_2_3", "trial_2_4", "comprehension_quiz_01" ]
          ]
        }
      ]
    }
  ]
}