Skip to content

feat(deep-scan): W5-3c-1 — Safe Offline Change Detection Handler#86

Merged
selimmujdeci merged 1 commit into
mainfrom
feat/deep-scan-offline-change-detection
Jul 13, 2026
Merged

feat(deep-scan): W5-3c-1 — Safe Offline Change Detection Handler#86
selimmujdeci merged 1 commit into
mainfrom
feat/deep-scan-offline-change-detection

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

W5-3c-1 — Safe Offline Change Detection Handler

Deep Scan offline pass için İLK gerçek değer üreten handler. Yalnız handler eklenir — trigger/wiring değişmez, handler henüz pass'e bağlı değildir (W5-3c-2 adapter + W5-3c-3 bağlama ayrı PR).

Ne yapar

createOfflineChangeDetectionHandler() (fabrika; bağımlılıklar closure ile enjekte) → ÖNCEDEN-VAROLAN iki baseline'ın ECU kümesi farkını hesaplar → changedEcu.

  • PRIOR baseline = son TAM taramanın diske yazılı çıktısı (deepScanPersistence.load ile beslenecek — ayrı PR)
  • CURRENT baseline = pasif öğrenilmiş gözlem (vehicleKnowledgeBase.get ile beslenecek — ayrı PR)

Aktif sorgu YOK

İki küme de zaten elde olan veri. Araca tek CAN frame / OBD isteği / ECU-PID-DID sorgusu gönderilmez.

Saf + izole

  • Handler deepScanPersistence/vehicleKnowledgeBase/runtime/native/HAL/EventBus'i doğrudan import etmez (yalnız PhaseContext/PhaseResult tip import'u).
  • PhaseHandler sözleşmesi + PhaseContext değişmez.
  • Fail-closed: parmak izi yok / baseline eksik (null) / baseline boş → değişim iddia edilmez (changedEcu=false, kategori reason). Persistence ECU listesi opsiyonel → boş baseline olağan; bunu "değişti" saymak sahte pozitif olurdu → baseline_incomplete.
  • changedFirmware daima false (dürüst — pasif firmware kaynağı yok, ayrı PR).

Bounded + immutable çıktı

Yalnız {status, changedEcu, changedFirmware, reason(kategori)}. Ham ECU/PID/DID listesi, firmware sürümü, VIN, GPS, secret, parmak izi hash'i taşımaz.

Koruma bandı (uçtan uca kanıtlı)

completeScan/_finalize/_applyResult aktif-kayıt yolu / runtime aktif-kayıt API'leri (recordEcuDiscovery vb.) / saveSnapshot çağrılmazhasCompletedFullScan/completedScanCount/changeCheckCount değişmez; runtime.reset() korunur (gerçek runOfflinePass ile koşturulan uçtan uca testte doğrulandı). Trigger/wiring değişmedi; Event Bus/Capability/Assistant/Driver DNA/Prediction/Diagnostic section/SQL/Native/OBD/CAN/HAL'e dokunulmadı.

Doğrulama

  • tsc -b --noEmit temiz · ESLint 0 error
  • 21 yeni test · deep scan suite 226 · tam suite 3841 yeşil (211 dosya) · Production Build OK

Değişen dosyalar

Ledger

W5-3c-1 🔴 — bu PR yalnız handler ekler · trigger değişmedi · wiring değişmedi · aktif discovery yok · hiçbir ECU/PID/DID sorgusu gönderilmiyor · Mali-400 cihaz doğrulaması bekliyor.

Bilinen riskler

  • Cihaz doğrulaması yapılmadı → ledger 🔴 (host testleri kodu kanıtlar, saha davranışını değil).
  • Handler henüz üretimde çağrılmıyor (pass'e bağlama W5-3c-3); gerçek fayda adapter (W5-3c-2) + bağlama sonrası çıkar.
  • changedFirmware bilinçli false — firmware değişimi tespiti bu PR kapsamı dışı.

🤖 Generated with Claude Code

…, çağrılmayan)

Deep Scan offline pass için İLK gerçek değer üreten handler:
createOfflineChangeDetectionHandler() — fabrika, bağımlılıklar closure ile enjekte.
ÖNCEDEN-VAROLAN iki baseline'ın ECU kümesi farkını hesaplar → changedEcu.

Aktif sorgu YOK: iki küme de zaten elde olan veri (prior = deepScanPersistence.load,
current = vehicleKnowledgeBase.get — ADAPTER ayrı PR). Araca tek CAN frame / OBD
isteği / ECU-PID-DID sorgusu gönderilmez.

Saf + izole:
- Handler persistence/knowledge-base/runtime/native/HAL/EventBus'i DOĞRUDAN import
  ETMEZ (yalnız PhaseContext/PhaseResult tip import'u).
- PhaseHandler sözleşmesi + PhaseContext DEĞİŞMEZ.
- Fail-closed: parmak izi yok / baseline eksik / baseline boş → değişim iddia edilmez
  (sahte pozitif yok; persistence ECU listesi opsiyonel → boş baseline olağan).
- changedFirmware DAİMA false (dürüst — pasif firmware kaynağı yok, ayrı PR).

Bounded + immutable çıktı: yalnız {status, changedEcu, changedFirmware, reason}.
Ham ECU/PID/DID listesi, firmware sürümü, VIN, GPS, secret, parmak izi hash'i taşımaz.

Koruma bandı (uçtan uca kanıtlı): completeScan/_finalize/_applyResult aktif-kayıt yolu /
runtime aktif-kayıt API'leri / saveSnapshot çağrılmaz → hasCompletedFullScan /
completedScanCount / changeCheckCount değişmez; runtime.reset korunur. Trigger/wiring
DEĞİŞMEDİ; Event Bus/Capability/Assistant/Native/OBD/CAN/HAL'e dokunulmadı.

Doğrulama: 21 yeni test; tam suite 3841 yeşil (211 dosya); tsc -b --noEmit temiz;
lint 0 error; production build OK.

Ledger: W5-3c-1 🔴 (yalnız handler · trigger/wiring değişmedi · aktif discovery yok ·
ECU/PID/DID sorgusu yok · Mali-400 doğrulaması bekliyor).

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

vercel Bot commented Jul 13, 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 13, 2026 9:55am
carospro Ready Ready Preview, Comment Jul 13, 2026 9:55am

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