Skip to content

feat(vehicle): Otomatik Öğrenme Motoru Temeli (PR-27)#27

Merged
selimmujdeci merged 3 commits into
mainfrom
feat/auto-learning-engine
Jul 9, 2026
Merged

feat(vehicle): Otomatik Öğrenme Motoru Temeli (PR-27)#27
selimmujdeci merged 3 commits into
mainfrom
feat/auto-learning-engine

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Amaç

Vehicle Fingerprint (PR-25/26) ile Discovery (PR-DISC) sistemini birleştirir. Sistem, bir araçta tekrar görülen katalog-dışı PID/DID'leri o aracın parmak izine bağlayarak öğrenmeye başlar → kendi kendini geliştiren yerel bilgi tabanının çekirdeği. Bu PR yalnızca öğrenme altyapısını kurar.

⚠️ STACKED PR: PR #25 (foundation) → PR #26 (auto builder) → PR #27 zinciri. Base bilerek feat/automatic-vehicle-fingerprint (PR #26) seçildi → temiz incremental diff. Merge sırası: #25#26#27. #26 main'e merge olunca bu PR otomatik main'e retarget olur.

Kapsam — AutoLearningEngine

  • Discovery gözlemlerini dinler (SALT-OKUNUR: subscribe/getObservations)
  • Gözlemleri, o an bağlı aracın fingerprint'ine eşler + PID/DID öğrenir
  • PID/DID Learning: yeni sinyalde firstSeen oluştur · lastSeen güncelle · seenCount artır · confidence artır
  • VIN Merge: PR-26'daki staged durumu çözer — VIN'siz oluşmuş fingerprint sonradan VIN gelince aynı araç anlaşılırsa otomatik merge, duplicate bırakmaz
  • Local knowledge: her fingerprint içinde discoveredPids · discoveredDids · firstSeen · lastSeen · seenCount · confidence

Yeni dosyalar

Dosya İçerik
src/platform/autoLearningEngine.ts Öğrenme motoru: apply/merge/isLikelySameVehicle (saf) + AutoLearningEngine (abonelik)
src/__tests__/autoLearningEngine.test.ts 17 unit test

Değişen dosyalar (additive)

Dosya Değişiklik
src/platform/system/SystemBoot.ts Wave-3'e startAutoLearningEngine() + _reg cleanup (tek satır, mevcut pattern)

Foundation (vehicleFingerprintService) ve builder (vehicleFingerprintBuilder) değişmedi — bilgi katmanı depoda JSON olarak şeffaf saklanır (Clean Arch).

Testler (17)

✓ Aynı PID tekrar → seenCount↑ · ✓ Aynı DID tekrar → seenCount↑ · ✓ confidence↑ · ✓ VIN merge çalışıyor · ✓ duplicate fingerprint kalmıyor · ✓ firstSeen korunuyor · ✓ lastSeen güncelleniyor · ✓ farklı araçlar birleşmiyor · ✓ fail-soft · ✓ OBD/Discovery akışı etkilenmiyor (salt-okunur) + saf yardımcılar (deriveConfidence/apply/merge/isLikelySameVehicle) + zero-leak stop.

Risk analizi

Düşük — tamamen additive.

  • Fail-soft: öğrenme çökse bile OBD / Discovery / Fingerprint akışları aynen sürer (hata sızmaz; testle kilitli).
  • Salt-okunur: discovery capture/queue/observation davranışı değişmez (testle doğrulandı).
  • Zero-leak: discovery + VID abonelikleri boot _reg cleanup'ta.
  • Yerel: cloud sync / AI yok.
  • Dokunulmadı: native OBD · poll · Discovery Queue/Capture · PID/DID Registry · SQL/Supabase · cloud sync · PR feat(diag): support snapshot — remote logs, OBD lifecycle, thermal/connectivity diagnostics #11.

Doğrulama

  • tsc --noEmit temiz · eslint temiz
  • 2437 test yeşil (17 yeni dahil) — yalnız 23 bilinen env-gated hata (Supabase/OTA/keyBeam, ilgisiz)

Saha doğrulama

🔴 Cihazda doğrulanmadı — gerçek araçta tekrar bağlanışlarda PID/DID öğrenimi + VIN merge gözlemlenmeli.

Merge YAPILMADI.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX

Vehicle Fingerprint (PR-25/26) ile Discovery'yi (PR-DISC) birleştirir: sistem, bir
araçta tekrar görülen katalog-dışı PID/DID'leri o aracın parmak izine BAĞLAYARAK
öğrenmeye başlar → kendi kendini geliştiren YEREL bilgi tabanının çekirdeği.

- autoLearningEngine.ts (yeni):
  * VehicleKnowledge = fingerprint ÜSTÜNE discoveredPids/discoveredDids
    (her sinyal: firstSeen/lastSeen/seenCount/confidence)
  * applyObservationsToKnowledge: discovery gözlemlerini bilgiye işler (idempotent
    mirror — firstSeen korunur, lastSeen/seenCount/confidence güncellenir)
  * isLikelySameVehicle + mergeKnowledge: PR-26 "staged VIN" çözümü — VIN'siz kayıt
    VIN gelince aynı araç anlaşılırsa OTOMATİK merge, duplicate bırakmaz
  * AutoLearningEngine: discovery + useVidStore aboneliği, FAIL-SOFT
- SystemBoot Wave-3: startAutoLearningEngine() additive wiring + _reg cleanup

Yalnız YEREL bilgi (cloud/AI YOK). Dokunulmadı: native OBD · poll · Discovery
Queue/Capture · PID/DID Registry · SQL/Supabase · cloud sync. Foundation/builder
tipleri DEĞİŞMEDİ (bilgi katmanı depoda JSON olarak şeffaf saklanır).

17 yeni test (seenCount/confidence↑ · VIN merge · duplicate yok · firstSeen korunur ·
lastSeen güncellenir · farklı araçlar birleşmez · fail-soft · OBD/Discovery salt-okunur).

tsc temiz · eslint temiz · 2437 test yeşil (yalnız 23 bilinen env-gated, ilgisiz)

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

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

Selim and others added 2 commits July 9, 2026 23:55
AutoLearningEngine constructor'ı açık field+atama (erasableSyntaxOnly). Ayrıca tsc -b
ile açığa çıkan latent TS2345: store.load()'un döndürdüğü kayıt VehicleKnowledge olarak
işaretlenir (depoda öyle saklanıyor) — davranış AYNI. (#26 fix merge-forward ile devralındı.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX
selimmujdeci pushed a commit that referenced this pull request Jul 9, 2026
… (PR-28)

VehicleKnowledgeBase constructor'ı açık field+atama (erasableSyntaxOnly / tsc -b).
Davranış AYNI. (#27'ye kadar olan fix'ler merge-forward ile devralındı.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX
@selimmujdeci selimmujdeci changed the base branch from feat/automatic-vehicle-fingerprint to main July 9, 2026 21:04
@selimmujdeci selimmujdeci reopened this Jul 9, 2026
@selimmujdeci selimmujdeci merged commit 880da66 into main Jul 9, 2026
8 checks passed
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