benikigai/plus-onePublic

Plus One

opd.yaml · 68 KB · commit #5 · Nov 2, 2026

SHA-256 6972923c7c0f570cecf2e0a4deb24b6e2e724aef11921d52af12cb237d4b8eaa

# Plus One: N+1 Labs' open agent puck. Prototype in design; every value is a design target.
# Generated by tools/make_plus_one_data.py.
opd_version: 0.5.0
extensions:
- id: battery
  version: 0.1.0
card:
  product: Plus One
  maker: N+1 Labs
  maker_endorsed: true
  synthetic: true
  category:
  - agent-device
  - consumer-electronics
  - battery-powered
  - wireless
  - open-hardware
  revision_examined: Plus One Core, generation one, concept rev B (decision 20; prototype in design, nothing built)
  units_examined: 0
  license: CC-BY-4.0
  base_opd: null
  base_relation: null
  trust_level: claimed
  visibility: public
  product_page: https://nplusonelabs.com/plus-one/
  metrics:
    observed_share:
      value: 0.0
      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:design-brief
  kind: maker
  ref: docs/design-brief.md
  sha256: 6f0dcfc631d99f9ef4cd184eec82128305918bf4bb15dcc02946ada9b75cc188
- id: src:cad
  kind: maker
  ref: parts/geometry.json
  sha256: e64ba6a3234de983f018b444d3f5e6eab873940056cbd14a2ed3a9912ca46c7e
- id: src:tracker-puck-spec
  kind: maker
  ref: nplus1labs/factory docs/prototype/spec-tracker-puck.md (the line and operation models this copies)
- id: src:firmware-research
  kind: maker
  ref: nplus1labs/research docs/research/2026-11-firmware/synthesis.md
- id: src:ec-1-lessons
  kind: maker
  ref: openproduct-co/opd-spec examples/ec-1.opd/issues (synthetic lessons this design takes on)
- id: src:module-datasheet
  kind: maker
  ref: Espressif ESP32-S3-WROOM-1 datasheet (public)
- id: src:factory-engine
  kind: maker
  ref: 'nplus1labs/factory at 9bc6753: engine/specs/plus_one_build.yaml and engine/examples/plus-one-demand (simulated from
    assumed values; uncalibrated)'
- id: src:layout-study
  kind: maker
  ref: line/layouts/README.md
  sha256: f41d3c6a6a559485111c50009d4cf913e2bcc092bef7e0f6be3973cd15fdddb7
- id: src:decisions
  kind: maker
  ref: 'nplus1labs/research docs/decisions.md: decision 24 (a MadeCell base) and decision 25 (the layout follows volume)'
- id: src:dimension-direction
  kind: maker
  ref: 'openproduct-co/opd-spec branch feat/plus-one-parametric-cad: examples/plus-one.opd/docs/dimension-direction-2026-11-01.md
    (approved exterior direction; CAD rework open)'
parts:
- id: part:top-shell
  name: Top shell
  material:
    value: PC/ABS, graphite, soft-touch texture
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: injection-moulded, 1-cavity tool
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 3.83
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: from CAD volume at 1.15 g/cm3
  geometry:
    step: parts/top-shell.step
    usd_prim: /Product/TopShell
    fidelity: reduced
- id: part:ring-diffuser
  name: Light-ring diffuser
  material:
    value: PC, light-diffusing grade, lime tint
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: injection-moulded, heat-staked into the top shell
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 0.69
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: from CAD volume at 1.20 g/cm3
  geometry:
    step: parts/ring-diffuser.step
    usd_prim: /Product/RingDiffuser
    fidelity: reduced
- id: part:plus-button
  name: Plus button
  material:
    value: PC/ABS cap, pad-printed white plus
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: injection-moulded, pad-printed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 1.52
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: from CAD volume at 1.15 g/cm3
  geometry:
    step: parts/plus-button.step
    usd_prim: /Product/PlusButton
    fidelity: reduced
- id: part:mic-gasket
  name: Mic gasket
  material:
    value: silicone foam, acoustic grade
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: die-cut, adhesive-backed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 0.01
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/mic-gasket.step
    usd_prim: /Product/MicGasket_1
    fidelity: envelope
- id: part:main-pcba
  name: Main board (PCBA)
  material:
    value: FR-4, 4 layers, 0.8 mm, ENIG, round 52 mm
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought assembled from the EMS, tested before shipping
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 6.0
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/main-pcba.step
    usd_prim: /Product/MainPCBA
    fidelity: envelope
- id: part:speaker
  name: Speaker, 12 mm thin
  material:
    value: micro speaker, 12 mm, 3 mm tall, 8 ohm, 0.5 W
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought assembled
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 1.2
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/speaker.step
    usd_prim: /Product/Speaker
    fidelity: envelope
- id: part:haptic-motor
  name: Haptic motor, 7 mm coin
  material:
    value: coin LRA, 7 mm, 2.5 mm tall
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought assembled, adhesive-backed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 0.6
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/haptic-motor.step
    usd_prim: /Product/HapticMotor
    fidelity: envelope
- id: part:battery
  name: Li-ion cell with protection
  material:
    value: lithium-ion polymer, 28 x 16 x 3.5 mm, with protection board and lead; sits beside the module under the board
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought assembled with a connector on the lead
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 3.5
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/battery.step
    usd_prim: /Product/Battery
    fidelity: envelope
- id: part:battery-foam
  name: Battery foam tape
  material:
    value: PU foam, 0.1 mm, double-sided acrylic
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: die-cut
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 0.1
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/battery-foam.step
    usd_prim: /Product/BatteryFoam
    fidelity: envelope
- id: part:base
  name: 'Base: the interface'
  material:
    value: PC/ABS, graphite
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: injection-moulded with three twist-lock lugs inside the rim, an alignment key and pad seats; snaps to the top shell
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 3.51
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: from CAD volume at 1.15 g/cm3
  geometry:
    step: parts/base.step
    usd_prim: /Product/Base
    fidelity: reduced
- id: part:magnet-ring
  name: Magnet ring
  material:
    value: NdFeB arc segments in a ring sized for magnetic phone mounts and chargers; exact size and polarity still to be
      checked against the WPC spec
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought as a ring assembly; bonded into the base pocket
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 4.46
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: from CAD volume at 7.5 g/cm3
  geometry:
    step: parts/magnet-ring.step
    usd_prim: /Product/MagnetRing
    fidelity: envelope
- id: part:qi-coil
  name: Wireless charging coil and ferrite
  material:
    value: copper coil, 37 mm, on a ferrite sheet; sits inside the magnet ring
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought; meets the board through two spring contacts
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 2.0
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/qi-coil.step
    usd_prim: /Product/QiCoil
    fidelity: envelope
- id: part:pogo-pad
  name: Pogo pad
  material:
    value: brass, gold-plated, 2.4 mm
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: insert-moulded into the base
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 0.01
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
  geometry:
    step: parts/pogo-pad.step
    usd_prim: /Product/PogoPad_1
    fidelity: envelope
- id: part:board-screw
  name: Board screw, 2 mm thread-forming for plastics
  material:
    value: steel, black zinc
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 0.1
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: from CAD volume at 7.85 g/cm3
  geometry:
    step: parts/board-screw.step
    usd_prim: /Product/BoardScrew_1
    fidelity: reduced
- id: part:esp32-s3-module
  name: ESP32-S3 module, 16 MB flash, 8 MB PSRAM
  material:
    value: ESP32-S3-WROOM-1 class module with PCB antenna, shielded
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:module-datasheet
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:mems-mic
  name: MEMS microphone, bottom port
  material:
    value: digital PDM MEMS mic
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:audio-amp
  name: Class-D amp with a capped output
  material:
    value: mono I2S class-D amp; gain and current limited in hardware
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:haptic-driver
  name: Haptic driver
  material:
    value: LRA driver IC
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:imu
  name: 6-axis motion sensor
  material:
    value: MEMS accelerometer and gyroscope
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:fuel-gauge
  name: Fuel gauge
  material:
    value: single-cell fuel gauge IC
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:charger
  name: Charger with power path
  material:
    value: single-cell Li-ion charger IC
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:wireless-receiver
  name: Wireless charging receiver
  material:
    value: receiver IC; charges the cell, never transmits
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:ring-led
  name: RGB LED, addressable
  material:
    value: 2 x 2 mm addressable RGB LED
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:tact-switch
  name: Tactile switch under the plus
  material:
    value: 6 x 6 mm tactile switch
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:usb-c
  name: USB-C receptacle, mid-mount
  material:
    value: 16-pin USB-C receptacle
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:boot-button
  name: BOOT button
  material:
    value: side-push tactile switch
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:power-switch
  name: Hardware power-off switch
  material:
    value: slide switch in series with the cell
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:qwiic-connector
  name: Qwiic connector
  material:
    value: 4-pin 1.0 mm JST SH
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:battery-connector
  name: Battery connector
  material:
    value: 2-pin 1.25 mm wire-to-board
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:pcb
  name: Bare board, 4 layers
  material:
    value: FR-4, Tg 150, round 53 mm
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:passives
  name: Passives
  material:
    value: MLCC, resistors, ferrites; count not fixed yet
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: purchased-component, placed by the EMS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:light-sensor
  name: Ambient light sensor (Plus One+)
  material:
    value: digital ambient light sensor
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: Plus One+ only; footprint empty on Core
  process:
    value: purchased-component
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:nfc-tag
  name: NFC tag (Plus One+)
  material:
    value: NFC Forum type 2 tag IC with PCB antenna
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: Plus One+ only; footprint empty on Core
  process:
    value: purchased-component
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:debug-jumper
  name: Power test jumper and debug pads (Plus One+)
  material:
    value: 0 ohm jumper and test pads
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: Plus One+ only; footprint empty on Core
  process:
    value: purchased-component
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
- id: part:retail-box
  name: Retail box
  material:
    value: SBS board, printed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 30.0
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
- id: part:pulp-tray
  name: Pulp tray
  material:
    value: moulded pulp
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 8.0
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
- id: part:usb-cable
  name: USB-C cable, 0.5 m
  material:
    value: TPE jacket, copper
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 15.0
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
- id: part:quick-card
  name: Quick start card with the unit QR
  material:
    value: coated card, printed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  process:
    value: bought
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design choice
  mass_g:
    value: 3.0
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: design target
assemblies:
- id: asm:top-sub
  name: Top shell with diffuser, plus button and mic gaskets
- id: asm:core
  name: Top shell sub-assembly with board, speaker, haptic and battery
- id: asm:base
  name: Base with the magnet ring, charging coil and pads
- id: asm:plus-one
  name: Plus One, sealed, nothing attached
- id: asm:packed
  name: Packed unit with cable and card; no back ships
bom:
- item: asm:packed
  parent: null
  qty: 1
- item: asm:plus-one
  parent: asm:packed
  qty: 1
- item: part:retail-box
  parent: asm:packed
  qty: 1
  supplier: sup:pack
- item: part:pulp-tray
  parent: asm:packed
  qty: 1
  supplier: sup:pack
- item: part:usb-cable
  parent: asm:packed
  qty: 1
  supplier: sup:pack
- item: part:quick-card
  parent: asm:packed
  qty: 1
  supplier: sup:pack
- item: asm:core
  parent: asm:plus-one
  qty: 1
- item: asm:base
  parent: asm:plus-one
  qty: 1
- item: part:base
  parent: asm:base
  qty: 1
  supplier: sup:shell-moulder
- item: part:magnet-ring
  parent: asm:base
  qty: 1
  supplier: sup:magnet-vendor
- item: part:qi-coil
  parent: asm:base
  qty: 1
  supplier: sup:coil-vendor
- item: part:pogo-pad
  parent: asm:base
  qty: 5
  supplier: sup:shell-moulder
- item: asm:top-sub
  parent: asm:core
  qty: 1
- item: part:main-pcba
  parent: asm:core
  qty: 1
  supplier: sup:ems
- item: part:board-screw
  parent: asm:core
  qty: 3
  supplier: sup:fastener
- item: part:speaker
  parent: asm:core
  qty: 1
  supplier: sup:audio-vendor
- item: part:haptic-motor
  parent: asm:core
  qty: 1
  supplier: sup:haptic-vendor
- item: part:battery
  parent: asm:core
  qty: 1
  supplier: sup:cell-maker
- item: part:battery-foam
  parent: asm:core
  qty: 1
  supplier: sup:converter
- item: part:top-shell
  parent: asm:top-sub
  qty: 1
  supplier: sup:shell-moulder
- item: part:ring-diffuser
  parent: asm:top-sub
  qty: 1
  supplier: sup:shell-moulder
- item: part:plus-button
  parent: asm:top-sub
  qty: 1
  supplier: sup:shell-moulder
- item: part:mic-gasket
  parent: asm:top-sub
  qty: 2
  supplier: sup:converter
- item: part:esp32-s3-module
  parent: part:main-pcba
  qty: 1
  supplier: sup:module-vendor
- item: part:mems-mic
  parent: part:main-pcba
  qty: 2
  supplier: sup:chip-distributor
- item: part:audio-amp
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:haptic-driver
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:imu
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:fuel-gauge
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:charger
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:wireless-receiver
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:ring-led
  parent: part:main-pcba
  qty: 12
  supplier: sup:chip-distributor
- item: part:tact-switch
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:usb-c
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:boot-button
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:power-switch
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:qwiic-connector
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:battery-connector
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
- item: part:pcb
  parent: part:main-pcba
  qty: 1
  supplier: sup:ems
- item: part:passives
  parent: part:main-pcba
  qty: 1
  supplier: sup:chip-distributor
suppliers:
- id: sup:shell-moulder
  name:
    value: 'To be sourced: shell moulder'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:ems
  name:
    value: 'To be sourced: EMS for the main board'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:module-vendor
  name:
    value: Espressif or an authorised distributor
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:chip-distributor
  name:
    value: 'To be sourced: component distributor'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:audio-vendor
  name:
    value: 'To be sourced: micro speaker maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:haptic-vendor
  name:
    value: 'To be sourced: LRA maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:cell-maker
  name:
    value: 'To be sourced: Li-ion cell maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:converter
  name:
    value: 'To be sourced: die-cut converter'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:magnet-vendor
  name:
    value: 'To be sourced: magnet maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:fastener
  name:
    value: 'To be sourced: fastener maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:coil-vendor
  name:
    value: 'To be sourced: wireless charging coil maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
- id: sup:pack
  name:
    value: 'To be sourced: packaging maker'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: not sourced yet
operations:
- id: op:diffuser-place
  name: Seat the light-ring diffuser in the top shell
  type: place
  inputs:
  - part:top-shell
  - part:ring-diffuser
  output: asm:top-sub
  station: sta:s1
  method:
    value: by hand onto six stake posts
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: ring nest
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 5
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:diffuser-stake
  name: Heat-stake the diffuser
  type: heat-stake
  inputs:
  - asm:top-sub
  output: asm:top-sub
  station: sta:s1
  method:
    value: six-post hot-air cold-stake, timed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: heat staker
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 9
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:button-place
  name: Fit the plus button
  type: place
  inputs:
  - asm:top-sub
  - part:plus-button
  output: asm:top-sub
  station: sta:s1
  method:
    value: by hand, flange under the skin
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: ring nest
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 4
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:gasket-place
  name: Place the two mic gaskets over the ports
  type: place
  inputs:
  - asm:top-sub
  - part:mic-gasket
  output: asm:top-sub
  station: sta:s1
  method:
    value: jig-located, liner peeled
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: gasket jig
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:board-place
  name: Place the main board in the top shell
  type: place
  inputs:
  - asm:top-sub
  - part:main-pcba
  output: asm:core
  station: sta:s2
  method:
    value: by hand onto three bosses, LEDs to the ring
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: top-shell nest
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 10
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:board-screw
  name: Drive three board screws
  type: screw
  inputs:
  - asm:core
  - part:board-screw
  output: asm:core
  station: sta:s3
  method:
    value: thread-forming, torque to angle window
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: top-shell nest
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 15
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:adhesive-dispense
  name: Dispense adhesive for the speaker and haptic
  type: adhesive
  inputs:
  - asm:core
  output: asm:core
  station: sta:s4
  method:
    value: two beads, camera-checked
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: dispense nest
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 8
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:speaker-place
  name: Place the speaker
  type: place
  inputs:
  - asm:core
  - part:speaker
  output: asm:core
  station: sta:s4
  method:
    value: jig-located, 5 s hold
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: placement jig
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 5
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:haptic-place
  name: Place the haptic motor
  type: place
  inputs:
  - asm:core
  - part:haptic-motor
  output: asm:core
  station: sta:s4
  method:
    value: jig-located
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: placement jig
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 5
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:battery-mate
  name: Mate the battery connector
  type: connector-mate
  inputs:
  - asm:core
  - part:battery
  output: asm:core
  station: sta:s5
  method:
    value: seat, then a 3 N tug check
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: connector seating tool
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 8
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:battery-place
  name: Place the battery on foam tape
  type: place
  inputs:
  - asm:core
  - part:battery-foam
  output: asm:core
  station: sta:s5
  method:
    value: locator, lead routed in its channel
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: battery locator
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:ring-bond
  name: Bond the magnet ring into the base
  type: adhesive
  inputs:
  - part:base
  - part:magnet-ring
  output: asm:base
  station: sta:s6
  method:
    value: keyed fixture, polarity checked before the press
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: ring bonding fixture
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 8
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:coil-place
  name: Place the charging coil and ferrite inside the ring
  type: place
  inputs:
  - asm:base
  - part:qi-coil
  output: asm:base
  station: sta:s6
  method:
    value: keyed to the base, adhesive-backed
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: ring bonding fixture
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:pad-press
  name: Press the five pogo pads into the base
  type: place
  inputs:
  - asm:base
  - part:pogo-pad
  output: asm:base
  station: sta:s6
  method:
    value: press to a hard stop
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: pad press
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:base-close
  name: Close the base onto the core
  type: snap-fit
  inputs:
  - asm:core
  - asm:base
  output: asm:plus-one
  station: sta:s6
  method:
    value: three snaps, force-monitored press
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: closing press
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 8
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:polarity-check
  name: Check ring polarity, pad height and the key
  type: inspect
  inputs:
  - asm:plus-one
  output: asm:plus-one
  station: sta:s6
  method:
    value: polarity gauge and height gauge
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: pad press
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 4
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:flash-provision
  name: Flash firmware and provision the unit ID
  type: flash
  inputs:
  - asm:plus-one
  output: asm:plus-one
  station: sta:s7
  method:
    value: over USB-C; unit ID written to eFuse
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: USB-C pogo fixture
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 24
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:mic-cal
  name: Calibrate the two mics
  type: test
  inputs:
  - asm:plus-one
  output: asm:plus-one
  station: sta:s7
  method:
    value: reference tone in an acoustic box
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: acoustic box
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 10
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:imu-cal
  name: Calibrate the motion sensor
  type: test
  inputs:
  - asm:plus-one
  output: asm:plus-one
  station: sta:s7
  method:
    value: six-face tilt
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: tilt table
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:functional-test
  name: 'Functional test: button, touch, ring, haptic, IMU, wired and wireless charge, audio loopback, RF check'
  type: test
  inputs:
  - asm:plus-one
  output: asm:plus-one
  station: sta:s8
  method:
    value: scripted test over USB; RF in a shield box; a reference wireless charger
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: functional tester
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 40
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:laser-mark
  name: Laser-mark the unit QR on the base rim
  type: label
  inputs:
  - asm:plus-one
  output: asm:plus-one
  station: sta:s8
  method:
    value: fibre laser, then a read-back
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: laser marker
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 6
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
- id: op:pack
  name: Pack with the cable and card; no back ships
  type: pack
  inputs:
  - asm:plus-one
  - part:retail-box
  - part:pulp-tray
  - part:usb-cable
  - part:quick-card
  output: asm:packed
  station: sta:s8
  method:
    value: by hand
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  fixture:
    value: pack bench
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  cycle_time_s:
    value: 10
    unit: s
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    - src:tracker-puck-spec
    note: target from time-study estimates of similar operations
stations:
- id: sta:s1
  name: Top shell sub-assembly
  type: assembly
  equipment:
  - value: hot-air cold staker with six nozzles, a punch-travel monitor and a ring nest
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: mic gasket placement jig
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S1
  isa95_work_center: PlusOne-Line/S1
  data_interface: unknown
- id: sta:s2
  name: Place main board
  type: assembly
  equipment:
  - value: top-shell nest, face down
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S2
  isa95_work_center: PlusOne-Line/S2
  data_interface: unknown
- id: sta:s3
  name: Drive board screws
  type: assembly
  equipment:
  - value: electric screwdriver on a torque arm with torque and angle monitoring
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: screw presenter
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S3
  isa95_work_center: PlusOne-Line/S3
  data_interface: unknown
- id: sta:s4
  name: Speaker and haptic
  type: assembly
  equipment:
  - value: bench dispenser with a bead camera
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: placement jig
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S4
  isa95_work_center: PlusOne-Line/S4
  data_interface: unknown
- id: sta:s5
  name: Battery
  type: assembly
  equipment:
  - value: connector seating tool with a tug check
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: battery locator
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S5
  isa95_work_center: PlusOne-Line/S5
  data_interface: unknown
- id: sta:s6
  name: Close the base
  type: assembly
  equipment:
  - value: ring bonding fixture with a polarity gauge
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: pad press with a height gauge
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: closing press with force monitoring
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S6
  isa95_work_center: PlusOne-Line/S6
  data_interface: unknown
- id: sta:s7
  name: Flash, provision, calibrate
  type: test
  equipment:
  - value: USB-C pogo fixture
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: flashing PC
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: acoustic box for mic calibration (94 dB SPL at 1 kHz)
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: six-face tilt table for IMU calibration
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S7
  isa95_work_center: PlusOne-Line/S7
  data_interface: unknown
- id: sta:s8
  name: Functional test, mark, pack
  type: test
  equipment:
  - value: functional tester with an RF shield box
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: reference wireless charger
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: laser marker
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  - value: pack bench
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  operators:
    value: 1
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  layout_usd_prim: /Line/S8
  isa95_work_center: PlusOne-Line/S8
  data_interface: unknown
inspection_plans:
- id: insp:shell-iqc
  station: sta:s1
  stage: iqc
  item: part:top-shell
  characteristic: Diameter, ring slot width, cosmetic grade A
  method:
    value: caliper, pin gauge, light booth
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 1.0
    lot_size_range:
    - 1201
    - 3200
    sample_size: 125
    basis:
      value: proposed plan; set at the pilot build
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
- id: insp:pcba-iqc
  station: sta:s2
  stage: iqc
  item: part:main-pcba
  characteristic: EMS test record present; boots and enumerates over USB
  method:
    value: sample power-on
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: S-3
    aql: 0.65
    lot_size_range:
    - 1201
    - 3200
    sample_size: 32
    basis:
      value: proposed plan; set at the pilot build
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
- id: insp:cell-iqc
  station: sta:s5
  stage: iqc
  item: part:battery
  characteristic: Open-circuit voltage 3.7 to 3.9 V; no swelling
  method:
    value: OCV meter, thickness gauge
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 0.4
    lot_size_range:
    - 501
    - 1200
    sample_size: 80
    basis:
      value: proposed plan; set at the pilot build
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
- id: insp:stake-ipqc
  station: sta:s1
  stage: ipqc
  item: part:ring-diffuser
  characteristic: Stake pull-off force
  method:
    value: push-out test, first five each shift
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  sampling:
    standard: other
    sample_size: 5
    basis:
      value: proposed plan; set at the pilot build
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
- id: insp:oqc-audit
  station: sta:s8
  stage: oqc
  item: asm:packed
  characteristic: Packed unit complete; boots; QR reads
  method:
    value: audit
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed
  sampling:
    standard: ANSI/ASQ Z1.4
    inspection_level: II
    aql: 0.65
    lot_size_range:
    - 1201
    - 3200
    sample_size: 125
    basis:
      value: proposed plan; set at the pilot build
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
tests:
- id: test:flash-verify
  station: sta:s7
  name: Firmware image flashed and verified
  measures: image hash
- id: test:unit-id
  station: sta:s7
  name: Unit ID provisioned once
  measures: eFuse read-back
- id: test:mic-sensitivity
  station: sta:s7
  name: Mic sensitivity after calibration
  measures: dBFS at 94 dB SPL, 1 kHz
  lower:
    value: -28
    unit: dBFS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
  upper:
    value: -24
    unit: dBFS
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:imu-bias
  station: sta:s7
  name: Motion sensor bias after calibration
  measures: accelerometer bias
  upper:
    value: 0.05
    unit: g
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:button
  station: sta:s8
  name: Plus button actuation
  measures: switch closes, debounced
- id: test:touch-ring
  station: sta:s8
  name: Touch ring delta
  measures: touch counts on a reference finger
  lower:
    value: 30
    unit: '%'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:ring-leds
  station: sta:s8
  name: Light ring colours
  measures: camera colour check per LED
- id: test:haptic
  station: sta:s8
  name: Haptic drive current
  measures: mA at rated drive
  lower:
    value: 40
    unit: mA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
  upper:
    value: 90
    unit: mA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:charge
  station: sta:s8
  name: Charge current over USB-C
  measures: mA from USB at 5 V
  lower:
    value: 100
    unit: mA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
  upper:
    value: 300
    unit: mA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:wireless-charge
  station: sta:s8
  name: Wireless charging
  measures: charge current on a reference magnetic charger
  lower:
    value: 60
    unit: mA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:audio-loopback
  station: sta:s8
  name: Audio loopback
  measures: speaker to mics, level and THD
  upper:
    value: 3
    unit: '%'
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:rf-check
  station: sta:s8
  name: Radio check
  measures: Wi-Fi and BLE RSSI against a golden radio in the shield box
  lower:
    value: -60
    unit: dBm
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:power-off
  station: sta:s8
  name: Hardware power-off current
  measures: cell current with the switch off
  upper:
    value: 1
    unit: uA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:pogo-limit
  station: sta:s8
  name: Pogo pad current limit
  measures: short-circuit current at the pads
  upper:
    value: 300
    unit: mA
    source: inferred
    confidence: low
    evidence:
    - src:design-brief
    note: proposed limit
- id: test:qr-read
  station: sta:s8
  name: QR reads back
  measures: scanner read
pfmea:
- id: fm:stake-weak
  operation: op:diffuser-stake
  failure_mode: Stake under-melted; diffuser loose
  effect: Ring rattles; light leaks at the seam
  cause: Stake time or temperature low
  severity: 5
  occurrence: 4
  detection: 4
  evidence:
  - src:tracker-puck-spec
- id: fm:screw-strip
  operation: op:board-screw
  failure_mode: Screw strips the boss
  effect: Board loose; button feel mushy
  cause: Torque high or pilot hole oversize
  severity: 6
  occurrence: 3
  detection: 3
  evidence:
  - src:tracker-puck-spec
- id: fm:adhesive-on-cone
  operation: op:adhesive-dispense
  failure_mode: Adhesive bead touches the speaker cone
  effect: Buzz or low output
  cause: Bead placement drift
  severity: 6
  occurrence: 3
  detection: 4
  evidence:
  - src:design-brief
- id: fm:battery-unseat
  operation: op:battery-mate
  failure_mode: Battery connector half-seated
  effect: Dead unit or resets after a drop
  cause: Mate force low; in the factory simulation a 2 N tug let half-seated plugs through, so the check is now 3 N
  severity: 8
  occurrence: 4
  detection: 3
  evidence:
  - src:ec-1-lessons
  - src:factory-engine
- id: fm:wire-pinch
  operation: op:base-close
  failure_mode: Battery lead pinched when the base closes
  effect: Short; heat in the worst case
  cause: Lead outside its channel
  severity: 9
  occurrence: 2
  detection: 4
  evidence:
  - src:ec-1-lessons
- id: fm:ring-polarity
  operation: op:ring-bond
  failure_mode: Magnet ring bonded flipped, or a segment missing
  effect: Won't hold on a magnetic mount or charger
  cause: Ring loaded upside down
  severity: 6
  occurrence: 3
  detection: 2
  evidence:
  - src:design-brief
- id: fm:coil-offset
  operation: op:coil-place
  failure_mode: Coil off-centre in the ring
  effect: Slow or no wireless charging
  cause: Coil not keyed to the base
  severity: 5
  occurrence: 3
  detection: 3
  evidence:
  - src:design-brief
- id: fm:pad-recessed
  operation: op:pad-press
  failure_mode: Pogo pad recessed
  effect: Dock or module doesn't connect
  cause: Pad not pressed to its stop
  severity: 5
  occurrence: 3
  detection: 2
  evidence:
  - src:design-brief
- id: fm:gasket-shift
  operation: op:gasket-place
  failure_mode: Mic gasket off its port
  effect: Low mic sensitivity; poor wake word
  cause: Gasket lifts with the liner
  severity: 6
  occurrence: 4
  detection: 3
  evidence:
  - src:design-brief
- id: fm:id-twice
  operation: op:flash-provision
  failure_mode: Unit ID provisioned twice or not at all
  effect: Twin and QR point at the wrong unit
  cause: Retry after a failed flash
  severity: 6
  occurrence: 2
  detection: 2
  evidence:
  - src:design-brief
- id: fm:rf-detune
  operation: op:functional-test
  failure_mode: Radio check passes a detuned antenna
  effect: Short range in the field
  cause: Module antenna near the ring LEDs or the cell
  severity: 6
  occurrence: 3
  detection: 5
  evidence:
  - src:ec-1-lessons
  - src:module-datasheet
- id: fm:qr-unreadable
  operation: op:laser-mark
  failure_mode: QR unreadable
  effect: Unit can't open its twin
  cause: Laser focus or power drift
  severity: 3
  occurrence: 3
  detection: 2
  evidence:
  - src:design-brief
ext:
  battery:
    cells:
    - part: part:battery
      chemistry:
        value: Li-ion polymer
        source: inferred
        confidence: low
        evidence:
        - src:design-brief
        note: design choice
      form: pouch
      nominal_voltage_v:
        value: 3.7
        unit: V
        source: inferred
        confidence: low
        evidence:
        - src:design-brief
        note: design choice
      capacity_mah:
        value: 150
        unit: mAh
        source: inferred
        confidence: low
        evidence:
        - src:design-brief
        note: design target for a 28 x 16 x 3.5 mm cell; no coin cell, the ESP32-S3's Wi-Fi draws far more than one can supply
      protection_circuit:
        value: single-cell protection board on the tab, the charger's limits and a hardware power-off switch. Charged by USB-C,
          a dock on the pads, or a magnetic wireless charger; a phone can't charge it
        source: inferred
        confidence: low
        evidence:
        - src:design-brief
        note: design choice
design_intent:
  targets:
  - characteristic: size
    where:
    - part:top-shell
    target:
      value: 55.4
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    upper:
      value: 55.4
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: must
    owner: industrial-design
    rationale: 'Approved exterior direction (2026-11-01): the diameter of a common magnetic phone charger, so the puck sits
      flush on one. Replaces the 57 mm concept. The CAD, the magnet ring, the lugs and plus-one-base@1 in this file are still
      sized for 57 mm and need rework'
  - characteristic: thickness
    where:
    - part:top-shell
    - part:base
    target:
      value: 12.0
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    upper:
      value: 12.0
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: must
    owner: industrial-design
    rationale: 'Approved exterior direction (2026-11-01): 12.0 mm at most, including the button dome and the base. Replaces
      9.5 mm. A 12 mm puck still needs a thinner cell than the stock one; the CAD in this file is still 9.5 mm'
  - characteristic: weight
    where:
    - part:base
    target:
      value: 28.0
      unit: g
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    upper:
      value: 32.0
      unit: g
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: should
    owner: product
    rationale: Light enough to hang on a phone or a bag
  - characteristic: button-travel
    where:
    - part:plus-button
    target:
      value: 0.3
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    lower:
      value: 0.2
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    upper:
      value: 0.4
      unit: mm
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: must
    owner: product
    rationale: Short, firm click you can find without looking
  - characteristic: other
    where:
    - part:magnet-ring
    target:
      value: 8.0
      unit: N
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    lower:
      value: 6.0
      unit: N
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: must
    owner: product
    rationale: Magnetic hold on a phone mount. It stays put when a phone in a car mount hits a bump
  - characteristic: other
    where:
    - part:base
    target:
      value: 30.0
      unit: N
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    lower:
      value: 30.0
      unit: N
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: must
    owner: mechanical
    rationale: Lug pull-out. The twist-lock lugs carry the load for clips, lanyards and bikes; the magnets only align
  - characteristic: other
    where:
    - part:pogo-pad
    target:
      value: 300.0
      unit: mA
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    upper:
      value: 300.0
      unit: mA
      source: inferred
      confidence: low
      evidence:
      - src:design-brief
      note: design target
    priority: must
    owner: electrical
    rationale: Pogo pad current limit. A shorted module trips safely
variants:
  objectives:
  - metric: throughput.cycle_time
    direction: min
  - metric: cost.cost_per_good_unit
    direction: min
  constraints:
  - takt 60 s (design target)
  - headcount at most 9
  - no new station type beyond the brief
  baseline:
    scores:
      throughput:
        cycle_time:
          value: 56
          unit: s
          origin: estimated
          engine: expert-estimate
          confidence: low
          note: slowest station from target cycle times; nothing built
        takt:
          value: 60
          unit: s
          origin: estimated
          engine: expert-estimate
          confidence: medium
          note: design target, about 480 units an 8-hour shift
        bottleneck_station: sta:s8
        headcount: 8
  candidates:
  - id: var:bench-cell
    name: Bench cell, for the first 100 builder units
    kind: staffing
    base: baseline
    description: 'Decision 25''s layout for the Q1 2027 bench builds. Three benches in a small U, no conveyor, at most three
      units in the cell. One technician carries each unit through: bench A does S1 to S4, bench B does S5 and S6, bench C
      does S7 and S8. 100 units in five build days. Layout: line/layouts/bench-cell.json.'
    changes:
    - action: merge
      target:
      - sta:s1
      - sta:s2
      - sta:s3
      - sta:s4
      description: bench A
    - action: merge
      target:
      - sta:s5
      - sta:s6
      description: bench B
    - action: merge
      target:
      - sta:s7
      - sta:s8
      description: bench C
    generated_by:
      method: agent
      engine: discrete-event
      run: nplus1labs/factory 9bc6753 engine/examples/plus-one-demand
      created: '2026-11-02'
    scores:
      throughput:
        takt:
          value: 1215.0
          unit: s
          origin: estimated
          engine: analytic
          confidence: medium
          note: 'set by the assumed volume: one 8-hour shift less breaks, 21 working days a month'
        uph:
          value: 16.9
          unit: good units/h
          origin: simulated
          engine: discrete-event
          confidence: low
          note: capacity, simulated from assumed values; uncalibrated; no unit built; the technician is the constraint, not
            a bench; about 17% busy at this volume
          runs: 2000
          evidence:
          - src:factory-engine
          - src:layout-study
        headcount: 1
  - id: var:u-cell
    name: U cell, for about 2,000 to 4,500 a month
    kind: staffing
    base: baseline
    description: 'Decision 25''s bridge between the bench builds and volume. The eight stations as benches in a U with a 2
      s hand pass. Two operators: one runs S1 to S6, the other runs S7 and S8. Layout: line/layouts/u-cell.json.'
    changes:
    - action: modify
      target:
      - sta:s1
      - sta:s2
      - sta:s3
      - sta:s4
      - sta:s5
      - sta:s6
      description: one operator walks S1 to S6
    - action: modify
      target:
      - sta:s7
      - sta:s8
      description: a second operator runs S7 and S8
    generated_by:
      method: agent
      engine: discrete-event
      run: nplus1labs/factory 9bc6753 engine/examples/plus-one-demand
      created: '2026-11-02'
    scores:
      throughput:
        takt:
          value: 255.15
          unit: s
          origin: estimated
          engine: analytic
          confidence: medium
          note: 'set by the assumed volume: one 8-hour shift less breaks, 21 working days a month'
        uph:
          value: 31.6
          unit: good units/h
          origin: simulated
          engine: discrete-event
          confidence: low
          note: capacity, simulated from assumed values; uncalibrated; no unit built; the operator on S1 to S6 is the constraint
          runs: 2000
          evidence:
          - src:factory-engine
          - src:layout-study
        headcount: 2
  - id: var:madecell-balanced
    name: Balanced MadeCell line, for about 10,000 a month
    kind: mixed
    base: baseline
    description: 'Decision 24''s MadeCell base (a 40 x 8 ft frame, four bays, stations facing out from a central conveyor,
      operators on the floor outside), balanced for decision 25''s volume case. 16 pallets and an overhead restocking rail.
      S1 and S2 share a workstation, as do S3 and S4; S5 and S6 and S7 each run twice; S8 becomes a cell of three test fixtures.
      Seven people. Layout: line/layouts/madecell-balanced.json.'
    changes:
    - action: merge
      target:
      - sta:s1
      - sta:s2
      description: workstation W1
    - action: merge
      target:
      - sta:s3
      - sta:s4
      description: workstation W2
    - action: split
      target:
      - sta:s5
      - sta:s6
      description: W3, built twice
    - action: split
      target:
      - sta:s7
      description: W4, built twice
    - action: split
      target:
      - sta:s8
      description: a test cell of three fixtures
    generated_by:
      method: agent
      engine: discrete-event
      run: nplus1labs/factory 9bc6753 engine/examples/plus-one-demand
      created: '2026-11-02'
    scores:
      throughput:
        takt:
          value: 51.03
          unit: s
          origin: estimated
          engine: analytic
          confidence: medium
          note: 'set by the assumed volume: one 8-hour shift less breaks, 21 working days a month'
        uph:
          value: 88.8
          unit: good units/h
          origin: simulated
          engine: discrete-event
          confidence: low
          note: capacity, simulated from assumed values; uncalibrated; no unit built; W1 (S1 and S2) is the bottleneck, about
            79% busy
          runs: 2000
          evidence:
          - src:factory-engine
          - src:layout-study
        headcount: 7
        bottleneck_station: sta:s1
  - id: var:split-s8
    name: 'Split S8: test in one station, mark and pack in another'
    kind: station-layout
    base: baseline
    description: A ninth bench takes the laser mark and pack off S8. S7 and S8 then both sit at 40 s.
    changes:
    - action: add
      target:
      - sta:s8
      description: mark and pack move to a new bench after S8
    generated_by:
      method: agent
      engine: expert-estimate
      created: '2026-11-01'
    scores:
      throughput:
        cycle_time:
          value: 40
          unit: s
          origin: estimated
          engine: expert-estimate
          confidence: low
        bottleneck_station: sta:s7
        headcount: 9
  - id: var:plus-one-plus
    name: Plus One+ (coming next)
    kind: design-change
    base: baseline
    description: 'Coming next. The same board with more parts fitted: light sensor, NFC tag, debug jumper; a clear shell option.
      No new station: a board-variant BOM at S2 and extra checks at S8, which push S8 past takt unless it is split.'
    changes:
    - action: add
      target:
      - part:light-sensor
      - part:nfc-tag
      - part:debug-jumper
      description: fit the empty footprints
    - action: modify
      target:
      - sta:s8
      description: add NFC and light-sensor checks
    generated_by:
      method: manual
      engine: expert-estimate
      created: '2026-11-01'
    scores:
      throughput:
        cycle_time:
          value: 62
          unit: s
          origin: estimated
          engine: expert-estimate
          confidence: low
          note: S8 gains about 6 s of checks
        bottleneck_station: sta:s8
        headcount: 8
  - id: var:plus-one-plus-plus
    name: Plus One++ (coming next)
    kind: routing
    base: var:plus-one-plus
    description: Coming next. Plus One+ boxed with a set of backs. Adds S9 after S8, kitting the backs into the box.
    changes:
    - action: add
      target:
      - sta:s8
      description: a new S9 after S8 kits the backs into a bigger box
    generated_by:
      method: manual
      engine: expert-estimate
      created: '2026-11-01'
    scores:
      throughput:
        cycle_time:
          value: 62
          unit: s
          origin: estimated
          engine: expert-estimate
          confidence: low
          note: S9 kitting runs in parallel; S8 stays the bottleneck
        bottleneck_station: sta:s8
        headcount: 9
  recommended:
    variant: var:bench-cell
    rationale: 'Decision 25: the layout follows volume. The first 100 builder units run on a one-technician bench cell; the
      U cell bridges to about 4,500 a month and the balanced MadeCell line takes about 10,000. On any fixed eight-station
      line, split S8 first: it sits at 56 s against a 60 s takt and the Plus One+ checks would push it to 62 s'
    tradeoffs: a bench cell is cheap to set up but tops out at about 2,400 a month on one shift
  engine_notes: The layout variants come from the N+1 factory engine (nplus1labs/factory 9bc6753), a discrete-event simulation
    that runs this OPD's routing with a ±30% spread on every target time. They are simulated from assumed values; uncalibrated;
    no unit built. The audio loopback, the RF check and wireless charging are outside the simulation. The other scores are
    expert estimates.