# Claims check

Every claim and number on the page, with its source in the repo. "RESULTS" = `docs/eval/RESULTS.md`,
"REAL" = `docs/eval/real_driver.md`.

| # | Claim on page | Value | Source |
|---|---|---|---|
| 1 | Risk number runs 0 to 100, four levels | Safe / Caution / Alert / Uncertain | `shared/schema.json`, `docs/design/design_system.md`; thresholds 30/60 in RESULTS §6 |
| 2 | Demo numbers (14, 36, 75 ...) | simulated replay | `shared/sample_stream.jsonl` state messages, every 5th, in `assets/demo.json`; labelled "Demo data (simulated)" |
| 3 | Uncertain means face not usable (quality gate only) | quality_low | RESULTS §2 wide-set row ("Uncertain = quality gate only") |
| 4 | Reason text "eyes closing often" | perclos_high | `shared/sample_stream.jsonl` seq 450; UI string in the /cockpit screenshot |
| 5 | Chime, voice line, alarm, breathing per level | Caution chime + check-in, Alert alarm + voice, breathing and rest stop offered | `docs/design/copilot_spec.md` §2 (offers), /stage screenshots (breathing tile). Exact chime and alarm audio is not specified in docs: wording kept generic |
| 6 | Copilot is read-only, never decides alerts | by construction | `docs/design/copilot_spec.md` §1; RESULTS §11 safety invariance row |
| 7 | Copilot does check-ins, music, weather, ETA, rest stop | listed | `docs/design/copilot_spec.md` §2; /stage screenshot (Music, Weather cards) |
| 8 | Voice recognition tried with 2 people, no accuracy shown | 2 | brief for this job (real-voice test set of 2 people); RESULTS §11 intent accuracy row still says PENDING. No voice numbers used |
| 9 | Live app keeps no camera frames or audio by default; recording is a separate, operator-started mode | verified in code | See "Claim 9 evidence" at the end of this file |
| 10 | Guest data deleted, owners can delete | pass | RESULTS §5 "Guest / profile deletion on disk" row |
| 11 | Research recordings: 7 consenting people, deleted by 31 Dec 2026, on lab computer | 7, 2026-12-31 | `docs/ethics/consent_en.md`; REAL (7 people) |
| 12 | 192 Python tests passed, 0 failed | 192 | RESULTS §5 "E7 release freeze (2026-10-19, 84eb579)" |
| 13 | Browser tests 76/76, axe 0 violations | 76/76 | same row |
| 14 | 2 full-stack login tests not passing in an earlier run, password mismatch | 0/2 | RESULTS §5 "Playwright full stack" row (run of 2026-10-08) |
| 15 | 7 people, 9 sessions, 80 min | 7 / 9 / 80.0 | REAL header (2026-10-15, commit dbe2e36) |
| 16 | Fatigue 7/7, distraction 7/7 reached at least Caution, acted emotion 6/7, all acted | pooled row | REAL leave-one-person-out table; "at least Caution" wording from REAL golden-replay expectations (expect caution) |
| 17 | 36 false Alerts in 80 min, target not met | 36 / 80.0 | REAL pooled row |
| 18 | 0 in 70 min setup-compliant, upper bound 1.28 per 30 min, not proven | 0 / 70 / 1.28 | REAL "Setup-compliant only" |
| 19 | 53 ms p95 camera to screen, USB camera, lab PC RTX 3090, 2026-10-10, without camera's own delay | 53 | RESULTS §3 physical camera row |
| 20 | Model step 9.5 ms p95 | 9.5 | RESULTS §3 first row (2026-10-08) |
| 21 | CPU only 111 ms p95, misses 100 ms target | 111 | RESULTS §3 CPU fallback row |
| 22 | 67.04 % UAR, 2336 clips, 2026-10-08, slightly optimistic; 30.21 % on FERV39K | 67.04 / 2336 / 30.21 | RESULTS §1 |
| 23 | 60 min soak, 0 restarts, p95 45.3 ms, file source, no physical camera | 60 / 45.3 | RESULTS §3 soak row (2026-10-09) |
| 24 | Not a medical device | n/a | `CLAUDE.md` project positioning; RESULTS §2 limitation (no stress claim) |
| 25 | False-alarm target not proven | n/a | REAL "NOT met" lines |
| 26 | Not tested in a moving car | n/a | consent form: "Nothing is done while driving a real vehicle"; brief |
| 27 | One camera, one room | n/a | brief; `docs/eval/camera_setup.md` |
| 28 | Fatigue, distraction, emotion acted at a desk | n/a | REAL "acted_emotion"; consent form task list |
| 29 | Night, IR, sunglasses not validated | n/a | brief. REAL has dim and sunglasses segments but no validated result, so wording is "not validated" |
| 30 | Thresholds hand-set, not validated | n/a | RESULTS §6 |
| 31 | No cognitive stress detection from face | n/a | RESULTS §2 limitation row |
| 32 | Speed, fuel, battery simulated (SIM) | n/a | `docs/report_bundle/evidence/assets_road_LICENSE.md` "Simulated speed (SIM)" |
| 33 | Road view is a stock clip | Pexels | same file |
| 34 | Demo clip about 7 seconds | 6.68 s | measured on `docs/design/fixes/after/video_stage_caution_alert.webm` |
| 35 | Team, advisor, school, lab name and address, lab URL | as written | brief for this job |
| 36 | Competition name 2026全國大專校院智慧創新暨跨域整合創作競賽 (no official English name; host 國立中央大學資訊工程學系) | exact | https://niicc.cilab.csie.ncu.edu.tw/ , fetched 2026-10-27 |

Removed for lack of a source: the "45-second demo" wording (no such clip), any voice accuracy figure, any
statement about night or sunglasses performance, any model-comparison claim.

## Claim 9 evidence (read-only grep, 2026-10-27)

| What | Writes what | When | Default | file:line |
|---|---|---|---|---|
| Engine `Recorder` | `video.avi` (MJPG), frame csv, states | only after `POST /record/start` | off | `services/engine/recorder.py:73-76`, `services/engine/app.py:253-254,400-410` |
| Browser camera | JPEG frames sent over WebSocket to the engine, not saved | while the camera runs | memory only | `apps/web/src/lib/browserCam.ts:52-58` |
| API | docstring: no video or images stored; no writer found | n/a | none | `services/api/app.py:7` |
| Copilot ASR | nothing; audio decoded from `BytesIO` | per utterance | no disk write | `services/copilot/asr.py:3,63` |
| Voice enrolment | numeric embedding `.npy` (not audio) | after enrolment phrases | opt-in | `services/copilot/run.py:104` |
| Team voice kit | WAV via `arecord` | manual `make record-voice` | off | `services/copilot/record_voice.py:59` |
| TTS / stress audio | generated WAV assets | build-time scripts | off at runtime | `services/engine/make_tts.py:57` |
| Delete my data | removes profile, trips, voice profile, recordings | phone request | n/a | `services/api/app.py:689-693` |

Result: no default path writes frames or audio. Page wording follows this table.
