Skip to content

docs(monorepo): audit wrist fall detection - #132

Open
thlaure wants to merge 1 commit into
mainfrom
cursor/audit-detection-chute-dcba
Open

thlaure wants to merge 1 commit into
mainfrom
cursor/audit-detection-chute-dcba

Conversation

@thlaure

@thlaure thlaure commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Résumé

Audit de la détection de chute, sans modification de l'automate. Le rapport est docs/audit-detection-chute.md. Il sépare les faits (fichier et lignes), les interprétations et les hypothèses.

Constats principaux

  • Wear OS exécute FallAlgorithm : accéléromètre seul à 25 Hz, quatre conditions en ET (phase basse 160 ms sous 0,35 g, impact 4,2 g, rotation du poignet 80°, immobilité continue de 2 s). Les commentaires du service et docs/SYSTEM_OVERVIEW.md décrivent encore un OU.
  • watchOS ne démarre pas cet automate. La production passe par CMFallDetectionManager. Les seuils du téléphone ne changent pas la décision Apple.
  • Sur des traces synthétiques à 40 ms, le détecteur actuel manque une phase basse observée seulement 120 ms, une phase basse longue qui effondre le vecteur de gravité, et une phase basse latérale qui remplace la référence d'orientation. Il accepte en revanche une chute libre suivie d'un choc, d'une rotation et d'un repos (montre tombée). Ces clips ne sont pas une sensibilité clinique.
  • Le scénario nominal qui passe est détecté 2 320 ms après l'impact, avant la grâce serveur de 30 s.

Harness

FallReplay rejoue des CSV t_ms,ax_mps2,ay_mps2,az_mps2 dans le FallAlgorithm inchangé, avec le reset et le silence de 5 s du service. Métriques : sensibilité, spécificité, fausses alertes par jour. Un corpus externe se branche avec -Dfall.replay.dir=... et n'échoue pas le build.

Le rapport indique de mesurer ensuite le poignet FallAllD (238 Hz, ±8 g), pas SisFall (ceinture).

Vérification

  • ./gradlew :app:testDebugUnitTest dans apps/wear_os : vert.
  • make quality / make test à la racine non lancés : pas de changement API, Flutter, ni de logique de détection.
  • Android SDK installé localement pour la suite JVM ; local.properties n'est pas dans le commit.
Open in Web Open in Cursor 

Record how wrist detection actually behaves, and replay synthetic
traces through FallAlgorithm without changing the decision.

Co-authored-by: Thomas Laure <thlaure@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants