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 |
|---|---------|--------|------------------------------------------|---------|
| 29 | **🔴 Device Validation Pending — Deep Scan Runtime Service Foundation** — Yeni araç ilk kez bağlandığında çalışacak Deep Scan sürecinin merkezi runtime FOUNDATION katmanı: durum · faz · ilerleme · keşif sayaçları · olaylar · güvenli çalışma koşulları. `DeepScanRuntimeService` saf bir durum makinesidir — **araca TEK BİR sorgu bile göndermez**, hiçbir OBD/discovery/fingerprint/learning servisini import etmez (kaynak-metin kilidi: tek import `./deepScanModel`), timer/abonelik açmaz → **import edilmesi yan etki üretmez**. 9 durum (idle · waiting_for_ignition · preparing · scanning · analyzing · completed · paused · cancelled · failed) + 12 faz; fazlar AKTİF (araca sorgu: kimlik/protokol/ECU/PID/DID/firmware) ve OFFLINE (analiz/fingerprint/knowledge/evidence/change/rapor) olarak ayrılır. **Mod kararı:** önceki tamamlanmış tarama yoksa `FULL_SCAN`, varsa `CHANGE_CHECK` (aynı araca her bağlantıda tam tarama YOK). **KONTAK GÜVENLİĞİ (fail-closed):** depoda kontak/ACC yayan gerçek kaynak YOK (`IGNITION_OFF` yalnız mesaj sabiti, hiç emit edilmiyor) → `ignitionConfirmed` üç durumlu (`true`/`false`/`null=bilinmiyor`), yalnız `setIgnitionConfirmed()` ile dışarıdan beslenir, servis kontağı ASLA tahmin etmez; `true` değilse aktif faz açılmaz + aktif keşif kaydı reddedilir, yalnız offline fazlar çalışır. Progress deterministik + monotonik (0–100 clamp, geriye düşmez, complete→100, fail/cancel'da korunur, sahte ilerleme yok). Bounded: warnings(16) · listeners(32) · dedup anahtarları(4096). Snapshot + rapor + olay zarfı `Object.freeze`'li; VIN(17-karakter kapısı) · MAC · koordinat · ham CAN hex · API key snapshot'a giremez. **SystemBoot wiring YOK** (kilitli test) — gerçek tarama orchestration ve kalıcı geçmiş deposu AYRI PR kapsamı. | `platform/deepScan/deepScanModel.ts` (yeni), `platform/deepScan/deepScanRuntimeService.ts` (yeni), `platform/deepScan/index.ts` (yeni), `__tests__/deepScanRuntimeService.test.ts` (yeni, 57 test) | Gerçek araçta (orchestration PR'ı bağlandıktan SONRA): (1) **yeni araçta** `FULL_SCAN` + `isFirstScan=true` durumu oluşur; (2) **daha önce öğrenilmiş araçta** `CHANGE_CHECK` seçilir, tam tarama tekrarlanmaz; (3) kontak doğrulanmadan **aktif sorgu başlamaz** (status `waiting_for_ignition`'da kalır, ELM327 trafiği sıfır); (4) kontak kapalıyken araca sorgu **gönderilmez** (adb/ELM log'unda istek yok), yalnız analyzing/report fazları koşar; (5) progress monotonik — geri düşüş gözlenmez; (6) discovery sayaçları gerçek gözlemlerle **birebir** eşleşir (duplicate şişirmez); (7) cancel/pause/resume çalışır; (8) BASIC_JS tier'da CPU/FPS regresyonu yok (servis pasifken sıfır yük). ⚠️ **Restart sonrası kalıcılık BU PR'IN KAPSAMI DEĞİL** — `hasCompletedScanBefore` çağırandan gelir; süreç yeniden başlayınca durum `idle`'a döner. Test edilmeden 🟢 yapma. | 2026-07-10 |
| 28 | **🔴 Device Validation Pending — Unified Assistant Context (OfflineAssistantContext)** — Voice Assistant · Companion AI · Safety Kernel · Offline Conversation · Vehicle Learning · Diagnostic AI · Maintenance AI katmanlarının ayrı ayrı okuduğu kaynakları TEK merkezde toplayan, periyodik + `Object.freeze`'li snapshot yayınlayan store. SAF kurucu (`buildSnapshot`, throw etmez, girdiyi mutate etmez) + fail-soft canlı adaptör (`readLiveSources`, her kaynak izole try/catch). Periyot 5 sn · DeviceTier=low → 10 sn; görev `runtimeManager.scheduleTask` üstünde `criticality:'NORMAL' + deferIdle:true` → hot-path'e (3Hz hız/RPM) GİRMEZ. Dirty-flag ile park hâlinde sıfır maliyet; ağır soğuk-yol bölümleri (identity/learning) 30 sn (low: 60 sn) aralıkla okunur. Gizlilik: VIN/MAC/GPS/ham PID-DID-CAN snapshot'a ASLA girmez (whitelist kurucu; navigasyon hedefi yalnız ad, ≤64 karakter). Hiçbir servise YAZMAZ; severity/driveSafe/diagnostic kararı DEĞİŞMEZ. **Additive: henüz hiçbir tüketiciye ve SystemBoot'a bağlı DEĞİL** → bu PR'da çalışma zamanı davranışı değişmez. Kaynağı olmayan alanlar dürüstçe `null`: `deepScan.*` (genel Deep Scan servisi YOK), `driver.fatigueScore`, `status.ignition`, `media.ducking`, `network.wifi/mobile` (yalnız `navigator.connection.type` kesinse dolar). | `src/store/useAssistantContextStore.ts` (yeni), `src/__tests__/assistantContextStore.test.ts` (yeni, 25 test) | Gerçek araçta (tüketiciye bağlandıktan SONRA): (1) snapshot mid/high tier'da ~5 sn, BASIC_JS/low'da ~10 sn (veya mod çarpanıyla daha seyrek) aralıkla yenilenir; (2) park hâlinde (OBD sessiz) tik sıfır ayırma yapar — CPU profilinde snapshot işi görünmez; (3) BASIC_JS tier'da FPS/CPU regresyonu YOK, hız/RPM göstergesi 3Hz akıcılığını korur; (4) snapshot içeriğinde VIN/MAC/koordinat/ham hex GÖRÜNMEZ (Expert Mode / log denetimi); (5) uzun sürüşte (>1 sa) bellek büyümesi gözlenmez (yalnız son snapshot tutulur); (6) OBD/DTC/tanı servislerinden biri düşse bile snapshot üretilmeye devam eder. ⚠️ Test edilmeden 🟢'a çekme. | 2026-07-10 |
| 27 | **🔴 Device Validation Pending — Companion Safety Kernel & Response Verifier (PR-A)** — Asistanın online AI'dan BAĞIMSIZ, yerel + deterministik güvenlik katmanı. `assistantSafetyKernel` iki SAF fonksiyon (enjekte `SafetyContext`, throw etmez) + bir fail-soft canlı adaptör: **PRE-GATE** (`evaluatePreGate`) kritik durumda (motor aşırı ısı ≥118°C · yağ basıncı · fren · şanzıman · şarj/düşük voltaj <11.8V · tanı driveSafe=false veya severity=critical · uykululuk · reverse · cognitive≥PROTECTION) online çağrıyı ENGELLER → aktif fiziksel arızada doğrulanmış yerel şablon (`SAFETY_TEMPLATES`, mevcut `safety-overheat`/`safety-battery-oil` klipleri), cognitive/kernel-hatada offline'a düşer (fail-closed). **POST-GATE** (`verifyResponse`) online CHAT cevabını doğrular: kritik bağlamda tamamen atıp deterministic ile değiştirir · driveSafe=false'ta yanlış rahatlatma/telemetri çelişkisini reddeder · VIN/koordinat/JSON sızıntısını temizler · sürüşte kısaltır (≤200) parkta uzun (≤400). severity/driveSafe/diagnostic kararı DEĞİŞMEZ (yalnız okunur); online model kararı YÜKSELTEMEZ. `companionChatProvider`'a iki kanca (PRE/POST), **sağlayıcı sırası (Gemini→Groq→Haiku) ve grounding DEĞİŞMEZ**; xAI Grok/router/offline sohbet YOK. Girdi mutate edilmez, fail-soft, zero-alloc dostu. | `assistant/assistantSafetyKernel.ts` (yeni), `companion/companionChatProvider.ts` (PRE/POST wrapper + `companion_safety` route; iç zincir `runCompanionBrain`/`runCompanionChat`'e `allowOnline` geçidi), `assistantSafetyKernel.test.ts` (yeni, 30 test) | Gerçek araçta: (1) kritik hararet durumunda asistana soru sorulunca **online çağrı YAPILMAZ** (ağ log'unda istek yok) + deterministic güvenlik mesajı gelir; (2) online model "önemli değil/güvenle devam" dese bile kullanıcıya GEÇMEZ; (3) driveSafe/severity kararı değişmez; (4) TTS güvenlik mesajı gecikmeden çalar; (5) BASIC_JS tier'da FPS/CPU regresyonu yok; (6) kritik olmayan normal sohbet eskisi gibi online'a gider (sağlayıcı sırası korunur). ⚠️ Test edilmeden 🟢'a çekme. | 2026-07-10 |
| 26 | **🔴 Device Validation Pending — Evidence Write Bridge (P2-6)** — P2-1→P2-5 öğrenme katmanları kuruldu ama Evidence Store'a runtime YAZICI yoktu (Integration Service yalnız `list()` okuyordu) → learning rozetleri / Expert özeti / diagnostic learning context BOŞ kalıyordu. Bu köprü eksik write-path'i bağlar: VKB güncellenince (discovery gözlemi + VID kimlik değişimi abonelikleri, debounce'lu cold-path) `vehicleLearningEngine.computeEvidence()` çağrılır → üretilen kanıtlar Evidence Store'a `save()` (idempotent reproject — createdAt korunur, observationCount ŞİŞMEZ, vehicleCount distinct) ile yazılır → Pattern/Integration Service `list()` ile okuyabilir. 3Hz OBD hot-path'e GİRMEZ; yalnız anlamlı kimlik/discovery değişiminde tetiklenir; BALANCED/HIGH 8sn, BASIC_JS(low) 20sn debounce; kapanışta flush + dispose; fail-soft (köprü hatası OBD/Discovery'ye SIZMAZ); bounded(store 512 LRU) + throttle'lı yazma + zero-leak. Confidence/decay/pattern-promotion FORMÜLLERİ · Discovery capture/queue · Fingerprint · Auto Learning · VKB · Manufacturer Intelligence · Diagnostic safety/severity/driveSafe · PID/DID registry DEĞİŞMEZ. Cloud/SQL/LLM/Native YOK. | `vehicleLearningEvidenceBridge.ts` (yeni), `system/SystemBoot.ts` (VKB'den SONRA cold-path wiring, `_reg` cleanup), `vehicleLearningEvidenceBridge.test.ts` (yeni, 12 test) | Gerçek araçta: (1) discovery sonrası Evidence Store DOLUYOR (list() boş değil); (2) uygulama restart sonrası evidence geri geliyor (kalıcı); (3) Dashboard learning rozeti görünüyor; (4) Expert "Araç Öğrenme" sayıları >0; (5) Diagnostic learning context doluyor; (6) duplicate gözlem vehicleCount'i ŞİŞİRMİYOR (distinct fingerprint); (7) BASIC_JS tier'da FPS/CPU regresyonu YOK (seyrek debounce + cold-path). ⚠️ Test edilmeden 🟢'a çekme. | 2026-07-10 |
Expand Down
Loading
Loading