Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/DEVICE_VALIDATION_LEDGER.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

| # | Özellik | Nerede | Kabul ölçütü (cihazda ne gözlemlenmeli) | Eklendi |
|---|---------|--------|------------------------------------------|---------|
| 34 | **🔴 Device Validation Pending — Vehicle HAL Foundation** — CarOS Pro'daki TÜM modüllerin araçla YALNIZ bu katman üzerinden konuştuğu tek resmi Hardware Abstraction Layer. Bugün araç verisi Native VHAL/CAN(Hiworld/K24/NWD)/OBD/GPS → SignalNormalizer → VAL → VehicleCompute.worker → VehicleState → `useUnifiedVehicleStore` (**~40 dosyada** okunuyor) + Assistant Context + Battery Service + gauge SAB ile AYRI okunuyor; per-signal quality/confidence/source/stale/supported/unit veren ORTAK API yoktu. `VehicleHal` bu boşluğu doldurur. **15 sinyal kataloğu** (speed/rpm/coolant_temp/oil_temp/fuel_level/battery_voltage/throttle/ambient_temp/odometer/gear/reverse/ignition/door_state/parking_brake/tpms), her biri `supported=false` tohumlu (kaynak yok). **Signal modeli:** 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ı). **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-yerel). **HAL ilkesi:** donanımdan bağımsız, KAYNAĞI GİZLER, aynı API her araçta çalışır, 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. **Gizlilik:** HAM VIN reddedilir (getVehicleIdentity yalnız fingerprint hash 8-64 hex, 17-karakter=VIN reddedilir), protokol sanitize, ham CAN frame/OBD response SAKLANMAZ. **YALIN:** SystemBoot/native/VAL/UnifiedVehicleStore'a BAĞLANMAZ (import YOK — tamamen bağımsız foundation); timer YOK; polling YOK; import yan etkisiz; yeni bağımlılık yok; Map O(1). Bounded (katalog sabit 15 · listener 32 · tpms 6); immutable (snapshot/signal deep-freeze); fail-soft (provider/listener izole, throw yok); duplicate event önleme (değişmezse emit yok); stale (yaş>5000ms veya saat-geri). ⚠️ **Gerçek kaynak wiring (VAL/UnifiedVehicleStore → HAL.ingest) + modüllerin HAL'e taşınması AYRI PR'lar.** | `platform/vehicleHal/vehicleHal.ts` (yeni), `platform/vehicleHal/index.ts` (yeni), `__tests__/vehicleHal.test.ts` (yeni, 35 test) | Gerçek araçta (kaynak wiring PR'ı bağlandıktan SONRA): (1) `getSpeed()/getRPM()/getBatteryVoltage()` gerçek değer döner (CAN/OBD/HAL kaynağından, tüketici kaynağı BİLMEDEN); (2) kaynağı olmayan sinyal (ör. `getIgnition()` şu an) null/supported=false; (3) sinyal eskirse stale=true (taze gösterilmez); (4) bir provider düşse HAL çökmez, diğer sinyaller okunur; (5) HAM VIN hiçbir yere sızmaz (yalnız fingerprint hash); (6) BASIC_JS/Mali-400'de HAL CPU/RAM regresyonu yok (O(1) lookup, timer yok, pasifken sıfır yük); (7) tüm modüller CAN/OBD/Hiworld yerine yalnız HAL kullanır. ⚠️ **Gerçek kaynak wiring + modül taşıma SONRAKİ PR KAPSAMI.** Test edilmeden 🟢 yapma. | 2026-07-11 |
| 33 | **🔴 Device Validation Pending — Capability Registry Foundation** — CarOS Pro'nun cihaz/araç/yazılım/servis yeteneklerini TEK merkezden, KANITA DAYALI, confidence içeren, DeviceTier-uyumlu yöneten registry. İleride Deep Scan · Vehicle HAL · Navigation · Eagle Eye · Companion AI · Assistant Context · Health/Remote/Fleet/Vision/Media OS · OEM/White-label · Plugin Runtime ORTAK KAYNAK olarak kullanacak. `CapabilityRegistry` Map-tabanlı O(1); 13 domain · 6 status (available/unavailable/unknown/degraded/restricted/unsupported) · 12 source (native/can/obd/deep_scan/config/license/runtime/network/user/oem/inferred/none) · quality(low/medium/high/unknown) · confidence(0–1 clamp). **~63 ID'lik başlangıç kataloğu** (device/vehicle/navigation/ai/vision/remote/platform/oem/fleet) `unknown` olarak tohumlu (KANIT YOK). **Karar kuralları (zero-trust/fail-closed):** available YALNIZ yeterli kanıtla; unknown≠available; **config tek başına fiziksel donanımı (device/vehicle/vision) AÇMAZ** → unknown; UI varlığı kaynak DEĞİL; stale kanıt available tutmaz→unknown; **çelişkili authoritative kaynak→unknown**; authoritative(native/can/obd/deep_scan/license/oem) yardımcıdan üstün; **DeviceTier minimumu karşılanmazsa→restricted** (Mali-400/low'da advanced GPU + local model + ağır vision restricted); **safety-critical writable (vehicle.coding/adaptation/bidirectional) yalnız authoritative + confidence≥0.85**; tek zayıf inferred safety-critical açamaz; confidence<0.5/quality low→degraded. Confidence kaynak-tabanlı (native 0.98…config 0.3, politika sabiti). **Güçlü cihaz varlık UYDURMAZ** — tier yalnız minimum engelini kaldırır, kanıt yine şart. API: register/update/remove/get/has/isAvailable/getStatus/getConfidence/list/listByDomain/resolveCapability/createSnapshot/evaluateRequirements/explainUnavailable/subscribe/reset/dispose. **YALIN:** SystemBoot/provider/UI'ya BAĞLANMAZ; import yan etkisiz (yalnız `DeviceTier` TYPE import, donanım probu/timer/native YOK); kalıcı storage YOK (runtime-memory); yeni bağımlılık yok. Bounded (256 capability · 32 listener · details16/limitations8); immutable (record/snapshot deep-freeze, nested dahil); privacy (VIN/MAC/koordinat/ham/secret sanitize); fail-soft (bozuk kayıt/provider/listener izole, throw yok); duplicate merge deterministik; değişmezse event YOK. | `platform/capability/capabilityRegistry.ts` (yeni), `platform/capability/index.ts` (yeni), `__tests__/capabilityRegistry.test.ts` (yeni, 40 test) | Gerçek cihazda (hardware provider wiring PR'ı bağlandıktan SONRA): (1) GPS/kamera/Bluetooth/Wi-Fi capability durumları doğru (native kanıtla available); (2) donanımı olmayan özellik available GÖRÜNMEZ (unknown/unavailable); (3) TPMS kaynağı olmayan araçta `vehicle.tpms` aktifleşmez; (4) Deep Scan keşifleri araç capability'lerine (`vehicle.live_pid`/`did_discovery`…) doğru yansır; (5) BASIC_JS/Mali-400'de registry CPU/RAM regresyonu yok (O(1) lookup, timer yok, pasifken sıfır yük); (6) capability değişiklikleri duplicate event üretmez; (7) unknown capability güvenli şekilde kapalı davranır (isAvailable=false). ⚠️ **Provider wiring · persistence · OEM config · SystemBoot wiring AYRI PR KAPSAMI.** Test edilmeden 🟢 yapma. | 2026-07-11 |
| 32 | **🔴 Device Validation Pending — Deep Scan Orchestration Foundation** — Deep Scan'in tüm katmanlarını (Runtime state machine · Persistence · Ignition Source) yöneten TEK koordinatör. `DeepScanOrchestrator` deterministik 12-faz sırasını yürütür: kontak doğrula → mod seç (Persistence `resolveMode`) → identity → protocol → ECU/PID/DID/firmware keşif → capability → fingerprint → knowledge → evidence(+pattern+persistence checkpoint) → change_detection → report → completed. **Fazların GERÇEK işi enjekte edilen `handlers` ile yapılır** (foundation'da yok → tümü `skipped`); ileride gerçek discovery servisleri buraya BAĞLANIR. **Faz çıktısı** (success/skipped/error/timeout/cancelled) runtime'a yansıtılır: keşifler `recordEcu/Pid/Did/Firmware`, hata `reportPhaseFailure` (KRİTİK identity/protocol→failed; kritik-değil→skip+warn FAIL-SOFT devam). **Fail-soft zinciri:** fingerprint düşse knowledge çalışır · knowledge düşse persistence yazılır · persistence düşse report yine üretilir (runtime.completeScan ÖNCE, persistence.completeScan try/catch SONRA). **Kontak güvenliği:** her aktif faz öncesi Ignition Source'tan `getConfirmedValue()` okunur→runtime'a beslenir; doğrulanmazsa `waiting_for_ignition`'da DURUR (index ilerlemez, aktif sorgu yok), kontak gelince aynı fazdan devam. **Mod:** Persistence'tan tamamlanmış full_scan varsa `change_check`. **Progress** gerçek fazlara göre (runtime PHASE_PROGRESS_FLOOR + ölçülmüş updateProgress), sahte yüzde YOK, 100'de biter. **Event:** scan_started/phase_started/phase_completed/phase_failed/progress_changed/report_ready/scan_completed/scan_cancelled/scan_failed. **YALIN:** fazlar ÇAĞRILABİLİR API (`runNextPhase()` primitif + `run()` sonlu sıra); **timer YOK · yeni thread YOK · sürekli döngü YOK · hot-path YOK · OBD polling'e dokunmaz**; SystemBoot/Assistant/Dashboard wiring YOK; import yan etkisiz (runtime/persistence/ignition yalnız start/run'da kullanılır); yeni bağımlılık yok. Bounded (keşif birikimi ECU128/PID512/DID512/FW128 · listener32 · uyarı16); immutable (snapshot+event deep-freeze); privacy (sanitizeText, ham/VIN/MAC girmez); zero-leak (dispose yalnız kendi dinleyicileri; enjekte deps çağıranındır). Gerçek OBD komutu/PID/DID/Discovery algoritması/native DEĞİŞMEZ. | `platform/deepScan/deepScanOrchestrator.ts` (yeni), `platform/deepScan/index.ts` (export), `__tests__/deepScanOrchestrator.test.ts` (yeni, 21 test) | Gerçek araçta (gerçek discovery handler'ları bağlandıktan SONRA): (1) araç bağlanınca kontak doğrulanır → mod (full/change) seçilir; (2) faz sırası deterministik yürür, her faz tamamlandıkça progress artar (100'de biter); (3) kontak doğrulanmadan aktif sorgu BAŞLAMAZ (`waiting_for_ignition`); (4) tek modül düşse (firmware/fingerprint/knowledge/persistence) Deep Scan ÇÖKMEZ, uygun noktadan devam eder, report yine üretilir; (5) cancel/timeout doğru işlenir; (6) tarama sonu Persistence'a kayıt yazılır (sonraki bağlantı change_check); (7) BASIC_JS/Mali-400'de CPU/RAM regresyonu yok (timer yok, pasifken sıfır yük). ⚠️ **Gerçek discovery/OBD entegrasyonu + SystemBoot wiring + Assistant Context yansıtma SONRAKİ PR KAPSAMI.** Test edilmeden 🟢 yapma. | 2026-07-11 |
| 31 | **🔴 Device Validation Pending — Deep Scan Ignition Source Foundation** — Deep Scan Runtime'ın üç durumlu `ignitionConfirmed`'ını GÜVENLİ + deterministik besleyecek çözümleyici katman. ⚠️ **KOD GERÇEĞİ (salt-okunur denetim):** depoda DOĞRUDAN kontak/ACC/key-state yayan HİÇBİR kaynak YOK — VAL `NormalizedVehicleData`, Hiworld CAN protokolü (RPM/BATT_VOLT/GEAR/REVERSE var, ACC/IGN komutu YOK), NativeHAL (AAOS VHAL) ve `useAssistantContextStore` (`status.ignition=null` "sinyal YOK") teyit etti; `commandExecutor.ignitionOn` yalnız remote-command parametresi. `resolveIgnitionState(evidence, now)` SAF çözümleyici: yalnız **authoritative** kaynaklar (`native_acc`/`can_ignition`/`engine_running`/`manual`) onay verir; **yardımcı** kaynaklar (`rpm`/`alternator`/`battery_voltage`/`obd_transport`) tek başına ASLA ON üretmez → `unknown`. **Fail-closed:** kesin doğrulanamazsa `unknown`→`confirmed=null`. Tehlikeli tekil varsayım YOK (hız>0/RPM>0/voltaj/OBD bağlı → ON yasak). **Fizik magic number UYDURULMADI** (kodda motor-çalışıyor RPM eşiği / alternatör voltaj eşiği tanımlı değil → ham sayıya eşik uygulanmaz; yardımcı sinyaller çağıran tarafından bool'a yorumlanıp `engine_running` authoritative kanıtı olur = zero-trust). **Stale/zaman:** her kanıt `observedAt` (Date.now ms, VAL ile aynı taban); yaş>5000ms (VAL SIGNAL_SOURCE_DEFAULTS timeout gerekçesi) veya saat-geri (age<0) → stale, onay için kullanılmaz. **Çelişki:** iki güvenilir authoritative kaynak zıtsa → `unknown` (fail-closed). **Confidence kapısı** 0.7 (VAL base 0.85–0.98 gerekçesi, politika sabiti). **Adapter API:** `getConfirmedValue():boolean\|null`. **YALIN:** `deepScanRuntimeService`'e/SystemBoot'a OTOMATİK BAĞLANMAZ; polling timer YOK (pull `refresh()`/push `submitEvidence()`); import yan etkisiz; yeni bağımlılık yok. Manual override PROD varsayılan KAPALI (dev/test). Bounded (kanıt 16, listener 32); immutable (deep-freeze); privacy (reason `sanitizeText`, VIN/MAC/koordinat/ham/secret snapshot'a girmez); fail-soft (kaynak/listener hatası izole, throw yok). | `platform/deepScan/deepScanIgnitionSource.ts` (yeni), `platform/deepScan/index.ts` (export), `__tests__/deepScanIgnitionSource.test.ts` (yeni, 31 test) | Gerçek araçta (orchestration PR'ı bağlandıktan SONRA): (1) ACC/ON durumu doğru algılanır (gerçek native/CAN ignition kaynağı eklenince); (2) kontak kapalıyken `false` veya `unknown`; (3) RPM tek başına yanlış ON ÜRETMEZ; (4) OBD adaptörü takılı ama kontak kapalıyken ON üretmez; (5) kaynaklar çelişince `unknown`/null; (6) Deep Scan aktif sorguları yalnız doğrulanmış ON ile başlar; (7) BASIC_JS/Mali-400'de CPU/RAM regresyonu yok (saf çözümleyici, timer yok); (8) farklı MCU/CAN kutularında kaynak desteği AYRI raporlanır (şu an hiçbirinde doğrudan kaynak yok → daima `unknown`, fail-closed). ⚠️ **Runtime wiring + gerçek orchestration + doğrudan kaynak entegrasyonu SONRAKİ PR KAPSAMI.** Test edilmeden 🟢 yapma. | 2026-07-11 |
Expand Down
Loading
Loading