Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 |
|---|---------|--------|------------------------------------------|---------|
| 40 | **🔴 Device Validation Pending — Platform Kernel / Service Lifecycle Foundation** — Platform servislerinin (Vehicle HAL · Capability Registry · Event Bus · Deep Scan · Navigation · AI · Fleet · Remote · Health · Vision) yaşam döngüsünü, bağımlılıklarını, başlatma/durdurma SIRASINI, sağlık durumunu ve HATA İZOLASYONUNU yöneten merkezi çekirdek. ⚠️ **KOD GERÇEĞİ (salt-okunur analiz):** lifecycle ≥3 desende parçalı — SystemBoot "Wave 1-4"+LIFO cleanup+named restart (MAX_RESTARTS=2, BACKOFF_BASE 5s, COOLOFF 5dk); modül-düzeyi startX/stopX; servis-içi _listeners/_reg. ORTAK descriptor/bağımlılık/health/circuit modeli YOK → Kernel doldurur (gerçek servisleri BAĞLAMADAN, yalnız DI). **Model:** 11 state (registered→initializing→ready→starting→running/degraded/paused→stopping→stopped/failed/disposed) · 6 criticality · 6 startPolicy · 4 restartPolicy · 4 health. **Descriptor:** id/version/criticality/dependencies/optionalDependencies/requiredCapabilities/minimumDeviceTier/startPolicy/restartPolicy/init·start·stopTimeoutMs/owner/experimental. **Service contract:** init/start/pause/resume/stop/health/dispose HEPSİ opsiyonel (eksik→no-op). **API:** register/unregister/has/getServiceStatus/list/resolveStartOrder/initialize/start/startAll/pause/resume/stop/stopAll/restart/markDegraded/runHealthCheck/getKernelSnapshot/subscribe/reset/dispose. **Dependency:** directed-acyclic; **cycle kayıt anında reddedilir**; topolojik başlatma (tie-break=id), **ters topolojik durdurma**; eksik required→başlamaz; eksik optional→degraded başlar; dependency failed→dependent bloke. **Gate (DI):** Capability Registry DOĞRUDAN import EDİLMEZ (isAvailable/getStatus/subscribe contract); required unknown/unavailable→başlamaz; degraded→degraded başlar; **minimumDeviceTier sağlanmazsa başlamaz** (Mali-400/low'da optional ağır servis GATE). **Timeout:** proje 5s konvansiyonundan türetildi (magic yok); timer YALNIZ aktif lifecycle çağrısı boyunca (settle'da temizlenir); **steady-state timer/polling YOK**. **Restart/circuit:** never/manual/on_failure/bounded_auto; bounded (safety=1, diğer=2); max aşımında **circuit-open**; **retry timer döngüsü YOK** (backoff yalnız saf `computeKernelBackoffMs` contract). **Health:** service.health() varsa çağrılır (fail-soft), yoksa state'ten türetilir; result state'i MUTATE ETMEZ. **Event (DI opsiyonel):** publishName ile platform.runtime.started/stopped/degraded · platform.service.started/stopped/failed; **Event Bus yoksa lifecycle sürer**, publish hatası izole. **Fail-soft:** servis exception izole, bir servis düşse bağımsızlar sürer, public API throw etmez, unknown servis güvenli, dispose sonrası no-op, partial-start+stopAll güvenli. **Immutable** snapshot/status (nested dahil), descriptor girdi mutate edilmez, iç Map/graph dışa verilmez. **Privacy:** degradedReasons/lastErrorCode sanitize (VIN/MAC/koordinat/secret sızmaz). **YALIN:** SystemBoot'a BAĞLANMAZ · gerçek servisleri auto-start ETMEZ · HAL/Registry/Bus'ı KENDİSİ YARATMAZ (DI) · persistence/SQL/cloud YOK · global singleton YOK · yeni bağımlılık YOK · import yan etkisiz (yalnız DeviceTier TYPE). Kernel servis iş mantığını BİLMEZ. Bounded (servis 128 · listener 32). **Gerçek servis wiring · SystemBoot wiring AYRI PR.** | `platform/kernel/platformKernel.ts` (yeni), `platform/kernel/index.ts` (yeni), `__tests__/platformKernel.test.ts` (yeni, ~53 test) | Gerçek cihazda (gerçek servis wiring PR'ı bağlandıktan SONRA): (1) servisler dependency SIRASIYLA başlıyor; (2) stop sırasında TERS sırayla kapanıyor; (3) bir servis çökünce bağımsız servisler çalışmaya devam ediyor; (4) capability/DeviceTier olmayan servis başlatılmıyor; (5) Mali-400 cihazda ağır optional servisler gate ediliyor; (6) lifecycle timeout ve cleanup sonrası timer/listener sızıntısı yok; (7) kernel snapshot servis durumlarını doğru gösteriyor; (8) BASIC_JS/Mali-400'de sürekli CPU/RAM yükü yok (steady-state timer yok, pasifken sıfır yük). ⚠️ **Gerçek servis + SystemBoot wiring AYRI PR.** Test edilmeden 🟢 yapma. | 2026-07-11 |
| 39 | **🔴 Device Validation Pending — Platform Core Event Bridge Foundation** — Vehicle HAL ve Capability Registry'deki GERÇEK değişiklikleri tip-güvenli, bounded, SALT-OKUNUR biçimde Platform Event Bus'a aktaran İKİ köprü. **Vehicle:** `createVehicleHalEventBridge({hal,bus})` — HAL `subscribe` TAM snapshot verir (per-signal delta yok); köprü snapshot'ı kendi son-değer haritasıyla DIFF'leyip yalnız değişen supported sinyalleri yayınlar. `vehicle.signal.changed` **TRANSIENT** (history dışı, küçük payload: signalId/value özeti/quality/confidence/source/stale/supported/timestamp; **full HAL snapshot/raw CAN TAŞINMAZ**; O(1) dedup, hot-path allocation yok). `vehicle.ignition.changed` (retained) yalnız ignition supported+boolean değişince — **foundation'da ignition kaynağı YOK→supported=false→ASLA yayınlanmaz**. `vehicle.connection.changed` (retained) "en az bir supported sinyal" geçişinde (HAL'e dayalı gerçek olgu; veri yoksa false→SESSİZ). `vehicle.identity.changed` (retained) yalnız identity.supported (fingerprint) değişince (ham fingerprint yalnız metadata, payloadta DEĞİL). `vehicle.health.changed` YAYINLANMAZ (HAL'de health kaynağı yok→uydurulmaz). **Capability:** `createCapabilityEventBridge({registry,bus})` — Registry change event yalnız `{type,id,revision,at}` verir; köprü record'u `getCapability(id)` ile çeker. `capability.record.registered/changed/removed` (changed imza-dedup: aynıysa event yok); `capability.snapshot.changed` **RETAINED, küçük payload** {revision, counts, changedIds(bounded)} — **full registry TAŞINMAZ**; sayımlar start'ta BİR KEZ `createSnapshot()` ile tohumlanır, sonra INCREMENTAL O(1) (**değişiklik başına snapshot allocation YOK**); record payload whitelist (id/domain/status/available/quality/confidence/source/stale/reason/limitations bounded, Registry'ce zaten sanitize). **Ortak:** start/stop/dispose İDEMPOTENT; tek abonelik; **kaynakların SAHİBİ DEĞİL→dispose HAL/Registry/Bus'ı dispose ETMEZ**; dispose sonrası callback no-op; publishedCount/droppedCount (Bus reddi/publish hatası→droppedCount, kaynak servis etkilenmez); fail-soft (HAL/Registry subscribe hatası, tek bozuk signal/record izole, public API throw etmez); privacy (VIN/MAC/koordinat/ham CAN/anahtar event'e girmez); immutable payload; katalog event isimleri; HAL/Registry/Bus'ı DOĞRUDAN import ETMEZ (yalnız TYPE→import yan etkisiz); **timer/polling YOK, yeni bağımlılık YOK, global singleton YOK**. Güvenlik KARARI üretmez (yalnız taşır); Event Bus recursion/priority/bounded kuralları DEĞİŞMEZ. **SystemBoot wiring · provider adapter auto-start · Platform Kernel wiring YOK — AYRI PR.** | `platform/eventBus/bridges/vehicleHalEventBridge.ts` (yeni), `platform/eventBus/bridges/capabilityEventBridge.ts` (yeni), `platform/eventBus/bridges/index.ts` (yeni), `platform/eventBus/index.ts` (export), `__tests__/vehicleHalEventBridge.test.ts` (yeni, ~24 test), `__tests__/capabilityEventBridge.test.ts` (yeni, ~24 test) | Gerçek cihazda (SystemBoot/Platform Kernel wiring PR'ı köprüleri gerçek HAL/Registry/Bus'a bağladıktan SONRA): (1) gerçek araç sinyal değişiklikleri Event Bus'a **duplicate olmadan** ulaşıyor; (2) 3 Hz sinyaller (vehicle.signal.changed transient) history/RAM ŞİŞİRMİYOR; (3) capability değişiklikleri doğru event'lerle (registered/changed/removed/snapshot) yayınlanıyor; (4) kaynağı olmayan ignition/connection event'i UYDURULMUYOR (foundation'da sessiz); (5) listener/publish hatası HAL veya Registry'yi ETKİLEMİYOR (droppedCount artar); (6) stop/dispose sonrası abonelik sızıntısı yok; (7) BASIC_JS/Mali-400'de CPU/FPS regresyonu yok (O(1) dedup, timer yok, full snapshot allocation yok, pasifken sıfır yük). ⚠️ **SystemBoot/Platform Kernel wiring AYRI PR.** Test edilmeden 🟢 yapma. | 2026-07-11 |
| 38 | **🔴 Device Validation Pending — Platform Core Real Providers Foundation** — Vehicle HAL Provider Adapter ve Capability Provider Adapter için İLK gerçek, SALT-OKUNUR provider implementasyonları. **Vehicle:** `createUnifiedVehicleStoreProvider({store})` mevcut `useUnifiedVehicleStore`'u (fused worker/CAN/OBD/GPS) adapter'ın `VehicleStoreSource`'ına (getSnapshot/subscribe) uyarlar — store SALT-OKUNUR, her snapshot YENİ dondurulmuş alt-küme (speed/rpm/fuel/odometer/reverse + CAN extras), `rpm undefined→null`, **TPMS yalnız gerçek 4-elemanlı numerik veri varsa**, **ignition EXPOSE EDİLMEZ** (kaynak yok), metadata UYDURULMAZ; store DOĞRUDAN import EDİLMEZ (yapısal DI→import yan etkisiz); provider oluşturulmadan abone OLMAZ; subscribe idempotent unsub + dispose zero-leak. **Capability:** `createRuntimeCapabilityProviders({env,probes})` yalnız KANITLANABİLİR provider üretir. **Kanıt sınıfı:** browser-API presence (geolocation/mediaDevices/bluetooth) → `degraded`/düşük conf (donanım KESİNLEŞMEZ), API yok→unknown; `navigator.connection.type` kesin wifi/cellular→available, aksi unknown; mikrofon izin granted olmadıkça available DEĞİL (denied→restricted); native secure storage authoritative→available/yüksek conf; modül runtime (deep_scan/vehicle_learning/assistant_context/ota/safety_kernel/offline_commands/offline_conversation/push/cloud_commands): **modül var ama runtime bağlı değil→degraded/experimental**, runtime hazır→available, yok→unknown; AI BYOK (gemini/groq/claude/cloud): configured+usable→available, configured→degraded, değil→unavailable; offline map/routing gerçek paket/graf yoksa→unavailable. **KAYNAK YOK:** `ai.grok`(xAI entegrasyonu yok→provider HİÇ ÜRETİLMEZ), `ai.local_model`(gerçek yerel LLM yok→yalnız high-tier+probe, low/mid'de OLUŞTURULMAZ). **Runtime readiness ≠ module existence** (dosya/export var tek başına available DEĞİL). Fabrikalar DI; **global singleton YOK**; probe/navigator yalnız `read()`'te (fabrika yan etkisiz); ağır modül IMPORT YOK (yalnız TYPE); timer/polling YOK; her read try/catch (throw etmez); sonuçlar dondurulmuş; privacy (VIN/MAC/anahtar probe payload'ından sızmaz). **SystemBoot wiring · Event Bus publish · Registry auto-start · UI · Assistant Context değişikliği YOK — hepsi AYRI PR.** | `platform/vehicleHal/providers/unifiedVehicleStoreProvider.ts` (yeni), `platform/vehicleHal/providers/index.ts` (yeni), `platform/vehicleHal/index.ts` (export), `platform/capability/providers/runtimeCapabilityProviders.ts` (yeni), `platform/capability/providers/index.ts` (yeni), `platform/capability/index.ts` (export), `__tests__/unifiedVehicleStoreProvider.test.ts` (yeni, ~16 test), `__tests__/runtimeCapabilityProviders.test.ts` (yeni, ~38 test) | Gerçek cihazda (SystemBoot/Registry/HAL wiring PR'ı bağlandıktan SONRA): (1) gerçek araç state'i (hız/RPM/soğutma/yakıt/voltaj) Vehicle HAL Provider Adapter'a doğru aktarılıyor; (2) GPS/Bluetooth/Wi-Fi/cellular capability sonuçları gerçek cihaz API'leriyle uyumlu; (3) izni olmayan özellik (mikrofon) available GÖRÜNMÜYOR; (4) secure storage yalnız gerçek native kanıtla available; (5) Grok/local model/offline map olmayan cihazda available GÖRÜNMÜYOR (grok provider bile yok); (6) provider stop/dispose sonrası subscription sızıntısı yok; (7) BASIC_JS/Mali-400'de CPU/RAM regresyonu yok (fabrika yan etkisiz, timer yok, pasifken sıfır yük). ⚠️ **SystemBoot/Event Bus wiring AYRI PR.** Test edilmeden 🟢 yapma. | 2026-07-11 |
| 37 | **🔴 Device Validation Pending — Capability Provider Adapter Foundation** — Gerçek runtime/cihaz/platform kanıtlarını SALT-OKUNUR biçimde Capability Registry kayıtlarına aktaran provider adapter köprüsü (gerçek kanıt → adapter → Registry). ⚠️ **KOD GERÇEĞİ (salt-okunur analiz):** doğrulanabilir kaynaklar sınırlı — `deviceCapabilities`(WebGL/CSS/SAB/cores browser probe→device/platform) · `vehicleHal.getCapability/hasSignal`(araç sinyali, foundation'da hepsi false) · browser API(gps/mic/bluetooth/storage → yalnız "API var", donanım erişimini KESİNLEŞTİRMEZ) · config/lisans(oem.*/ai-provider BYOK anahtarı). **Runtime kaynağı HİÇ YOK:** `vehicle.ignition`(kontak kaynağı yok)·`ai.grok`(xAI yok)·`navigation.offline_map`(tile paketi yoksa) → unknown/unavailable KALIR. UI/dosya/modül varlığı kanıt DEĞİL. **Adapter:** donanımı DOĞRUDAN taramaz — yalnız DI `providers`'ı okur (foundation'da YERLEŞİK gerçek provider YOK; gerçek prob'lar ayrı wiring PR'ı). **Provider sözleşmesi:** `{id, domain, source, authoritative?, refreshPolicy?, read()}` (read sync/async, kaynak yoksa null). Provider sonucu→Registry evidence'ına normalize→`resolveCapability(id, evidence, domain)` (status'ü REGISTRY çözer — karar kuralları DEĞİŞMEZ). **YALNIZ değişeni günceller** (imza-tabanlı dedup→duplicate Registry update yok, O(1)). **API:** start/refresh/refreshProvider/stop/getStatus/getLastRefreshAt/getProviderResults/reset/dispose. **Refresh:** start'ta ilk refresh + açık çağrı; **steady-state timer/polling YOK**; provider'lar PARALEL (`Promise.allSettled` → biri diğerini bloke etmez); opt-in DI timeout (settle'da temizlenir→leak yok), timeout/hata/null→güvenli **unknown**. **DeviceTier:** varlık uydurmaz — Registry tier engelini uygular (low'da ai.local_model restricted); high tier kanıtsız açmaz. **Fail-soft:** provider throw/Registry update hatası izole, public API throw etmez, dispose sonrası no-op. **Gizlilik:** provider/details/reason sanitize (VIN/MAC/koordinat/secret/API-key sızmaz). **Immutable:** getProviderResults dondurulmuş kopya (nested dahil), girdi mutate edilmez. **YALIN:** Registry'yi DOĞRUDAN import ETMEZ (yapısal DI + type-only import→import yan etkisiz); Event Bus'a yayınlamaz; SystemBoot'a bağlanmaz; persistence/cloud yok; native tarama/OBD-CAN sorgusu yok; yeni bağımlılık yok; provider bounded 128. Registry'nin SAHİBİ DEĞİL→dispose Registry'yi dispose etmez. | `platform/capability/capabilityProviderAdapter.ts` (yeni), `platform/capability/index.ts` (export), `__tests__/capabilityProviderAdapter.test.ts` (yeni, 41 test) | Gerçek cihazda (gerçek provider wiring PR'ı bağlandıktan SONRA): (1) GPS/Bluetooth/Wi-Fi/kamera capability'leri doğru doğrulanıyor (native kanıtla available); (2) donanımı olmayan özellik available GÖRÜNMÜYOR; (3) gerçek kontak kaynağı olmayan cihazda `vehicle.ignition` unknown kalıyor; (4) TPMS kaynağı olmayan araçta available görünmüyor; (5) provider hatası Registry'yi/diğer provider'ları çökertmiyor; (6) aynı kanıt tekrarında duplicate capability update yok; (7) BASIC_JS/Mali-400'de CPU/RAM regresyonu yok (O(1) dedup, timer yok, paralel bounded read). ⚠️ **Gerçek provider implementasyonları · Event Bus · SystemBoot wiring · persistence AYRI PR'lar.** Test edilmeden 🟢 yapma. | 2026-07-11 |
Expand Down
Loading
Loading