fix(pl24): bütçe kilitlenmesi, sabitlenmiş browse satırları, Volvo alanları + WMI kapsamı #268

Merged
root merged 6 commits from dev into main 2026-09-20 09:15:26 +03:00
Owner

Faz 2'nin dört maddesi. İlk üçü aynı sınıftan bir arıza: bir kez yazılan durum, kod düzeltmesinin ulaşamadığı yerde çakılı kalıyor. Dördüncüsü yeni kapsam.


1. PL24 prefetch bütçe/pencere kilitlenmesi

Prod'da PL24 prefetch tamamen durmuştu. Günlük bütçe sayacı dolu görünürken gün boyunca sıfır katalog isteği ve sıfır yeni kategori üretiliyordu.

gün pl24 HTTP (katalog) yeni pl24 kategori
09-17 968 3.406
09-18 579 1.504
09-19 425 745
09-20 0 0

Kök neden — kapalı döngü. Günlük bütçe process() içinde düşülüyordu; iş-saati ve cooldown kapıları ise her handler'ın başındaydı. Pencere dışında uyanan iş önce bütçeden bir birim yiyor, sonra hiçbir iş yapmadan erteleniyordu. Üstüne bütçesi biten kaynak "bir sonraki UTC gece yarısı"na, yani 03:00 Europe/Istanbul'a erteleniyordu — PREFETCH_PL24_START=9 penceresi açılmadan altı saat önce. Her gece biriken ertelenmiş işler (ölçüm anında 766 adet, 4 araca yığılmış) taze bütçeyi pencere açılmadan tüketiyordu.

Düzeltme. Kapı sırası artık en ucuzdan pahalıya ve her reddedici kapı sayaçlardan önce: pencere (saf saat aritmetiği, I/O yok) → cooldown → dakikalık tavan → günlük bütçe. alignToWindow() bütçe ertelemesini pencerenin içine hizalıyor; pencere tanımlı değilse no-op. currentIstanbulHour artık h24 döngüsünün gece yarısı için ürettiği "24" değerini % 24 ile normalliyor — aksi halde saat hiçbir pencereye düşmez ve kaynak kalıcı park eder.


2. Sabitlenmiş katalog browse satırları

catalog_vehicles kalıcı bir cache: getModels markanın tek satırı varsa erken dönüyor, fetchVehicleList o marka için bir daha hiç çağrılmıyor. PSA ve Volvo hâlâ P4 iken listelenmiş 188 satır (127 LEGACY_PSA + 61 LEGACY_VOLVO) kalıcı çakılıydı: Peugeot/Citroën browse donmuş 2024-02-13 anlık görüntüsünü, Volvo/Polestar browse HTTP 503 dönen bir ucu sunuyordu.

isStaleBrowseArchitecture() + healStaleBrowseRows() ile marka bir kez yeniden listeleniyor. PR #265'teki VIN tarafı onarmasıyla aynı temkinli kurallar: marka başına günde bir deneme, başarısız/boş listede eski satırlar korunuyor, silme yalnız gerçekten bayat satırlara (karışık serviste zaten taşınmış satırlar onConflictDoNothing yüzünden geri gelmezdi).

Dev'de doğrulandı. Dev'de de hesabı tanımlı olmadığı için tam olarak korumalı dal çalıştı:

[pl24-browse-heal] Peugeot: peugeot_parts listed under a retired architecture — re-listing
[pl24-browse-heal] peugeot_parts: upstream returned no models — keeping 64 stale row(s)
[pl24-browse-heal] Volvo: volvo_parts listed under a retired architecture — re-listing
[pl24-browse-heal] volvo_parts: upstream returned no models — keeping 59 stale row(s)

Uç nokta iki çağrıda da HTTP 200 + 64/59 model döndürdü, satırlar değişmedi, ikinci çağrı günlük kilit (TTL 86.373 s) yüzünden hiç denemedi.


3. Volvo alanları iç kodu dönüyordu

Volvo vinfoBasic aynı özniteliği iki kez veriyor: Şanzıman kodu = "B" ile Şanzıman = "6-PSHIFT 2WD / MPS6", Satis tipi = "42" ile Türü = "S80". VAG için doğru olan kod-önce sırası Volvo'da şanzımanı tek harf, seriyi çıplak sayı yapıyordu. İngilizce yanıtta transmission ve body_style etiketleri hiç aranmıyordu.

lookupDescriptive() listedeki ilk açıklayıcı değeri döner (2 karakterden uzun, salt rakam değil); hiçbiri açıklayıcı değilse ilk mevcut değere düşer, yani yalnız kod üreten backend'ler aynen eskisi gibi davranır.

alan önce sonra
Volvo şanzıman B 6-PSHIFT 2WD / MPS6
Volvo seri 42 S80
Volvo kaporta (EN) null Sedan
PSA şanzıman (EN) null BVM5

PSA Türkçe, Subaru ve diğer markalarda çıktı değişmedi.


4. WMI kapsamı: canlı servis taraması + Renault

Prod'daki 4.799 aracın 1.406'sının WMI'si haritada yoktu. Hangilerinin PL24'te gerçekten karşılığı olduğu tahmin edilmedi — /pl24-wmi/ext/api/2.0/decode servisine gerçek prod VIN'leriyle tek tek soruldu.

Renault yeniden açıldı (450 araç). Kapatma gerekçesinin iki ayağı da prod'a karşı sınandı:

  • Askı kalkmış: /p5renault directAccess, gerçek müşteri aracı VF14SRCL458170337 için VEHICLE_IDENTIFIED + "SYMBOL II/LOGAN II" döndü.
  • Devre kesici artık kesin olumsuz yanıtları saymıyor, yalnız geçici taşıma hatalarını.
WMI servis prod aracı
VF1, VF6, VNE renault_parts 454
NLH, TMA, NLJ, KMF hyundai_parts 170
KNE, KNC kia_parts 39
NMB mercedestrucks_parts 30
MMC, XMC mmc_parts 26
JSA suzuki_parts 11

NMB: servis bunu binek Mercedes'e değil kamyon kataloğuna çözüyor.

Kasıtlı olarak eklenmeyenler — servis HTTP 410 "no brands found for WMI" dedi (NM4 ve VR7 gibi): JHM, SHH, SHS, MAK, NLA (Honda), KL1 (Chevrolet). JMZ (Mazda) 410 değil ama fordp/fordt döndürüyor; marka tutarsız olduğu için eklenmedi. Testler bu "yok" cevaplarını da kilitliyor.

Hacim etkisi yok: bu 730 araç zaten DB'de kayıtlı ve VIN DB'de varsa hiçbir kaynağa gidilmiyor (db_hit). Geçmişe dönük decode fırtınası olmuyor; kazanç bundan sonraki sorgularda.


Test

28 yeni test: prefetch-window-budget.spec.ts (8), catalog-browse-heal.spec.ts (9), pl24-volvo-vinfo.spec.ts (6), pl24.types.spec.ts (+6, "eşlenen her servisin katalog tanımı var" bütünlük testi dahil). api paketi: 623 test geçiyor, tsc temiz, dokunulan dosyalarda biome temiz.

Deploy sonrası

prefetch:daily:pl24:<gün> sıfırlanmalı — o günün sayacı hatalı dolduğu için düzeltme aksi halde ertesi güne kadar devreye giremez.

🤖 Generated with Claude Code

Faz 2'nin dört maddesi. İlk üçü aynı sınıftan bir arıza: **bir kez yazılan durum, kod düzeltmesinin ulaşamadığı yerde çakılı kalıyor.** Dördüncüsü yeni kapsam. --- ## 1. PL24 prefetch bütçe/pencere kilitlenmesi Prod'da PL24 prefetch tamamen durmuştu. Günlük bütçe sayacı dolu görünürken gün boyunca **sıfır** katalog isteği ve **sıfır** yeni kategori üretiliyordu. | gün | pl24 HTTP (katalog) | yeni pl24 kategori | |---|---|---| | 09-17 | 968 | 3.406 | | 09-18 | 579 | 1.504 | | 09-19 | 425 | 745 | | 09-20 | **0** | **0** | **Kök neden — kapalı döngü.** Günlük bütçe `process()` içinde düşülüyordu; iş-saati ve cooldown kapıları ise her handler'ın başındaydı. Pencere dışında uyanan iş önce bütçeden bir birim yiyor, sonra hiçbir iş yapmadan erteleniyordu. Üstüne bütçesi biten kaynak "bir sonraki UTC gece yarısı"na, yani **03:00 Europe/Istanbul**'a erteleniyordu — `PREFETCH_PL24_START=9` penceresi açılmadan altı saat önce. Her gece biriken ertelenmiş işler (ölçüm anında 766 adet, 4 araca yığılmış) taze bütçeyi pencere açılmadan tüketiyordu. **Düzeltme.** Kapı sırası artık en ucuzdan pahalıya ve her reddedici kapı sayaçlardan önce: pencere (saf saat aritmetiği, I/O yok) → cooldown → dakikalık tavan → günlük bütçe. `alignToWindow()` bütçe ertelemesini pencerenin içine hizalıyor; pencere tanımlı değilse no-op. `currentIstanbulHour` artık h24 döngüsünün gece yarısı için ürettiği `"24"` değerini `% 24` ile normalliyor — aksi halde saat hiçbir pencereye düşmez ve kaynak kalıcı park eder. --- ## 2. Sabitlenmiş katalog browse satırları `catalog_vehicles` kalıcı bir cache: `getModels` markanın tek satırı varsa erken dönüyor, `fetchVehicleList` o marka için bir daha hiç çağrılmıyor. PSA ve Volvo hâlâ P4 iken listelenmiş **188 satır** (127 LEGACY_PSA + 61 LEGACY_VOLVO) kalıcı çakılıydı: Peugeot/Citroën browse donmuş **2024-02-13** anlık görüntüsünü, Volvo/Polestar browse **HTTP 503** dönen bir ucu sunuyordu. `isStaleBrowseArchitecture()` + `healStaleBrowseRows()` ile marka bir kez yeniden listeleniyor. PR #265'teki VIN tarafı onarmasıyla aynı temkinli kurallar: marka başına günde bir deneme, başarısız/boş listede **eski satırlar korunuyor**, silme yalnız **gerçekten bayat** satırlara (karışık serviste zaten taşınmış satırlar `onConflictDoNothing` yüzünden geri gelmezdi). **Dev'de doğrulandı.** Dev'de `de` hesabı tanımlı olmadığı için tam olarak korumalı dal çalıştı: ``` [pl24-browse-heal] Peugeot: peugeot_parts listed under a retired architecture — re-listing [pl24-browse-heal] peugeot_parts: upstream returned no models — keeping 64 stale row(s) [pl24-browse-heal] Volvo: volvo_parts listed under a retired architecture — re-listing [pl24-browse-heal] volvo_parts: upstream returned no models — keeping 59 stale row(s) ``` Uç nokta iki çağrıda da HTTP 200 + 64/59 model döndürdü, satırlar değişmedi, ikinci çağrı günlük kilit (TTL 86.373 s) yüzünden hiç denemedi. --- ## 3. Volvo alanları iç kodu dönüyordu Volvo vinfoBasic aynı özniteliği iki kez veriyor: `Şanzıman kodu` = `"B"` ile `Şanzıman` = `"6-PSHIFT 2WD / MPS6"`, `Satis tipi` = `"42"` ile `Türü` = `"S80"`. VAG için doğru olan kod-önce sırası Volvo'da şanzımanı tek harf, seriyi çıplak sayı yapıyordu. İngilizce yanıtta `transmission` ve `body_style` etiketleri hiç aranmıyordu. `lookupDescriptive()` listedeki ilk *açıklayıcı* değeri döner (2 karakterden uzun, salt rakam değil); hiçbiri açıklayıcı değilse ilk mevcut değere düşer, yani yalnız kod üreten backend'ler aynen eskisi gibi davranır. | alan | önce | sonra | |---|---|---| | Volvo şanzıman | `B` | `6-PSHIFT 2WD / MPS6` | | Volvo seri | `42` | `S80` | | Volvo kaporta (EN) | `null` | `Sedan` | | PSA şanzıman (EN) | `null` | `BVM5` | PSA Türkçe, Subaru ve diğer markalarda çıktı değişmedi. --- ## 4. WMI kapsamı: canlı servis taraması + Renault Prod'daki 4.799 aracın **1.406'sının** WMI'si haritada yoktu. Hangilerinin PL24'te gerçekten karşılığı olduğu tahmin edilmedi — `/pl24-wmi/ext/api/2.0/decode` servisine gerçek prod VIN'leriyle tek tek soruldu. **Renault yeniden açıldı (450 araç).** Kapatma gerekçesinin iki ayağı da prod'a karşı sınandı: - Askı kalkmış: `/p5renault` directAccess, gerçek müşteri aracı `VF14SRCL458170337` için `VEHICLE_IDENTIFIED` + "SYMBOL II/LOGAN II" döndü. - Devre kesici artık kesin olumsuz yanıtları saymıyor, yalnız geçici taşıma hatalarını. | WMI | servis | prod aracı | |---|---|---| | VF1, VF6, VNE | renault_parts | 454 | | NLH, TMA, NLJ, KMF | hyundai_parts | 170 | | KNE, KNC | kia_parts | 39 | | NMB | **mercedestrucks**_parts | 30 | | MMC, XMC | mmc_parts | 26 | | JSA | suzuki_parts | 11 | NMB: servis bunu binek Mercedes'e değil kamyon kataloğuna çözüyor. **Kasıtlı olarak eklenmeyenler** — servis HTTP 410 "no brands found for WMI" dedi (NM4 ve VR7 gibi): `JHM, SHH, SHS, MAK, NLA` (Honda), `KL1` (Chevrolet). `JMZ` (Mazda) 410 değil ama `fordp/fordt` döndürüyor; marka tutarsız olduğu için eklenmedi. Testler bu "yok" cevaplarını da kilitliyor. **Hacim etkisi yok:** bu 730 araç zaten DB'de kayıtlı ve VIN DB'de varsa hiçbir kaynağa gidilmiyor (`db_hit`). Geçmişe dönük decode fırtınası olmuyor; kazanç bundan sonraki sorgularda. --- ## Test 28 yeni test: `prefetch-window-budget.spec.ts` (8), `catalog-browse-heal.spec.ts` (9), `pl24-volvo-vinfo.spec.ts` (6), `pl24.types.spec.ts` (+6, "eşlenen her servisin katalog tanımı var" bütünlük testi dahil). api paketi: **623 test geçiyor**, tsc temiz, dokunulan dosyalarda biome temiz. ## Deploy sonrası `prefetch:daily:pl24:<gün>` sıfırlanmalı — o günün sayacı hatalı dolduğu için düzeltme aksi halde ertesi güne kadar devreye giremez. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
root added 1 commit 2026-09-20 08:30:19 +03:00
fix(prefetch): PL24 bütçe/iş-saati kilitlenmesini kır
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
7644d91407
Prod'da PL24 prefetch tamamen durmuştu: günlük bütçe 600/600 dolu
görünürken gün boyunca SIFIR katalog isteği ve SIFIR yeni kategori
üretiliyordu (ölçüm 2026-09-20).

İki hata birlikte kapalı bir döngü kuruyordu:

1. Günlük bütçe `process()` içinde düşülüyor, iş-saati (ve cooldown)
   kapısı ise her handler'ın başında duruyordu. Pencere dışında uyanan
   bir iş önce bütçeden bir birim yiyor, sonra `time-window` fırlatıp
   hiçbir iş yapmadan erteleniyordu.

2. Bütçesi biten kaynak "bir sonraki UTC gece yarısı"na erteleniyordu.
   PREFETCH_PL24_START=9 ile bu an 03:00 Europe/Istanbul'a denk gelir —
   pencere açılmadan altı saat önce. Uyanan iş yine pencereye takılıyor,
   yine erteleniyor; taze günlük bütçe daha pencere açılmadan bu boş
   uyanmalarla tükeniyordu.

Düzeltme:
- cooldown + iş-saati kapıları `process()` içinde, bütçe düşülmeden
  ÖNCE çalışıyor; handler'lardaki kopyaları kaldırıldı.
- `alignToWindow()` eklendi: bütçe ertelemesi pencerenin içine
  hizalanıyor. Pencere tanımlı değilse (varsayılan 0–24) no-op.
- `currentIstanbulHour` artık `istanbulHourAt`'e deleg ediyor ve h24
  döngüsünün gece yarısı için ürettiği "24" değeri `% 24` ile
  normalleniyor (aksi halde saat hiçbir pencereye düşmez).

8 yeni regresyon testi; api paketi 602 test geçiyor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root added 1 commit 2026-09-20 08:31:58 +03:00
refactor(prefetch): kapı sırasını en ucuzdan pahalıya diz
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
ae8a8046bf
Pencere kontrolü saf saat aritmetiği, hiç I/O yapmıyor ve pencere
dışındaki iş zaten hiçbir faydalı iş yapamıyor — dolayısıyla dakikalık
Redis sayacından da önce gelmeli. Yeni sıra: pencere → cooldown →
dakikalık tavan → günlük bütçe. Böylece pencere dışında uyanan iş
hiçbir sayacı kirletmiyor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root added 1 commit 2026-09-20 08:35:11 +03:00
fix(catalog): sabitlenmiş browse satırlarını görüntülendikçe yenile
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
eb18c9a122
`catalog_vehicles` kalıcı bir cache: `getModels` markanın tek bir satırı
varsa erken dönüyor, dolayısıyla `fetchVehicleList` o marka için bir
daha hiç çağrılmıyor. PSA ve Volvo hâlâ P4 iken listelenmiş 188 satır
(prod 2026-09-20: 127 LEGACY_PSA + 61 LEGACY_VOLVO) bu yüzden kalıcı
olarak çakılı kalmıştı:

- Peugeot/Citroën browse donmuş 2024-02-13 anlık görüntüsünü sunuyor,
- Volvo/Polestar browse HTTP 503 dönen bir uca gidiyor.

Kod düzeltmesi bu satırlara hiçbir zaman ulaşmıyordu.

`isStaleBrowseArchitecture()` + `CatalogService.healStaleBrowseRows()`:
satırın kayıtlı mimarisi servis tablosundakiyle uyuşmuyorsa marka bir
kez yeniden listeleniyor, yeni satırlar yazılıp eskiler aynı
transaction'da siliniyor. VIN tarafındaki onarma ile aynı temkinli
kurallar: marka başına günde bir deneme (Redis kilidi), başarısız veya
boş listede eski satırlar korunuyor, silme ancak yenisi elde edilince
ve servis bazında yapılıyor.

8 yeni test; api paketi 610 test geçiyor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root changed title from fix(prefetch): PL24 bütçe/iş-saati kilitlenmesini kır to fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırları 2026-09-20 08:35:35 +03:00
root added 1 commit 2026-09-20 08:40:28 +03:00
fix(catalog): browse onarmasında yalnız bayat satırları sil
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
0928559ea4
Bir servis karışık olabilir: bazı satırları yeni mimariyle yeniden
listelenmiş, bazıları hâlâ eski. Silme servis adına göre yapıldığında
zaten taşınmış satırlar da gidiyordu — üstteki insert onları
`onConflictDoNothing` ile atladığı için geri gelmiyorlar, yani temelli
kayıp. Silme artık yalnız gerçekten bayat olan satırlara uygulanıyor.

Hangi satırların silindiğini doğrulayan test eklendi (drizzle
`inArray` parametrelerini okuyarak).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root added 1 commit 2026-09-20 08:45:20 +03:00
fix(pl24): Volvo alanlarında iç kodu değil okunur değeri kullan
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
72f8c2a3e4
Volvo vinfoBasic aynı özniteliği iki kez veriyor: "Şanzıman kodu" = "B"
ile "Şanzıman" = "6-PSHIFT 2WD / MPS6", "Satis tipi" = "42" ile "Türü"
= "S80". VAG için doğru olan kod-önce sırası (VAG'ın "Şanzıman kodu"
zaten anlamlı: "MQ200") bu yüzden Volvo'da şanzımanı tek harf, seriyi
çıplak sayı yapıyordu.

`lookupDescriptive()` eklendi: listedeki ilk *açıklayıcı* değeri döner
(2 karakterden uzun ve salt rakam değil), hiçbiri açıklayıcı değilse
ilk mevcut değere düşer — yani yalnız kod üreten backend'ler aynen
eskisi gibi davranır. Şanzıman ve seri bu yardımcıya geçti.

Ayrıca eksik İngilizce etiketler eklendi: `transmission` (İngilizce
yanıtta şanzıman yine tek harfe düşüyordu) ve `body_style`.

Ölçüm (gerçek keşif yakalamaları, YV1AS84ABD1168166 S80):
- şanzıman "B" → "6-PSHIFT 2WD / MPS6"
- seri "42" → "S80"
- kaporta İngilizce yanıtta null → "Sedan"
- PSA İngilizce yanıtta şanzıman null → "BVM5"
PSA Türkçe, Subaru ve diğer markalarda çıktı değişmedi.

6 yeni test + iki dilde gerçek Volvo fixture'ı. api 617 test geçiyor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root changed title from fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırları to fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırları + Volvo alanları 2026-09-20 08:47:46 +03:00
root added 1 commit 2026-09-20 08:53:11 +03:00
feat(pl24): WMI haritasını canlı servis taramasıyla genişlet, Renault'yu aç
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
c2f4d8f421
Prod'daki 4.799 aracın 1.406'sının WMI'si haritada yoktu. Hangilerinin
PL24'te gerçekten karşılığı olduğu tahmin edilmedi — canlı
`/pl24-wmi/ext/api/2.0/decode` servisine gerçek prod VIN'leriyle tek tek
soruldu (2026-09-20).

**Renault yeniden açıldı (450 araç).** İki gerekçe de artık geçersiz,
ikisi de prod'a karşı doğrulandı:
- Askı kalkmış: `/p5renault` directAccess, gerçek müşteri aracı
  VF14SRCL458170337 için `VEHICLE_IDENTIFIED` + "SYMBOL II/LOGAN II"
  döndü; WMI servisi de `{service: renault_parts, error: false}` diyor.
- Devre kesici artık kesin olumsuz yanıtları saymıyor, yalnız geçici
  taşıma hatalarını (`vehicles.service` `isTransient`).

**Yeni eşlemeler (toplam 730 araç):** NLH/TMA/NLJ/KMF → hyundai_parts,
KNE/KNC → kia_parts, MMC/XMC → mmc_parts, JSA → suzuki_parts,
NMB → **mercestrucks**_parts (servis binek Mercedes'e değil kamyon
kataloğuna çözüyor; bu 30 araç "Mercedes-Benz" etiketliydi ama binek
kataloğunda yok).

**Kasıtlı olarak EKLENMEYENLER** — servis HTTP 410 "no brands found"
dedi, tıpkı NM4 ve VR7 gibi: JHM/SHH/SHS/MAK/NLA (Honda), KL1
(Chevrolet). Eklemek yalnız boşuna istek üretir ve pcat/emex/vinpin
fallback'ini geciktirir. JMZ (Mazda) 410 değil ama fordp/fordt
döndürüyor (Ford-Mazda platform ortaklığı); marka tutarsız olduğu için
eklenmedi.

6 yeni test; "olmayanlar" da kilitlendi. Ayrıca her eşlemenin katalog
tanımı olduğunu doğrulayan bütünlük testi. api 623 test geçiyor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root changed title from fix(pl24): prefetch bütçe kilitlenmesi + sabitlenmiş browse satırları + Volvo alanları to fix(pl24): bütçe kilitlenmesi, sabitlenmiş browse satırları, Volvo alanları + WMI kapsamı 2026-09-20 08:54:25 +03:00
root merged commit a4e22e1bb8 into main 2026-09-20 09:15:26 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/sase.tr#268