Skip to content

feat(deep-scan): W5-3b — Offline Pass Trigger + Runtime Wiring + Minimal Diagnostics#85

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

feat(deep-scan): W5-3b — Offline Pass Trigger + Runtime Wiring + Minimal Diagnostics#85
selimmujdeci merged 1 commit into
mainfrom
feat/deep-scan-offline-trigger

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

W5-3b — Deep Scan Offline Pass Trigger + Runtime Wiring + Minimal Diagnostics

Stacked on #84 (W5-3a). Base geçici olarak feat/deep-scan-offline-run-surface; #84 main'e merge olunca bu PR otomatik main'e retarget olur ve diff yalnız W5-3b kalır.

W5-3a'daki runOfflinePass() İLK kez üretim wiring'ine bağlanır. Bu PR yalnız çağrılabilir altyapıyı kurar — gerçek offline analiz / aktif discovery / handler hâlâ ÇALIŞMAZ.

Ne eklendi

  • triggerDeepScanOfflinePass()tek deterministik giriş noktası (hash/dedup guard + single-flight).
  • cancelDeepScanOfflinePass() — yürüyen pass'i iptal (fail-soft).
  • getDeepScanOfflinePassStatus()bounded + immutable teşhis.
  • SystemBoot Wave 3 trigger (Wave 2 ownership KURULDUKTAN SONRA), fire-and-forget (void … .catch → boot bloklanmaz).

Guard (deterministik, tek çalışma)

  • Aynı guard anahtarı (varsayılan deepscan.offline.boot) EN FAZLA bir kez pass başlatır → duplicate YOK.
  • Yürüyen pass varken ikinci tetik reddedilir → single-flight.
  • Wiring restart'ında guard doğal sıfırlanır (durum wiring örneğine bağlı).

Üretim davranışı DEĞİŞMEZ

  • Handler GEÇİLMEZ → tüm offline fazlar skippedgerçek iş yapılmaz.
  • change detection / knowledge / fingerprint / evidence / report ÇALIŞMAZ.
  • Aktif ECU/PID/DID/Firmware sorgusu YOK — runtime aktif-kayıt API'leri hiç çağrılmaz (gerçek zincir testiyle kanıtlı).
  • runtime idle → running → idle (pass sonunda runtime.reset() W5-3a garantisi).

Ownership korunur

OwnedOrchestrator offline runOfflinePass/cancelOfflinePass'i gösterir ama AKTİF tarama API'lerini (start/run/runNextPhase) ASLA göstermez (compile-time garanti). W5-3a'nın 2 kapsam kilidi bu yeni davranışa GÜNCELLENDİ (kaldırılmadı — regresyon kasası kuralı).

Diagnostics modeli (bounded + immutable)

present · started · running · active · cancelled · triggerCount · lastRun · lastDuration · lastResult · lastReason · lastError · phaseCount · summaryAvailable — hepsi primitive/enum/sayı; VIN/GPS/secret/ham CAN-OBD/guard-anahtarı TAŞIMAZ.

Bu PR'da DEĞİŞMEDİ (import bile edilmez)

Event Bus · Capability Registry · HAL · Assistant Context · Driver DNA · Prediction · SQL · Supabase · Native · CAN · OBD.

Doğrulama

  • tsc -b --noEmit temiz · ESLint 0 error
  • Yeni trigger-wiring testleri (25+ senaryo) · tam suite 3820 yeşil (210 dosya) · Production Build OK

Değişen dosyalar

  • src/platform/system/platformCoreDeepScanWiring.ts (OwnedOrchestrator offline yüzey + trigger/cancel/status + bounded state)
  • src/platform/system/SystemBoot.ts (Wave 3 trigger, fire-and-forget)
  • src/__tests__/deepScanOfflineTriggerWiring.test.ts (yeni, 25+ senaryo)
  • src/__tests__/platformCoreDeepScanWiring.test.ts (fake offline yüzey)
  • src/__tests__/deepScanOfflinePass.test.ts (2 kapsam kilidi güncellendi)
  • docs/DEVICE_VALIDATION_LEDGER.md (W5-3b 🔴 perf(map): VisionOverlay AR-kapalı idle render döngüsünü durdur #64)

Ledger

W5-3b 🔴 — gerçek handler yok · gerçek discovery yok · W5-3c değer üreten PR · aktif ECU sorgusu yok · Mali-400 doğrulaması bekliyor (Xiaomi 23090RA98I + low-tier K24/Mali-400/T507).

Bilinen riskler

  • Cihaz doğrulaması yapılmadı → ledger 🔴 (host testleri kodu kanıtlar, saha davranışını değil).
  • getDeepScanOfflinePassStatus henüz diagnosticSections'a eklenmedi (ADB'siz okuma için ayrı küçük PR).
  • Boot delta ölçümü gerçek cihazda doğrulanmalı (fire-and-forget → beklenen ≈0, ölçülmedi).

🤖 Generated with Claude Code

…mal Diagnostics

W5-3a'daki runOfflinePass() İLK kez üretim wiring'ine bağlandı. Tek deterministik
giriş noktası triggerDeepScanOfflinePass() (hash/dedup guard + single-flight) +
cancelDeepScanOfflinePass() + bounded getDeepScanOfflinePassStatus() eklendi;
SystemBoot Wave 3'te (Wave 2 ownership KURULDUKTAN SONRA) fire-and-forget çağrılır.

Davranış DEĞİŞMEZ (yalnız çağrılabilir altyapı):
- Handler GEÇİLMEZ → tüm offline fazlar skipped → GERÇEK İŞ YAPILMAZ.
- change detection / knowledge / fingerprint / evidence / report ÇALIŞMAZ.
- Aktif ECU/PID/DID/Firmware sorgusu YOK (aktif-kayıt API'leri hiç çağrılmaz —
  gerçek zincir testiyle kanıtlı). runtime idle → running → idle (pass sonunda reset).

Guard: aynı guard anahtarı (varsayılan deepscan.offline.boot) EN FAZLA bir kez
pass başlatır (duplicate yok); yürüyen pass varken ikinci tetik reddedilir
(single-flight); restart'ta guard doğal sıfırlanır (durum wiring örneğine bağlı).

Ownership korunur: OwnedOrchestrator offline runOfflinePass/cancelOfflinePass'i
gösterir ama AKTİF tarama API'lerini (start/run/runNextPhase) ASLA göstermez
(compile-time). W5-3a'nın 2 kapsam kilidi bu yeni davranışa GÜNCELLENDİ (kaldırılmadı).

Diagnostics (bounded + immutable): present/started/running/active/cancelled/
triggerCount/lastRun/lastDuration/lastResult/lastReason/lastError/phaseCount/
summaryAvailable — hepsi primitive/enum; VIN/GPS/secret/ham CAN-OBD/guard-anahtarı YOK.

DEĞİŞMEDİ: Event Bus / Capability Registry / HAL / Assistant / Driver DNA /
Prediction / SQL / Supabase / Native / CAN / OBD (wiring bunları import etmez).

Doğrulama: yeni trigger-wiring testleri (25+ senaryo); tam suite 3820 yeşil
(210 dosya); tsc -b --noEmit temiz; lint 0 error; production build OK.

Ledger: W5-3b 🔴 (gerçek handler yok · gerçek discovery yok · W5-3c değer üreten PR
· aktif ECU 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 8:54am
carospro Ready Ready Preview, Comment Jul 13, 2026 8:54am

st.cancelled = summary.cancelled;
st.lastSummaryAvailable = true;
st.lastError = null;
let doneAt = startedAt;
@selimmujdeci selimmujdeci merged commit a884e3f into main Jul 13, 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.

2 participants