# media-labels — VALIDATION RESULTS

## Signal hypothesis

Real cameras/microphones have hardware names in their labels ("FaceTime HD Camera").
Headless Chromium returns devices with empty labels because no enumeration occurred.

## 3-condition results

| Condition | audioinputs | videoinputs | verdict |
|---|---|---|---|
| Vanilla headless | 0 | 0 | 🔴 Headless (0 devices) |
| CDP-attached | 0 | 0 | 🔴 Headless (0 devices) |
| Headful (Xvfb) | 0 | 0 | 🔴 Headless (0 devices) |

**All 3 conditions show 0 devices** — including the headful run. This server
has no camera/microphone hardware, so the API correctly returns 0.

## Verdict: ⚠️ MARGINAL — needs real-hardware validation

The signal fires correctly on headless (no hardware = empty enumerateDevices),
but it also fires on real users who:
- Use a desktop with no camera/mic
- Run Chrome in a privacy-focused container (no hardware pass-through)
- Use a corporate laptop with camera disabled in BIOS

**False positive risk:** HIGH on corporate/enterprise users and headless
desktop VMs.

## Recommendation

DO NOT SHIP standalone. If used, must be combined with another signal:
- Only flag if `audioinputs === 0 AND videoinputs === 0 AND deviceMemory >= 8`
  (rules out low-spec hardware, but still risky)
- OR only as a soft Phase 3 signal with very low weight (+5 penalty)

## Files

- `demo.html`
