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.
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.0TofuPilot 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?