{
  "opd": "benikigai/ec-1",
  "commit": 1,
  "opd_version": "0.4.0",
  "layer": "issues",
  "question": "What did go wrong, why, and what fixed it?",
  "data": {
    "issues": [
      {
        "id": "iss:stick-drift-flux",
        "title": "Stick drift traced to flux under the potentiometer",
        "visibility": "public",
        "failure_mode": "ext:controller:stick-drift",
        "part_types": [
          "sensor"
        ],
        "processes": [
          "solder"
        ],
        "observed_on": [
          "field",
          "simulated"
        ],
        "detected_at": [
          "field",
          "test"
        ],
        "conditions": "Hand soldering with flux-core wire next to an open potentiometer housing; worse after months of use",
        "yield_impact": {
          "value": 1.2,
          "unit": "%",
          "source": "inferred",
          "confidence": "medium",
          "evidence": [
            "src:reviews",
            "src:repair-guide"
          ],
          "note": "field return share attributed to drift in the review sample"
        },
        "root_cause": {
          "value": "Flux migrates into the carbon track and changes wiper resistance",
          "source": "inferred",
          "confidence": "medium",
          "evidence": [
            "src:ct-run-1",
            "src:repair-guide"
          ]
        },
        "resolutions": [
          {
            "fix_type": "design-change",
            "description": "Replace soldered pins with an FPC connector on the stick module",
            "status": "proposed",
            "operations": [
              "op:stick-solder"
            ]
          },
          {
            "fix_type": "sop-update",
            "description": "Cap iron dwell at 2 s, no extra flux, inspect with 10x loupe",
            "status": "implemented",
            "operations": [
              "op:stick-solder"
            ],
            "implemented_on": "2026-09-14",
            "implementation_evidence": [
              {
                "kind": "sop-revision",
                "source": "src:teardown-log",
                "note": "SOP A2 rev C, step 3"
              }
            ],
            "yield_before": {
              "value": 97.8,
              "unit": "%",
              "source": "inferred",
              "confidence": "low"
            },
            "yield_after": {
              "value": 98.6,
              "unit": "%",
              "source": "inferred",
              "confidence": "low"
            }
          }
        ],
        "parts": [
          "part:stick-module",
          "part:main-pcba"
        ],
        "operations": [
          "op:stick-solder"
        ],
        "pfmea": [
          "fm:stick-flux"
        ],
        "tags": [
          "solder",
          "field-return"
        ]
      },
      {
        "id": "iss:battery-unseat",
        "title": "Battery connector unseats after a 1.2 m drop",
        "visibility": "public",
        "failure_mode": "connector-unseat",
        "part_types": [
          "fpc-connector",
          "battery"
        ],
        "processes": [
          "connector-mate"
        ],
        "observed_on": [
          "simulated",
          "dvt"
        ],
        "detected_at": [
          "reliability-test"
        ],
        "conditions": "Tight z-height over the connector; the top shell rib lands 0.3 mm above it",
        "yield_impact": {
          "value": 0.9,
          "unit": "%",
          "source": "inferred",
          "confidence": "low",
          "evidence": [
            "src:ct-run-1"
          ],
          "note": "drop-test fallout in the simulated build"
        },
        "root_cause": {
          "value": "No preload on the connector and no seat check at mating",
          "source": "inferred",
          "confidence": "medium",
          "evidence": [
            "src:ct-run-1"
          ]
        },
        "resolutions": [
          {
            "fix_type": "fixture-change",
            "description": "Closing fixture presses the connector while the shell closes",
            "status": "proposed",
            "operations": [
              "op:close"
            ]
          },
          {
            "fix_type": "sop-update",
            "description": "Tug test after mating, 2 N, at sta:a3",
            "status": "proposed",
            "operations": [
              "op:battery-mate"
            ]
          }
        ],
        "parts": [
          "part:battery",
          "part:main-pcba"
        ],
        "operations": [
          "op:battery-mate",
          "op:close"
        ],
        "pfmea": [
          "fm:battery-unseat"
        ],
        "tags": [
          "tight-space",
          "drop"
        ]
      },
      {
        "id": "iss:shoulder-gap",
        "title": "Shoulder-button gap opens past 0.30 mm on cavity 2",
        "visibility": "embargoed",
        "embargo_until": "2028-06-01",
        "failure_mode": "gap-flush",
        "part_types": [
          "housing",
          "button"
        ],
        "processes": [
          "inspect"
        ],
        "observed_on": [
          "pvt"
        ],
        "detected_at": [
          "fqc"
        ],
        "conditions": "Cavity 2 of the top-shell tool; worse in the first hour after a mould start",
        "yield_impact": {
          "value": 1.7,
          "unit": "%",
          "source": "inferred",
          "confidence": "low",
          "evidence": [
            "src:caliper-run-1"
          ]
        },
        "root_cause": {
          "value": "Uneven cooling bows the shoulder wall outward on cavity 2",
          "source": "inferred",
          "confidence": "low",
          "evidence": [
            "src:caliper-run-1"
          ]
        },
        "resolutions": [
          {
            "fix_type": "process-change",
            "description": "Raise mould temperature 8 C and extend cooling 2 s on cavity 2",
            "status": "trialled",
            "operations": [
              "op:cosmetic"
            ],
            "yield_before": {
              "value": 98.3,
              "unit": "%",
              "source": "inferred",
              "confidence": "low"
            },
            "yield_after": {
              "value": 99.1,
              "unit": "%",
              "source": "inferred",
              "confidence": "low"
            }
          }
        ],
        "parts": [
          "part:top-shell",
          "part:shoulder-button"
        ],
        "operations": [
          "op:cosmetic"
        ],
        "pfmea": [
          "fm:gap-high"
        ],
        "tags": [
          "tooling",
          "cosmetic"
        ]
      },
      {
        "id": "iss:rf-detune",
        "title": "RF power low when the LRA sits against the antenna keep-out",
        "visibility": "public",
        "failure_mode": "rf-detune",
        "part_types": [
          "antenna",
          "motor-haptic"
        ],
        "processes": [
          "connector-mate"
        ],
        "observed_on": [
          "simulated"
        ],
        "detected_at": [
          "test"
        ],
        "conditions": "The LRA pocket allows 2 mm of play toward the antenna",
        "yield_impact": {
          "value": 0.6,
          "unit": "%",
          "source": "inferred",
          "confidence": "low",
          "evidence": [
            "src:eol-sample"
          ]
        },
        "root_cause": {
          "value": "Metal LRA can within 5 mm of the chip antenna detunes it",
          "source": "inferred",
          "confidence": "medium"
        },
        "resolutions": [
          {
            "fix_type": "design-change",
            "description": "Add a rib so the LRA can't move toward the antenna",
            "status": "proposed",
            "operations": [
              "op:haptic-place"
            ]
          }
        ],
        "parts": [
          "part:haptic-lra",
          "part:antenna"
        ],
        "operations": [
          "op:haptic-place"
        ],
        "pfmea": [
          "fm:rf-low"
        ],
        "tags": [
          "rf",
          "placement"
        ]
      }
    ]
  }
}