Skip to content

feat(sensors): always-on compass & smartDriving accel'i talep-güdümlü yap (PR 3/3)#58

Merged
selimmujdeci merged 1 commit into
mainfrom
fix/orientation-sensor-demand-gating
Jul 11, 2026
Merged

feat(sensors): always-on compass & smartDriving accel'i talep-güdümlü yap (PR 3/3)#58
selimmujdeci merged 1 commit into
mainfrom
fix/orientation-sensor-demand-gating

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Amaç

Orientation Sensor Gate 3-PR sırasının son adımı. İki always-on tüketiciyi gate üzerinden talep-güdümlü hale getirir. Yalnız gpsService + smartDrivingEngine değişti.

ACCELEROMETER (smartDrivingEngine) — gerçek foreground demand-gate

Salt-okunur analiz: _accelMagnitude YALNIZ detectDrivingMode Kademe 4'te okunuyor — yani OBD+GPS+decayed hız kaynaklarının hepsi yok/stale iken. Yardımcı son-çare fallback.

  • _evaluateAccelDemand(): yalnız TAZE güvenilir hız kaynağı YOKKEN gate'ten subscribeMotion ile abone olur; taze kaynak varken release.
  • Demand sinyali: _lastSpeedEstimaterecordSpeed hem OBD hem GPS için çağrılıyor (kanıt: smartEngine p.obdSpeed ?? p.gpsSpeedKmh + OBD/GPS effect'leri). Yaş > DECAY_MAX_SEC → stale → fallback gerekli. Magic number yok (mevcut sabit).
  • attachAccelerometer fail-safe (kaynak yoksa acquire), recordSpeed her çağrıda re-eval, detachAccelerometer release.
  • İvmeölçer tek başına safety-critical karar veya kesin araç hareketi üretmez.

Öncelik = kullanıcının HAL→GPS→accel modeli: OBD(araç)/GPS taze → accel açılmaz; ikisi de yok/stale → accel fallback.

COMPASS (gpsService)

_startCompassListener ham window.addEventListener → gate subscribeOrientationAbsolute/subscribeOrientation. Mevcut JS throttle (COMPASS_THROTTLE_MS) + heading/smoothing/blend KORUNUR. Kazanım: background auto-pause (gate visibilityState hidden → fiziksel listener söker) + dedup.

⚠️ Dürüst sınırlamalar (kanıtlanmamış kazanım yazılmadı)

  1. Compass Settings ekranında KAPATILMADI. Foreground Settings-gating "harita ekranda mı" tüketici demand sinyali gerektirir. Analiz: global görünüm store'u yok (MainLayout lokal drawer state'i); tüketiciye dokunmak kapsam dışı. isNavigating'e gate'lemek "harita açık ama navigasyon yok" heading durumunu kırar (davranış ihlali). Bu yüzden compass foreground davranışı bilinçli korundu; Settings-gating ayrı iş (tüketici demand API'si).
  2. Accel mid-drive kaynak kaybı (fresh→stale) re-acquire'ı sonraki recordSpeed/attach-döngüsünde olur (timer yok) — accel non-critical fallback, decay(20s)+Kademe5 kapsar. Yaygın senaryo (hiç kaynak yok) fail-safe ile mükemmel çalışır.
  3. Bu PR native samplingPeriod düşüşü İDDİA ETMEZ — gerçek cihaz QA gerekir.

Background / Settings davranışı

  • Background (app hidden): compass + accel fiziksel listener'ları gate tarafından sökülür; foreground'da geri bağlanır. ✓
  • Settings (foreground): accel — taze GPS/OBD varken kapalı ✓; compass — açık kalır (yukarıdaki sınırlama).

Test & Doğrulama

  • 26/26 demand-gating testi (compass acquire/release/background/foreground/heading-preserved; accel fail-safe/fresh-release/stale-fallback/duplicate/leak; kaynak kilitleri).
  • PR 2 #21/#22 scope-kilidi yeni doğru davranışa güncellendi (CLAUDE.md: kilidi kaldırma, güncelle).
  • tsc -b temiz · ESLint temiz · tam suite 3200/3200 yeşil (regresyon yok) · prod build OK.

Değişen dosyalar

platform/gpsService.ts · platform/smartDrivingEngine.ts · __tests__/orientationDemandGating.test.ts (yeni) · __tests__/orientationGateConsumerMigration.test.ts (2 kilit güncellendi) · docs/DEVICE_VALIDATION_LEDGER.md (#42 🔴)

Generic Sensor API / JS throttle / GPS frekansı / MapLibre / Event Bus / SystemBoot / Platform Kernel PR #55 / OBD-CAN / SQL — dokunulmadı. Yeni timer/rAF/polling yok. Merge YAPILMADI.

🤖 Generated with Claude Code

… yap (PR 3/3)

İki always-on tüketiciyi Orientation Sensor Gate üzerinden talep-güdümlü
hale getirir. Yalnız gpsService + smartDrivingEngine değişti.

ACCEL (gerçek foreground demand-gate):
- _accelMagnitude YALNIZ detectDrivingMode Kademe 4'te (OBD+GPS+decayed
  hepsi yok/stale) okunuyor → yardımcı son-çare fallback.
- _evaluateAccelDemand(): yalnız TAZE güvenilir hız kaynağı YOKKEN gate'ten
  subscribeMotion ile abone; taze kaynak (OBD veya GPS — recordSpeed'in
  beslediği _lastSpeedEstimate, yaş>DECAY_MAX_SEC=stale) varken release.
- attachAccelerometer fail-safe (kaynak yoksa acquire), recordSpeed re-eval,
  detachAccelerometer release. Accel tek başına safety-critical karar
  üretmez. Magic number yok (DECAY_MAX_SEC mevcut sabit).

COMPASS (gpsService):
- _startCompassListener ham window.addEventListener → gate subscribe.
- Mevcut JS throttle + heading/smoothing/blend davranışı KORUNUR.
- Kazanım: background auto-pause (gate) + dedup.

DÜRÜST SINIRLAMALAR (raporlandı):
- Compass Settings ekranında KAPATILMADI: foreground Settings-gating
  "harita ekranda mı" tüketici sinyali gerektirir (global görünüm store'u
  yok; tüketiciye dokunmak kapsam dışı). Foreground davranışı bilinçli
  korundu (map-heading-while-not-navigating bozulmasın).
- Accel mid-drive kaynak kaybı re-acquire'ı sonraki recordSpeed/attach
  döngüsünde (timer yok) — non-critical fallback, decay+Kademe5 kapsar.
- Bu PR native samplingPeriod düşüşü İDDİA ETMEZ.

YALIN: yeni timer/rAF/polling yok, Generic Sensor API yok, yeni JS throttle
yok, yeni bağımlılık yok, import yan etkisiz.

Test: 26 demand-gating testi + PR2 #21/#22 scope-kilidi yeni davranışa
güncellendi (CLAUDE.md: kilidi kaldırma, güncelle). tsc temiz, ESLint
temiz, tam suite 3200 yeşil, prod build OK. Ledger #42 🔴 (Mali-400 bekliyor).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKAPmfBwMTjsd5ft26GmXf
@vercel

vercel Bot commented Jul 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
car-launcher-pro Ready Ready Preview, Comment Jul 11, 2026 1:15pm
carospro Ready Ready Preview, Comment Jul 11, 2026 1:15pm

@selimmujdeci selimmujdeci merged commit 365670e into main Jul 11, 2026
8 checks passed
selimmujdeci pushed a commit that referenced this pull request Jul 12, 2026
…fied, cihaz bekliyor

providers→adapter→registry ayna modu host-dogrulandi (32 test, suite 3603, tsc/lint/build
temiz). Cihazda started/providerCount/resolvedCount + regresyon yoklugu dogrulanmali.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141GKY1eQru4Ap1PWN4VVst
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.

1 participant