{
  "schemaVersion": 5,
  "generator": "BetaSuite",
  "generatedAt": "2026-09-24T14:22:04.481134",
  "timezone": {
    "label": "ACST (UTC+09:30)",
    "utcOffsetMinutes": 570,
    "name": "ACST"
  },
  "report": {
    "projectName": "BetaSuite Demo · Acme Spring Field Test",
    "period": {
      "from": "2026-09-23T14:22:03.664642",
      "to": "2026-09-23T16:00:03.664642",
      "weekFrom": null,
      "weekTo": null,
      "weekYear": null
    },
    "overallRating": null,
    "mostSatisfiedNote": null,
    "leastSatisfiedNote": null
  },
  "tester": {
    "name": "Alex Rivera",
    "organisation": "",
    "platform": null,
    "userId": null,
    "applicationUid": null
  },
  "unitUnderTest": {
    "modelUnit": "RoboMower R2 Pro",
    "company": "Acme Outdoor",
    "deviceType": null
  },
  "protocols": [],
  "overview": {
    "sessionsCount": 1,
    "totalRuntimeSeconds": 5880,
    "markersCount": 7,
    "feedbackCount": 3
  },
  "aiSummary": {
    "periodNarrative": null,
    "sessionsOverview": null,
    "period": null
  },
  "sessions": [
    {
      "id": "5cffe88c-f33d-4ff5-ae85-199bb00483c4",
      "name": "First yard map & dock cycle",
      "status": "completed",
      "startTime": "2026-09-23T14:22:03.664642",
      "endTime": "2026-09-23T16:00:03.664642",
      "durationSeconds": 5880,
      "overallRating": 3,
      "gotStuck": true,
      "stuckDescription": "Bumper-stall loop at the rose-bed corner — needed manual intervention before the path planner gave up.",
      "weather": {
        "description": "Partly cloudy",
        "temperatureC": 18.5
      },
      "aiSummary": null,
      "voiceMemo": null,
      "markers": [
        {
          "timestamp": "2026-09-23T14:34:03.664642",
          "tag": null,
          "question": null,
          "answer": null,
          "note": "Perimeter learn finished in 11 min — within target.",
          "voiceNoteTranscript": null,
          "protocolName": null,
          "protocolResult": null,
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": null,
          "answerRaw": null,
          "runId": null
        },
        {
          "timestamp": "2026-09-23T15:15:03.664642",
          "tag": null,
          "question": null,
          "answer": null,
          "note": "Stalled at the rose-bed corner — bumper triggered twice in 8 s before reversing.",
          "voiceNoteTranscript": null,
          "protocolName": null,
          "protocolResult": null,
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": null,
          "answerRaw": null,
          "runId": null
        },
        {
          "timestamp": "2026-09-23T15:50:03.664642",
          "tag": null,
          "question": null,
          "answer": null,
          "note": "Docked first try on return — charge contacts aligned, no nudging needed.",
          "voiceNoteTranscript": null,
          "protocolName": null,
          "protocolResult": null,
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": null,
          "answerRaw": null,
          "runId": null
        },
        {
          "timestamp": "2026-09-23T15:52:03.664642",
          "tag": null,
          "question": null,
          "answer": null,
          "note": "Dock approach check — Approaches dock in a straight line — Pass",
          "voiceNoteTranscript": null,
          "protocolName": "Dock approach check",
          "protocolResult": "Pass",
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": "passFail",
          "answerRaw": "pass",
          "runId": null
        },
        {
          "timestamp": "2026-09-23T15:54:03.664642",
          "tag": null,
          "question": null,
          "answer": null,
          "note": "Dock approach check — Charging contacts align without nudging — Pass",
          "voiceNoteTranscript": null,
          "protocolName": "Dock approach check",
          "protocolResult": "Pass",
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": "passFail",
          "answerRaw": "pass",
          "runId": null
        },
        {
          "timestamp": "2026-09-23T15:56:03.664642",
          "tag": null,
          "question": null,
          "answer": null,
          "note": "Dock approach check — Retries automatically after a missed dock — Fail — planner needs a manual nudge to retry.",
          "voiceNoteTranscript": null,
          "protocolName": "Dock approach check",
          "protocolResult": "Fail",
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": "passFail",
          "answerRaw": "fail",
          "runId": null
        },
        {
          "timestamp": "2026-09-23T15:58:03.664642",
          "tag": null,
          "question": null,
          "answer": "4",
          "note": "Dock approach check — Overall dock reliability — 4/5",
          "voiceNoteTranscript": null,
          "protocolName": "Dock approach check",
          "protocolResult": null,
          "protocolId": null,
          "protocolRevision": null,
          "questionKey": null,
          "stepNumber": null,
          "questionKind": "rating5",
          "answerRaw": "4",
          "runId": null
        }
      ],
      "media": [
        {
          "file": "291a3a86-729d-4ef5-bd73-1c314a77014d.jpg",
          "type": "photo",
          "capturedAt": "2026-09-23T15:15:03.664642",
          "capturedAtSource": "attachTime",
          "attachedAt": "2026-09-23T15:15:03.664642",
          "note": null
        },
        {
          "file": "4ead316a-64f6-40a4-a0c4-d1dde61aea83.png",
          "type": "photo",
          "capturedAt": "2026-09-23T15:15:03.664642",
          "capturedAtSource": "attachTime",
          "attachedAt": "2026-09-23T15:15:03.664642",
          "note": null
        }
      ]
    }
  ],
  "findings": [
    {
      "id": "37daecf0-2fde-47e2-a909-ab0d31859a8d",
      "createdAt": "2026-09-23T15:17:03.664642",
      "title": "Repeated bumper stalls at narrow corners",
      "severity": "high",
      "category": "hardware",
      "description": "When the mower enters the rose-bed corner (~40 cm gap between the boundary wire and a raised garden edge), the front bumper triggers, the unit reverses ~10 cm, then attempts the same line again and re-triggers. Cycle repeats 3–4 times before the path-planning falls back to a wider arc.",
      "stepsToReproduce": "1. Map a yard with a corner narrower than 50 cm between the boundary wire and a fixed obstacle.\n2. Start an auto-mow.\n3. Wait for the mower to reach that corner.\n4. Observe the bumper-stall loop on the live camera feed.",
      "expectedResult": "After the first bumper trigger, the path planner should widen the arc rather than retry the same line.",
      "actualResult": "Three to four bumper-and-reverse cycles before the planner gives up and re-routes.",
      "testerNotes": null,
      "device": "RoboMower R2 Pro",
      "os": "firmware 3.2.1",
      "appVersion": "demo",
      "firmwareVersion": "3.2.1",
      "firmwareUpdateDate": null,
      "tags": [
        "obstacle",
        "path-planning",
        "firmware-v3.2"
      ],
      "sessionId": "5cffe88c-f33d-4ff5-ae85-199bb00483c4",
      "gps": null,
      "attachments": []
    },
    {
      "id": "868c9d90-bb64-48eb-9847-8933a453f6a9",
      "createdAt": "2026-09-23T15:56:03.664642",
      "title": "Add an estimated finish-time chip to the companion app",
      "severity": "low",
      "category": "suggestion",
      "description": "Surfacing a live \"ETA to finish\" on the companion-app home screen would make it easier for owners to plan around the mowing window — particularly useful when the mower has reduced cutting speed for wet grass.",
      "stepsToReproduce": "",
      "expectedResult": "",
      "actualResult": "",
      "testerNotes": null,
      "device": "RoboMower R2 Pro",
      "os": "firmware 3.2.1",
      "appVersion": "demo",
      "firmwareVersion": null,
      "firmwareUpdateDate": null,
      "tags": [
        "companion-app",
        "ux"
      ],
      "sessionId": "5cffe88c-f33d-4ff5-ae85-199bb00483c4",
      "gps": null,
      "attachments": []
    },
    {
      "id": "edd2eef7-eb9c-40a8-a759-38c0050425c3",
      "createdAt": "2026-09-23T15:47:03.664642",
      "title": "Battery drops 12 % below target on slopes ≥ 20°",
      "severity": "medium",
      "category": "hardware",
      "description": "Across two passes on the back-yard slope (~22°), the pack discharged from 78 % to 41 % — about 12 % more than the spec sheet predicts for the same distance on flat ground. Wheel current spiked to 4.1 A on the up-slope segments. No thermal warnings, but the unit returned to the dock sooner than expected.",
      "stepsToReproduce": "",
      "expectedResult": "",
      "actualResult": "",
      "testerNotes": null,
      "device": "RoboMower R2 Pro",
      "os": "firmware 3.2.1",
      "appVersion": "demo",
      "firmwareVersion": null,
      "firmwareUpdateDate": null,
      "tags": [
        "battery",
        "slope",
        "wheel-current",
        "firmware-v3.2"
      ],
      "sessionId": "5cffe88c-f33d-4ff5-ae85-199bb00483c4",
      "gps": null,
      "attachments": []
    }
  ]
}