# storage-quota — VALIDATION RESULTS

## Signal hypothesis

Real Chrome reports `navigator.storage.estimate().quota` based on actual disk
size (often 100 GB+ on modern machines). Headless without proper storage
implementation returns default values (often 0 or 120 MB).

## 3-condition results

| Condition | quota (bytes) | quotaMB | verdict |
|---|---|---|---|
| Vanilla headless | 1,073,741,824 | **1024** | 🟡 Moderate quota (1.00GB) |
| CDP-attached | 10,737,418,240 | **10240** | 🟡 Moderate quota (10.00GB) |
| Headful (Xvfb) | 1,073,741,824 | **1024** | 🟡 Moderate quota (1.00GB) |

**The CDP-attached condition shows 10× the quota of vanilla+headful.**
This is unexpected and likely a CDP-attachment artifact — Chrome may report
a different quota when the debugger is attached.

## Verdict: ❌ REJECTED — CDP-divergent, not headless-divergent

The signal:
- Vanilla headless = 1GB (matches headful on this server)
- CDP-attached = 10GB (CDP artifact)
- Real desktops would show 100GB+

On this server, the 1GB quota is the StorageManager default, NOT a
headless tell. Headful Chrome on the server returns the same value.

**Cannot distinguish**:
- Real user on a 1GB-quota container
- Headless Chrome with default settings
- Privacy-focused user with low quota

## Recommendation

DO NOT SHIP. The signal is confounded by container environments and
CDP attachment state. A real desktop will show 100GB+, but a real desktop
running Chrome in a Docker container will show 1GB.

## Files

- `demo.html`
