benikigai/ec-1Public

EC-1 Wireless Controller

opd.yaml · 66 KB · commit #1 · Nov 1, 2026

SHA-256 5d27679c70a006078f617455a4be4ff71069ba4fa5df0c5e51c7e02547cd6d23

# SYNTHETIC EXAMPLE. EC-1 and Example Devices are fictional; every value is made up to show
# what an OPD holds. The card says so (card.synthetic: true). Built by tools/make_example_data.py.
# This one file is the whole product and its line, in a form an agent can read.
opd_version: 0.4.0
extensions:
- id: battery
  version: 0.1.0
- id: controller
  version: 0.1.0
card:
  product: EC-1 Wireless Controller
  maker: Example Devices (fictional)
  maker_endorsed: false
  synthetic: true
  category:
  - game-controller
  - consumer-electronics
  - battery-powered
  - wireless
  revision_examined: EC-1 rev B, SKU EC1-BLK (fictional)
  units_examined: 30
  license: CC-BY-4.0
  base_opd: null
  base_relation: null
  trust_level: draft
  visibility: public
  metrics:
    observed_share:
      value: 0.367
      badge: self-reported
    bom_coverage_by_cost:
      value: 0.966
      badge: self-reported
    station_evidence_share:
      value: 0.455
      badge: self-reported
    card_completeness:
      value: 1.0
      badge: self-reported
    rebuild_check:
      value: true
      badge: self-reported
    reproduction_agreement:
      value: null
      badge: self-reported
sources:
- id: src:ct-run-1
  kind: ct
  ref: raw/scan-logs/ct-run-1.yaml
  sha256: 144c9053a55bb8ede5b8961799d86d9eca291bc2d3be66a4b073386765d3f413
- id: src:teardown-log
  kind: teardown
  ref: raw/teardown-log.csv
  sha256: d7c953e05077eaef3e2679cebd98b51241bed87ca330c08d38b883ba7dbca9d4
- id: src:caliper-run-1
  kind: caliper
  ref: raw/measurements.csv
  sha256: 4e485578c0e79cf7911b550abc8fac035d7e0ce53794b10bef0166950f5e2cdd
- id: src:cmm-run-1
  kind: cmm
  ref: raw/measurements.csv
  sha256: 4e485578c0e79cf7911b550abc8fac035d7e0ce53794b10bef0166950f5e2cdd
- id: src:xrf-shells
  kind: xrf
  ref: raw/xrf-shells.csv
  sha256: aefe247c1ef4cfe030e8d4359d6f2b8700d0cbf34b45c4a026c8201b339c9d94
- id: src:markings
  kind: marking
  ref: raw/markings.csv
  sha256: 46ed21205a7f44d2440bfeffecd70d58fb750a24d4afabb3a72c0efe0e5e07b6
- id: src:photos
  kind: photo
  ref: media/renders/
- id: src:fcc-filing
  kind: filing
  ref: compliance/marks.yaml
  sha256: da0069bb050752c8c7d64a06ed67e3e814609dc9061a3a6531da3f76e2486390
- id: src:repair-guide
  kind: repair_guide
  ref: public repair guides for EC-1 stick replacement (fictional)
- id: src:reviews
  kind: review
  ref: raw/review-sample.csv
  sha256: 6d758ebf78e695d235eb7fb9e6832fd184626169cefe97b0d3da73b83bf5a20f
- id: src:eol-sample
  kind: teardown
  ref: raw/eol-sample.csv
  sha256: 7192c8a9896aab318b77c2832406f813735e52f7b6effa076d9fce542db5fd9c
parts:
- id: part:top-shell
  name: Top shell
  material:
    value: PC/ABS, charcoal, light texture
    source: measured
    confidence: high
    evidence:
    - src:xrf-shells
    - src:markings
    note: XRF matches PC/ABS; >PC+ABS< moulded inside
  process:
    value: injection-moulded, 2-cavity tool
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
    - src:photos
    note: two gate vestiges and cavity number 1 or 2 on the inside
  mass_g:
    value: 16.6
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 16.94 g
  geometry:
    step: parts/top-shell.step
    usd_prim: /Product/TopShell
    fidelity: reduced
  features:
  - id: feat:top-length
    name: Overall length
    spread:
      mean: 119.9177
      sd: 0.0294
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
  - id: feat:top-width
    name: Overall width
    spread:
      mean: 55.951
      sd: 0.0263
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
  - id: feat:stick-hole-dia
    name: Stick hole diameter
    spread:
      mean: 21.0189
      sd: 0.0154
      n: 30
      unit: mm
      instrument_resolution: 0.001
      evidence:
      - src:cmm-run-1
  - id: feat:button-hole-dia
    name: Face button hole diameter (A)
    spread:
      mean: 8.213
      sd: 0.0134
      n: 30
      unit: mm
      instrument_resolution: 0.001
      evidence:
      - src:cmm-run-1
  - id: feat:shoulder-gap
    name: Gap at shoulder buttons, closed unit
    spread:
      mean: 0.2147
      sd: 0.0493
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
  - id: feat:boss-pilot-dia
    name: Screw boss pilot diameter
    spread:
      mean: 1.7102
      sd: 0.0109
      n: 30
      unit: mm
      instrument_resolution: 0.001
      evidence:
      - src:cmm-run-1
  markings:
  - value: '>PC+ABS<'
    source: observed
    confidence: high
    evidence:
    - src:markings
  - value: cavity 1 or 2
    source: observed
    confidence: high
    evidence:
    - src:markings
- id: part:bottom-shell
  name: Bottom shell
  material:
    value: PC/ABS, charcoal
    source: measured
    confidence: high
    evidence:
    - src:xrf-shells
    - src:markings
  process:
    value: injection-moulded, 2-cavity tool
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  mass_g:
    value: 18.1
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 18.06 g
  geometry:
    step: parts/bottom-shell.step
    usd_prim: /Product/BottomShell
    fidelity: reduced
  features:
  - id: feat:lip-height
    name: Wall height at parting line
    spread:
      mean: 12.014
      sd: 0.0305
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
  - id: feat:parting-gap
    name: Parting-line gap, closed unit
    spread:
      mean: 0.0993
      sd: 0.0289
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
  markings:
  - value: '>PC+ABS<'
    source: observed
    confidence: high
    evidence:
    - src:markings
- id: part:button-cap
  name: Face button cap
  material:
    value: ABS, off-white, pad-printed legend
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
    note: legend wears on high-use units
  process:
    value: injection-moulded, 8-cavity family tool
    source: inferred
    confidence: medium
    evidence:
    - src:teardown-log
  mass_g:
    value: 0.36
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 0.34 g
  geometry:
    step: parts/button-cap.step
    usd_prim: /Product/ButtonCap_1
    fidelity: reduced
  features:
  - id: feat:cap-od
    name: Cap outside diameter
    spread:
      mean: 7.5777
      sd: 0.0097
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
- id: part:shoulder-button
  name: Shoulder button
  material:
    value: PC, charcoal
    source: inferred
    confidence: medium
    evidence:
    - src:teardown-log
  process:
    value: injection-moulded
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  mass_g:
    value: 0.76
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 0.75 g
  geometry:
    step: parts/shoulder-button.step
    usd_prim: /Product/ShoulderButton_L
    fidelity: reduced
- id: part:dome-sheet
  name: Silicone dome sheet
  material:
    value: silicone rubber, 50 Shore A
    source: inferred
    confidence: medium
    evidence:
    - src:teardown-log
  process:
    value: compression-moulded
    source: inferred
    confidence: medium
  mass_g:
    value: 0.66
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 0.64 g
  geometry:
    step: parts/dome-sheet.step
    usd_prim: /Product/DomeSheet
    fidelity: reduced
- id: part:stick-module
  name: Analog stick module
  material:
    value: 'mixed: POM shaft, ABS cap, carbon-track potentiometers'
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
    - src:ct-run-1
  process:
    value: purchased-assembly
    source: inferred
    confidence: high
  mass_g:
    value: 6.4
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
  geometry:
    step: parts/stick-module.step
    usd_prim: /Product/StickModule
    fidelity: envelope
  features:
  - id: feat:stick-centre-offset
    name: Stick centre offset at rest, uncalibrated
    spread:
      mean: 1.7033
      sd: 1.0347
      n: 30
      unit: '% of full scale'
      instrument_resolution: 0.1
      evidence:
      - src:eol-sample
  markings:
  - value: EXS-10K (fictional)
    source: observed
    confidence: high
    evidence:
    - src:markings
- id: part:main-pcba
  name: Main PCBA
  material:
    value: FR-4, 4 layers, 1.0 mm, ENIG
    source: observed
    confidence: high
    evidence:
    - src:ct-run-1
    - src:teardown-log
    note: layer count from CT; finish from colour
  process:
    value: smt-assembled, both sides reflowed at the EMS
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  mass_g:
    value: 9.6
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
  geometry:
    step: parts/main-pcba.step
    usd_prim: /Product/MainPCBA
    fidelity: envelope
  features:
  - id: feat:board-thickness
    name: Board thickness
    spread:
      mean: 1.006
      sd: 0.0159
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
- id: part:battery
  name: Li-ion pouch cell, 600 mAh
  material:
    value: lithium-ion polymer
    source: observed
    confidence: high
    evidence:
    - src:markings
    note: read from the cell label
  process:
    value: purchased-assembly with protection board
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  mass_g:
    value: 12.4
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
  geometry:
    step: parts/battery.step
    usd_prim: /Product/Battery
    fidelity: envelope
  features:
  - id: feat:cell-thickness
    name: Cell thickness at 50% charge
    spread:
      mean: 5.9163
      sd: 0.0576
      n: 30
      unit: mm
      instrument_resolution: 0.01
      evidence:
      - src:caliper-run-1
  markings:
  - value: 3.7 V 600 mAh 2.22 Wh
    source: observed
    confidence: high
    evidence:
    - src:markings
- id: part:haptic-lra
  name: Haptic LRA, 10 mm
  material:
    value: mixed
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  process:
    value: purchased-assembly
    source: inferred
    confidence: high
  mass_g:
    value: 1.6
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
  geometry:
    step: parts/haptic-lra.step
    usd_prim: /Product/HapticLRA
    fidelity: envelope
- id: part:screw-m2x6
  name: Screw, M2 x 6, pan head, self-tapping for plastic
  material:
    value: steel, black zinc
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  process:
    value: cold-headed, thread-rolled
    source: inferred
    confidence: high
  mass_g:
    value: 0.24
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 0.25 g
  geometry:
    step: parts/screw-m2x6.step
    usd_prim: /Product/Screw_1
    fidelity: reduced
- id: part:light-pipe
  name: LED light pipe
  material:
    value: PC, clear
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  process:
    value: injection-moulded
    source: inferred
    confidence: medium
  mass_g:
    value: 0.05
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units; CAD volume times nominal density gives 0.03 g
  geometry:
    step: parts/light-pipe.step
    usd_prim: /Product/LightPipe
    fidelity: reduced
- id: part:rating-label
  name: Rating label
  material:
    value: PET film, printed
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  process:
    value: die-cut, purchased
    source: inferred
    confidence: high
  mass_g:
    value: 0.05
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
  geometry:
    step: parts/rating-label.step
    usd_prim: /Product/RatingLabel
    fidelity: reduced
- id: part:soc
  name: Bluetooth LE SoC, 7 x 7 mm QFN
  material:
    value: silicon die in QFN-48
    source: observed
    confidence: high
    evidence:
    - src:markings
  process:
    value: purchased-component
    source: inferred
    confidence: high
  markings:
  - value: EXAMPLE BLE52 (fictional part number)
    source: observed
    confidence: high
    evidence:
    - src:markings
- id: part:imu
  name: 6-axis IMU, 3 x 3 mm LGA
  material:
    value: MEMS in LGA-14
    source: observed
    confidence: high
    evidence:
    - src:markings
  process:
    value: purchased-component
    source: inferred
    confidence: high
- id: part:pmic
  name: Charger and power IC, 4 x 4 mm QFN
  material:
    value: silicon die in QFN-24
    source: observed
    confidence: high
    evidence:
    - src:markings
  process:
    value: purchased-component
    source: inferred
    confidence: high
- id: part:usb-c
  name: USB-C receptacle, mid-mount
  material:
    value: LCP body, gold-plated contacts
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  process:
    value: purchased-component
    source: inferred
    confidence: high
- id: part:antenna
  name: 2.4 GHz chip antenna
  material:
    value: ceramic
    source: observed
    confidence: high
    evidence:
    - src:ct-run-1
  process:
    value: purchased-component
    source: inferred
    confidence: high
- id: part:crystal
  name: 32 MHz crystal
  material:
    value: quartz in ceramic package
    source: observed
    confidence: high
    evidence:
    - src:markings
  process:
    value: purchased-component
    source: inferred
    confidence: high
- id: part:passives
  name: Passives kit, about 120 parts
  material:
    value: MLCC, thick-film resistors, ferrites
    source: observed
    confidence: medium
    evidence:
    - src:ct-run-1
    note: count from CT, values not identified
  process:
    value: purchased-component
    source: inferred
    confidence: high
- id: part:pcb
  name: Bare board, 4 layers
  material:
    value: FR-4, Tg 150
    source: inferred
    confidence: medium
  process:
    value: fabricated board
    source: inferred
    confidence: high
- id: part:retail-box
  name: Retail box
  material:
    value: SBS board, 350 gsm, matte laminate
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  process:
    value: printed, die-cut, glued
    source: inferred
    confidence: high
  mass_g:
    value: 48.0
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
- id: part:pack-tray
  name: Pulp tray
  material:
    value: moulded pulp
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  process:
    value: wet-pressed pulp
    source: inferred
    confidence: medium
  mass_g:
    value: 14.0
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
- id: part:usb-cable
  name: USB-C to USB-A cable, 1 m
  material:
    value: TPE jacket, copper
    source: observed
    confidence: high
    evidence:
    - src:teardown-log
  process:
    value: purchased-assembly
    source: inferred
    confidence: high
  mass_g:
    value: 22.0
    unit: g
    source: measured
    confidence: high
    evidence:
    - src:caliper-run-1
    note: scale, 0.01 g, mean of 30 units
assemblies:
- id: asm:top-sub
  name: Top shell with buttons and dome sheet
- id: asm:core
  name: Bottom shell with PCBA, stick, battery and haptic
- id: asm:ec-1
  name: EC-1, closed unit
- id: asm:packed
  name: Packed unit
bom:
- item: asm:packed
  parent: null
  qty: 1
- item: asm:ec-1
  parent: asm:packed
  qty: 1
- item: part:retail-box
  parent: asm:packed
  qty: 1
  unit_cost_usd:
    value: 0.45
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:pack
- item: part:pack-tray
  parent: asm:packed
  qty: 1
  unit_cost_usd:
    value: 0.12
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:pack
- item: part:usb-cable
  parent: asm:packed
  qty: 1
  unit_cost_usd:
    value: 0.3
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:pack
- item: asm:top-sub
  parent: asm:ec-1
  qty: 1
- item: asm:core
  parent: asm:ec-1
  qty: 1
- item: part:screw-m2x6
  parent: asm:ec-1
  qty: 4
  unit_cost_usd:
    value: 0.006
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:fastener
- item: part:rating-label
  parent: asm:ec-1
  qty: 1
  unit_cost_usd:
    value: 0.02
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:pack
- item: part:top-shell
  parent: asm:top-sub
  qty: 1
  unit_cost_usd:
    value: 0.62
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:shell-moulder
- item: part:light-pipe
  parent: asm:top-sub
  qty: 1
  unit_cost_usd:
    value: 0.02
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:shell-moulder
- item: part:button-cap
  parent: asm:top-sub
  qty: 4
  unit_cost_usd:
    value: 0.03
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:shell-moulder
- item: part:shoulder-button
  parent: asm:top-sub
  qty: 2
  unit_cost_usd:
    value: 0.05
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:shell-moulder
- item: part:dome-sheet
  parent: asm:top-sub
  qty: 1
  unit_cost_usd:
    value: 0.09
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:rubber
- item: part:bottom-shell
  parent: asm:core
  qty: 1
  unit_cost_usd:
    value: 0.58
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:shell-moulder
- item: part:main-pcba
  parent: asm:core
  qty: 1
  unit_cost_usd:
    value: 4.93
    unit: USD
    source: inferred
    confidence: low
    note: should-cost; PCBA rolls up its parts plus 0.60 for SMT and test
  supplier: sup:ems
- item: part:stick-module
  parent: asm:core
  qty: 1
  unit_cost_usd:
    value: 1.35
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:stick-vendor
- item: part:battery
  parent: asm:core
  qty: 1
  unit_cost_usd:
    value: 1.1
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:cell-maker
- item: part:haptic-lra
  parent: asm:core
  qty: 1
  unit_cost_usd:
    value: 0.38
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:haptic-vendor
- item: part:pcb
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.85
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:ems
- item: part:soc
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 1.9
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
- item: part:imu
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.55
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
- item: part:pmic
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.42
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
- item: part:usb-c
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.12
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
- item: part:antenna
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.08
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
- item: part:crystal
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.06
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
- item: part:passives
  parent: part:main-pcba
  qty: 1
  unit_cost_usd:
    value: 0.35
    unit: USD
    source: inferred
    confidence: medium
  supplier: sup:chip-distributor
suppliers:
- id: sup:shell-moulder
  name:
    value: Shell moulder, from tool marks and cavity numbering
    source: inferred
    confidence: low
  region:
    value: Dongguan, CN
    source: inferred
    confidence: low
- id: sup:ems
  name:
    value: EMS for SMT and the PCBA (fictional)
    source: inferred
    confidence: low
  region:
    value: Shenzhen, CN
    source: inferred
    confidence: low
- id: sup:stick-vendor
  name:
    value: Stick module vendor, from the module marking EXS-10K
    source: inferred
    confidence: medium
  region:
    value: Guangdong, CN
    source: inferred
    confidence: medium
- id: sup:cell-maker
  name:
    value: Cell maker, from the cell label
    source: inferred
    confidence: medium
  region:
    value: Huizhou, CN
    source: observed
    confidence: medium
- id: sup:haptic-vendor
  name:
    value: LRA vendor
    source: inferred
    confidence: low
  region:
    value: unknown
    source: inferred
    confidence: low
- id: sup:fastener
  name:
    value: Fastener house
    source: inferred
    confidence: low
  region:
    value: Dongguan, CN
    source: inferred
    confidence: low
- id: sup:rubber
  name:
    value: Silicone moulder
    source: inferred
    confidence: low
  region:
    value: Dongguan, CN
    source: inferred
    confidence: low
- id: sup:chip-distributor
  name:
    value: Authorised distributor for silicon
    source: inferred
    confidence: low
  region:
    value: Shenzhen, CN
    source: inferred
    confidence: low
- id: sup:pack
  name:
    value: Packaging and accessories
    source: inferred
    confidence: low
  region:
    value: Dongguan, CN
    source: inferred
    confidence: low
operations:
- id: op:buttons-in
  name: Seat light pipe, face buttons and shoulder buttons in top shell
  type: place
  inputs:
  - part:top-shell
  - part:light-pipe
  - part:button-cap
  - part:shoulder-button
  output: asm:top-sub
  station: sta:a1
  method:
    value: by hand, shell face-down in nest
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  fixture:
    value: top-shell nest
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 14
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:dome-place
  name: Place dome sheet over the buttons
  type: place
  inputs:
  - asm:top-sub
  - part:dome-sheet
  output: asm:top-sub
  station: sta:a1
  method:
    value: by hand onto two locating pins
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  fixture:
    value: dome locator pins
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:stick-solder
  name: Hand-solder stick module to the PCBA (6 pins)
  type: solder
  inputs:
  - part:main-pcba
  - part:stick-module
  output: asm:core
  station: sta:a2
  method:
    value: hand solder, no-clean flux core wire
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  fixture:
    value: PCBA nest with stick square
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 22
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:pcba-place
  name: Snap PCBA into bottom shell
  type: snap-fit
  inputs:
  - part:bottom-shell
  - asm:core
  output: asm:core
  station: sta:a2
  method:
    value: two snaps, then press at four bosses
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:battery-adhere
  name: Stick battery into pocket with PSA
  type: adhesive
  inputs:
  - asm:core
  - part:battery
  output: asm:core
  station: sta:a3
  method:
    value: peel liner, place, press 20 N for 3 s
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  fixture:
    value: battery press
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 10
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:haptic-place
  name: Place LRA and mate its connector
  type: connector-mate
  inputs:
  - asm:core
  - part:haptic-lra
  output: asm:core
  station: sta:a3
  method:
    value: by hand into rib pocket
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  cycle_time_s:
    value: 8
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:battery-mate
  name: Mate battery connector
  type: connector-mate
  inputs:
  - asm:core
  output: asm:core
  station: sta:a3
  method:
    value: by hand, listen for click
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  cycle_time_s:
    value: 5
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:close
  name: Close top sub-assembly onto the core
  type: snap-fit
  inputs:
  - asm:core
  - asm:top-sub
  output: asm:ec-1
  station: sta:a4
  method:
    value: align at USB-C end, rotate closed
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  fixture:
    value: closing fixture
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 8
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:screw
  name: Drive four M2 screws to 0.18 N·m
  type: screw
  inputs:
  - asm:ec-1
  - part:screw-m2x6
  output: asm:ec-1
  station: sta:a4
  method:
    value: torque driver, cross pattern
    source: observed
    confidence: medium
    evidence:
    - src:teardown-log
  fixture:
    value: closing fixture
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 16
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:flash
  name: Flash the test image, then RF test
  type: flash
  inputs:
  - asm:ec-1
  output: asm:ec-1
  station: sta:t1
  method:
    value: USB-C pogo, then radiated test in shield box
    source: inferred
    confidence: medium
  fixture:
    value: USB-C pogo fixture
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 30
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:stick-cal
  name: Stick centre and range calibration
  type: ext:controller:stick-calibrate
  inputs:
  - asm:ec-1
  output: asm:ec-1
  station: sta:t2
  method:
    value: robot sweeps the stick to 8 points and centre
    source: inferred
    confidence: medium
  fixture:
    value: stick robot nest
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 15
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:functional
  name: Buttons, IMU, haptics and LED
  type: test
  inputs:
  - asm:ec-1
  output: asm:ec-1
  station: sta:t2
  method:
    value: press head, 90 degree turntable step, LRA current
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 12
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:cosmetic
  name: Cosmetic and gap check
  type: inspect
  inputs:
  - asm:ec-1
  output: asm:ec-1
  station: sta:t3
  method:
    value: camera arch plus feeler gauge at shoulder buttons
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 12
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:charge
  name: Charge current and battery check
  type: test
  inputs:
  - asm:ec-1
  output: asm:ec-1
  station: sta:t4
  method:
    value: 5 V in, measure charge current and cell voltage
    source: inferred
    confidence: medium
  fixture:
    value: 8-up rack
    source: inferred
    confidence: medium
  cycle_time_s:
    value: 20
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:label
  name: Apply rating label
  type: label
  inputs:
  - asm:ec-1
  - part:rating-label
  output: asm:ec-1
  station: sta:p1
  method:
    value: print and apply, scan serial
    source: observed
    confidence: medium
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
- id: op:pack
  name: Pack with tray and cable
  type: pack
  inputs:
  - asm:ec-1
  - part:retail-box
  - part:pack-tray
  - part:usb-cable
  output: asm:packed
  station: sta:p1
  method:
    value: tray, unit, cable, close, weigh
    source: observed
    confidence: medium
  cycle_time_s:
    value: 14
    unit: s
    source: inferred
    confidence: low
    note: time-study estimate on the synthetic build
stations:
- id: sta:iqc-1
  name: Incoming inspection
  type: iqc
  equipment:
  - value: caliper and pin gauges
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: light booth
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: battery OCV meter
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/IQC1
  isa95_work_center: EC1-Cell/IQC1
  data_interface: none
- id: sta:a1
  name: Top-shell sub-assembly
  type: assembly
  equipment:
  - value: nest fixture for the top shell
    source: observed
    confidence: medium
    evidence: &id001
    - src:teardown-log
    - src:photos
  - value: dome sheet locator
    source: observed
    confidence: medium
    evidence: *id001
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/A1
  isa95_work_center: EC1-Cell/A1
  data_interface: none
- id: sta:a2
  name: Stick and PCBA to bottom shell
  type: assembly
  equipment:
  - value: temperature-controlled soldering iron, 350 C
    source: observed
    confidence: medium
    evidence: *id001
  - value: fume extractor
    source: observed
    confidence: medium
    evidence: *id001
  - value: PCBA nest
    source: observed
    confidence: medium
    evidence: *id001
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/A2
  isa95_work_center: EC1-Cell/A2
  data_interface: none
- id: sta:a3
  name: Battery and haptic
  type: assembly
  equipment:
  - value: PSA liner peeler
    source: observed
    confidence: medium
    evidence: *id001
  - value: battery press, 20 N
    source: observed
    confidence: medium
    evidence: *id001
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/A3
  isa95_work_center: EC1-Cell/A3
  data_interface: none
- id: sta:a4
  name: Close and screw
  type: assembly
  equipment:
  - value: closing fixture
    source: observed
    confidence: medium
    evidence: *id001
  - value: electric torque driver, 0.18 N·m, with count check
    source: observed
    confidence: medium
    evidence: *id001
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/A4
  isa95_work_center: EC1-Cell/A4
  data_interface: none
  device_references:
  - device:
      value: electric torque driver with count check
      source: observed
      confidence: medium
      evidence:
      - src:teardown-log
    spec: mhs-preview
    measures:
    - name: final torque
      unit: N·m
    - name: angle
      unit: deg
    adjustable:
    - name: target torque
      unit: N·m
      min: 0.1
      max: 0.3
    safety_limits:
    - name: max torque
      limit: 0.3
      unit: N·m
- id: sta:t1
  name: Flash test image and RF test
  type: test
  equipment:
  - value: RF shield box
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: BLE tester
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: USB-C pogo fixture
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/T1
  isa95_work_center: EC1-Cell/T1
  data_interface: ipc-cfx
  device_references:
  - device:
      value: BLE tester in RF shield box
      source: inferred
      confidence: medium
    spec: mhs-preview
    measures:
    - name: TX power
      unit: dBm
    - name: RSSI
      unit: dBm
    adjustable:
    - name: channel
      min: 0
      max: 39
- id: sta:t2
  name: Functional test and stick calibration
  type: test
  equipment:
  - value: stick actuation robot
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: button press head
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: IMU turntable
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/T2
  isa95_work_center: EC1-Cell/T2
  data_interface: ipc-cfx
  device_references:
  - device:
      value: stick actuation robot
      source: inferred
      confidence: medium
    spec: mhs-preview
    measures:
    - name: stick position
      unit: '% of full scale'
    adjustable:
    - name: deflection angle
      unit: deg
      min: 0
      max: 28
    safety_limits:
    - name: max push force
      limit: 8
      unit: N
- id: sta:t3
  name: Cosmetic and gap check
  type: fqc
  equipment:
  - value: camera arch, 4 cameras
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: feeler gauges 0.10 / 0.30 mm
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/T3
  isa95_work_center: EC1-Cell/T3
  data_interface: ipc-cfx
- id: sta:t4
  name: Charge and battery test
  type: test
  equipment:
  - value: programmable USB-C load
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: 8-up charge rack
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/T4
  isa95_work_center: EC1-Cell/T4
  data_interface: ipc-cfx
- id: sta:p1
  name: Label and pack
  type: pack
  equipment:
  - value: label printer and applicator
    source: observed
    confidence: medium
    evidence: *id001
  - value: pack bench, scale
    source: observed
    confidence: medium
    evidence: *id001
  operators:
    value: 2
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/P1
  isa95_work_center: EC1-Cell/P1
  data_interface: none
- id: sta:oqc-1
  name: Outgoing audit
  type: oqc
  equipment:
  - value: full functional test set
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  - value: drop tester (sampled)
    source: inferred
    confidence: low
    note: implied by the design and the tests the product needs
  operators:
    value: 1
    source: inferred
    confidence: medium
  layout_usd_prim: /Line/OQC1
  isa95_work_center: EC1-Cell/OQC1
  data_interface: none
inspection_plans:
- id: insp:shell-iqc
  station: sta:iqc-1
  stage: iqc
  item: part:top-shell
  characteristic: Length, width and stick hole diameter; cosmetic grade A
  method:
    value: caliper and pin gauge; light booth
    source: inferred
    confidence: medium
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 1.0
    lot_size_range:
    - 1201
    - 3200
    sample_size: 125
    basis:
      value: general inspection level II, normal inspection
      source: inferred
      confidence: medium
- id: insp:stick-iqc
  station: sta:iqc-1
  stage: iqc
  item: part:stick-module
  characteristic: Centre return and full travel resistance
  method:
    value: fixture with ohmmeter
    source: inferred
    confidence: medium
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 0.65
    lot_size_range:
    - 1201
    - 3200
    sample_size: 125
    basis:
      value: general inspection level II, normal inspection
      source: inferred
      confidence: medium
- id: insp:cell-iqc
  station: sta:iqc-1
  stage: iqc
  item: part:battery
  characteristic: Open-circuit voltage 3.75 to 3.90 V; thickness at most 6.1 mm
  method:
    value: OCV meter and caliper
    source: inferred
    confidence: medium
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 0.4
    lot_size_range:
    - 1201
    - 3200
    sample_size: 125
    basis:
      value: general inspection level II, normal inspection
      source: inferred
      confidence: medium
- id: insp:screw-audit
  station: sta:a4
  stage: ipqc
  item: op:screw
  characteristic: Breakaway torque 0.16 to 0.22 N·m
  method:
    value: torque audit gauge, 5 units per hour
    source: inferred
    confidence: medium
  sampling:
    standard: other
    sample_size: 5
- id: insp:cosmetic-100
  station: sta:t3
  stage: fqc
  item: asm:ec-1
  characteristic: No scratch over 0.3 mm in zone A; shoulder gap 0.10 to 0.30 mm
  method:
    value: camera arch and feeler gauge
    source: inferred
    confidence: medium
  sampling:
    standard: 100%
- id: insp:oqc
  station: sta:oqc-1
  stage: oqc
  item: asm:packed
  characteristic: Full functional, pack contents, label, drop 1.2 m on 1 unit per lot
  method:
    value: full test set
    source: inferred
    confidence: medium
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 0.65
    lot_size_range:
    - 501
    - 1200
    sample_size: 80
    basis:
      value: general inspection level II, normal inspection
      source: inferred
      confidence: medium
tests:
- id: test:flash-ok
  station: sta:t1
  name: Test image flashed and verified
  measures: image checksum
- id: test:rf-power
  station: sta:t1
  name: Radiated output power
  measures: TX power at 2440 MHz
  lower:
    value: -6.0
    unit: dBm
    source: inferred
    confidence: medium
  upper:
    value: 4.0
    unit: dBm
    source: inferred
    confidence: medium
- id: test:rf-rssi
  station: sta:t1
  name: Receive sensitivity
  measures: RSSI from reference tag at 1 m
  lower:
    value: -70.0
    unit: dBm
    source: inferred
    confidence: medium
- id: test:stick-centre
  station: sta:t2
  name: Stick centre at rest, after calibration
  measures: centre offset
  upper:
    value: 1.0
    unit: '% of full scale'
    source: inferred
    confidence: medium
- id: test:stick-range
  station: sta:t2
  name: Stick range, each axis
  measures: full-scale reach
  lower:
    value: 96.0
    unit: '% of full scale'
    source: inferred
    confidence: medium
- id: test:button-force
  station: sta:t2
  name: Face button actuation force
  measures: force at contact
  lower:
    value: 150.0
    unit: gf
    source: inferred
    confidence: medium
  upper:
    value: 210.0
    unit: gf
    source: inferred
    confidence: medium
- id: test:imu-bias
  station: sta:t2
  name: Gyro zero-rate bias
  measures: bias, each axis
  upper:
    value: 2.0
    unit: deg/s
    source: inferred
    confidence: medium
- id: test:haptic-current
  station: sta:t2
  name: LRA drive current
  measures: RMS current at 170 Hz
  lower:
    value: 40.0
    unit: mA
    source: inferred
    confidence: medium
  upper:
    value: 90.0
    unit: mA
    source: inferred
    confidence: medium
- id: test:charge-current
  station: sta:t4
  name: Charge current at 5 V
  measures: input current
  lower:
    value: 280.0
    unit: mA
    source: inferred
    confidence: medium
  upper:
    value: 360.0
    unit: mA
    source: inferred
    confidence: medium
- id: test:cell-voltage
  station: sta:t4
  name: Cell voltage after 20 s charge
  measures: cell voltage
  lower:
    value: 3.7
    unit: V
    source: inferred
    confidence: medium
  upper:
    value: 4.05
    unit: V
    source: inferred
    confidence: medium
- id: test:shoulder-gap
  station: sta:t3
  name: Gap at shoulder buttons
  measures: feeler gauge
  lower:
    value: 0.1
    unit: mm
    source: inferred
    confidence: medium
  upper:
    value: 0.3
    unit: mm
    source: inferred
    confidence: medium
pfmea:
- id: fm:stick-flux
  operation: op:stick-solder
  failure_mode: Flux residue wicks into stick potentiometer
  effect: Stick drift in the field
  cause: Too much flux, iron dwell over 3 s
  severity: 7
  occurrence: 5
  detection: 7
  evidence:
  - src:repair-guide
  - src:reviews
- id: fm:stick-cold-joint
  operation: op:stick-solder
  failure_mode: Cold or cracked solder joint on stick pins
  effect: Intermittent stick axis
  cause: Iron temperature or dwell too low
  severity: 7
  occurrence: 3
  detection: 4
  evidence:
  - src:ct-run-1
- id: fm:pcba-boss-crack
  operation: op:pcba-place
  failure_mode: Board pressed onto its ledges cracks a support rib
  effect: Loose PCBA, rattle
  cause: Press force not controlled
  severity: 5
  occurrence: 2
  detection: 6
  evidence:
  - src:teardown-log
- id: fm:cell-misplace
  operation: op:battery-adhere
  failure_mode: Battery placed off-pocket
  effect: Pinched cell at close, swelling risk
  cause: No locating feature for the cell
  severity: 9
  occurrence: 2
  detection: 5
  evidence:
  - src:ct-run-1
- id: fm:haptic-reversed
  operation: op:haptic-place
  failure_mode: LRA connector mated off by one pin
  effect: No haptics
  cause: Unkeyed 2-pin connector
  severity: 5
  occurrence: 2
  detection: 3
  evidence:
  - src:teardown-log
- id: fm:battery-unseat
  operation: op:battery-mate
  failure_mode: Battery connector half-seated
  effect: Dead unit after drop
  cause: No seat check, tight z-height under the top shell
  severity: 8
  occurrence: 4
  detection: 6
  evidence:
  - src:ct-run-1
  - src:reviews
- id: fm:pinched-wire
  operation: op:close
  failure_mode: Battery wire pinched between shells
  effect: Short, field return, safety
  cause: Wire routed over the boss
  severity: 9
  occurrence: 2
  detection: 5
  evidence:
  - src:ct-run-1
- id: fm:screw-strip
  operation: op:screw
  failure_mode: Screw strips the boss
  effect: Loose shell, gap
  cause: Torque too high or cross-threaded
  severity: 5
  occurrence: 3
  detection: 3
  evidence:
  - src:teardown-log
- id: fm:rf-low
  operation: op:flash
  failure_mode: Low radiated power
  effect: Short range in the field
  cause: LRA placed against the antenna keep-out
  severity: 6
  occurrence: 3
  detection: 2
  evidence:
  - src:eol-sample
- id: fm:stick-cal-fail
  operation: op:stick-cal
  failure_mode: Calibration out of range
  effect: Rework or scrap
  cause: Stick module centre offset beyond 4%
  severity: 4
  occurrence: 4
  detection: 2
  evidence:
  - src:eol-sample
- id: fm:gap-high
  operation: op:cosmetic
  failure_mode: Shoulder gap over 0.30 mm
  effect: Cosmetic complaint, dust ingress
  cause: Shell warp at the shoulder wall
  severity: 4
  occurrence: 5
  detection: 4
  evidence:
  - src:caliper-run-1
  - src:reviews
- id: fm:wrong-label
  operation: op:label
  failure_mode: Label serial does not match the unit
  effect: Traceability lost
  cause: Label printed ahead of unit
  severity: 4
  occurrence: 2
  detection: 3
  evidence:
  - src:teardown-log
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.0
      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
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
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.
ext:
  battery:
    cells:
    - part: part:battery
      chemistry:
        value: Li-ion polymer
        source: observed
        confidence: high
        evidence:
        - src:markings
      form: pouch
      nominal_voltage_v:
        value: 3.7
        unit: V
        source: observed
        confidence: high
        evidence:
        - src:markings
      capacity_mah:
        value: 600
        unit: mAh
        source: observed
        confidence: high
        evidence:
        - src:markings
      protection_circuit:
        value: single-cell protection board on the tab
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
  controller:
    inputs:
    - id: in:stick-l
      kind: stick
      part: part:stick-module
      sensing:
        value: potentiometric, two axes
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
        - src:ct-run-1
    - id: in:btn-a
      kind: button
      part: part:button-cap
      sensing:
        value: carbon pill on silicone dome
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
      actuation_force_gf:
        value: 184.0
        unit: gf
        source: measured
        confidence: medium
        evidence:
        - src:eol-sample
    - id: in:btn-b
      kind: button
      part: part:button-cap
      sensing:
        value: carbon pill on silicone dome
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
      actuation_force_gf:
        value: 179.0
        unit: gf
        source: measured
        confidence: medium
        evidence:
        - src:eol-sample
    - id: in:btn-x
      kind: button
      part: part:button-cap
      sensing:
        value: carbon pill on silicone dome
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
      actuation_force_gf:
        value: 189.0
        unit: gf
        source: measured
        confidence: medium
        evidence:
        - src:eol-sample
    - id: in:btn-y
      kind: button
      part: part:button-cap
      sensing:
        value: carbon pill on silicone dome
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
      actuation_force_gf:
        value: 177.0
        unit: gf
        source: measured
        confidence: medium
        evidence:
        - src:eol-sample
    - id: in:shoulder-l
      kind: button
      part: part:shoulder-button
      sensing:
        value: tact switch on the PCBA
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
    - id: in:shoulder-r
      kind: button
      part: part:shoulder-button
      sensing:
        value: tact switch on the PCBA
        source: observed
        confidence: high
        evidence:
        - src:teardown-log
    - id: in:gyro
      kind: gyro
      part: part:imu
      sensing:
        value: 6-axis MEMS
        source: observed
        confidence: high
        evidence:
        - src:markings
    haptics:
      value: 10 mm LRA, 170 Hz
      source: observed
      confidence: high
      evidence:
      - src:teardown-log