The questions array defines scored tasks. Question IDs are assigned automatically in array order and should not be authored.

Common shape

"questions": [
  {
    "section": "Orbit",
    "title": "What is Pathfinder's semi-major axis?",
    "description": "Use the navigation data.",
    "type": "number",
    "answer": {
      "value": 7000,
      "tolerance": 5,
      "unit": "km",
      "reason": "The configured value is 7000 km.",
      "score": 5
    }
  }
]

Always set a non-zero score and a useful reason.

Text

{
  "section": "Identification",
  "title": "What call sign is printed on the target?",
  "description": "Inspect the visible label.",
  "type": "text",
  "answer": {
    "value": "ATLAS",
    "reason": "The target is labeled ATLAS.",
    "score": 5
  }
}

Text matching trims, lowercases, and removes spaces, tabs, and line breaks. It does not accept spelling errors or alternate synonyms.

Number

{
  "section": "Orbit",
  "title": "What is the semi-major axis?",
  "description": "Answer in kilometers.",
  "type": "number",
  "answer": {
    "value": 7000,
    "tolerance": 5,
    "unit": "km",
    "reason": "The configured value is 7000 km.",
    "score": 5
  }
}

The answer is correct when the submitted value falls within the absolute tolerance. numeric is accepted as an alias, but number is the preferred type.

The unit is not converted automatically.

Select

{
  "section": "Communications",
  "title": "Which component was affected?",
  "description": "Review telemetry after the event.",
  "type": "select",
  "answer": {
    "options": ["Battery", "Computer", "Receiver", "Transmitter"],
    "value": 3,
    "reason": "The transmitter bit rate changed.",
    "score": 5
  }
}

value is the zero-based index of the correct option. Here, 3 selects the fourth option.

Checkbox

{
  "section": "Readiness",
  "title": "Which systems are part of the communications path?",
  "description": "Select every applicable system.",
  "type": "checkbox",
  "answer": {
    "options": ["Receiver", "Transmitter", "Storage", "Solar Panel"],
    "value": [0, 1, 2],
    "reason": "Receiver, Transmitter, and Storage form the basic data path.",
    "score": 6
  }
}

value is an array of zero-based correct indices. Current scoring is based on the overlap between submitted and correct choices, using the larger of the submitted-choice and correct-choice counts as the denominator. Partial selections can receive partial credit.

Preventing silent omissions

A question can be skipped when:

  • type is missing or unsupported
  • a Number question has no answer.value
  • a Select question has no answer.value

An empty Checkbox answer is unscoreable. A zero score loads but provides no points.

After every edit, reload and confirm the exact question count in Operator. Use disposable teams because one team can answer each question only once per run.

Next, define the event envelope.