TofuPilotTofuPilot

Reports

Automatic test reports in JSON format

TofuPilot automatically generates a JSON report for each test run with phase outcomes, measurements, logs, and attachments.

Location

TofuPilot saves reports in a reports/ directory next to your procedure file.

procedure.yaml
report.json
a1b2c3d4_scope_trace.png

Each run gets a timestamped directory. Phases can attach files using attach.file() or attach.data(). TofuPilot prefixes attachment filenames with a unique 8-character ID.

Structure

Each report contains run metadata, procedure info, outcome, unit details, and a list of phase results:

{
  "run_id": "34996cc5-2e09-4610-9e5b-fa70a635980a",
  "execution_id": "7b1681b3-9d86-48fb-ab35-31e3aa03878a",
  "timestamp": 1759480040883,
  "duration_ms": 265157,
  "procedure": {
    "name": "PCB Inspection",
    "version": "1.0.0",
    "description": "PCB Visual Inspection"
  },
  "outcome": "pass",
  "unit": {
    "serial_number": "SN12345",
    "part_number": "PCB-100",
    "revision_number": "A",
    "batch_number": "LOT-001",
    "status": "active"
  },
  "phases": [
    {
      "name": "Calibration",
      "job_id": "ffdba596-282f-448b-abfd-81be52b9ea57",
      "slot_id": "USB0",
      "outcome": "pass",
      "start_time": 1759480040885,
      "duration_ms": 17769,
      "measurements": [
        {
          "name": "voltage",
          "value": 3.3,
          "unit": "V",
          "limits": { "min": 3.0, "max": 3.6 }
        }
      ],
      "logs": [
        {
          "timestamp": 0,
          "level": "INFO",
          "message": "Calibration complete"
        }
      ],
      "error": null,
      "attachments": ["a1b2c3d4_scope_trace.png"],
      "repeat_count": 0
    }
  ]
}

Dashboard Sync

You can set a procedure id to link reports to TofuPilot Dashboard:

id: 550e8400-e29b-41d4-a716-446655440000
name: PCB Inspection
version: 1.0.0

TofuPilot uses this ID to match local reports with procedures in your Dashboard workspace. When syncing, the report includes a dashboard field with the Dashboard run ID and any upload errors.

How is this guide?