Skip to content

feat(vehicle-hal): Vehicle HAL Foundation#49

Merged
selimmujdeci merged 1 commit into
mainfrom
feat/vehicle-hal-foundation
Jul 11, 2026
Merged

feat(vehicle-hal): Vehicle HAL Foundation#49
selimmujdeci merged 1 commit into
mainfrom
feat/vehicle-hal-foundation

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Amaç

CarOS Pro'daki tüm modüllerin araçla yalnız bu katman üzerinden konuştuğu tek resmi Hardware Abstraction Layer. Deep Scan · AI · Navigation · Fleet · Remote · Dashboard ve gelecekteki modüller CAN/OBD/Native'i bilmeyecek, yalnız Vehicle HAL kullanacak.

Yalnız foundation. Gerçek kaynak wiring (VAL/UnifiedVehicleStore → HAL.ingest) ve modül taşıma ayrı PR'lar; native değişmez, yeni OBD komutu/CAN decoder/PID yok, Deep Scan/Capability Registry davranışı değişmez.

Salt-okunur analiz (bugünkü durum)

  • Araç verisi: Native VHAL / CAN (Hiworld/K24/NWD) / OBD (ELM327) / GPS → SignalNormalizer → VAL NormalizedVehicleDataVehicleCompute.worker füzyon → VehicleState (SAB/postMessage) → UnifiedVehicleStore
  • Tekrar: useUnifiedVehicleStore ~40 dosyada okunuyor + Assistant Context + Battery Service + gauge SAB bağımsız yeniden okuyor
  • Eksik ortak API: per-signal quality/confidence/source/stale/supported/unit veren getSignal(id) facade'ı yok. Vehicle HAL tam bu boşluğu doldurur.

Signal / Snapshot modeli

  • Signal: id · value · quality(low/medium/high/unknown) · confidence(0–1) · source(native/can/obd/deep_scan/inferred/none) · timestamp · stale · unit · supported
  • Snapshot: revision · updatedAt · signals (deep-freeze, id-sıralı)
  • 15 sinyal kataloğu (speed/rpm/coolant/oil/fuel/battery/throttle/ambient/odometer/gear/reverse/ignition/door/parking_brake/tpms), her biri supported=false tohumlu (kaynak yok)

API

getSnapshot · getSignal(id) · hasSignal · subscribe · unsubscribe · refresh · reset · dispose · tipli erişimciler (getSpeed/getRPM/getCoolantTemp/getFuelLevel/getBatteryVoltage/getIgnition/getGear/getDoorState/getReverse/getThrottle/getOdometer/getTpms) · getVehicleIdentity · getCapability

HAL ilkeleri

  • Donanımdan bağımsız · kaynağı gizler · aynı API her araçta · veri yoksa null/supported=false (fail-closed) · hiçbir tüketici CAN/ELM327/Hiworld bilmez
  • Veri üretmez/yorumlamaz — yalnız tip doğrulama (number sinyale boolean/NaN → null), magic sanity eşiği yok

Fail-soft / immutability / privacy / performans

  • Provider/listener hatası izole, public API throw etmez, duplicate event önleme
  • Snapshot/signal deep-freeze (tpms dahil), girdi mutate edilmez, iç referans dışarı verilmez
  • Ham VIN reddedilir (getVehicleIdentity yalnız fingerprint hash 8-64 hex, 17-karakter=VIN reddedilir); ham CAN frame/OBD response saklanmaz
  • Hiç import yok (tamamen bağımsız foundation) · timer yok · polling yok · import yan etkisiz · Map O(1) · yeni bağımlılık yok · BASIC_JS uyumlu

Yeni dosyalar

Doğrulama

  • tsc -b · ✅ ESLint · ✅ Hedef 35/35 · ✅ Tam suite 2890/2890 · ✅ Production build

Bilinen eksikler

Gerçek kaynak wiring (VAL/UnifiedVehicleStore → HAL.ingest) + modüllerin HAL'e taşınması = ayrı PR'lar. Şu an tüm sinyaller supported=false (kaynak yok). Cihazda doğrulama Ledger #34 🔴.

🤖 Generated with Claude Code

…smi arayüz

CarOS Pro'daki tüm modüllerin araçla yalnız bu katman üzerinden konuştuğu Hardware
Abstraction Layer temeli. Yalnız foundation — gerçek kaynak wiring (VAL/
UnifiedVehicleStore → HAL.ingest) ve modül taşıma ayrı PR'lar; native değişmez,
yeni OBD komutu/CAN decoder/PID yok, Deep Scan/Capability Registry davranışı değişmez.

Bugün araç verisi VAL → VehicleState → useUnifiedVehicleStore (~40 dosyada) +
Assistant Context + Battery Service + gauge SAB ile ayrı ayrı okunuyor; per-signal
quality/confidence/source/stale/supported/unit veren ortak API yoktu. HAL bunu sağlar.

- 15 sinyal kataloğu (speed/rpm/coolant/oil/fuel/battery/throttle/ambient/odometer/
  gear/reverse/ignition/door/parking_brake/tpms), her biri supported=false tohumlu.
- Signal: id·value·quality·confidence·source(native/can/obd/deep_scan/inferred/none)·
  timestamp·stale·unit·supported. Snapshot: revision·updatedAt·signals(deep-freeze).
- API: getSnapshot/getSignal/hasSignal/subscribe/unsubscribe/refresh/reset/dispose +
  tipli erişimciler (getSpeed/getRPM/getBatteryVoltage/getIgnition/getGear/…) +
  getVehicleIdentity + getCapability.
- HAL ilkesi: donanımdan bağımsız, kaynağı gizler, veri yoksa null/supported=false;
  veri üretmez/yorumlamaz (yalnız tip doğrulama, magic sanity yok).
- Gizlilik: ham VIN reddedilir (yalnız fingerprint hash), ham CAN/OBD saklanmaz.
- Yalın: hiç import yok (bağımsız foundation), timer yok, import yan etkisiz,
  yeni bağımlılık yok, Map O(1). Bounded, immutable, fail-soft, duplicate event önleme.
- 35 birim testi.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PaohAWKE2s1FhB6Hmmcj2p
@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 5:58am
carospro Ready Ready Preview, Comment Jul 11, 2026 5:58am

@selimmujdeci selimmujdeci merged commit 1daca22 into main Jul 11, 2026
8 checks passed
selimmujdeci pushed a commit that referenced this pull request Jul 12, 2026
…aç/OBD yok)

Boot crash/ANR yok, cold start delta ~+24ms (<50ms hedefi), idle CPU regresyonu
gözlenmedi. Satır 🔴 KALIYOR: HAL sinyal akışı + ignition/TPMS fail-closed +
reconnect/stale gerçek araç/OBD gerektirir.

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