Problem
docs/ALGORITHM_CATALOG_1HZ.md currently describes several WHOOP 4.0 inputs as available/usable without matching the verified protocol contract:
- It lists 24/7 skin-temperature, SpO2 red/IR, ambient-light and skin-contact channels, but
protocol/lib/src/records.dart marks skinTempRaw, skinContact and ppgRedIr as misdecoded/deprecated; the red/IR bytes are not independent oxygenation channels.
- It claims a foreground optical PPG waveform at ~419 Hz. The Gen4 protocol currently documents R10 as 100 Hz accel/gyro, v25 as an approximately 24 Hz raw burst with timestamp-only decoding, and R11 channels as unknown.
These distinctions affect whether proposed algorithms are even implementable from captured data. histVersion is a layout marker, not proof of a firmware build or physical sensor identity.
Requested scope
Audit the catalog against the capture-backed Gen4 protocol contract. Mark each input/algorithm as verified, firmware/layout-dependent, derived, or unsupported; remove or qualify unsupported sensor/rate claims; do not infer part numbers or signal meaning from field names. Keep implementation work separate from this documentation correction.
Evidence
- Protocol README:
protocol/README.md (1 Hz R24 contract and raw-field limits)
- Gen4 decoder:
protocol/lib/src/records.dart (R24/v25 routing and v25 timestamp-only decode)
- Live records:
protocol/lib/src/live.dart (R10 IMU; R11 unknown channel semantics)
- Regression tests:
protocol/test/gen4_field_honesty_test.dart, protocol/test/v25_test.dart
Local checks passed: Gen4 field-honesty tests (17) and v25 tests (3). No code or device state was changed.
Problem
docs/ALGORITHM_CATALOG_1HZ.mdcurrently describes several WHOOP 4.0 inputs as available/usable without matching the verified protocol contract:protocol/lib/src/records.dartmarksskinTempRaw,skinContactandppgRedIras misdecoded/deprecated; the red/IR bytes are not independent oxygenation channels.These distinctions affect whether proposed algorithms are even implementable from captured data.
histVersionis a layout marker, not proof of a firmware build or physical sensor identity.Requested scope
Audit the catalog against the capture-backed Gen4 protocol contract. Mark each input/algorithm as verified, firmware/layout-dependent, derived, or unsupported; remove or qualify unsupported sensor/rate claims; do not infer part numbers or signal meaning from field names. Keep implementation work separate from this documentation correction.
Evidence
protocol/README.md(1 Hz R24 contract and raw-field limits)protocol/lib/src/records.dart(R24/v25 routing and v25 timestamp-only decode)protocol/lib/src/live.dart(R10 IMU; R11 unknown channel semantics)protocol/test/gen4_field_honesty_test.dart,protocol/test/v25_test.dartLocal checks passed: Gen4 field-honesty tests (17) and v25 tests (3). No code or device state was changed.