{
  "opd": "benikigai/ec-1",
  "commit": 1,
  "opd_version": "0.4.0",
  "layer": "variants",
  "question": "What change would be better, and what does it cost?",
  "data": {
    "design_intent": {
      "targets": [
        {
          "characteristic": "gap",
          "where": [
            "part:top-shell"
          ],
          "target": {
            "value": 0.2,
            "unit": "mm",
            "source": "inferred",
            "confidence": "low"
          },
          "lower": {
            "value": 0.1,
            "unit": "mm",
            "source": "inferred",
            "confidence": "low"
          },
          "upper": {
            "value": 0.3,
            "unit": "mm",
            "source": "inferred",
            "confidence": "low"
          },
          "priority": "should",
          "owner": "industrial-design",
          "rationale": "Even, tight seam at the shoulder buttons"
        },
        {
          "characteristic": "button-force",
          "where": [
            "part:button-cap"
          ],
          "target": {
            "value": 180,
            "unit": "gf",
            "source": "measured",
            "confidence": "medium"
          },
          "lower": {
            "value": 150,
            "unit": "gf",
            "source": "measured",
            "confidence": "medium"
          },
          "upper": {
            "value": 210,
            "unit": "gf",
            "source": "measured",
            "confidence": "medium"
          },
          "priority": "should",
          "owner": "industrial-design",
          "rationale": "Crisp, light press"
        },
        {
          "characteristic": "button-travel",
          "where": [
            "part:button-cap"
          ],
          "target": {
            "value": 0.8,
            "unit": "mm",
            "source": "measured",
            "confidence": "medium"
          },
          "lower": {
            "value": 0.6,
            "unit": "mm",
            "source": "measured",
            "confidence": "medium"
          },
          "upper": {
            "value": 1,
            "unit": "mm",
            "source": "measured",
            "confidence": "medium"
          },
          "priority": "nice",
          "owner": "industrial-design"
        },
        {
          "characteristic": "weight",
          "where": [
            "asm:ec-1"
          ],
          "target": {
            "value": 69,
            "unit": "g",
            "source": "measured",
            "confidence": "high"
          },
          "upper": {
            "value": 74,
            "unit": "g",
            "source": "measured",
            "confidence": "high"
          },
          "priority": "must",
          "owner": "product",
          "rationale": "Light enough for long sessions; set from the parts below"
        },
        {
          "characteristic": "battery-life",
          "where": [
            "part:battery"
          ],
          "target": {
            "value": 30,
            "unit": "h",
            "source": "inferred",
            "confidence": "medium"
          },
          "lower": {
            "value": 25,
            "unit": "h",
            "source": "inferred",
            "confidence": "medium"
          },
          "priority": "must",
          "owner": "product",
          "rationale": "A week of evenings on one charge"
        },
        {
          "characteristic": "drop-height",
          "where": [
            "asm:ec-1"
          ],
          "target": {
            "value": 1.2,
            "unit": "m",
            "source": "inferred",
            "confidence": "medium"
          },
          "priority": "must",
          "owner": "reliability"
        },
        {
          "characteristic": "thickness",
          "where": [
            "asm:ec-1"
          ],
          "target": {
            "value": 22,
            "unit": "mm",
            "source": "measured",
            "confidence": "high"
          },
          "upper": {
            "value": 23,
            "unit": "mm",
            "source": "measured",
            "confidence": "high"
          },
          "priority": "should",
          "owner": "industrial-design"
        }
      ]
    },
    "variants": {
      "objectives": [
        {
          "metric": "yield.rty",
          "direction": "max"
        },
        {
          "metric": "cost.cost_per_good_unit",
          "direction": "min"
        },
        {
          "metric": "throughput.cycle_time",
          "direction": "min"
        }
      ],
      "constraints": [
        "takt 36 s (2,000 units a day over two 10-hour shifts)",
        "headcount at most 12",
        "no single new tool over 25,000 USD"
      ],
      "baseline": {
        "scores": {
          "yield": {
            "fpy_by_station": {
              "sta:a2": {
                "value": 0.992,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "sta:a3": {
                "value": 0.996,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "sta:a4": {
                "value": 0.99,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "sta:t1": {
                "value": 0.985,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "sta:t2": {
                "value": 0.978,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "sta:t3": {
                "value": 0.983,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "sta:t4": {
                "value": 0.995,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              }
            },
            "rty": {
              "value": 0.922,
              "origin": "simulated",
              "engine": "monte-carlo",
              "runs": 20000,
              "interval": [
                0.905,
                0.935
              ],
              "confidence": "low"
            },
            "top_failure_modes": [
              {
                "failure_mode": "ext:controller:stick-drift",
                "share": {
                  "value": 0.24,
                  "origin": "simulated",
                  "engine": "monte-carlo",
                  "runs": 20000,
                  "confidence": "low"
                },
                "issue": "iss:stick-drift-flux",
                "pfmea": "fm:stick-flux"
              },
              {
                "failure_mode": "connector-unseat",
                "share": {
                  "value": 0.18,
                  "origin": "simulated",
                  "engine": "mujoco",
                  "runs": 2000,
                  "confidence": "low"
                },
                "issue": "iss:battery-unseat",
                "pfmea": "fm:battery-unseat"
              },
              {
                "failure_mode": "gap-flush",
                "share": {
                  "value": 0.16,
                  "origin": "simulated",
                  "engine": "monte-carlo",
                  "runs": 20000,
                  "confidence": "low"
                },
                "issue": "iss:shoulder-gap",
                "pfmea": "fm:gap-high"
              }
            ]
          },
          "throughput": {
            "cycle_time": {
              "value": 30,
              "unit": "s",
              "origin": "estimated",
              "engine": "analytic",
              "confidence": "low",
              "note": "slowest station from time studies; needs the discrete-event simulator"
            },
            "takt": {
              "value": 36,
              "unit": "s",
              "origin": "estimated",
              "engine": "analytic",
              "confidence": "high"
            },
            "bottleneck_station": "sta:t1",
            "headcount": 11
          },
          "cost": {
            "cost_per_good_unit": {
              "value": 1.92,
              "unit": "USD",
              "origin": "estimated",
              "engine": "analytic",
              "confidence": "low",
              "note": "conversion cost per good unit, including scrap and rework"
            }
          },
          "experience": {
            "weight": {
              "value": 69.4,
              "unit": "g",
              "origin": "measured",
              "confidence": "medium",
              "evidence": [
                "src:caliper-run-1"
              ]
            },
            "gap_flush_consistency": {
              "value": 0.0493,
              "unit": "mm, 1 sigma",
              "origin": "measured",
              "confidence": "medium",
              "evidence": [
                "src:caliper-run-1"
              ]
            },
            "predicted_field_return_rate": {
              "value": 0.031,
              "origin": "estimated",
              "confidence": "low"
            },
            "review_sentiment": {
              "value": 0.42,
              "unit": "-1 to 1",
              "origin": "measured",
              "engine": "review-analysis",
              "confidence": "low",
              "evidence": [
                "src:reviews"
              ]
            }
          }
        },
        "pareto": {
          "on_frontier": true
        }
      },
      "candidates": [
        {
          "id": "var:split-t1",
          "name": "Second RF shield box at T1",
          "kind": "equipment",
          "base": "baseline",
          "description": "Two shield boxes so flashing and RF test run in parallel",
          "changes": [
            {
              "action": "add",
              "target": [
                "sta:t1"
              ],
              "description": "Second shield box and BLE tester"
            }
          ],
          "generated_by": {
            "method": "agent",
            "engine": "analytic",
            "created": "2026-10-30"
          },
          "scores": {
            "yield": {
              "rty": {
                "value": 0.922,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              }
            },
            "throughput": {
              "cycle_time": {
                "value": 25,
                "unit": "s",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              },
              "bottleneck_station": "sta:t2",
              "headcount": 11
            },
            "cost": {
              "cost_per_good_unit": {
                "value": 1.98,
                "unit": "USD",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              },
              "capex": {
                "value": 9800,
                "unit": "USD",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "medium"
              }
            }
          },
          "pareto": {
            "on_frontier": true
          }
        },
        {
          "id": "var:stick-connector",
          "name": "FPC connector for the stick instead of hand soldering",
          "kind": "design-change",
          "base": "baseline",
          "description": "Stick module ships with a flex tail; a ZIF connector replaces six hand-soldered pins",
          "addresses": [
            "iss:stick-drift-flux",
            "fm:stick-flux"
          ],
          "changes": [
            {
              "action": "replace",
              "target": [
                "op:stick-solder"
              ],
              "description": "Solder step becomes a connector mate"
            },
            {
              "action": "modify",
              "target": [
                "part:stick-module"
              ],
              "description": "Module with flex tail, +0.12 USD"
            }
          ],
          "generated_by": {
            "method": "agent",
            "engine": "monte-carlo",
            "created": "2026-10-30"
          },
          "scores": {
            "yield": {
              "rty": {
                "value": 0.936,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "interval": [
                  0.92,
                  0.95
                ],
                "confidence": "low"
              }
            },
            "throughput": {
              "cycle_time": {
                "value": 28,
                "unit": "s",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              },
              "headcount": 11
            },
            "cost": {
              "cost_per_good_unit": {
                "value": 1.95,
                "unit": "USD",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              }
            },
            "experience": {
              "predicted_field_return_rate": {
                "value": 0.019,
                "origin": "estimated",
                "confidence": "low"
              }
            }
          },
          "pareto": {
            "on_frontier": true
          }
        },
        {
          "id": "var:preload-close",
          "name": "Preload fixture and tug test for the battery connector",
          "kind": "fixture-sequence",
          "base": "baseline",
          "description": "Closing fixture holds the connector down; a 2 N tug test after mating",
          "addresses": [
            "iss:battery-unseat",
            "fm:battery-unseat"
          ],
          "changes": [
            {
              "action": "modify",
              "target": [
                "op:close"
              ],
              "description": "Preload pad in the closing fixture"
            },
            {
              "action": "modify",
              "target": [
                "op:battery-mate"
              ],
              "description": "Add tug test"
            }
          ],
          "generated_by": {
            "method": "agent",
            "engine": "mujoco",
            "created": "2026-10-30"
          },
          "scores": {
            "yield": {
              "rty": {
                "value": 0.932,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "interval": [
                  0.915,
                  0.945
                ],
                "confidence": "low"
              }
            },
            "throughput": {
              "cycle_time": {
                "value": 31,
                "unit": "s",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              },
              "headcount": 11
            },
            "cost": {
              "cost_per_good_unit": {
                "value": 1.96,
                "unit": "USD",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              }
            }
          },
          "pareto": {
            "on_frontier": false,
            "dominated_by": [
              "var:stick-connector"
            ]
          }
        },
        {
          "id": "var:gap-tight",
          "name": "Tighten the shoulder gap to 0.10 mm",
          "kind": "design-change",
          "base": "baseline",
          "description": "Industrial design asks for a tighter, more premium seam",
          "design_intent": {
            "targets": [
              {
                "characteristic": "gap",
                "where": [
                  "part:top-shell"
                ],
                "target": {
                  "value": 0.1,
                  "unit": "mm",
                  "source": "inferred",
                  "confidence": "low"
                },
                "upper": {
                  "value": 0.15,
                  "unit": "mm",
                  "source": "inferred",
                  "confidence": "low"
                },
                "priority": "should",
                "owner": "industrial-design"
              }
            ]
          },
          "changes": [
            {
              "action": "modify",
              "target": [
                "part:top-shell"
              ],
              "description": "Tighter tool tolerance and a cooling change on the shoulder wall"
            }
          ],
          "generated_by": {
            "method": "agent",
            "engine": "monte-carlo",
            "created": "2026-10-30"
          },
          "scores": {
            "yield": {
              "rty": {
                "value": 0.874,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "interval": [
                  0.85,
                  0.895
                ],
                "confidence": "low"
              }
            },
            "throughput": {
              "cycle_time": {
                "value": 30,
                "unit": "s",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              }
            },
            "cost": {
              "cost_per_good_unit": {
                "value": 2.6,
                "unit": "USD",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              }
            },
            "experience": {
              "gap_flush_consistency": {
                "value": 0.03,
                "unit": "mm, 1 sigma",
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              },
              "cosmetic_defect_rate": {
                "value": 0.061,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "confidence": "low"
              }
            }
          },
          "pareto": {
            "on_frontier": false,
            "dominated_by": [
              "baseline",
              "var:split-t1",
              "var:stick-connector"
            ]
          }
        },
        {
          "id": "var:connector-and-preload",
          "name": "Stick connector plus battery preload",
          "kind": "mixed",
          "base": "baseline",
          "description": "Both fixes together",
          "addresses": [
            "iss:stick-drift-flux",
            "iss:battery-unseat"
          ],
          "changes": [
            {
              "action": "replace",
              "target": [
                "op:stick-solder"
              ],
              "description": "As var:stick-connector"
            },
            {
              "action": "modify",
              "target": [
                "op:close",
                "op:battery-mate"
              ],
              "description": "As var:preload-close"
            }
          ],
          "generated_by": {
            "method": "agent",
            "engine": "monte-carlo",
            "created": "2026-10-31"
          },
          "scores": {
            "yield": {
              "rty": {
                "value": 0.947,
                "origin": "simulated",
                "engine": "monte-carlo",
                "runs": 20000,
                "interval": [
                  0.93,
                  0.96
                ],
                "confidence": "low"
              }
            },
            "throughput": {
              "cycle_time": {
                "value": 31,
                "unit": "s",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              },
              "headcount": 11
            },
            "cost": {
              "cost_per_good_unit": {
                "value": 1.99,
                "unit": "USD",
                "origin": "estimated",
                "engine": "analytic",
                "confidence": "low"
              }
            },
            "ramp": {
              "changes_needed": {
                "value": 3,
                "origin": "estimated",
                "confidence": "medium"
              }
            }
          },
          "pareto": {
            "on_frontier": true
          }
        }
      ],
      "recommended": {
        "variant": "var:connector-and-preload",
        "rationale": "Highest simulated yield, and it closes the two largest failure modes, which together make up 42% of fallout",
        "tradeoffs": "0.07 USD more per good unit and 1 s slower than baseline, still inside the 36 s takt; T1 stays the bottleneck"
      },
      "tradeoffs": [
        {
          "id": "tr:gap-tighten",
          "characteristic": "gap",
          "from": {
            "value": 0.2,
            "unit": "mm",
            "source": "inferred",
            "confidence": "low"
          },
          "to": {
            "value": 0.1,
            "unit": "mm",
            "source": "inferred",
            "confidence": "low"
          },
          "variant": "var:gap-tight",
          "against": "baseline",
          "yield_delta": {
            "value": -0.048,
            "unit": "RTY",
            "origin": "simulated",
            "engine": "monte-carlo",
            "runs": 20000,
            "confidence": "low"
          },
          "cost_per_unit_delta": {
            "value": 0.68,
            "unit": "USD",
            "origin": "estimated",
            "engine": "analytic",
            "confidence": "low"
          },
          "other_deltas": {
            "experience.cosmetic_defect_rate": {
              "value": 0.044,
              "origin": "simulated",
              "engine": "monte-carlo",
              "runs": 20000,
              "confidence": "low"
            }
          },
          "experience_effect": "A tighter seam that reads as more premium, for about 5 points of yield and 0.68 USD a unit",
          "decision": {
            "status": "rejected",
            "by": "product (fictional)",
            "on": "2026-10-31",
            "note": "Not worth the yield at this price point"
          }
        }
      ],
      "engine_notes": "Yield and failure shares come from Monte Carlo over the measured spreads and MuJoCo drop runs. Cycle time and line balance are estimates until the discrete-event simulator exists."
    }
  }
}